Skip to content

Commit

Permalink
Adjusting old test cases broken due to changes and adding new test ca…
Browse files Browse the repository at this point in the history
…ses for new flows
  • Loading branch information
BojithaPiyathilake committed Jul 7, 2022
1 parent 3fbc72f commit 9b2f31e
Show file tree
Hide file tree
Showing 4 changed files with 341 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ public class ClaimTestUtil {
public static final String CLAIM_URI3 = "http://wso2.org/givenname3";
public static final String CLAIM_URI4 = "http://wso2.org/claims/username";
public static final String CLAIM_URI5 = "http://wso2.org/claims/userid";
public static final String CLAIM_URI6 = "http://wso2.org/claims/fullname";

public static final String HOME_PROFILE_NAME = "HomeProfile";

public static Map<String, ClaimMapping> getClaimTestData() {
Expand Down Expand Up @@ -97,6 +99,18 @@ public static Map<String, ClaimMapping> getClaimTestData() {
cm5.setClaim(claim5);
cm5.setMappedAttribute("scimId");
claims.put(CLAIM_URI5, cm5);

Claim claim6 = new Claim();
claim6.setClaimUri(CLAIM_URI6);
claim6.setDescription("Fullname claim URI");
claim6.setDialectURI("http://wso2.org/");
claim6.setDisplayTag("Full name");
claim6.setRequired(true);
claim6.setSupportedByDefault(true);
ClaimMapping cm6 = new ClaimMapping();
cm6.setClaim(claim6);
cm6.setMappedAttribute("fullname");
claims.put(CLAIM_URI6, cm6);

return claims;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ public void doClaimStuff() throws Exception{

// get all the claim URIs
String[] ClmURI = claimMan.getAllClaimUris();
assertEquals(5, ClmURI.length);
assertEquals(6, ClmURI.length);

// get the attribute name for a given claimURI
// if the claimURI is null it will return a null value.
Expand Down Expand Up @@ -124,45 +124,45 @@ public void doClaimStuff() throws Exception{
ClaimMapping[] CM1 = (ClaimMapping[]) claimMan.getAllSupportClaimMappingsByDefault();
Arrays.sort(CM1,new ClaimSorter());//sorting C1 array
Claim C1 = CM1[0].getClaim();
assertEquals("Given Name",C1.getDisplayTag());
assertEquals("Full name",C1.getDisplayTag());


//lists all the claims required at the time user registration
ClaimMapping[] CM2 = (ClaimMapping[]) claimMan.getAllRequiredClaimMappings();
Arrays.sort(CM2,new ClaimSorter());//sorting C2 array

assertEquals(5, CM2.length);
assertEquals(6, CM2.length);
Claim C2 = CM2[2].getClaim();
assertEquals("Given Name3", C2.getDisplayTag());
assertEquals(5, claimMan.getAllRequiredClaimMappings().length);
assertEquals(5, claimMan.getAllSupportClaimMappingsByDefault().length);
assertEquals(5, claimMan.getAllClaimMappings().length);
assertEquals("Given Name2", C2.getDisplayTag());
assertEquals(6, claimMan.getAllRequiredClaimMappings().length);
assertEquals(6, claimMan.getAllSupportClaimMappingsByDefault().length);
assertEquals(6, claimMan.getAllClaimMappings().length);


//void addNewClaimMapping(ClaimMapping mapping) add new mappings
ClaimMapping[] NewclaimMapping = AdvancedClaimManagerTest.makeClaimMap();
for(ClaimMapping x:NewclaimMapping){
claimMan.addNewClaimMapping(x);
}
assertEquals(6,claimMan.getAllSupportClaimMappingsByDefault().length);
assertEquals(6,claimMan.getAllRequiredClaimMappings().length);
assertEquals(8,claimMan.getAllClaimMappings().length);
assertEquals(7,claimMan.getAllSupportClaimMappingsByDefault().length);
assertEquals(7,claimMan.getAllRequiredClaimMappings().length);
assertEquals(9,claimMan.getAllClaimMappings().length);


//update an existing mapping
NewclaimMapping[1].getClaim().setDescription("The Update claim5");
NewclaimMapping[1].getClaim().setRequired(true);
claimMan.updateClaimMapping(NewclaimMapping[1]);

assertEquals(7,claimMan.getAllRequiredClaimMappings().length);
assertEquals(8,claimMan.getAllRequiredClaimMappings().length);
assertEquals("The Update claim5",NewclaimMapping[1].getClaim().getDescription());


//delete an existing mapping
claimMan.deleteClaimMapping(NewclaimMapping[0]);
assertEquals(6,claimMan.getAllRequiredClaimMappings().length);
assertEquals(6,claimMan.getAllSupportClaimMappingsByDefault().length);
assertEquals(7,claimMan.getAllClaimMappings().length);
assertEquals(7,claimMan.getAllRequiredClaimMappings().length);
assertEquals(7,claimMan.getAllSupportClaimMappingsByDefault().length);
assertEquals(8,claimMan.getAllClaimMappings().length);
}

public Map<String, ClaimMapping> doClaimBuilderStuff() throws Exception{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import org.wso2.carbon.user.core.model.ExpressionAttribute;
import org.wso2.carbon.user.core.model.ExpressionCondition;
import org.wso2.carbon.user.core.model.ExpressionOperation;
import org.wso2.carbon.user.core.model.OperationalCondition;
import org.wso2.carbon.user.core.model.UniqueIDUserClaimSearchEntry;
import org.wso2.carbon.user.core.model.UserClaimSearchEntry;
import org.wso2.carbon.user.core.util.DatabaseUtil;
Expand Down Expand Up @@ -552,6 +553,158 @@ public void test194GetUserListWithIDCondition() throws UserStoreException {
assertEquals(0, admin.getUserListWithID(expressionCondition, null, null, 10, 2, null, null).size());
}

public void test194GetUserListWithIDConditionCursor() throws Exception {

// Current user list admin, user1WithID, user2, user2WithID, user3, user3WithID, user4, user4WithID

// userName sw use
ExpressionCondition expressionCondition = new ExpressionCondition(ExpressionOperation.SW.toString(),
ExpressionAttribute.USERNAME.toString(), "use");
ExpressionCondition noConditions = new ExpressionCondition(ExpressionOperation.SW.toString(),
ExpressionAttribute.USERNAME.toString(), "");

//Making a List of expressionConditions for multi-attribute filtering
// userName co WithID
ExpressionCondition expressionCondition2 = new ExpressionCondition(ExpressionOperation.CO.toString(),
ExpressionAttribute.USERNAME.toString(), "WithID");
// userName sw use and userName co WithID
OperationalCondition multiFiltering =
new OperationalCondition("AND", expressionCondition, expressionCondition2);

// No filtering
assertEquals(8, admin.getUserListWithID(noConditions, null, null, 10, "", "NEXT", null, null).size());

// Single userName filtering initial query (no cursor)
assertEquals(7, admin.getUserListWithID(expressionCondition, null, null, 10, "", "NEXT", null, null).size());

// Single userName filtering - Forwards cursor pagination
assertEquals(4, admin.getUserListWithID(expressionCondition, null, null, 10, "user2WithID", "NEXT", null, null)
.size());

// Single userName filtering - Backwards cursor pagination
assertEquals(2, admin.getUserListWithID(expressionCondition, null, null, 10, "user2WithID", "PREVIOUS",
null, null).size());

// Multiple filter conditions with userName attribute - Forwards cursor pagination
assertEquals(4, admin.getUserListWithID(multiFiltering, null, null, 10, "", "NEXT", null, null).size());

// Multiple filter conditions with userName attribute - Backwards cursor pagination
assertEquals(1, admin.getUserListWithID(multiFiltering, null, null, 10, "user2WithID", "PREVIOUS", null, null)
.size());

// Setup for claim filtering
Map<String, String> claims = new HashMap<>();
claims.put(ClaimTestUtil.CLAIM_URI1, "Alucard");
claims.put(ClaimTestUtil.CLAIM_URI6, "Tepes, Alucard");
admin.addUser("Alucard", "pass100", null, claims, null, false);
claims.clear();
claims.put(ClaimTestUtil.CLAIM_URI1, "Akira");
claims.put(ClaimTestUtil.CLAIM_URI6, "Toriyama, Akira");
admin.addUser("Akira", "pass100", null, claims, null, false);
claims.clear();
claims.put(ClaimTestUtil.CLAIM_URI1, "Alphonse");
claims.put(ClaimTestUtil.CLAIM_URI6, "Elrich, Alphonse");
admin.addUser("Alphonse", "pass100", null, claims, null, false);
claims.clear();
claims.put(ClaimTestUtil.CLAIM_URI1, "Annie");
claims.put(ClaimTestUtil.CLAIM_URI6, "Leonhart, Annie");
admin.addUser("Annie", "pass100", null, claims, null, false);

// New user list: admin, Akira, Alphonse, Alucard, Annie, user1WithID, user2, user2WithID, user3, user3WithID,
// user4, user4WithID
// Having claims: Akira, Alphonse, Alucard, Annie

// givenname sw A
ExpressionCondition claimFiltering1 = new ExpressionCondition(ExpressionOperation.SW.toString(), "attr1", "A");
// fullname sw T
ExpressionCondition claimFiltering2 = new ExpressionCondition(ExpressionOperation.SW.toString(), "fullname",
"T");
// givenname sw A and fullname sw T
OperationalCondition multiClaimFiltering = new OperationalCondition("AND", claimFiltering1, claimFiltering2);

// Single claim filtering forward cursor pagination
assertEquals(4, admin.getUserListWithID(claimFiltering1, null, null, 10, "", "NEXT", null, null).size());

// Single claim filtering backwards cursor pagination
assertEquals(2, admin.getUserListWithID(claimFiltering1, null, null, 10, "Alucard", "PREVIOUS", null, null)
.size());

// Multi claim filtering forwards cursor pagination
assertEquals(2, admin.getUserListWithID(multiClaimFiltering, null, null, 10, "", "NEXT", null, null).size());

// Multi claim filtering backwards cursor pagination
assertEquals(1, admin.getUserListWithID(multiClaimFiltering, null, null, 10, "Alucard", "PREVIOUS", null, null)
.size());

// Role configuration for group filtering

// admin.addUser("user1", "pass1", new String[]{"role1"}, null, null, false);
admin.addRole("Manager", new String[]{"Alucard", "Akira", "Alphonse", "Annie", "user2", "user2WithID", "user3",
"user3WithID"}, null);
admin.addRole("HeadManager", new String[]{"Alucard", "Akira", "Alphonse", "Annie", "user2", "user2WithID",
"user3", "user4"}, null);
// New role list: admin, Internal/everyone, role1WithID, role3, role4, Manager, HeadManager

// groups eq Manager
ExpressionCondition groupFiltering = new ExpressionCondition(ExpressionOperation.EQ.toString(),
ExpressionAttribute.ROLE.toString(), "Manager");
// group eq HeadManager
ExpressionCondition groupFiltering2 = new ExpressionCondition(ExpressionOperation.EQ.toString(),
ExpressionAttribute.ROLE.toString(), "HeadManager");
// groups eq Manager and groups eq HeadManager
OperationalCondition multiGroupFiltering = new OperationalCondition("AND", groupFiltering, groupFiltering2);

// Group Filtering forwards cursor pagination
assertEquals(3, admin.getUserListWithID(groupFiltering, null, null, 10, "user2", "NEXT", null, null).size());

// Group Filtering backwards cursor pagination
assertEquals(6, admin.getUserListWithID(groupFiltering, null, null, 10, "user3", "PREVIOUS", null, null)
.size());

// Multi-group filtering forwards cursor pagination
assertEquals(2, admin.getUserListWithID(multiGroupFiltering, null, null, 10, "user2", "NEXT", null, null)
.size());

// Multi-group filtering backwards cursor pagination
assertEquals(3, admin.getUserListWithID(multiGroupFiltering, null, null, 10, "Annie", "PREVIOUS", null, null)
.size());

// groups eq Manager and groups eq HeadManager and userName sw use
OperationalCondition groupAndUserNameFilter =
new OperationalCondition("AND", multiGroupFiltering, expressionCondition);

// Multi-group filtering and userName filtering forward cursor pagination
assertEquals(3, admin.getUserListWithID(groupAndUserNameFilter, null, null, 10, "", "NEXT", null, null).size());

// Multi-group filtering and userName filtering backwards cursor pagination
assertEquals(1, admin.getUserListWithID(groupAndUserNameFilter, null, null, 10, "user2WithID", "PREVIOUS",
null, null).size());

// givenname sw A and groups eq Manager
OperationalCondition singleClaimAndGroupFilter =
new OperationalCondition("AND", claimFiltering1, groupFiltering);
// givenname sw A and groups eq Manager and groups eq HeadManager
OperationalCondition singleClaimAndMultiGroupFilter =
new OperationalCondition("AND", claimFiltering1, multiGroupFiltering);
// givenname sw A and fullname sw T and groups eq Manager and groups eq HeadManager
OperationalCondition multiGroupAndMultiClaimFilter =
new OperationalCondition("AND", multiClaimFiltering, multiGroupFiltering);

// Having claims + In the manager and HeadManager groups: Akira, Alphonse, Alucard, Annie

// Single group and claim filtering forward cursor pagination
assertEquals(3, admin.getUserListWithID(singleClaimAndGroupFilter, null, null, 10, "Akira", "NEXT", null, null)
.size());

// Multi-group filtering and single claim filtering forward cursor pagination
assertEquals(4, admin.getUserListWithID(singleClaimAndMultiGroupFilter, null, null, 10, "", "NEXT", null, null)
.size());

// Multi-group filtering and multi-claim filtering forward cursor pagination
assertEquals(1, admin.getUserListWithID(multiGroupAndMultiClaimFilter, null, null, 10, "Akira", "NEXT",
null, null).size());
}

public void test195GetRoleListOfUserWithID() throws UserStoreException {

assertEquals(2, admin.getRoleListOfUserWithID(userId1).size());
Expand Down
Loading

0 comments on commit 9b2f31e

Please sign in to comment.