123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- 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) {
- }
|