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 AwsCredentialCreationTest extends AbstractCloudbreakIntegrationTest {
@Value("${integrationtest.awscredential.name}")
private String defaultName;
@Value("${integrationtest.awscredential.roleArn:}")
private String defaultRoleArn;
@Value("${integrationtest.awscredential.accessKey:}")
private String defaultAccessKey;
@Value("${integrationtest.awscredential.secretKey:}")
private String defaultSecretKey;
@Value("${integrationtest.awscredential.publicKeyFile}")
private String defaultPublicKeyFile;
@Test
@Parameters({ "credentialName", "roleArn", "accessKey", "secretKey", "publicKeyFile" })
public void testAwsCredentialCreation(@Optional("") String credentialName, @Optional("") String roleArn,
@Optional("") String accessKey, @Optional("") String secretKey, @Optional("") String publicKeyFile) throws Exception {
// GIVEN
credentialName = StringUtils.hasLength(credentialName) ? credentialName : defaultName;
roleArn = StringUtils.hasLength(roleArn) ? roleArn : defaultRoleArn;
accessKey = StringUtils.hasLength(accessKey) ? accessKey : defaultAccessKey;
secretKey = StringUtils.hasLength(secretKey) ? secretKey : defaultSecretKey;
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 credential for integrationtest");
Map<String, Object> map = new HashMap<>();
if (roleArn != null && !"".equals(roleArn)) {
map.put("selector", "role-based");
map.put("roleArn", roleArn);
} else {
map.put("selector", "key-based");
map.put("accessKey", accessKey);
map.put("secretKey", secretKey);
}
credentialRequest.setParameters(map);
credentialRequest.setCloudPlatform("AWS");
// WHEN
String id = getCloudbreakClient().credentialEndpoint().postPrivate(credentialRequest).getId().toString();
// THEN
Assert.assertNotNull(id);
getItContext().putContextParam(CloudbreakITContextConstants.CREDENTIAL_ID, id, true);
}
}