forked from baron/baron-sso
- replace inline headless jwks support with jwksUri-only validation - add cached jwks refresh worker, manual refresh/revoke endpoints, and parsed key summaries - expose allowed algorithms and key previews in DevFront with regression coverage
79 lines
2.3 KiB
Go
79 lines
2.3 KiB
Go
package domain
|
|
|
|
import "testing"
|
|
|
|
func TestHydraClient_HeadlessLoginFlags(t *testing.T) {
|
|
t.Run("metadata-backed headless login client is supported", func(t *testing.T) {
|
|
client := HydraClient{
|
|
TokenEndpointAuthMethod: "none",
|
|
Metadata: map[string]any{
|
|
"headless_login_enabled": true,
|
|
"headless_token_endpoint_auth_method": "private_key_jwt",
|
|
"headless_jwks_uri": "https://rp.example.com/.well-known/jwks.json",
|
|
},
|
|
}
|
|
|
|
if !client.SupportsHeadlessLogin() {
|
|
t.Fatalf("expected metadata-backed headless login client")
|
|
}
|
|
if !client.IsHeadlessLoginEnabled() {
|
|
t.Fatalf("expected metadata-backed headless login enabled")
|
|
}
|
|
})
|
|
|
|
t.Run("inline jwks without jwks uri does not support headless login", func(t *testing.T) {
|
|
client := HydraClient{
|
|
TokenEndpointAuthMethod: "private_key_jwt",
|
|
JWKS: map[string]any{
|
|
"keys": []map[string]any{{
|
|
"kty": "RSA",
|
|
}},
|
|
},
|
|
Metadata: map[string]any{
|
|
"headless_login_enabled": true,
|
|
},
|
|
}
|
|
|
|
if client.SupportsHeadlessLogin() {
|
|
t.Fatalf("expected headless login prerequisites to be missing")
|
|
}
|
|
if client.IsHeadlessLoginEnabled() {
|
|
t.Fatalf("expected headless login disabled without jwks uri")
|
|
}
|
|
})
|
|
|
|
t.Run("jwks uri without private_key_jwt does not support headless login", func(t *testing.T) {
|
|
client := HydraClient{
|
|
TokenEndpointAuthMethod: "none",
|
|
JWKSUri: "https://rp.example.com/.well-known/jwks.json",
|
|
Metadata: map[string]any{
|
|
"headless_login_enabled": true,
|
|
},
|
|
}
|
|
|
|
if client.SupportsHeadlessLogin() {
|
|
t.Fatalf("expected headless login prerequisites to be missing")
|
|
}
|
|
if client.IsHeadlessLoginEnabled() {
|
|
t.Fatalf("expected headless login disabled when prerequisites are missing")
|
|
}
|
|
})
|
|
|
|
t.Run("headless login client without boolean metadata flag is not enabled", func(t *testing.T) {
|
|
client := HydraClient{
|
|
TokenEndpointAuthMethod: "private_key_jwt",
|
|
JWKSUri: "https://rp.example.com/.well-known/jwks.json",
|
|
Metadata: map[string]any{
|
|
"headless_login_enabled": "true",
|
|
},
|
|
}
|
|
|
|
if !client.SupportsHeadlessLogin() {
|
|
t.Fatalf("expected headless login client")
|
|
}
|
|
if client.IsHeadlessLoginEnabled() {
|
|
t.Fatalf("expected headless login disabled for non-bool metadata")
|
|
}
|
|
})
|
|
}
|