Files
2026-07-13 12:35:43 +08:00

82 lines
2.3 KiB
Go

package access
import (
"context"
"net/http"
"testing"
)
type testProvider struct {
id string
}
func (p testProvider) Identifier() string {
return p.id
}
func (p testProvider) Authenticate(context.Context, *http.Request) (*Result, *AuthError) {
return &Result{Provider: p.id, Principal: p.id}, nil
}
func TestRegisteredProvidersReturnsOnlyExclusiveProvider(t *testing.T) {
UnregisterProvider("test-a")
UnregisterProvider("test-b")
ClearExclusiveProvider()
defer UnregisterProvider("test-a")
defer UnregisterProvider("test-b")
defer ClearExclusiveProvider()
RegisterProvider("test-a", testProvider{id: "test-a"})
RegisterProvider("test-b", testProvider{id: "test-b"})
SetExclusiveProvider("test-b")
providers := RegisteredProviders()
if len(providers) != 1 {
t.Fatalf("RegisteredProviders() len = %d, want 1", len(providers))
}
if providers[0].Identifier() != "test-b" {
t.Fatalf("RegisteredProviders()[0] = %q, want test-b", providers[0].Identifier())
}
}
func TestRegisteredProvidersRestoresAllProvidersAfterExclusiveCleared(t *testing.T) {
UnregisterProvider("test-a")
UnregisterProvider("test-b")
ClearExclusiveProvider()
defer UnregisterProvider("test-a")
defer UnregisterProvider("test-b")
defer ClearExclusiveProvider()
RegisterProvider("test-a", testProvider{id: "test-a"})
RegisterProvider("test-b", testProvider{id: "test-b"})
SetExclusiveProvider("test-b")
ClearExclusiveProvider()
providers := RegisteredProviders()
if len(providers) != 2 {
t.Fatalf("RegisteredProviders() len = %d, want 2", len(providers))
}
if providers[0].Identifier() != "test-a" || providers[1].Identifier() != "test-b" {
t.Fatalf("RegisteredProviders() = [%q, %q], want [test-a, test-b]", providers[0].Identifier(), providers[1].Identifier())
}
}
func TestRegisteredProvidersIgnoresStaleExclusiveProvider(t *testing.T) {
UnregisterProvider("test-a")
UnregisterProvider("missing")
ClearExclusiveProvider()
defer UnregisterProvider("test-a")
defer ClearExclusiveProvider()
RegisterProvider("test-a", testProvider{id: "test-a"})
SetExclusiveProvider("missing")
providers := RegisteredProviders()
if len(providers) != 1 {
t.Fatalf("RegisteredProviders() len = %d, want 1", len(providers))
}
if providers[0].Identifier() != "test-a" {
t.Fatalf("RegisteredProviders()[0] = %q, want test-a", providers[0].Identifier())
}
}