Spaces:
Sleeping
Sleeping
| // _ _ | |
| // __ _____ __ ___ ___ __ _| |_ ___ | |
| // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ | |
| // \ V V / __/ (_| |\ V /| | (_| | || __/ | |
| // \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| | |
| // | |
| // Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. | |
| // | |
| // CONTACT: [email protected] | |
| // | |
| package anonymous | |
| import ( | |
| "net/http" | |
| "net/http/httptest" | |
| "testing" | |
| "github.com/stretchr/testify/assert" | |
| "github.com/weaviate/weaviate/usecases/config" | |
| ) | |
| func Test_AnonymousMiddleware_Enabled(t *testing.T) { | |
| // when anonymous access is enabled, we don't need to do anything and can | |
| // safely call the next next handler | |
| r := httptest.NewRequest("GET", "/foo", nil) | |
| w := httptest.NewRecorder() | |
| next := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { | |
| w.WriteHeader(900) | |
| }) | |
| cfg := config.Config{ | |
| Authentication: config.Authentication{ | |
| AnonymousAccess: config.AnonymousAccess{ | |
| Enabled: true, | |
| }, | |
| }, | |
| } | |
| New(cfg).Middleware(next).ServeHTTP(w, r) | |
| response := w.Result() | |
| defer response.Body.Close() | |
| assert.Equal(t, response.StatusCode, 900) | |
| } | |
| func Test_AnonymousMiddleware_Disabled(t *testing.T) { | |
| t.Run("when OIDC is enabled, but no token provided", func(t *testing.T) { | |
| r := httptest.NewRequest("GET", "/foo", nil) | |
| w := httptest.NewRecorder() | |
| next := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { | |
| w.WriteHeader(900) | |
| }) | |
| cfg := config.Config{ | |
| Authentication: config.Authentication{ | |
| AnonymousAccess: config.AnonymousAccess{ | |
| Enabled: false, | |
| }, | |
| OIDC: config.OIDC{ | |
| Enabled: true, | |
| }, | |
| }, | |
| } | |
| New(cfg).Middleware(next).ServeHTTP(w, r) | |
| response := w.Result() | |
| defer response.Body.Close() | |
| assert.Equal(t, response.StatusCode, 401) | |
| }) | |
| t.Run("when OIDC is enabled, and a Bearer Header provided", func(t *testing.T) { | |
| r := httptest.NewRequest("GET", "/foo", nil) | |
| r.Header.Add("Authorization", "Bearer foo") | |
| w := httptest.NewRecorder() | |
| next := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { | |
| w.WriteHeader(900) | |
| }) | |
| cfg := config.Config{ | |
| Authentication: config.Authentication{ | |
| AnonymousAccess: config.AnonymousAccess{ | |
| Enabled: false, | |
| }, | |
| OIDC: config.OIDC{ | |
| Enabled: true, | |
| }, | |
| }, | |
| } | |
| New(cfg).Middleware(next).ServeHTTP(w, r) | |
| response := w.Result() | |
| defer response.Body.Close() | |
| assert.Equal(t, response.StatusCode, 900) | |
| }) | |
| } | |