@Test public void testSetupLdapWithLimitedAdminGroupMapping() throws ApiException, ClouderaManagerClientInitException { ReflectionTestUtils.setField(underTest, "adminRole", "ROLE_ADMIN"); ReflectionTestUtils.setField(underTest, "limitedAdminRole", "ROLE_LIMITED_CLUSTER_ADMIN"); ReflectionTestUtils.setField(underTest, "userRole", "ROLE_USER"); ReflectionTestUtils.setField(underTest, "dashboardUserRole", "ROLE_DASHBOARD_USER"); LdapView ldapConfig = getLdapConfig(); VirtualGroupRequest virtualGroupRequest = new VirtualGroupRequest(TestConstants.CRN, ""); ApiAuthRoleMetadataList apiAuthRoleMetadataList = new ApiAuthRoleMetadataList().addItemsItem( new ApiAuthRoleMetadata().displayName("ROLE_LIMITED_CLUSTER_ADMIN").uuid("uuid").role("ROLE_LIMITED_CLUSTER_ADMIN")); apiAuthRoleMetadataList.addItemsItem( new ApiAuthRoleMetadata().displayName("ROLE_ADMIN").uuid("uuid").role("ROLE_ADMIN")); when(authRolesResourceApi.readAuthRolesMetadata(null)).thenReturn(apiAuthRoleMetadataList); when(virtualGroupService.getVirtualGroup(virtualGroupRequest, UmsRight.CLOUDER_MANAGER_ADMIN.getRight())).thenReturn("virtualGroup"); underTest.setupLdap(stack, cluster, httpClientConfig, ldapConfig, virtualGroupRequest); ArgumentCaptor<ApiExternalUserMappingList> apiExternalUserMappingListArgumentCaptor = ArgumentCaptor.forClass(ApiExternalUserMappingList.class); verify(externalUserMappingsResourceApi).createExternalUserMappings(apiExternalUserMappingListArgumentCaptor.capture()); ApiExternalUserMapping apiExternalUserMapping = apiExternalUserMappingListArgumentCaptor.getValue().getItems().get(0); ApiAuthRoleRef authRole = apiExternalUserMapping.getAuthRoles().get(0); assertEquals("ROLE_LIMITED_CLUSTER_ADMIN", authRole.getDisplayName()); assertEquals("uuid", authRole.getUuid()); assertEquals("virtualGroup", apiExternalUserMapping.getName()); }
public void setupLdap(Stack stack, Cluster cluster, HttpClientConfig clientConfig, LdapView ldapView, VirtualGroupRequest virtualGroupRequest) throws ApiException, ClouderaManagerClientInitException { if (ldapView != null) { String user = cluster.getCloudbreakAmbariUser(); String password = cluster.getCloudbreakAmbariPassword(); ApiClient client = clouderaManagerApiClientProvider.getClient(stack.getGatewayPort(), user, password, clientConfig); LOGGER.debug("Setup LDAP on ClouderaManager API for stack: {}", stack.getId()); ExternalUserMappingsResourceApi externalUserMappingsResourceApi = clouderaManagerApiFactory.getExternalUserMappingsResourceApi(client); AuthRolesResourceApi authRolesResourceApi = clouderaManagerApiFactory.getAuthRolesResourceApi(client); ApiAuthRoleMetadataList roleMetadataList = authRolesResourceApi.readAuthRolesMetadata(null); if (roleMetadataList.getItems() != null) { Optional<ApiAuthRoleMetadata> dashboardUserRoleOpt = findRole(roleMetadataList, dashboardUserRole); Optional<ApiAuthRoleMetadata> limitedAdminRoleOpt = findRole(roleMetadataList, limitedAdminRole); Optional<ApiAuthRoleMetadata> role = limitedAdminRoleOpt.isPresent() ? limitedAdminRoleOpt : findRole(roleMetadataList, adminRole); if (role.isPresent()) { String virtualGroup = virtualGroupService.getVirtualGroup(virtualGroupRequest, UmsRight.CLOUDER_MANAGER_ADMIN.getRight()); addGroupMapping(externalUserMappingsResourceApi, role.get(), dashboardUserRoleOpt, virtualGroup); } else { LOGGER.info("Cannot setup admin group mapping. Admin roles ({}, {}) are not found", adminRole, limitedAdminRole); } Optional<ApiAuthRoleMetadata> userMetadata = roleMetadataList.getItems().stream().filter(toRole(userRole)).findFirst(); if (userMetadata.isPresent() && StringUtils.isNotBlank(ldapView.getUserGroup())) { addGroupMapping(externalUserMappingsResourceApi, userMetadata.get(), dashboardUserRoleOpt, ldapView.getUserGroup()); } else { LOGGER.info("Cannot setup user group mapping. User metadata present: [{}] User group: [{}]", userMetadata.isPresent(), ldapView.getUserGroup()); } } } }
ClouderaManagerLdapService { public void setupLdap(Stack stack, Cluster cluster, HttpClientConfig clientConfig, LdapView ldapView, VirtualGroupRequest virtualGroupRequest) throws ApiException, ClouderaManagerClientInitException { if (ldapView != null) { String user = cluster.getCloudbreakAmbariUser(); String password = cluster.getCloudbreakAmbariPassword(); ApiClient client = clouderaManagerApiClientProvider.getClient(stack.getGatewayPort(), user, password, clientConfig); LOGGER.debug("Setup LDAP on ClouderaManager API for stack: {}", stack.getId()); ExternalUserMappingsResourceApi externalUserMappingsResourceApi = clouderaManagerApiFactory.getExternalUserMappingsResourceApi(client); AuthRolesResourceApi authRolesResourceApi = clouderaManagerApiFactory.getAuthRolesResourceApi(client); ApiAuthRoleMetadataList roleMetadataList = authRolesResourceApi.readAuthRolesMetadata(null); if (roleMetadataList.getItems() != null) { Optional<ApiAuthRoleMetadata> dashboardUserRoleOpt = findRole(roleMetadataList, dashboardUserRole); Optional<ApiAuthRoleMetadata> limitedAdminRoleOpt = findRole(roleMetadataList, limitedAdminRole); Optional<ApiAuthRoleMetadata> role = limitedAdminRoleOpt.isPresent() ? limitedAdminRoleOpt : findRole(roleMetadataList, adminRole); if (role.isPresent()) { String virtualGroup = virtualGroupService.getVirtualGroup(virtualGroupRequest, UmsRight.CLOUDER_MANAGER_ADMIN.getRight()); addGroupMapping(externalUserMappingsResourceApi, role.get(), dashboardUserRoleOpt, virtualGroup); } else { LOGGER.info("Cannot setup admin group mapping. Admin roles ({}, {}) are not found", adminRole, limitedAdminRole); } Optional<ApiAuthRoleMetadata> userMetadata = roleMetadataList.getItems().stream().filter(toRole(userRole)).findFirst(); if (userMetadata.isPresent() && StringUtils.isNotBlank(ldapView.getUserGroup())) { addGroupMapping(externalUserMappingsResourceApi, userMetadata.get(), dashboardUserRoleOpt, ldapView.getUserGroup()); } else { LOGGER.info("Cannot setup user group mapping. User metadata present: [{}] User group: [{}]", userMetadata.isPresent(), ldapView.getUserGroup()); } } } } }
ClouderaManagerLdapService { public void setupLdap(Stack stack, Cluster cluster, HttpClientConfig clientConfig, LdapView ldapView, VirtualGroupRequest virtualGroupRequest) throws ApiException, ClouderaManagerClientInitException { if (ldapView != null) { String user = cluster.getCloudbreakAmbariUser(); String password = cluster.getCloudbreakAmbariPassword(); ApiClient client = clouderaManagerApiClientProvider.getClient(stack.getGatewayPort(), user, password, clientConfig); LOGGER.debug("Setup LDAP on ClouderaManager API for stack: {}", stack.getId()); ExternalUserMappingsResourceApi externalUserMappingsResourceApi = clouderaManagerApiFactory.getExternalUserMappingsResourceApi(client); AuthRolesResourceApi authRolesResourceApi = clouderaManagerApiFactory.getAuthRolesResourceApi(client); ApiAuthRoleMetadataList roleMetadataList = authRolesResourceApi.readAuthRolesMetadata(null); if (roleMetadataList.getItems() != null) { Optional<ApiAuthRoleMetadata> dashboardUserRoleOpt = findRole(roleMetadataList, dashboardUserRole); Optional<ApiAuthRoleMetadata> limitedAdminRoleOpt = findRole(roleMetadataList, limitedAdminRole); Optional<ApiAuthRoleMetadata> role = limitedAdminRoleOpt.isPresent() ? limitedAdminRoleOpt : findRole(roleMetadataList, adminRole); if (role.isPresent()) { String virtualGroup = virtualGroupService.getVirtualGroup(virtualGroupRequest, UmsRight.CLOUDER_MANAGER_ADMIN.getRight()); addGroupMapping(externalUserMappingsResourceApi, role.get(), dashboardUserRoleOpt, virtualGroup); } else { LOGGER.info("Cannot setup admin group mapping. Admin roles ({}, {}) are not found", adminRole, limitedAdminRole); } Optional<ApiAuthRoleMetadata> userMetadata = roleMetadataList.getItems().stream().filter(toRole(userRole)).findFirst(); if (userMetadata.isPresent() && StringUtils.isNotBlank(ldapView.getUserGroup())) { addGroupMapping(externalUserMappingsResourceApi, userMetadata.get(), dashboardUserRoleOpt, ldapView.getUserGroup()); } else { LOGGER.info("Cannot setup user group mapping. User metadata present: [{}] User group: [{}]", userMetadata.isPresent(), ldapView.getUserGroup()); } } } }  }
ClouderaManagerLdapService { public void setupLdap(Stack stack, Cluster cluster, HttpClientConfig clientConfig, LdapView ldapView, VirtualGroupRequest virtualGroupRequest) throws ApiException, ClouderaManagerClientInitException { if (ldapView != null) { String user = cluster.getCloudbreakAmbariUser(); String password = cluster.getCloudbreakAmbariPassword(); ApiClient client = clouderaManagerApiClientProvider.getClient(stack.getGatewayPort(), user, password, clientConfig); LOGGER.debug("Setup LDAP on ClouderaManager API for stack: {}", stack.getId()); ExternalUserMappingsResourceApi externalUserMappingsResourceApi = clouderaManagerApiFactory.getExternalUserMappingsResourceApi(client); AuthRolesResourceApi authRolesResourceApi = clouderaManagerApiFactory.getAuthRolesResourceApi(client); ApiAuthRoleMetadataList roleMetadataList = authRolesResourceApi.readAuthRolesMetadata(null); if (roleMetadataList.getItems() != null) { Optional<ApiAuthRoleMetadata> dashboardUserRoleOpt = findRole(roleMetadataList, dashboardUserRole); Optional<ApiAuthRoleMetadata> limitedAdminRoleOpt = findRole(roleMetadataList, limitedAdminRole); Optional<ApiAuthRoleMetadata> role = limitedAdminRoleOpt.isPresent() ? limitedAdminRoleOpt : findRole(roleMetadataList, adminRole); if (role.isPresent()) { String virtualGroup = virtualGroupService.getVirtualGroup(virtualGroupRequest, UmsRight.CLOUDER_MANAGER_ADMIN.getRight()); addGroupMapping(externalUserMappingsResourceApi, role.get(), dashboardUserRoleOpt, virtualGroup); } else { LOGGER.info("Cannot setup admin group mapping. Admin roles ({}, {}) are not found", adminRole, limitedAdminRole); } Optional<ApiAuthRoleMetadata> userMetadata = roleMetadataList.getItems().stream().filter(toRole(userRole)).findFirst(); if (userMetadata.isPresent() && StringUtils.isNotBlank(ldapView.getUserGroup())) { addGroupMapping(externalUserMappingsResourceApi, userMetadata.get(), dashboardUserRoleOpt, ldapView.getUserGroup()); } else { LOGGER.info("Cannot setup user group mapping. User metadata present: [{}] User group: [{}]", userMetadata.isPresent(), ldapView.getUserGroup()); } } } }  void setupLdap(Stack stack, Cluster cluster, HttpClientConfig clientConfig, LdapView ldapView, VirtualGroupRequest virtualGroupRequest); }
ClouderaManagerLdapService { public void setupLdap(Stack stack, Cluster cluster, HttpClientConfig clientConfig, LdapView ldapView, VirtualGroupRequest virtualGroupRequest) throws ApiException, ClouderaManagerClientInitException { if (ldapView != null) { String user = cluster.getCloudbreakAmbariUser(); String password = cluster.getCloudbreakAmbariPassword(); ApiClient client = clouderaManagerApiClientProvider.getClient(stack.getGatewayPort(), user, password, clientConfig); LOGGER.debug("Setup LDAP on ClouderaManager API for stack: {}", stack.getId()); ExternalUserMappingsResourceApi externalUserMappingsResourceApi = clouderaManagerApiFactory.getExternalUserMappingsResourceApi(client); AuthRolesResourceApi authRolesResourceApi = clouderaManagerApiFactory.getAuthRolesResourceApi(client); ApiAuthRoleMetadataList roleMetadataList = authRolesResourceApi.readAuthRolesMetadata(null); if (roleMetadataList.getItems() != null) { Optional<ApiAuthRoleMetadata> dashboardUserRoleOpt = findRole(roleMetadataList, dashboardUserRole); Optional<ApiAuthRoleMetadata> limitedAdminRoleOpt = findRole(roleMetadataList, limitedAdminRole); Optional<ApiAuthRoleMetadata> role = limitedAdminRoleOpt.isPresent() ? limitedAdminRoleOpt : findRole(roleMetadataList, adminRole); if (role.isPresent()) { String virtualGroup = virtualGroupService.getVirtualGroup(virtualGroupRequest, UmsRight.CLOUDER_MANAGER_ADMIN.getRight()); addGroupMapping(externalUserMappingsResourceApi, role.get(), dashboardUserRoleOpt, virtualGroup); } else { LOGGER.info("Cannot setup admin group mapping. Admin roles ({}, {}) are not found", adminRole, limitedAdminRole); } Optional<ApiAuthRoleMetadata> userMetadata = roleMetadataList.getItems().stream().filter(toRole(userRole)).findFirst(); if (userMetadata.isPresent() && StringUtils.isNotBlank(ldapView.getUserGroup())) { addGroupMapping(externalUserMappingsResourceApi, userMetadata.get(), dashboardUserRoleOpt, ldapView.getUserGroup()); } else { LOGGER.info("Cannot setup user group mapping. User metadata present: [{}] User group: [{}]", userMetadata.isPresent(), ldapView.getUserGroup()); } } } }  void setupLdap(Stack stack, Cluster cluster, HttpClientConfig clientConfig, LdapView ldapView, VirtualGroupRequest virtualGroupRequest);  }