Skip to content

Commit

Permalink
Fix injection of 'aliasEntitiesEnabled' into IdentityProviderEndpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
adrianhoelzl-sap committed Jul 1, 2024
1 parent 0e522de commit 032de24
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,7 @@ public class IdentityProviderEndpoints implements ApplicationEventPublisherAware

protected static Logger logger = LoggerFactory.getLogger(IdentityProviderEndpoints.class);

@Qualifier("aliasEntitiesEnabled")
private boolean aliasEntitiesEnabled;
private final boolean aliasEntitiesEnabled;
private final IdentityProviderProvisioning identityProviderProvisioning;
private final ScimGroupExternalMembershipManager scimGroupExternalMembershipManager;
private final ScimGroupProvisioning scimGroupProvisioning;
Expand All @@ -110,7 +109,8 @@ public IdentityProviderEndpoints(
final @Qualifier("identityProviderConfigValidator") IdentityProviderConfigValidator configValidator,
final IdentityZoneManager identityZoneManager,
final @Qualifier("transactionManager") PlatformTransactionManager transactionManager,
final IdentityProviderAliasHandler idpAliasHandler
final IdentityProviderAliasHandler idpAliasHandler,
final @Qualifier("aliasEntitiesEnabled") boolean aliasEntitiesEnabled
) {
this.identityProviderProvisioning = identityProviderProvisioning;
this.scimGroupExternalMembershipManager = scimGroupExternalMembershipManager;
Expand All @@ -120,6 +120,7 @@ public IdentityProviderEndpoints(
this.identityZoneManager = identityZoneManager;
this.transactionTemplate = new TransactionTemplate(transactionManager);
this.idpAliasHandler = idpAliasHandler;
this.aliasEntitiesEnabled = aliasEntitiesEnabled;
}

@PostMapping()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,11 @@
import org.cloudfoundry.identity.uaa.constants.OriginKeys;
import org.cloudfoundry.identity.uaa.extensions.PollutionPreventionExtension;
import org.cloudfoundry.identity.uaa.provider.saml.SamlIdentityProviderConfigurator;
import org.cloudfoundry.identity.uaa.scim.ScimGroupExternalMembershipManager;
import org.cloudfoundry.identity.uaa.scim.ScimGroupProvisioning;
import org.cloudfoundry.identity.uaa.zone.IdentityZone;
import org.cloudfoundry.identity.uaa.zone.IdentityZoneProvisioning;
import org.cloudfoundry.identity.uaa.zone.beans.IdentityZoneManager;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
Expand All @@ -58,7 +60,6 @@
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import org.mockito.ArgumentCaptor;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
Expand All @@ -85,22 +86,29 @@ class IdentityProviderEndpointsTest {
@Mock
private PlatformTransactionManager mockPlatformTransactionManager;

@Mock
private IdentityZoneProvisioning mockIdentityZoneProvisioning;

@Mock
private IdentityProviderAliasHandler mockIdpAliasHandler;

@Mock
SamlIdentityProviderConfigurator samlConfigurator;

@InjectMocks
private IdentityProviderEndpoints identityProviderEndpoints;

@BeforeEach
void setup() {
identityProviderEndpoints = new IdentityProviderEndpoints(
mockIdentityProviderProvisioning,
mock(ScimGroupExternalMembershipManager.class),
mock(ScimGroupProvisioning.class),
samlConfigurator,
mockIdentityProviderConfigValidationDelegator,
mockIdentityZoneManager,
mockPlatformTransactionManager,
mockIdpAliasHandler,
false
);

lenient().when(mockIdentityZoneManager.getCurrentIdentityZoneId()).thenReturn(IdentityZone.getUaaZoneId());
arrangeAliasEntitiesEnabled(true);

lenient().when(mockIdpAliasHandler.aliasPropertiesAreValid(any(), any()))
.thenReturn(true);
Expand Down Expand Up @@ -468,12 +476,26 @@ void create_ldap_provider_removes_password() throws Exception {

@Nested
class Alias {
@BeforeEach
void setUp() {
arrangeAliasEntitiesEnabled(true);
}

@AfterEach
void tearDown() {
arrangeAliasEntitiesEnabled(false);
}

private final String customZoneId = UUID.randomUUID().toString();

private void arrangeCurrentIdentityZone(final String zoneId) {
when(mockIdentityZoneManager.getCurrentIdentityZoneId()).thenReturn(zoneId);
}

private void arrangeAliasEntitiesEnabled(final boolean enabled) {
ReflectionTestUtils.setField(identityProviderEndpoints, "aliasEntitiesEnabled", enabled);
}

@Nested
class Create {
@Test
Expand Down Expand Up @@ -1044,8 +1066,4 @@ void set_auth_client_secret() {
}
}
}

private void arrangeAliasEntitiesEnabled(final boolean enabled) {
ReflectionTestUtils.setField(identityProviderEndpoints, "aliasEntitiesEnabled", enabled);
}
}

0 comments on commit 032de24

Please sign in to comment.