Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 

45 righe
1.5 KiB

  1. package model
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/require"
  5. )
  6. func validCustomOAuthProvider() *CustomOAuthProvider {
  7. return &CustomOAuthProvider{
  8. Name: "Example OAuth",
  9. Slug: "Example-Provider",
  10. ClientId: "client-id",
  11. AuthorizationEndpoint: "https://id.example/authorize",
  12. TokenEndpoint: "https://id.example/token",
  13. UserInfoEndpoint: "https://id.example/userinfo",
  14. }
  15. }
  16. func TestValidateCustomOAuthProviderNormalizesSlugAndAppliesDefaults(t *testing.T) {
  17. provider := validCustomOAuthProvider()
  18. err := validateCustomOAuthProvider(provider)
  19. require.NoError(t, err)
  20. require.Equal(t, "example-provider", provider.Slug)
  21. require.Equal(t, "sub", provider.UserIdField)
  22. require.Equal(t, "preferred_username", provider.UsernameField)
  23. require.Equal(t, "openid profile email", provider.Scopes)
  24. }
  25. func TestValidateCustomOAuthProviderRejectsInvalidSlugAndPolicy(t *testing.T) {
  26. invalidSlug := validCustomOAuthProvider()
  27. invalidSlug.Slug = "bad_slug"
  28. require.ErrorContains(t, validateCustomOAuthProvider(invalidSlug), "slug")
  29. unsupportedOp := validCustomOAuthProvider()
  30. unsupportedOp.AccessPolicy = `{"conditions":[{"field":"role","op":"matches","value":"admin"}]}`
  31. require.ErrorContains(t, validateCustomOAuthProvider(unsupportedOp), "unsupported")
  32. nonArrayMembership := validCustomOAuthProvider()
  33. nonArrayMembership.AccessPolicy = `{"conditions":[{"field":"role","op":"in","value":"admin"}]}`
  34. require.ErrorContains(t, validateCustomOAuthProvider(nonArrayMembership), "must be an array")
  35. }