From b6ed90da0e35741f623eca4ada0bb4bae160a722 Mon Sep 17 00:00:00 2001 From: Adrian Hoelzl Date: Thu, 22 Feb 2024 11:51:20 +0100 Subject: [PATCH] Fix IdentityProviderEndpointsTest --- .../identity/uaa/alias/EntityAliasHandler.java | 5 +++-- .../uaa/provider/IdentityProviderEndpoints.java | 13 +++++++++++-- .../uaa/provider/IdentityProviderEndpointsTest.java | 5 ++++- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/server/src/main/java/org/cloudfoundry/identity/uaa/alias/EntityAliasHandler.java b/server/src/main/java/org/cloudfoundry/identity/uaa/alias/EntityAliasHandler.java index 262aabbedf0..5c36f0cb3ae 100644 --- a/server/src/main/java/org/cloudfoundry/identity/uaa/alias/EntityAliasHandler.java +++ b/server/src/main/java/org/cloudfoundry/identity/uaa/alias/EntityAliasHandler.java @@ -148,8 +148,9 @@ public final EntityAliasResult ensureConsistencyOfAliasEntity( aliasEntity.setAliasId(null); aliasEntity.setAliasZid(null); + final T updatedAliasEntity; try { - updateEntity(aliasEntity, aliasEntity.getZoneId()); + updatedAliasEntity = updateEntity(aliasEntity, aliasEntity.getZoneId()); } catch (final DataAccessException e) { throw new EntityAliasFailedException( String.format( @@ -160,7 +161,7 @@ public final EntityAliasResult ensureConsistencyOfAliasEntity( } // no change required in the original entity since its aliasId and aliasZid were already set to null - return new EntityAliasResult<>(originalEntity, aliasEntity); + return new EntityAliasResult<>(originalEntity, updatedAliasEntity); } if (!hasText(originalEntity.getAliasZid())) { diff --git a/server/src/main/java/org/cloudfoundry/identity/uaa/provider/IdentityProviderEndpoints.java b/server/src/main/java/org/cloudfoundry/identity/uaa/provider/IdentityProviderEndpoints.java index c83d415dd4c..b92c41c27a9 100644 --- a/server/src/main/java/org/cloudfoundry/identity/uaa/provider/IdentityProviderEndpoints.java +++ b/server/src/main/java/org/cloudfoundry/identity/uaa/provider/IdentityProviderEndpoints.java @@ -40,6 +40,7 @@ import java.util.Optional; import org.cloudfoundry.identity.uaa.alias.EntityAliasFailedException; +import org.cloudfoundry.identity.uaa.alias.EntityAliasHandler.EntityAliasResult; import org.cloudfoundry.identity.uaa.audit.event.EntityDeletedEvent; import org.cloudfoundry.identity.uaa.authentication.manager.DynamicLdapAuthenticationManager; import org.cloudfoundry.identity.uaa.authentication.manager.LdapLoginAuthenticationManager; @@ -147,7 +148,11 @@ public ResponseEntity createIdentityProvider(@RequestBody Iden try { createdIdp = transactionTemplate.execute(txStatus -> { final IdentityProvider createdOriginalIdp = identityProviderProvisioning.create(body, zoneId); - return idpAliasHandler.ensureConsistencyOfAliasEntity(createdOriginalIdp, null); + final EntityAliasResult> aliasResult = idpAliasHandler.ensureConsistencyOfAliasEntity( + createdOriginalIdp, + null + ); + return aliasResult.originalEntity(); }); } catch (final IdpAlreadyExistsException e) { return new ResponseEntity<>(body, CONFLICT); @@ -256,7 +261,11 @@ public ResponseEntity updateIdentityProvider(@PathVariable Str try { updatedIdp = transactionTemplate.execute(txStatus -> { final IdentityProvider updatedOriginalIdp = identityProviderProvisioning.update(body, zoneId); - return idpAliasHandler.ensureConsistencyOfAliasEntity(updatedOriginalIdp, existing); + final EntityAliasResult> aliasResult = idpAliasHandler.ensureConsistencyOfAliasEntity( + updatedOriginalIdp, + existing + ); + return aliasResult.originalEntity(); }); } catch (final IdpAlreadyExistsException e) { return new ResponseEntity<>(body, CONFLICT); diff --git a/server/src/test/java/org/cloudfoundry/identity/uaa/provider/IdentityProviderEndpointsTest.java b/server/src/test/java/org/cloudfoundry/identity/uaa/provider/IdentityProviderEndpointsTest.java index 528c1708e0d..d92da213ab3 100644 --- a/server/src/test/java/org/cloudfoundry/identity/uaa/provider/IdentityProviderEndpointsTest.java +++ b/server/src/test/java/org/cloudfoundry/identity/uaa/provider/IdentityProviderEndpointsTest.java @@ -98,7 +98,10 @@ void setup() { lenient().when(mockIdpAliasHandler.aliasPropertiesAreValid(any(), any())) .thenReturn(true); lenient().when(mockIdpAliasHandler.ensureConsistencyOfAliasEntity(any(), any())) - .then(invocationOnMock -> invocationOnMock.getArgument(0)); + .then(invocationOnMock -> { + final IdentityProvider originalIdp = invocationOnMock.getArgument(0); + return new EntityAliasResult>(originalIdp, null); + }); } IdentityProvider getExternalOAuthProvider() {