Skip to content

Commit

Permalink
add tests related to local claims
Browse files Browse the repository at this point in the history
  • Loading branch information
amanda-ariyaratne committed Oct 13, 2024
1 parent 517d6d2 commit 0bc8379
Show file tree
Hide file tree
Showing 3 changed files with 158 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,9 @@ public void updateLocalClaimMappings(List<LocalClaim> localClaimList, int tenant
throw new ClaimMetadataClientException(ERROR_CODE_NON_EXISTING_LOCAL_CLAIM_URI.getCode(),
String.format(ERROR_CODE_NON_EXISTING_LOCAL_CLAIM_URI.getMessage(), localClaim.getClaimURI()));
}
List<AttributeMapping> missingMappedAttributes = localClaimMap.get(localClaim.getClaimURI()).getMappedAttributes().stream()
.filter(mappedAttribute -> mappedAttribute.getUserStoreDomain().equals(userStoreDomain))
List<AttributeMapping> missingMappedAttributes = localClaimMap.get(localClaim.getClaimURI())
.getMappedAttributes().stream()
.filter(mappedAttribute -> !mappedAttribute.getUserStoreDomain().equals(userStoreDomain))
.collect(Collectors.toList());
localClaim.getMappedAttributes().addAll(missingMappedAttributes);
localClaim.setClaimProperties(localClaimMap.get(localClaim.getClaimURI()).getClaimProperties());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,13 @@
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.wso2.carbon.identity.claim.metadata.mgt.exception.ClaimMetadataClientException;
import org.wso2.carbon.identity.claim.metadata.mgt.exception.ClaimMetadataException;
import org.wso2.carbon.identity.claim.metadata.mgt.internal.IdentityClaimManagementServiceDataHolder;
import org.wso2.carbon.identity.claim.metadata.mgt.model.AttributeMapping;
import org.wso2.carbon.identity.claim.metadata.mgt.model.ClaimDialect;
import org.wso2.carbon.identity.claim.metadata.mgt.model.ExternalClaim;
import org.wso2.carbon.identity.claim.metadata.mgt.model.LocalClaim;
import org.wso2.carbon.identity.common.testng.WithCarbonHome;
import org.wso2.carbon.identity.core.util.IdentityTenantUtil;
import org.wso2.carbon.identity.core.util.IdentityUtil;
Expand All @@ -43,14 +46,19 @@
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.testng.Assert.assertThrows;
import static org.wso2.carbon.base.MultitenantConstants.SUPER_TENANT_DOMAIN_NAME;
import static org.wso2.carbon.base.MultitenantConstants.SUPER_TENANT_ID;
import static org.wso2.carbon.identity.claim.metadata.mgt.util.ClaimConstants.LOCAL_CLAIM_DIALECT_URI;
import static org.wso2.carbon.identity.testutil.Whitebox.setInternalState;

