Search in sources :

Example 6 with Group

use of com.sequenceiq.freeipa.client.model.Group in project cloudbreak by hortonworks.

the class UserSyncOperationsTest method testRemoveUsersFromGroupsSingle.

@Test
public void testRemoveUsersFromGroupsSingle() throws Exception {
    Multimap<String, String> groupMapping = setupGroupMapping(5, MAX_SUBJECTS_PER_REQUEST * 2);
    Multimap<String, String> warnings = ArrayListMultimap.create();
    ArgumentCaptor<List<Object>> flagsCaptor = ArgumentCaptor.forClass(List.class);
    ArgumentCaptor<Map<String, Object>> paramsCaptor = ArgumentCaptor.forClass(Map.class);
    RPCResponse<Object> response1 = new RPCResponse<>();
    response1.setResult(new Group());
    RPCResponse<Object> response2 = new RPCResponse<>();
    response2.setResult(new Group());
    when(freeIpaClient.invoke(eq("group_remove_member"), flagsCaptor.capture(), paramsCaptor.capture(), eq(Group.class))).thenReturn(response1, response2);
    underTest.removeUsersFromGroups(false, freeIpaClient, groupMapping, warnings::put);
    assertTrue(warnings.isEmpty());
    verifyNoInteractions(batchPartitionSizeProperties);
    verify(freeIpaClient, never()).callBatch(any(), any(), any(), any(), any());
    List<List<Object>> flagsList = flagsCaptor.getAllValues();
    Map<String, Long> flagCount = flagsList.stream().flatMap(Collection::stream).map(o -> (String) o).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
    assertEquals(5, flagCount.size());
    assertTrue(flagCount.keySet().containsAll(Set.of("group1", "group2", "group3", "group4", "group0")));
    flagCount.forEach((flag, count) -> assertEquals(2, count, flag + " size should be 2"));
    List<Map<String, Object>> paramsList = paramsCaptor.getAllValues();
    assertEquals(10, paramsList.size());
    paramsList.forEach(map -> {
        assertEquals(10, ((List<String>) map.get("user")).size());
        assertTrue(((List<String>) map.get("user")).stream().allMatch(user -> user.startsWith("user")));
    });
    verify(interruptChecker, times(20)).throwTimeoutExIfInterrupted();
}
Also used : Assertions.assertThrows(org.junit.jupiter.api.Assertions.assertThrows) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) ArrayListMultimap(com.google.common.collect.ArrayListMultimap) BeforeEach(org.junit.jupiter.api.BeforeEach) Matchers.aMapWithSize(org.hamcrest.Matchers.aMapWithSize) FmsGroup(com.sequenceiq.freeipa.service.freeipa.user.model.FmsGroup) ArgumentMatchers.eq(org.mockito.ArgumentMatchers.eq) Mock(org.mockito.Mock) RPCResponse(com.sequenceiq.cloudbreak.client.RPCResponse) TimeoutException(java.util.concurrent.TimeoutException) Multimap(com.google.common.collect.Multimap) Function(java.util.function.Function) Group(com.sequenceiq.freeipa.client.model.Group) Mockito.verifyNoInteractions(org.mockito.Mockito.verifyNoInteractions) Mockito.doThrow(org.mockito.Mockito.doThrow) ArgumentCaptor(org.mockito.ArgumentCaptor) HashMultimap(com.google.common.collect.HashMultimap) Matchers.everyItem(org.hamcrest.Matchers.everyItem) Assertions.assertFalse(org.junit.jupiter.api.Assertions.assertFalse) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) Map(java.util.Map) BatchPartitionSizeProperties(com.sequenceiq.freeipa.configuration.BatchPartitionSizeProperties) ThreadInterruptChecker(com.sequenceiq.freeipa.util.ThreadInterruptChecker) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) Matchers.hasEntry(org.hamcrest.Matchers.hasEntry) InjectMocks(org.mockito.InjectMocks) MockitoExtension(org.mockito.junit.jupiter.MockitoExtension) Matchers.allOf(org.hamcrest.Matchers.allOf) Collection(java.util.Collection) Set(java.util.Set) Matchers(org.hamcrest.Matchers) ReflectionTestUtils(org.springframework.test.util.ReflectionTestUtils) User(com.sequenceiq.freeipa.client.model.User) Mockito.times(org.mockito.Mockito.times) FreeIpaClientException(com.sequenceiq.freeipa.client.FreeIpaClientException) Mockito.when(org.mockito.Mockito.when) FreeIpaClient(com.sequenceiq.freeipa.client.FreeIpaClient) FmsUser(com.sequenceiq.freeipa.service.freeipa.user.model.FmsUser) Collectors(java.util.stream.Collectors) FreeIpaErrorCodes(com.sequenceiq.freeipa.client.FreeIpaErrorCodes) Mockito.verify(org.mockito.Mockito.verify) Test(org.junit.jupiter.api.Test) Mockito.never(org.mockito.Mockito.never) List(java.util.List) Matchers.hasItem(org.hamcrest.Matchers.hasItem) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) JsonRpcClientException(com.googlecode.jsonrpc4j.JsonRpcClientException) FmsGroup(com.sequenceiq.freeipa.service.freeipa.user.model.FmsGroup) Group(com.sequenceiq.freeipa.client.model.Group) RPCResponse(com.sequenceiq.cloudbreak.client.RPCResponse) Collection(java.util.Collection) List(java.util.List) Map(java.util.Map) Test(org.junit.jupiter.api.Test)

