diff --git a/src/administration/Administration.Service/BusinessLogic/IdentityProviderBusinessLogic.cs b/src/administration/Administration.Service/BusinessLogic/IdentityProviderBusinessLogic.cs index 18a9f38bcf..a07f336036 100644 --- a/src/administration/Administration.Service/BusinessLogic/IdentityProviderBusinessLogic.cs +++ b/src/administration/Administration.Service/BusinessLogic/IdentityProviderBusinessLogic.cs @@ -304,6 +304,7 @@ await provisioningManager.UpdateCentralIdentityProviderDataOIDCAsync( alias, iamIdentityProvider => iamIdentityProvider.MetadataUrl = metadataUrl, iamIdentityProvider => iamIdentityProvider.MetadataUrl = details.Oidc.MetadataUrl); + await portalRepositories.SaveAsync().ConfigureAwait(ConfigureAwaitOptions.None); } private async ValueTask UpdateIdentityProviderSaml(string alias, IdentityProviderEditableDetails details) @@ -323,6 +324,7 @@ await provisioningManager.UpdateCentralIdentityProviderDataSAMLAsync( details.Saml.ServiceProviderEntityId, details.Saml.SingleSignOnServiceUrl)) .ConfigureAwait(false); + await portalRepositories.SaveAsync().ConfigureAwait(ConfigureAwaitOptions.None); } private async ValueTask UpdateIdentityProviderShared(string alias, IdentityProviderEditableDetails details) diff --git a/src/provisioning/Provisioning.Library/Extensions/IdentityProviderManager.cs b/src/provisioning/Provisioning.Library/Extensions/IdentityProviderManager.cs index 912c29350e..15dce3764d 100644 --- a/src/provisioning/Provisioning.Library/Extensions/IdentityProviderManager.cs +++ b/src/provisioning/Provisioning.Library/Extensions/IdentityProviderManager.cs @@ -88,31 +88,32 @@ private async ValueTask SetIdentityProviderMetadataFromUrlAsyn switch (key) { case "userInfoUrl": - changed.Config.UserInfoUrl = value as string; + changed.Config.UserInfoUrl = value.ToString(); break; case "validateSignature": - changed.Config.ValidateSignature = value as string; + changed.Config.ValidateSignature = value.ToString(); break; case "tokenUrl": - changed.Config.TokenUrl = value as string; + changed.Config.TokenUrl = value.ToString(); break; case "authorizationUrl": - changed.Config.AuthorizationUrl = value as string; + changed.Config.AuthorizationUrl = value.ToString(); break; case "jwksUrl": - changed.Config.JwksUrl = value as string; + changed.Config.JwksUrl = value.ToString(); break; case "logoutUrl": - changed.Config.LogoutUrl = value as string; + changed.Config.LogoutUrl = value.ToString(); break; case "issuer": - changed.Config.Issuer = value as string; + changed.Config.Issuer = value.ToString(); break; case "useJwksUrl": - changed.Config.UseJwksUrl = value as string; + changed.Config.UseJwksUrl = value.ToString(); break; } } + return changed; } diff --git a/tests/administration/Administration.Service.Tests/BusinessLogic/IdentityProviderBusinessLogicTests.cs b/tests/administration/Administration.Service.Tests/BusinessLogic/IdentityProviderBusinessLogicTests.cs index eb0409efcc..d8934911e2 100644 --- a/tests/administration/Administration.Service.Tests/BusinessLogic/IdentityProviderBusinessLogicTests.cs +++ b/tests/administration/Administration.Service.Tests/BusinessLogic/IdentityProviderBusinessLogicTests.cs @@ -1688,6 +1688,7 @@ public async Task UpdateOwnCompanyIdentityProviderAsync_WithValidOidc_CallsExpec modifiedIamIdentityProvider.Should().Match(x => x.IamIdpAlias == "cl1" && x.MetadataUrl == "http://new"); + A.CallTo(() => _portalRepositories.SaveAsync()).MustHaveHappenedOnceExactly(); } [Fact] @@ -1781,6 +1782,7 @@ public async Task UpdateOwnCompanyIdentityProviderAsync_WithValidSaml_CallsExpec result.Mappers.Should().HaveCount(2); result.DisplayName.Should().Be("dis-saml"); result.Enabled.Should().BeTrue(); + A.CallTo(() => _portalRepositories.SaveAsync()).MustHaveHappenedOnceExactly(); } [Fact]