package com.sequenceiq.it.cloudbreak;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.StringUtils;
import org.testng.Assert;
import org.testng.annotations.Optional;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
import com.sequenceiq.cloudbreak.api.model.CredentialRequest;
import com.sequenceiq.it.util.ResourceUtil;
public class OpenStackCredentialCreationTest extends AbstractCloudbreakIntegrationTest {
@Value("${integrationtest.openstackcredential.name}")
private String defaultName;
@Value("${integrationtest.openstackcredential.tenantName}")
private String defaultTenantName;
@Value("${integrationtest.openstackcredential.userName}")
private String defaultUserName;
@Value("${integrationtest.openstackcredential.password}")
private String defaultPassword;
@Value("${integrationtest.openstackcredential.endpoint}")
private String defaultEndpoint;
@Value("${integrationtest.openstackcredential.publicKeyFile}")
private String defaultPublicKeyFile;
@Test
@Parameters({ "credentialName", "tenantName", "userName", "password", "endpoint", "publicKeyFile" })
public void testOpenStackCredentialCreation(@Optional("")String credentialName, @Optional("")String tenantName, @Optional("")String userName,
@Optional("")String password, @Optional("")String endpoint, @Optional("")String publicKeyFile) throws Exception {
// GIVEN
credentialName = StringUtils.hasLength(credentialName) ? credentialName : defaultName;
tenantName = StringUtils.hasLength(tenantName) ? tenantName : defaultTenantName;
userName = StringUtils.hasLength(userName) ? userName : defaultUserName;
password = StringUtils.hasLength(password) ? password : defaultPassword;
endpoint = StringUtils.hasLength(endpoint) ? endpoint : defaultEndpoint;
publicKeyFile = StringUtils.hasLength(publicKeyFile) ? publicKeyFile : defaultPublicKeyFile;
String publicKey = ResourceUtil.readStringFromResource(applicationContext, publicKeyFile).replaceAll("\n", "");
CredentialRequest credentialRequest = new CredentialRequest();
credentialRequest.setName(credentialName);
credentialRequest.setPublicKey(publicKey);
credentialRequest.setDescription("Aws Rm credential for integartiontest");
Map<String, Object> map = new HashMap<>();
map.put("tenantName", tenantName);
map.put("userName", userName);
map.put("password", password);
map.put("endpoint", endpoint);
map.put("keystoneVersion", "cb-keystone-v2");
map.put("selector", "cb-keystone-v2");
credentialRequest.setParameters(map);
credentialRequest.setCloudPlatform("OPENSTACK");
// WHEN
String id = getCloudbreakClient().credentialEndpoint().postPrivate(credentialRequest).getId().toString();
// THEN
Assert.assertNotNull(id);
getItContext().putContextParam(CloudbreakITContextConstants.CREDENTIAL_ID, id, true);
}
}