mirror of
https://github.com/amir20/dozzle.git
synced 2026-06-23 04:10:12 +00:00
345102f498
Deploy VitePress site to Pages / build (push) Has been cancelled
Deploy VitePress site to Pages / Deploy (push) Has been cancelled
Push container / Push branches and PRs (push) Has been cancelled
Test / Typecheck (push) Has been cancelled
Test / JavaScript Tests (push) Has been cancelled
Test / Go Tests (push) Has been cancelled
Test / Go Staticcheck (push) Has been cancelled
Test / Integration Tests (push) Has been cancelled
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
57 lines
1.5 KiB
Go
57 lines
1.5 KiB
Go
package auth
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/go-chi/jwtauth/v5"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestForwardProxyAuthRejectsInvalidFilter(t *testing.T) {
|
|
auth := NewForwardProxyAuth("Remote-User", "Remote-Email", "Remote-Name", "Remote-Filter", "Remote-Roles")
|
|
called := false
|
|
handler := auth.AuthMiddleware(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
called = true
|
|
w.WriteHeader(http.StatusOK)
|
|
}))
|
|
|
|
req := httptest.NewRequest(http.MethodGet, "/", nil)
|
|
req.Header.Set("Remote-User", "alice")
|
|
req.Header.Set("Remote-Filter", "invalid-filter")
|
|
|
|
resp := httptest.NewRecorder()
|
|
handler.ServeHTTP(resp, req)
|
|
|
|
require.Equal(t, http.StatusBadRequest, resp.Code)
|
|
require.False(t, called)
|
|
}
|
|
|
|
func TestUserFromContextInvalidFilterReturnsNil(t *testing.T) {
|
|
tokenAuth := jwtauth.New("HS256", []byte("secret"), nil)
|
|
_, tokenString, err := tokenAuth.Encode(map[string]any{
|
|
"username": "alice",
|
|
"email": "alice@example.com",
|
|
"name": "Alice",
|
|
"filter": "invalid-filter",
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
handler := jwtauth.Verifier(tokenAuth)(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
if UserFromContext(r.Context()) == nil {
|
|
w.WriteHeader(http.StatusUnauthorized)
|
|
return
|
|
}
|
|
w.WriteHeader(http.StatusOK)
|
|
}))
|
|
|
|
req := httptest.NewRequest(http.MethodGet, "/", nil)
|
|
req.Header.Set("Authorization", "Bearer "+tokenString)
|
|
|
|
resp := httptest.NewRecorder()
|
|
handler.ServeHTTP(resp, req)
|
|
|
|
require.Equal(t, http.StatusUnauthorized, resp.Code)
|
|
}
|