use of com.sequenceiq.freeipa.entity.KeytabCache in project cloudbreak by hortonworks.
the class KeytabCacheServiceTest method testSaveOrUpdateNoCached.
@Test
public void testSaveOrUpdateNoCached() {
when(keytabCacheRepository.findByEnvironmentCrnAndPrincipalHash(ENVIRONMENT_CRN, PRINCIPAL_HASH)).thenReturn(Optional.empty());
when(keytabCacheRepository.save(any(KeytabCache.class))).thenAnswer(invocation -> invocation.getArgument(0, KeytabCache.class));
KeytabCache result = underTest.saveOrUpdate(ENVIRONMENT_CRN, KEYTAB_PRINCIPAL, HOSTNAME, KEYTAB);
assertEquals(KEYTAB, result.getKeytab().getRaw());
assertEquals(KEYTAB_PRINCIPAL, result.getPrincipal().getRaw());
assertEquals(ENVIRONMENT_CRN, result.getEnvironmentCrn());
assertEquals(ACCOUNT, result.getAccountId());
assertEquals(PRINCIPAL_HASH, result.getPrincipalHash());
assertEquals(HOSTNAME, result.getHostName());
}
use of com.sequenceiq.freeipa.entity.KeytabCache in project cloudbreak by hortonworks.
the class KeytabCommonServiceTest method testGetExistingKeytabFromIpaClient.
@Test
public void testGetExistingKeytabFromIpaClient() throws FreeIpaClientException {
FreeIpaClient ipaClient = mock(FreeIpaClient.class);
KeytabCache keytabCache = new KeytabCache();
when(keytabCacheService.findByEnvironmentCrnAndPrincipal(ENVIRONMENT_CRN, PRINCIPAL)).thenReturn(Optional.empty());
Keytab keytab = new Keytab();
keytab.setKeytab(KEYTAB);
when(ipaClient.getExistingKeytab(PRINCIPAL)).thenReturn(keytab);
when(keytabCacheService.saveOrUpdate(ENVIRONMENT_CRN, PRINCIPAL, HOST, KEYTAB)).thenReturn(keytabCache);
KeytabCache result = underTest.getExistingKeytab(ENVIRONMENT_CRN, PRINCIPAL, HOST, ipaClient);
assertEquals(keytabCache, result);
}
use of com.sequenceiq.freeipa.entity.KeytabCache in project cloudbreak by hortonworks.
the class HostKeytabServiceTest method testGetExistingKeytab.
@Test
public void testGetExistingKeytab() throws FreeIpaClientException {
HostKeytabRequest request = new HostKeytabRequest();
request.setEnvironmentCrn(ENVIRONMENT_CRN);
request.setServerHostName("asdf");
Stack stack = new Stack();
when(keytabCommonService.getFreeIpaStackWithMdcContext(request.getEnvironmentCrn(), ACCOUNT_ID)).thenReturn(stack);
FreeIpaClient freeIpaClient = mock(FreeIpaClient.class);
when(freeIpaClientFactory.getFreeIpaClientForStack(stack)).thenReturn(freeIpaClient);
Host host = new Host();
host.setKrbprincipalname("dfdf");
when(freeIpaClient.showHost(request.getServerHostName())).thenReturn(host);
KeytabCache keytabCache = mock(KeytabCache.class);
Secret keytabSecret = new Secret("keytab", "keytabSecret");
Secret principalSecret = new Secret("principal", "principalSecret");
when(keytabCache.getKeytab()).thenReturn(keytabSecret);
when(keytabCache.getPrincipal()).thenReturn(principalSecret);
when(keytabCommonService.getExistingKeytab(request.getEnvironmentCrn(), host.getKrbprincipalname(), request.getServerHostName(), freeIpaClient)).thenReturn(keytabCache);
SecretResponse keytabResponse = new SecretResponse();
keytabResponse.setSecretPath("keytabPath");
when(secretResponseConverter.convert(keytabCache.getKeytab().getSecret())).thenReturn(keytabResponse);
SecretResponse principalResponse = new SecretResponse();
principalResponse.setSecretPath("principalPath");
when(secretResponseConverter.convert(keytabCache.getPrincipal().getSecret())).thenReturn(principalResponse);
HostKeytabResponse response = underTest.getExistingHostKeytab(request, ACCOUNT_ID);
assertEquals(keytabResponse, response.getKeytab());
assertEquals(principalResponse, response.getHostPrincipal());
}
use of com.sequenceiq.freeipa.entity.KeytabCache in project cloudbreak by hortonworks.
the class HostKeytabServiceTest method testGenerateHostKeytabDoNotRecreateFalse.
@Test
public void testGenerateHostKeytabDoNotRecreateFalse() throws FreeIpaClientException {
HostKeytabRequest request = new HostKeytabRequest();
request.setEnvironmentCrn(ENVIRONMENT_CRN);
request.setRoleRequest(new RoleRequest());
request.setDoNotRecreateKeytab(Boolean.FALSE);
request.setServerHostName("asdf");
Stack stack = new Stack();
when(keytabCommonService.getFreeIpaStackWithMdcContext(request.getEnvironmentCrn(), ACCOUNT_ID)).thenReturn(stack);
FreeIpaClient freeIpaClient = mock(FreeIpaClient.class);
when(freeIpaClientFactory.getFreeIpaClientForStack(stack)).thenReturn(freeIpaClient);
when(roleComponent.privilegesExist(request.getRoleRequest(), freeIpaClient)).thenReturn(Boolean.TRUE);
Host host = new Host();
host.setHasKeytab(Boolean.TRUE);
host.setKrbprincipalname("dfdf");
when(keytabCommonService.addHost(request.getServerHostName(), request.getRoleRequest(), freeIpaClient)).thenReturn(host);
KeytabCache keytabCache = mock(KeytabCache.class);
Secret keytabSecret = new Secret("keytab", "keytabSecret");
Secret principalSecret = new Secret("principal", "principalSecret");
when(keytabCache.getKeytab()).thenReturn(keytabSecret);
when(keytabCache.getPrincipal()).thenReturn(principalSecret);
when(keytabCommonService.getKeytab(request.getEnvironmentCrn(), host.getKrbprincipalname(), request.getServerHostName(), freeIpaClient)).thenReturn(keytabCache);
SecretResponse keytabResponse = new SecretResponse();
keytabResponse.setSecretPath("keytabPath");
when(secretResponseConverter.convert(keytabCache.getKeytab().getSecret())).thenReturn(keytabResponse);
SecretResponse principalResponse = new SecretResponse();
principalResponse.setSecretPath("principalPath");
when(secretResponseConverter.convert(keytabCache.getPrincipal().getSecret())).thenReturn(principalResponse);
HostKeytabResponse response = underTest.generateHostKeytab(request, ACCOUNT_ID);
assertEquals(keytabResponse, response.getKeytab());
assertEquals(principalResponse, response.getHostPrincipal());
}
use of com.sequenceiq.freeipa.entity.KeytabCache in project cloudbreak by hortonworks.
the class KeytabCacheService method save.
public KeytabCache save(String environmentCrn, String principal, String hostname, String keytab) {
String accountId = Crn.safeFromString(environmentCrn).getAccountId();
KeytabCache keytabCache = new KeytabCache();
keytabCache.setKeytab(keytab);
keytabCache.setPrincipal(principal);
keytabCache.setEnvironmentCrn(environmentCrn);
keytabCache.setAccountId(accountId);
keytabCache.setPrincipalHash(hashPrincipal(principal));
keytabCache.setHostName(hostname);
LOGGER.debug("Saving keytab in env [{}] for principal hash: [{}]", environmentCrn, keytabCache.getPrincipalHash());
return keytabCacheRepository.save(keytabCache);
}
Aggregations