Example 7 with Group

use of com.sequenceiq.freeipa.client.model.Group in project cloudbreak by hortonworks.

the class SudoRuleServiceTest method shouldThrowIllegalStateExceptionInCaseOfExistingSudoRuleButNotAllHostGroup.

@Test
public void shouldThrowIllegalStateExceptionInCaseOfExistingSudoRuleButNotAllHostGroup() throws FreeIpaClientException {
    Optional<SudoRule> sudoRule = Optional.of(new SudoRule());
    when(stack.getEnvironmentCrn()).thenReturn(ENV_CRN);
    when(virtualGroupService.getVirtualGroup(any(), eq(UmsVirtualGroupRight.ALLOW_PRIVILEGED_OS_OPERATIONS))).thenReturn(GROUP);
    when(freeIpaClient.groupShow(GROUP)).thenReturn(mock(Group.class));
    when(freeIpaClient.sudoRuleShow(RULE_NAME)).thenReturn(sudoRule);
    assertThrows(IllegalStateException.class, () -> victim.setupSudoRule(stack, freeIpaClient));
}
Also used : Group(com.sequenceiq.freeipa.client.model.Group) SudoRule(com.sequenceiq.freeipa.client.model.SudoRule) Test(org.junit.jupiter.api.Test)

Example 8 with Group

use of com.sequenceiq.freeipa.client.model.Group in project cloudbreak by hortonworks.

the class SudoRuleServiceTest method shouldCreateValidSudoRuleCommandAndGroupAssignment.

@Test
public void shouldCreateValidSudoRuleCommandAndGroupAssignment() throws Exception {
    SudoRule sudoRule = aValidSudoRule();
    when(stack.getEnvironmentCrn()).thenReturn(ENV_CRN);
    when(virtualGroupService.getVirtualGroup(any(), eq(UmsVirtualGroupRight.ALLOW_PRIVILEGED_OS_OPERATIONS))).thenReturn(GROUP);
    when(freeIpaClient.groupShow(GROUP)).thenReturn(mock(Group.class));
    when(freeIpaClient.sudoRuleShow(RULE_NAME)).thenReturn(Optional.empty());
    when(freeIpaClient.sudoRuleAdd(RULE_NAME, true)).thenReturn(sudoRule);
    when(freeIpaClient.sudoCommandFindAll()).thenReturn(Set.of());
    victim.setupSudoRule(stack, freeIpaClient);
    verify(freeIpaClient).sudoCommandAdd(ALLOW_COMMAND1);
    verify(freeIpaClient).sudoCommandAdd(ALLOW_COMMAND2);
    verify(freeIpaClient).sudoCommandAdd(DENY_COMMAND1);
    verify(freeIpaClient).sudoCommandAdd(DENY_COMMAND2);
    verify(freeIpaClient).sudoRuleAddAllowCommand(RULE_NAME, ALLOW_COMMAND1);
    verify(freeIpaClient).sudoRuleAddAllowCommand(RULE_NAME, ALLOW_COMMAND2);
    verify(freeIpaClient).sudoRuleAddDenyCommand(RULE_NAME, DENY_COMMAND1);
    verify(freeIpaClient).sudoRuleAddDenyCommand(RULE_NAME, DENY_COMMAND2);
    verify(freeIpaClient).sudoRuleAddGroup(RULE_NAME, GROUP);
}
Also used : Group(com.sequenceiq.freeipa.client.model.Group) SudoRule(com.sequenceiq.freeipa.client.model.SudoRule) Test(org.junit.jupiter.api.Test)