@WithCarbonHome
@Test
public class ClaimMetadataManagementServiceImplTest {

private static final String LOCAL_CLAIM_DIALECT = "http://wso2.org/claims";
private static final String LOCAL_CLAIM_1 = "http://wso2.org/claims/username";
private static final String LOCAL_CLAIM_2 = "http://wso2.org/claims/email";
private static final String EXTERNAL_CLAIM_DIALECT_URI = "https://abc.org";
private static final String EXTERNAL_CLAIM_URI = "test";
private static final String MAPPED_LOCAL_CLAIM_URI = "http://wso2.org/claims/test";
Expand Down Expand Up @@ -85,18 +93,6 @@ public void setup() throws Exception {
.thenReturn(mock(ClaimMetadataEventPublisherProxy.class));
}

@Test
public void testGetClaimDialects() throws Exception {

when(unifiedClaimMetadataManager.getExternalClaims(anyString(), anyInt())).thenReturn(new ArrayList<>());
List<ClaimDialect> claimDialects = new ArrayList<>();
claimDialects.add(new ClaimDialect(EXTERNAL_CLAIM_DIALECT_URI));
when(unifiedClaimMetadataManager.getClaimDialects(anyInt())).thenReturn(claimDialects);

service.getClaimDialects(SUPER_TENANT_DOMAIN_NAME);
verify(unifiedClaimMetadataManager, times(1)).getClaimDialects(anyInt());
}

@Test
public void testAddExternalClaim() throws Exception {

Expand Down Expand Up @@ -129,6 +125,152 @@ public void testAddExtClaimWithExistingLocalClaimMapping() throws Exception {
service.addExternalClaim(externalClaim, SUPER_TENANT_DOMAIN_NAME);
}

@Test
public void testGetClaimDialects() throws Exception {

when(unifiedClaimMetadataManager.getExternalClaims(anyString(), anyInt())).thenReturn(new ArrayList<>());
List<ClaimDialect> claimDialects = new ArrayList<>();
claimDialects.add(new ClaimDialect(EXTERNAL_CLAIM_DIALECT_URI));
when(unifiedClaimMetadataManager.getClaimDialects(anyInt())).thenReturn(claimDialects);

service.getClaimDialects(SUPER_TENANT_DOMAIN_NAME);
verify(unifiedClaimMetadataManager, times(1)).getClaimDialects(anyInt());
}

@Test
public void testAddClaimDialect() throws ClaimMetadataException {

ClaimDialect claimDialectToBeAdded = new ClaimDialect(EXTERNAL_CLAIM_DIALECT_URI);
when(unifiedClaimMetadataManager.getClaimDialects(anyInt())).thenReturn(new ArrayList<>());
service.addClaimDialect(claimDialectToBeAdded, SUPER_TENANT_DOMAIN_NAME);
verify(unifiedClaimMetadataManager, times(1)).addClaimDialect(any(), anyInt());

when(unifiedClaimMetadataManager.getClaimDialects(anyInt()))
.thenReturn(Collections.singletonList(claimDialectToBeAdded));
assertThrows(ClaimMetadataException.class, () -> {
service.addClaimDialect(claimDialectToBeAdded, SUPER_TENANT_DOMAIN_NAME);
});

assertThrows(ClaimMetadataClientException.class, () -> {
service.addClaimDialect(null, SUPER_TENANT_DOMAIN_NAME);
});
}

@Test
public void testRenameClaimDialect() throws ClaimMetadataException {

ClaimDialect newClaimDialect = new ClaimDialect(EXTERNAL_CLAIM_DIALECT_URI);
ClaimDialect oldClaimDialect = new ClaimDialect(LOCAL_CLAIM_DIALECT_URI);
when(unifiedClaimMetadataManager.isSystemDefaultClaimDialect(LOCAL_CLAIM_DIALECT_URI, SUPER_TENANT_ID))
.thenReturn(Boolean.FALSE);
service.renameClaimDialect(oldClaimDialect, newClaimDialect, SUPER_TENANT_DOMAIN_NAME);
verify(unifiedClaimMetadataManager, times(1)).renameClaimDialect(any(), any(), anyInt());

when(unifiedClaimMetadataManager.isSystemDefaultClaimDialect(LOCAL_CLAIM_DIALECT_URI, SUPER_TENANT_ID))
.thenReturn(Boolean.TRUE);
assertThrows(ClaimMetadataClientException.class, () -> {
service.renameClaimDialect(oldClaimDialect, newClaimDialect, SUPER_TENANT_DOMAIN_NAME);
});
}

@Test
public void testRemoveClaimDialect() throws ClaimMetadataException {

ClaimDialect claimDialectToBeDeleted = new ClaimDialect(EXTERNAL_CLAIM_DIALECT_URI);
when(unifiedClaimMetadataManager.isSystemDefaultClaimDialect(EXTERNAL_CLAIM_DIALECT_URI, SUPER_TENANT_ID))
.thenReturn(Boolean.FALSE);
service.removeClaimDialect(claimDialectToBeDeleted, SUPER_TENANT_DOMAIN_NAME);
verify(unifiedClaimMetadataManager, times(1)).removeClaimDialect(any(), anyInt());

when(unifiedClaimMetadataManager.isSystemDefaultClaimDialect(EXTERNAL_CLAIM_DIALECT_URI, SUPER_TENANT_ID))
.thenReturn(Boolean.TRUE);
assertThrows(ClaimMetadataClientException.class, () -> {
service.removeClaimDialect(claimDialectToBeDeleted, SUPER_TENANT_DOMAIN_NAME);
});
}

@Test
public void testGetLocalClaims() throws ClaimMetadataException {

service.getLocalClaims(SUPER_TENANT_DOMAIN_NAME);
verify(unifiedClaimMetadataManager, times(1)).getLocalClaims(anyInt());
}

@Test
public void testAddLocalClaim() throws ClaimMetadataException {

LocalClaim localClaimToBeAdded = new LocalClaim(LOCAL_CLAIM_1);
localClaimToBeAdded.setMappedAttributes(new ArrayList<>());
localClaimToBeAdded.getMappedAttributes()
.add(new AttributeMapping("PRIMARY", "username"));
when(unifiedClaimMetadataManager.getLocalClaims(anyInt())).thenReturn(new ArrayList<>());
service.addLocalClaim(localClaimToBeAdded, SUPER_TENANT_DOMAIN_NAME);
verify(unifiedClaimMetadataManager, times(1)).addLocalClaim(any(), anyInt());

when(unifiedClaimMetadataManager.getLocalClaims(anyInt()))
.thenReturn(Collections.singletonList(localClaimToBeAdded));
assertThrows(ClaimMetadataClientException.class, () -> {
service.addLocalClaim(localClaimToBeAdded, SUPER_TENANT_DOMAIN_NAME);
});
}

@Test
public void testUpdateLocalClaim() throws ClaimMetadataException {

LocalClaim localClaimToBeUpdated = new LocalClaim(LOCAL_CLAIM_1);
localClaimToBeUpdated.setMappedAttributes(new ArrayList<>());
localClaimToBeUpdated.getMappedAttributes()
.add(new AttributeMapping("PRIMARY", "user_name"));

LocalClaim existingLocalClaim = new LocalClaim(LOCAL_CLAIM_1);
existingLocalClaim.setMappedAttributes(new ArrayList<>());
existingLocalClaim.getMappedAttributes()
.add(new AttributeMapping("PRIMARY", "username"));

when(unifiedClaimMetadataManager.getLocalClaims(SUPER_TENANT_ID))
.thenReturn(Collections.singletonList(existingLocalClaim));
service.updateLocalClaim(localClaimToBeUpdated, SUPER_TENANT_DOMAIN_NAME);
verify(unifiedClaimMetadataManager, times(1)).updateLocalClaim(any(), anyInt());

when(unifiedClaimMetadataManager.getLocalClaims(SUPER_TENANT_ID)).thenReturn(new ArrayList<>());
assertThrows(ClaimMetadataClientException.class, () -> {
service.updateLocalClaim(localClaimToBeUpdated, SUPER_TENANT_DOMAIN_NAME);
});
}

@Test
public void testUpdateLocalClaimMappings() throws ClaimMetadataException {

LocalClaim localClaimToBeUpdated = new LocalClaim(LOCAL_CLAIM_1);
localClaimToBeUpdated.setMappedAttributes(new ArrayList<>());
localClaimToBeUpdated.getMappedAttributes()
.add(new AttributeMapping("PRIMARY", "user_name"));
List<LocalClaim> localClaimsList = new ArrayList<>();
localClaimsList.add(localClaimToBeUpdated);

service.updateLocalClaimMappings(localClaimsList, SUPER_TENANT_DOMAIN_NAME, "PRIMARY");
verify(unifiedClaimMetadataManager, times(1))
.updateLocalClaimMappings(any(), anyInt(), anyString());
}

@Test
public void testRemoveLocalClaim() throws ClaimMetadataException {

String localClaimURIToBeRemoved = LOCAL_CLAIM_1;
service.removeLocalClaim(localClaimURIToBeRemoved, SUPER_TENANT_DOMAIN_NAME);
verify(unifiedClaimMetadataManager, times(1)).removeLocalClaim(anyString(), anyInt());

when(unifiedClaimMetadataManager.isSystemDefaultLocalClaim(LOCAL_CLAIM_1, SUPER_TENANT_ID)).thenReturn(true);
assertThrows(ClaimMetadataClientException.class, () -> {
service.removeLocalClaim(localClaimURIToBeRemoved, SUPER_TENANT_DOMAIN_NAME);
});

when(unifiedClaimMetadataManager.isMappedLocalClaim(LOCAL_CLAIM_1, SUPER_TENANT_ID)).thenReturn(true);
assertThrows(ClaimMetadataClientException.class, () -> {
service.removeLocalClaim(localClaimURIToBeRemoved, SUPER_TENANT_DOMAIN_NAME);
});
}

@AfterMethod
public void tearDown() {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,7 @@ public void testUpdateLocalClaim() throws ClaimMetadataException {
public void testUpdateLocalClaimMappings() throws ClaimMetadataException {

List<LocalClaim> updatedLocalClaims = new ArrayList<>();
LocalClaim localClaim = new LocalClaim("http://wso2.org/claims/username");
LocalClaim localClaim = new LocalClaim(LOCAL_CLAIM_1);
updatedLocalClaims.add(localClaim);
when(dbBasedClaimMetadataManager.getClaimDialect(ClaimConstants.LOCAL_CLAIM_DIALECT_URI, 1)).thenReturn(null);
List<LocalClaim> finalUpdatedLocalClaims = updatedLocalClaims;
Expand Down

0 comments on commit 0bc8379

Please sign in to comment.