|
- package model
-
- import (
- "testing"
-
- "github.com/stretchr/testify/require"
- )
-
- func validCustomOAuthProvider() *CustomOAuthProvider {
- return &CustomOAuthProvider{
- Name: "Example OAuth",
- Slug: "Example-Provider",
- ClientId: "client-id",
- AuthorizationEndpoint: "https://id.example/authorize",
- TokenEndpoint: "https://id.example/token",
- UserInfoEndpoint: "https://id.example/userinfo",
- }
- }
-
- func TestValidateCustomOAuthProviderNormalizesSlugAndAppliesDefaults(t *testing.T) {
- provider := validCustomOAuthProvider()
-
- err := validateCustomOAuthProvider(provider)
-
- require.NoError(t, err)
- require.Equal(t, "example-provider", provider.Slug)
- require.Equal(t, "sub", provider.UserIdField)
- require.Equal(t, "preferred_username", provider.UsernameField)
- require.Equal(t, "openid profile email", provider.Scopes)
- }
-
- func TestValidateCustomOAuthProviderRejectsInvalidSlugAndPolicy(t *testing.T) {
- invalidSlug := validCustomOAuthProvider()
- invalidSlug.Slug = "bad_slug"
- require.ErrorContains(t, validateCustomOAuthProvider(invalidSlug), "slug")
-
- unsupportedOp := validCustomOAuthProvider()
- unsupportedOp.AccessPolicy = `{"conditions":[{"field":"role","op":"matches","value":"admin"}]}`
- require.ErrorContains(t, validateCustomOAuthProvider(unsupportedOp), "unsupported")
-
- nonArrayMembership := validCustomOAuthProvider()
- nonArrayMembership.AccessPolicy = `{"conditions":[{"field":"role","op":"in","value":"admin"}]}`
- require.ErrorContains(t, validateCustomOAuthProvider(nonArrayMembership), "must be an array")
- }
|