github.com/Prakhar-Agarwal-byte/moby@v0.0.0-20231027092010-a14e3e8ab87e/pkg/authorization/middleware_unix_test.go (about) 1 //go:build !windows 2 3 package authorization // import "github.com/Prakhar-Agarwal-byte/moby/pkg/authorization" 4 5 import ( 6 "context" 7 "net/http" 8 "net/http/httptest" 9 "testing" 10 11 "github.com/Prakhar-Agarwal-byte/moby/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 t.Run("Positive Test Case :", func(t *testing.T) { 55 server.replayResponse = Response{ 56 Allow: true, 57 Msg: "Server Auth Allowed", 58 } 59 if err := mdHandler(ctx, resp, req, map[string]string{}); err != nil { 60 assert.NilError(t, err) 61 } 62 }) 63 }