Browse Source

Adds more units tests

Manu Mtz-Almeida 10 years ago
parent
commit
92475baba6
2 changed files with 29 additions and 0 deletions
  1. 4 0
      routergroup.go
  2. 25 0
      routergroup_test.go

+ 4 - 0
routergroup.go

@@ -7,6 +7,7 @@ package gin
 import (
 	"net/http"
 	"path"
+	"regexp"
 	"strings"
 )
 
@@ -50,6 +51,9 @@ func (group *RouterGroup) handle(httpMethod, relativePath string, handlers Handl
 }
 
 func (group *RouterGroup) Handle(httpMethod, relativePath string, handlers ...HandlerFunc) {
+	if matches, err := regexp.MatchString("^[A-Z]+$", httpMethod); !matches || err != nil {
+		panic("http method " + httpMethod + " is not valid")
+	}
 	group.handle(httpMethod, relativePath, handlers)
 }
 

+ 25 - 0
routergroup_test.go

@@ -123,3 +123,28 @@ func TestRouterGroupTooManyHandlers(t *testing.T) {
 		router.GET("/", handlers2...)
 	})
 }
+
+func TestRouterGroupBadMethod(t *testing.T) {
+	router := New()
+	assert.Panics(t, func() {
+		router.Handle("get", "/")
+	})
+	assert.Panics(t, func() {
+		router.Handle(" GET", "/")
+	})
+	assert.Panics(t, func() {
+		router.Handle("GET ", "/")
+	})
+	assert.Panics(t, func() {
+		router.Handle("", "/")
+	})
+	assert.Panics(t, func() {
+		router.Handle("PO ST", "/")
+	})
+	assert.Panics(t, func() {
+		router.Handle("1GET", "/")
+	})
+	assert.Panics(t, func() {
+		router.Handle("PATCh", "/")
+	})
+}