| package authorization // import "github.com/docker/docker/pkg/authorization" |
| |
| import ( |
| "net/http" |
| "net/http/httptest" |
| "strings" |
| "testing" |
| |
| "github.com/docker/docker/pkg/plugingetter" |
| "gotest.tools/assert" |
| ) |
| |
| func TestMiddleware(t *testing.T) { |
| pluginNames := []string{"testPlugin1", "testPlugin2"} |
| var pluginGetter plugingetter.PluginGetter |
| m := NewMiddleware(pluginNames, pluginGetter) |
| authPlugins := m.getAuthzPlugins() |
| assert.Equal(t, 2, len(authPlugins)) |
| assert.Equal(t, pluginNames[0], authPlugins[0].Name()) |
| assert.Equal(t, pluginNames[1], authPlugins[1].Name()) |
| } |
| |
| func TestNewResponseModifier(t *testing.T) { |
| recorder := httptest.NewRecorder() |
| modifier := NewResponseModifier(recorder) |
| modifier.Header().Set("H1", "V1") |
| modifier.Write([]byte("body")) |
| assert.Assert(t, !modifier.Hijacked()) |
| modifier.WriteHeader(http.StatusInternalServerError) |
| assert.Assert(t, modifier.RawBody() != nil) |
| |
| raw, err := modifier.RawHeaders() |
| assert.Assert(t, raw != nil) |
| assert.NilError(t, err) |
| |
| headerData := strings.Split(strings.TrimSpace(string(raw)), ":") |
| assert.Equal(t, "H1", strings.TrimSpace(headerData[0])) |
| assert.Equal(t, "V1", strings.TrimSpace(headerData[1])) |
| |
| modifier.Flush() |
| modifier.FlushAll() |
| |
| if recorder.Header().Get("H1") != "V1" { |
| t.Fatalf("Header value must exists %s", recorder.Header().Get("H1")) |
| } |
| |
| } |
| |
| func setAuthzPlugins(m *Middleware, plugins []Plugin) { |
| m.mu.Lock() |
| m.plugins = plugins |
| m.mu.Unlock() |
| } |