mirror of
https://github.com/andwati/zitadel.git
synced 2026-10-18 05:52:51 +00:00
feat: update GetActiveIdentityProviders to return Zitadel in the IdP list (#12422)
# Which Problems Are Solved This PR extends the Settings Login API (v2 and v2beta) to include ZITADEL IdP in the list of IdPs returned by `GetActiveIdentityProviders` # How the Problems Are Solved - Added `IDENTITY_PROVIDER_TYPE_ZITADEL` to Settings IdentityProviderType enums (v2 and v2beta) and updated domain display name handling. - Updated Settings gRPC converters (v2 and v2beta) to map `domain.IDPTypeZitadel` to the new proto enum value - Added unit/integration tests # Additional Changes Correctly map `domain.IDPTypeApple` to `IdentityProviderType_IDENTITY_PROVIDER_TYPE_APPLE` in v2beta instead of unspecified. # Additional Context - Closes https://github.com/zitadel/zitadel/issues/12401 --------- Co-authored-by: Livio Spring <[email protected]>
This commit is contained in:
@@ -692,3 +692,27 @@ func assertPaginationResponse(t *assert.CollectT, expected *filter.PaginationRes
|
||||
assert.Equal(t, expected.AppliedLimit, actual.AppliedLimit)
|
||||
assert.Equal(t, expected.TotalResult, actual.TotalResult)
|
||||
}
|
||||
|
||||
func TestServer_GetActiveIdentityProviders_ZitadelType(t *testing.T) {
|
||||
instance := integration.NewInstance(CTX)
|
||||
iamOwnerCTX := instance.WithAuthorizationToken(CTX, integration.UserTypeIAMOwner)
|
||||
|
||||
idpName := integration.IDPName()
|
||||
idpResp := instance.AddZitadelProvider(iamOwnerCTX, idpName)
|
||||
instance.AddProviderToDefaultLoginPolicy(iamOwnerCTX, idpResp.GetId())
|
||||
|
||||
retryDuration, tick := integration.WaitForAndTickWithMaxDuration(iamOwnerCTX, time.Minute)
|
||||
assert.EventuallyWithT(t, func(ct *assert.CollectT) {
|
||||
got, err := instance.Client.SettingsV2.GetActiveIdentityProviders(iamOwnerCTX, &settings.GetActiveIdentityProvidersRequest{})
|
||||
if !assert.NoError(ct, err) {
|
||||
return
|
||||
}
|
||||
providers := got.GetIdentityProviders()
|
||||
if !assert.Len(ct, providers, 1) {
|
||||
return
|
||||
}
|
||||
assert.Equal(ct, idpResp.GetId(), providers[0].GetId())
|
||||
assert.Equal(ct, idpName, providers[0].GetName())
|
||||
assert.Equal(ct, settings.IdentityProviderType_IDENTITY_PROVIDER_TYPE_ZITADEL, providers[0].GetType())
|
||||
}, retryDuration, tick)
|
||||
}
|
||||
|
||||
@@ -232,6 +232,8 @@ func idpTypeToPb(idpType domain.IDPType) settings.IdentityProviderType {
|
||||
return settings.IdentityProviderType_IDENTITY_PROVIDER_TYPE_APPLE
|
||||
case domain.IDPTypeSAML:
|
||||
return settings.IdentityProviderType_IDENTITY_PROVIDER_TYPE_SAML
|
||||
case domain.IDPTypeZitadel:
|
||||
return settings.IdentityProviderType_IDENTITY_PROVIDER_TYPE_ZITADEL
|
||||
default:
|
||||
return settings.IdentityProviderType_IDENTITY_PROVIDER_TYPE_UNSPECIFIED
|
||||
}
|
||||
|
||||
@@ -511,6 +511,10 @@ func Test_idpTypeToPb(t *testing.T) {
|
||||
args: args{domain.IDPTypeSAML},
|
||||
want: settings.IdentityProviderType_IDENTITY_PROVIDER_TYPE_SAML,
|
||||
},
|
||||
{
|
||||
args: args{domain.IDPTypeZitadel},
|
||||
want: settings.IdentityProviderType_IDENTITY_PROVIDER_TYPE_ZITADEL,
|
||||
},
|
||||
{
|
||||
args: args{99},
|
||||
want: settings.IdentityProviderType_IDENTITY_PROVIDER_TYPE_UNSPECIFIED,
|
||||
|
||||
@@ -219,8 +219,9 @@ func idpTypeToPb(idpType domain.IDPType) settings.IdentityProviderType {
|
||||
case domain.IDPTypeSAML:
|
||||
return settings.IdentityProviderType_IDENTITY_PROVIDER_TYPE_SAML
|
||||
case domain.IDPTypeApple:
|
||||
// Handle all remaining cases so the linter succeeds
|
||||
return settings.IdentityProviderType_IDENTITY_PROVIDER_TYPE_UNSPECIFIED
|
||||
return settings.IdentityProviderType_IDENTITY_PROVIDER_TYPE_APPLE
|
||||
case domain.IDPTypeZitadel:
|
||||
return settings.IdentityProviderType_IDENTITY_PROVIDER_TYPE_ZITADEL
|
||||
default:
|
||||
return settings.IdentityProviderType_IDENTITY_PROVIDER_TYPE_UNSPECIFIED
|
||||
}
|
||||
|
||||
@@ -470,6 +470,14 @@ func Test_idpTypeToPb(t *testing.T) {
|
||||
args: args{domain.IDPTypeSAML},
|
||||
want: settings.IdentityProviderType_IDENTITY_PROVIDER_TYPE_SAML,
|
||||
},
|
||||
{
|
||||
args: args{domain.IDPTypeApple},
|
||||
want: settings.IdentityProviderType_IDENTITY_PROVIDER_TYPE_APPLE,
|
||||
},
|
||||
{
|
||||
args: args{domain.IDPTypeZitadel},
|
||||
want: settings.IdentityProviderType_IDENTITY_PROVIDER_TYPE_ZITADEL,
|
||||
},
|
||||
{
|
||||
args: args{99},
|
||||
want: settings.IdentityProviderType_IDENTITY_PROVIDER_TYPE_UNSPECIFIED,
|
||||
|
||||
@@ -86,6 +86,8 @@ func (t IDPType) DisplayName() string {
|
||||
return "Google"
|
||||
case IDPTypeApple:
|
||||
return "Apple"
|
||||
case IDPTypeZitadel:
|
||||
return "ZITADEL"
|
||||
case IDPTypeUnspecified,
|
||||
IDPTypeOIDC,
|
||||
IDPTypeJWT,
|
||||
|
||||
@@ -185,4 +185,5 @@ enum IdentityProviderType {
|
||||
IDENTITY_PROVIDER_TYPE_GOOGLE = 10;
|
||||
IDENTITY_PROVIDER_TYPE_SAML = 11;
|
||||
IDENTITY_PROVIDER_TYPE_APPLE = 12;
|
||||
IDENTITY_PROVIDER_TYPE_ZITADEL = 13;
|
||||
}
|
||||
|
||||
@@ -148,5 +148,7 @@ enum IdentityProviderType {
|
||||
IDENTITY_PROVIDER_TYPE_GITLAB = 8;
|
||||
IDENTITY_PROVIDER_TYPE_GITLAB_SELF_HOSTED = 9;
|
||||
IDENTITY_PROVIDER_TYPE_GOOGLE = 10;
|
||||
IDENTITY_PROVIDER_TYPE_SAML=11;
|
||||
IDENTITY_PROVIDER_TYPE_SAML = 11;
|
||||
IDENTITY_PROVIDER_TYPE_APPLE = 12;
|
||||
IDENTITY_PROVIDER_TYPE_ZITADEL = 13;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user