Search in sources :

Example 31 with RoleBasicInfo

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]);
}
Also used : Role(org.wso2.charon3.core.objects.Role) Matchers.anyString(org.mockito.Matchers.anyString) RoleBasicInfo(org.wso2.carbon.identity.role.mgt.core.RoleBasicInfo) IdentityRoleManagementClientException(org.wso2.carbon.identity.role.mgt.core.IdentityRoleManagementClientException) Test(org.testng.annotations.Test) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest)

Example 32 with RoleBasicInfo

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;
}
Also used : ArrayList(java.util.ArrayList) BadRequestException(org.wso2.charon3.core.exceptions.BadRequestException) CharonException(org.wso2.charon3.core.exceptions.CharonException) RoleBasicInfo(org.wso2.carbon.identity.role.mgt.core.RoleBasicInfo) IdentityRoleManagementException(org.wso2.carbon.identity.role.mgt.core.IdentityRoleManagementException)

Example 33 with RoleBasicInfo

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;
}
Also used : ArrayList(java.util.ArrayList) CharonException(org.wso2.charon3.core.exceptions.CharonException) RoleBasicInfo(org.wso2.carbon.identity.role.mgt.core.RoleBasicInfo) IdentityRoleManagementException(org.wso2.carbon.identity.role.mgt.core.IdentityRoleManagementException)

Example 34 with RoleBasicInfo

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;
}
Also used : Role(org.wso2.charon3.core.objects.Role) ArrayList(java.util.ArrayList) RoleBasicInfo(org.wso2.carbon.identity.role.mgt.core.RoleBasicInfo)

Aggregations

RoleBasicInfo (org.wso2.carbon.identity.role.mgt.core.RoleBasicInfo)34 PrepareForTest (org.powermock.core.classloader.annotations.PrepareForTest)17 Test (org.testng.annotations.Test)17 Connection (java.sql.Connection)15 ArrayList (java.util.ArrayList)8 IdentityRoleManagementClientException (org.wso2.carbon.identity.role.mgt.core.IdentityRoleManagementClientException)8 Matchers.anyString (org.mockito.Matchers.anyString)7 RealmConfiguration (org.wso2.carbon.user.api.RealmConfiguration)7 Role (org.wso2.charon3.core.objects.Role)7 IdentityRoleManagementServerException (org.wso2.carbon.identity.role.mgt.core.IdentityRoleManagementServerException)6 RoleManagementEventPublisherProxy (org.wso2.carbon.identity.role.mgt.core.RoleManagementEventPublisherProxy)6 SQLException (java.sql.SQLException)5 IdentityRoleManagementException (org.wso2.carbon.identity.role.mgt.core.IdentityRoleManagementException)5 NamedPreparedStatement (org.wso2.carbon.database.utils.jdbc.NamedPreparedStatement)3 CharonException (org.wso2.charon3.core.exceptions.CharonException)3 GroupBasicInfo (org.wso2.carbon.identity.role.mgt.core.GroupBasicInfo)2 UserBasicInfo (org.wso2.carbon.identity.role.mgt.core.UserBasicInfo)2 AuthorizationManager (org.wso2.carbon.user.api.AuthorizationManager)2 JDBCAuthorizationManager (org.wso2.carbon.user.core.authorization.JDBCAuthorizationManager)2 BadRequestException (org.wso2.charon3.core.exceptions.BadRequestException)2