github.com/wozhu6104/docker@v20.10.10+incompatible/pkg/authorization/middleware_unix_test.go (about) 1 // +build !windows 2 3 package authorization // import "github.com/docker/docker/pkg/authorization" 4 5 import ( 6 "context" 7 "net/http" 8 "net/http/httptest" 9 "testing" 10 11 "github.com/docker/docker/pkg/plugingetter" 12 "gotest.tools/v3/assert" 13 is "gotest.tools/v3/assert/cmp" 14 ) 15 16 func TestMiddlewareWrapHandler(t *testing.T) { 17 server := authZPluginTestServer{t: t} 18 server.start() 19 defer server.stop() 20 21 authZPlugin := createTestPlugin(t, server.socketAddress()) 22 pluginNames := []string{authZPlugin.name} 23 24 var pluginGetter plugingetter.PluginGetter 25 middleWare := NewMiddleware(pluginNames, pluginGetter) 26 handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error { 27 return nil 28 } 29 30 authList := []Plugin{authZPlugin} 31 middleWare.SetPlugins([]string{"My Test Plugin"}) 32 setAuthzPlugins(middleWare, authList) 33 mdHandler := middleWare.WrapHandler(handler) 34 assert.Assert(t, mdHandler != nil) 35 36 addr := "www.example.com/auth" 37 req, _ := http.NewRequest(http.MethodGet, addr, nil) 38 req.RequestURI = addr 39 req.Header.Add("header", "value") 40 41 resp := httptest.NewRecorder() 42 ctx := context.Background() 43 44 t.Run("Error Test Case :", func(t *testing.T) { 45 server.replayResponse = Response{ 46 Allow: false, 47 Msg: "Server Auth Not Allowed", 48 } 49 if err := mdHandler(ctx, resp, req, map[string]string{}); err == nil { 50 assert.Assert(t, is.ErrorContains(err, "")) 51 } 52 53 }) 54 55 t.Run("Positive Test Case :", func(t *testing.T) { 56 server.replayResponse = Response{ 57 Allow: true, 58 Msg: "Server Auth Allowed", 59 } 60 if err := mdHandler(ctx, resp, req, map[string]string{}); err != nil { 61 assert.NilError(t, err) 62 } 63 64 }) 65 66 }