From bf21203297baad7830fcb50c697f11feec02325a Mon Sep 17 00:00:00 2001 From: Kevin Wan Date: Sun, 27 Dec 2020 12:26:31 +0800 Subject: [PATCH] add more tests (#320) --- rest/engine_test.go | 171 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 rest/engine_test.go diff --git a/rest/engine_test.go b/rest/engine_test.go new file mode 100644 index 00000000..e4a87ad0 --- /dev/null +++ b/rest/engine_test.go @@ -0,0 +1,171 @@ +package rest + +import ( + "errors" + "net/http" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/tal-tech/go-zero/core/conf" +) + +func TestNewEngine(t *testing.T) { + yamls := []string{ + `Name: foo +Port: 54321 +`, + `Name: foo +Port: 54321 +CpuThreshold: 500 +`, + `Name: foo +Port: 54321 +CpuThreshold: 500 +Verbose: true +`, + } + + routes := []featuredRoutes{ + { + jwt: jwtSetting{}, + signature: signatureSetting{}, + routes: []Route{{ + Method: http.MethodGet, + Path: "/", + Handler: func(w http.ResponseWriter, r *http.Request) {}, + }}, + }, + { + priority: true, + jwt: jwtSetting{}, + signature: signatureSetting{}, + routes: []Route{{ + Method: http.MethodGet, + Path: "/", + Handler: func(w http.ResponseWriter, r *http.Request) {}, + }}, + }, + { + priority: true, + jwt: jwtSetting{ + enabled: true, + }, + signature: signatureSetting{}, + routes: []Route{{ + Method: http.MethodGet, + Path: "/", + Handler: func(w http.ResponseWriter, r *http.Request) {}, + }}, + }, + { + priority: true, + jwt: jwtSetting{ + enabled: true, + prevSecret: "thesecret", + }, + signature: signatureSetting{}, + routes: []Route{{ + Method: http.MethodGet, + Path: "/", + Handler: func(w http.ResponseWriter, r *http.Request) {}, + }}, + }, + { + priority: true, + jwt: jwtSetting{ + enabled: true, + }, + signature: signatureSetting{}, + routes: []Route{{ + Method: http.MethodGet, + Path: "/", + Handler: func(w http.ResponseWriter, r *http.Request) {}, + }}, + }, + { + priority: true, + jwt: jwtSetting{ + enabled: true, + }, + signature: signatureSetting{ + enabled: true, + }, + routes: []Route{{ + Method: http.MethodGet, + Path: "/", + Handler: func(w http.ResponseWriter, r *http.Request) {}, + }}, + }, + { + priority: true, + jwt: jwtSetting{ + enabled: true, + }, + signature: signatureSetting{ + enabled: true, + SignatureConf: SignatureConf{ + Strict: true, + }, + }, + routes: []Route{{ + Method: http.MethodGet, + Path: "/", + Handler: func(w http.ResponseWriter, r *http.Request) {}, + }}, + }, + { + priority: true, + jwt: jwtSetting{ + enabled: true, + }, + signature: signatureSetting{ + enabled: true, + SignatureConf: SignatureConf{ + Strict: true, + PrivateKeys: []PrivateKeyConf{ + { + Fingerprint: "a", + KeyFile: "b", + }, + }, + }, + }, + routes: []Route{{ + Method: http.MethodGet, + Path: "/", + Handler: func(w http.ResponseWriter, r *http.Request) {}, + }}, + }, + } + + for _, yaml := range yamls { + for _, route := range routes { + var cnf RestConf + assert.Nil(t, conf.LoadConfigFromYamlBytes([]byte(yaml), &cnf)) + ng := newEngine(cnf) + ng.AddRoutes(route) + ng.use(func(next http.HandlerFunc) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + next.ServeHTTP(w, r) + } + }) + assert.NotNil(t, ng.StartWithRouter(mockedRouter{})) + } + } +} + +type mockedRouter struct { +} + +func (m mockedRouter) ServeHTTP(writer http.ResponseWriter, request *http.Request) { +} + +func (m mockedRouter) Handle(method string, path string, handler http.Handler) error { + return errors.New("foo") +} + +func (m mockedRouter) SetNotFoundHandler(handler http.Handler) { +} + +func (m mockedRouter) SetNotAllowedHandler(handler http.Handler) { +}