use of org.wso2.carbon.identity.role.mgt.core.RoleBasicInfo in project identity-inbound-provisioning-scim2 by wso2-extensions.
the class SCIMRoleManagerTest method testRoleUpdatePermissionListOfRoleThrowingErrors.
@Test(dataProvider = "dataProviderForRoleUpdatePermissionListOfRoleThrowingErrors", expectedExceptions = { BadRequestException.class, CharonException.class })
public void testRoleUpdatePermissionListOfRoleThrowingErrors(String roleId, String oldRoleName, String newRoleName, String tenantDomain, String permissionType, String sError) throws IdentityRoleManagementException, BadRequestException, CharonException, ConflictException, NotFoundException {
RoleBasicInfo roleBasicInfo = new RoleBasicInfo(roleId, newRoleName);
Role[] oldAndNewRoles = getOldAndNewRoleDummies(roleId, oldRoleName, newRoleName, permissionType);
when(mockRoleManagementService.updateRoleName(anyString(), anyString(), anyString())).thenReturn(roleBasicInfo);
when(mockRoleManagementService.setPermissionsForRole(anyString(), anyListOf(String.class), anyString())).thenAnswer(invocationOnMock -> {
String roleIdArg = invocationOnMock.getArgumentAt(0, String.class);
String tenantDomainArg = invocationOnMock.getArgumentAt(2, String.class);
if (INVALID_ROLE_IDS.contains(roleIdArg)) {
String errorMessage = "Invalid scenario. Multiple roles found for the given role name: " + roleIdArg + " and tenantDomain: " + tenantDomain;
throw new IdentityRoleManagementClientException(INVALID_REQUEST.getCode(), errorMessage);
}
if (SYSTEM_ROLES.contains(oldRoleName)) {
throw new IdentityRoleManagementClientException(RoleConstants.Error.OPERATION_FORBIDDEN.getCode(), "Invalid operation. Permissions cannot be modified in the role: " + oldRoleName + " since it's a read only system role.");
}
Throwable unExpectedErrors = unExpectedErrorThrower(tenantDomainArg, sError, "Error while updating users to the role: %s in the tenantDomain: %s", roleIdArg);
if (unExpectedErrors != null)
throw unExpectedErrors;
return roleBasicInfo;
});
when(mockRoleManagementService.updateUserListOfRole(eq(roleId), anyListOf(String.class), anyListOf(String.class), anyString())).thenReturn(roleBasicInfo);
when(mockRoleManagementService.updateGroupListOfRole(eq(roleId), anyListOf(String.class), anyListOf(String.class), anyString())).thenReturn(roleBasicInfo);
SCIMRoleManager scimRoleManager = new SCIMRoleManager(mockRoleManagementService, tenantDomain);
scimRoleManager.updateRole(oldAndNewRoles[0], oldAndNewRoles[1]);
}
use of org.wso2.carbon.identity.role.mgt.core.RoleBasicInfo in project identity-inbound-provisioning-scim2 by wso2-extensions.
the class SCIMRoleManager method filterRolesBySingleAttribute.
/**
* Get the list of roles based on the filter.
*
* @param node Expression node.
* @param startIndex Starting index.
* @param count Number of results required.
* @param sortBy SortBy.
* @param sortOrder Sorting order.
* @return Filtered roles.
* @throws CharonException Error filtering the roles.
*/
private List<Object> filterRolesBySingleAttribute(ExpressionNode node, Integer count, Integer startIndex, String sortBy, String sortOrder) throws CharonException, BadRequestException {
String attributeName = node.getAttributeValue();
String filterOperation = node.getOperation();
String attributeValue = node.getValue();
if (log.isDebugEnabled()) {
log.debug("Filtering roles with filter: " + attributeName + " + " + filterOperation + " + " + attributeValue);
}
// Check whether the filter operation is supported for filtering in roles.
if (isFilteringNotSupported(filterOperation)) {
String errorMessage = "Filter operation: " + filterOperation + " is not supported for role filtering.";
throw new BadRequestException(errorMessage);
}
List<Object> filteredRoles = new ArrayList<>();
// 0th index is to store total number of results.
filteredRoles.add(0);
String searchFilter = getSearchFilter(filterOperation, attributeValue);
if (log.isDebugEnabled()) {
log.debug(String.format("Filtering roleNames from search filter: %s", searchFilter));
}
List<RoleBasicInfo> roles;
try {
roles = roleManagementService.getRoles(searchFilter, count, startIndex, sortBy, sortOrder, tenantDomain);
} catch (IdentityRoleManagementException e) {
throw new CharonException(String.format("Error occurred while listing roles based on the search filter: %s", searchFilter), e);
}
List<Object> scimRoles = getScimRolesList(roles);
// Set total number of results to 0th index.
filteredRoles.set(0, scimRoles.size());
// Add the results list.
filteredRoles.addAll(scimRoles);
return filteredRoles;
}
use of org.wso2.carbon.identity.role.mgt.core.RoleBasicInfo in project identity-inbound-provisioning-scim2 by wso2-extensions.
the class SCIMRoleManager method listRoles.
/**
* Method to list roles.
*
* @param startIndex Starting index of the results.
* @param count Results count value.
* @param sortBy SortBy.
* @param sortOrder Sorting order.
* @return List of roles.
* @throws CharonException Error while listing users
*/
private List<Object> listRoles(Integer count, Integer startIndex, String sortBy, String sortOrder) throws CharonException, BadRequestException {
List<Object> rolesList = new ArrayList<>();
try {
// 0th index is to store total number of results.
rolesList.add(0);
List<RoleBasicInfo> roles = roleManagementService.getRoles(count, startIndex, sortBy, sortOrder, tenantDomain);
List<Object> scimRoles = getScimRolesList(roles);
// Set total number of results to 0th index.
rolesList.set(0, scimRoles.size());
// Add the results list.
rolesList.addAll(scimRoles);
} catch (IdentityRoleManagementException e) {
throw new CharonException("Error occurred while listing roles.", e);
}
return rolesList;
}
use of org.wso2.carbon.identity.role.mgt.core.RoleBasicInfo in project identity-inbound-provisioning-scim2 by wso2-extensions.
the class SCIMRoleManager method getScimRolesList.
private List<Object> getScimRolesList(List<RoleBasicInfo> roles) throws BadRequestException, CharonException {
List<Object> scimRoles = new ArrayList<>();
for (RoleBasicInfo roleBasicInfo : roles) {
Role scimRole = new Role();
scimRole.setDisplayName(roleBasicInfo.getName());
scimRole.setId(roleBasicInfo.getId());
scimRole.setLocation(SCIMCommonUtils.getSCIMRoleURL(roleBasicInfo.getId()));
if (systemRoles.contains(roleBasicInfo.getName())) {
scimRole.setSystemRole(true);
}
scimRoles.add(scimRole);
}
return scimRoles;
}
Aggregations