Example 9 with Group

use of com.sequenceiq.freeipa.client.model.Group in project cloudbreak by hortonworks.

the class FreeipaClientTestService method checkUsersInGroup.

public Boolean checkUsersInGroup(String environmentCrn, Set<String> requestedUsers, String requestedGroup) {
    FreeIpaClient freeIpaClient = getClientByEnvironmentCrn(environmentCrn);
    try {
        LOGGER.info("Checking if group [{}] has users [{}] in environment {}", requestedGroup, Joiner.on(",").join(requestedUsers), environmentCrn);
        Group freeipaGroup = freeIpaClient.groupShow(requestedGroup);
        LOGGER.debug("Group [{}] found in freeipa, it has users [{}].", freeipaGroup.getCn(), freeipaGroup.getMemberUser());
        return freeipaGroup.getMemberUser() != null && freeipaGroup.getMemberUser().containsAll(requestedUsers);
    } catch (FreeIpaClientException e) {
        if (FreeIpaClientExceptionUtil.isNotFoundException(e)) {
            LOGGER.debug("Group [{}] not found in freeipa", requestedGroup);
            return false;
        }
        LOGGER.error("Show group FreeIPA call failed!", e);
        throw new InternalServerErrorException("Show group FreeIPA call failed!");
    }
}
Also used : Group(com.sequenceiq.freeipa.client.model.Group) FreeIpaClient(com.sequenceiq.freeipa.client.FreeIpaClient) FreeIpaClientException(com.sequenceiq.freeipa.client.FreeIpaClientException) InternalServerErrorException(javax.ws.rs.InternalServerErrorException)

Example 10 with Group

use of com.sequenceiq.freeipa.client.model.Group in project cloudbreak by hortonworks.

the class GroupAddMemberOperationTest method testInvoke.

@Test
public void testInvoke() throws FreeIpaClientException {
    Map warnings = Maps.newHashMap();
    RPCResponse<Object> rpcResponse = new RPCResponse<>();
    Group group = new Group();
    group.setMemberUser(USERS);
    rpcResponse.setResult(group);
    when(freeIpaClient.invoke(any(), anyList(), any(), any())).thenReturn(rpcResponse);
    GroupAddMemberOperation.create(GROUP_NAME, USERS, warnings::put).invoke(freeIpaClient);
    verify(freeIpaClient).invoke(eq("group_add_member"), anyList(), any(), any());
    assertEquals(0, warnings.size());
}
Also used : Group(com.sequenceiq.freeipa.client.model.Group) RPCResponse(com.sequenceiq.cloudbreak.client.RPCResponse) Map(java.util.Map) Test(org.junit.jupiter.api.Test)

Aggregations

Group (com.sequenceiq.freeipa.client.model.Group)21 Test (org.junit.jupiter.api.Test)14 RPCResponse (com.sequenceiq.cloudbreak.client.RPCResponse)12 Map (java.util.Map)12 FreeIpaClientException (com.sequenceiq.freeipa.client.FreeIpaClientException)5 FmsGroup (com.sequenceiq.freeipa.service.freeipa.user.model.FmsGroup)4 List (java.util.List)4 FreeIpaClient (com.sequenceiq.freeipa.client.FreeIpaClient)3 ArrayListMultimap (com.google.common.collect.ArrayListMultimap)2 HashMultimap (com.google.common.collect.HashMultimap)2 Multimap (com.google.common.collect.Multimap)2 JsonRpcClientException (com.googlecode.jsonrpc4j.JsonRpcClientException)2 FreeIpaErrorCodes (com.sequenceiq.freeipa.client.FreeIpaErrorCodes)2 SudoRule (com.sequenceiq.freeipa.client.model.SudoRule)2 User (com.sequenceiq.freeipa.client.model.User)2 BatchPartitionSizeProperties (com.sequenceiq.freeipa.configuration.BatchPartitionSizeProperties)2 FmsUser (com.sequenceiq.freeipa.service.freeipa.user.model.FmsUser)2 ThreadInterruptChecker (com.sequenceiq.freeipa.util.ThreadInterruptChecker)2 Collection (java.util.Collection)2 Set (java.util.Set)2