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