github.com/AngusLu/go-swagger@v0.28.0/fixtures/bugs/1472/middleware_test.go (about) 1 // +build ignore 2 3 package bug_1472 4 5 import ( 6 "log" 7 "net/http" 8 "net/http/httptest" 9 "testing" 10 11 "github.com/stretchr/testify/assert" 12 13 "github.com/go-openapi/loads" 14 "github.com/go-openapi/runtime/middleware" 15 16 "github.com/AngusLu/go-swagger/fixtures/bugs/1472/restapi" 17 "github.com/AngusLu/go-swagger/fixtures/bugs/1472/restapi/operations" 18 "github.com/AngusLu/go-swagger/fixtures/bugs/1472/restapi/operations/ops" 19 ) 20 21 type User struct { 22 ID string 23 } 24 25 func TestGenServer_1472_securityFromPrincipal_middleware(t *testing.T) { 26 swaggerSpec, err := loads.Embedded(restapi.SwaggerJSON, restapi.FlatSwaggerJSON) 27 if err != nil { 28 log.Fatalln(err) 29 } 30 api := operations.NewMyAPI(swaggerSpec) 31 api.OpBearerAuth = func(token string) (interface{}, error) { 32 // Return the same user for testing 33 return &User{ID: "someID"}, nil 34 } 35 api.OpsGetEndpointHandler = ops.GetEndpointHandlerFunc( 36 func(params ops.GetEndpointParams, principal interface{}) middleware.Responder { 37 return ops.NewGetEndpointOK() 38 }) 39 40 apiHandler := api.Serve(func(h http.Handler) http.Handler { 41 return http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { 42 assert.Nil(t, middleware.SecurityPrincipalFrom(r)) // Did not run through the handler yet! 43 h.ServeHTTP(rw, r) 44 assert.NotNil(t, middleware.SecurityPrincipalFrom(r)) // Should have the principal now! 45 assert.Equal(t, middleware.SecurityPrincipalFrom(r).(*User).ID, "someID") 46 }) 47 }) 48 49 ts := httptest.NewServer(apiHandler) 50 defer ts.Close() 51 52 request, err := http.NewRequest("GET", ts.URL+"/endpoint", nil) 53 assert.Nil(t, err) 54 request.Header.Add("Authorization", "Bearer sometoken") 55 56 response, err := http.DefaultClient.Do(request) 57 assert.Nil(t, err) 58 assert.Equal(t, response.StatusCode, http.StatusOK) 59 }