mirror of
https://github.com/therootcompany/golib.git
synced 2026-11-04 06:55:00 +00:00
test(auth): add AuthorizationSchemes tests (any-scheme, unaccepted scheme)
Add tests for AuthorizationSchemes ["*"] accepting any scheme and for unaccepted schemes returning ErrNoCredentials without falling through to cookies. These fill pre-existing test gaps unrelated to the TokenCookies feature.
This commit is contained in:
parent
4b4a83b220
commit
20c7887bcd
@ -200,6 +200,53 @@ func TestAuthenticate_CookiePriorityLowerThanQueryParam(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --- Tier 3: Broader coverage ---
|
||||||
|
|
||||||
|
// TestAuthenticate_BearerAnyScheme verifies that AuthorizationSchemes ["*"]
|
||||||
|
// accepts any scheme.
|
||||||
|
func TestAuthenticate_BearerAnyScheme(t *testing.T) {
|
||||||
|
mock := &mockAuthenticator{principle: mockPrinciple{id: "user1"}}
|
||||||
|
ra := &auth.BasicRequestAuthenticator{
|
||||||
|
Authenticator: mock,
|
||||||
|
AuthorizationSchemes: []string{"*"},
|
||||||
|
}
|
||||||
|
r := newRequest("GET", "/")
|
||||||
|
r.Header.Set("Authorization", "Custom abc123")
|
||||||
|
|
||||||
|
_, err := ra.Authenticate(r)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
if mock.lastToken != "abc123" {
|
||||||
|
t.Errorf("expected token %q, got %q", "abc123", mock.lastToken)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TestAuthenticate_UnacceptedSchemeReturnsError verifies that an Authorization
|
||||||
|
// header with an unaccepted scheme returns ErrNoCredentials rather than
|
||||||
|
// falling through to cookies. BasicAuth is enabled so that step 1 is exercised
|
||||||
|
// but does not match the Custom scheme.
|
||||||
|
func TestAuthenticate_UnacceptedSchemeReturnsError(t *testing.T) {
|
||||||
|
mock := &mockAuthenticator{}
|
||||||
|
ra := &auth.BasicRequestAuthenticator{
|
||||||
|
Authenticator: mock,
|
||||||
|
BasicAuth: true,
|
||||||
|
AuthorizationSchemes: []string{"Bearer"},
|
||||||
|
TokenCookies: []string{"session"},
|
||||||
|
}
|
||||||
|
r := newRequest("GET", "/")
|
||||||
|
r.Header.Set("Authorization", "Custom abc123")
|
||||||
|
r.AddCookie(&http.Cookie{Name: "session", Value: "cookie-token"})
|
||||||
|
|
||||||
|
_, err := ra.Authenticate(r)
|
||||||
|
if err != auth.ErrNoCredentials {
|
||||||
|
t.Fatalf("expected ErrNoCredentials for unaccepted scheme, got %v", err)
|
||||||
|
}
|
||||||
|
if mock.calls != 0 {
|
||||||
|
t.Fatalf("expected 0 calls to authenticator (no fall-through), got %d", mock.calls)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TestAuthenticate_BasicAuthPriority verifies that Basic Auth (step 1) takes
|
// TestAuthenticate_BasicAuthPriority verifies that Basic Auth (step 1) takes
|
||||||
// priority over cookie-based tokens (step 5).
|
// priority over cookie-based tokens (step 5).
|
||||||
func TestAuthenticate_BasicAuthPriority(t *testing.T) {
|
func TestAuthenticate_BasicAuthPriority(t *testing.T) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user