Add certificate integration tests

This commit is contained in:
Scott Frederick
2018-10-23 17:39:34 -05:00
parent ec522d06bd
commit f6442def66
2 changed files with 188 additions and 15 deletions

View File

@@ -0,0 +1,90 @@
/*
* Copyright 2016-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.credhub.integration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.credhub.core.CredHubException;
import org.springframework.credhub.core.certificate.CredHubCertificateOperations;
import org.springframework.credhub.core.credential.CredHubCredentialOperations;
import org.springframework.credhub.support.CertificateSummary;
import org.springframework.credhub.support.CredentialDetails;
import org.springframework.credhub.support.CredentialSummary;
import org.springframework.credhub.support.CredentialType;
import org.springframework.credhub.support.SimpleCredentialName;
import org.springframework.credhub.support.certificate.CertificateCredential;
import org.springframework.credhub.support.certificate.CertificateParameters;
import org.springframework.credhub.support.certificate.CertificateParametersRequest;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
public class CertificateIntegrationTests extends CredHubIntegrationTests {
private static final SimpleCredentialName CREDENTIAL_NAME =
new SimpleCredentialName("spring-credhub", "integration-test", "test-certificate");
private CredHubCredentialOperations credentials;
private CredHubCertificateOperations certificates;
@Before
public void setUp() {
credentials = operations.credentials();
certificates = operations.certificates();
try {
credentials.deleteByName(CREDENTIAL_NAME);
} catch (CredHubException e) {
// ignore failing deletes on cleanup
}
}
@After
public void tearDown() {
credentials.deleteByName(CREDENTIAL_NAME);
List<CredentialSummary> afterDelete = credentials.findByName(CREDENTIAL_NAME);
assertThat(afterDelete).hasSize(0);
}
@Test
public void generateCertificate() {
CredentialDetails<CertificateCredential> certificate = credentials.generate(CertificateParametersRequest.builder()
.name(CREDENTIAL_NAME)
.parameters(CertificateParameters.builder()
.commonName("example.com")
.selfSign(true)
.build())
.build());
assertThat(certificate.getName().getName()).isEqualTo(CREDENTIAL_NAME.getName());
assertThat(certificate.getCredentialType()).isEqualTo(CredentialType.CERTIFICATE);
assertThat(certificate.getId()).isNotNull();
assertThat(certificate.getValue().getCertificate()).isNotNull();
assertThat(certificate.getValue().getCertificateAuthority()).isNotNull();
assertThat(certificate.getValue().getPrivateKey()).isNotNull();
CertificateSummary byName = certificates.getByName(CREDENTIAL_NAME);
assertThat(byName.getName()).isEqualTo(CREDENTIAL_NAME.getName());
assertThat(byName.getId()).isNotNull();
List<CertificateSummary> allCertificates = certificates.getAll();
assertThat(allCertificates.size()).isGreaterThan(0);
assertThat(allCertificates).extracting("name").contains(CREDENTIAL_NAME.getName());
}
}

View File

@@ -16,6 +16,7 @@
package org.springframework.credhub.integration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.credhub.core.CredHubException;
@@ -43,10 +44,19 @@ public class CredentialIntegrationTests extends CredHubIntegrationTests {
private CredHubCredentialOperations credentials;
private PasswordParameters.PasswordParametersBuilder passwordParameters;
@Before
public void setUp() {
credentials = operations.credentials();
passwordParameters = PasswordParameters.builder()
.length(12)
.excludeLower(false)
.excludeUpper(false)
.excludeNumber(false)
.includeSpecial(true);
try {
credentials.deleteByName(CREDENTIAL_NAME);
} catch (CredHubException e) {
@@ -54,6 +64,14 @@ public class CredentialIntegrationTests extends CredHubIntegrationTests {
}
}
@After
public void tearDown() {
credentials.deleteByName(CREDENTIAL_NAME);
List<CredentialSummary> afterDelete = credentials.findByName(CREDENTIAL_NAME);
assertThat(afterDelete).hasSize(0);
}
@Test
public void writeCredential() {
CredentialDetails<ValueCredential> written = credentials.write(ValueCredentialRequest.builder()
@@ -82,11 +100,6 @@ public class CredentialIntegrationTests extends CredHubIntegrationTests {
List<CredentialSummary> foundByPath = credentials.findByPath("/spring-credhub/integration-test");
assertThat(foundByPath).hasSize(1);
assertThat(foundByPath).extracting("name").extracting("name").containsExactly(CREDENTIAL_NAME.getName());
credentials.deleteByName(CREDENTIAL_NAME);
List<CredentialSummary> afterDelete = credentials.findByName(CREDENTIAL_NAME);
assertThat(afterDelete).hasSize(0);
}
@Test
@@ -137,13 +150,7 @@ public class CredentialIntegrationTests extends CredHubIntegrationTests {
CredentialDetails<UserCredential> generated = credentials.generate(UserParametersRequest.builder()
.name(CREDENTIAL_NAME)
.username("test-user")
.parameters(PasswordParameters.builder()
.length(12)
.excludeLower(false)
.excludeUpper(false)
.excludeNumber(false)
.includeSpecial(true)
.build())
.parameters(passwordParameters.build())
.build());
assertThat(generated.getName().getName()).isEqualTo(CREDENTIAL_NAME.getName());
assertThat(generated.getCredentialType()).isEqualTo(CredentialType.USER);
@@ -160,10 +167,86 @@ public class CredentialIntegrationTests extends CredHubIntegrationTests {
assertThat(regenerated.getValue().getPassword()).matches("^[a-zA-Z0-9\\p{Punct}]{12}$");
assertThat(regenerated.getValue().getPassword()).isNotEqualTo(generated.getValue().getPassword());
assertThat(regenerated.getValue().getPasswordHash()).isNotEqualTo(generated.getValue().getPasswordHash());
}
credentials.deleteByName(CREDENTIAL_NAME);
@Test
public void generateNoOverwriteCredential() {
CredentialDetails<UserCredential> generated = credentials.generate(UserParametersRequest.builder()
.name(CREDENTIAL_NAME)
.username("test-user")
.parameters(passwordParameters.build())
.build());
assertThat(generated.getName().getName()).isEqualTo(CREDENTIAL_NAME.getName());
assertThat(generated.getValue().getUsername()).isEqualTo("test-user");
assertThat(generated.getValue().getPassword()).matches("^[a-zA-Z0-9\\p{Punct}]{12}$");
assertThat(generated.getValue().getPasswordHash()).isNotNull();
List<CredentialSummary> afterDelete = credentials.findByName(CREDENTIAL_NAME);
assertThat(afterDelete).hasSize(0);
CredentialDetails<UserCredential> noOverwrite = credentials.generate(UserParametersRequest.builder()
.name(CREDENTIAL_NAME)
.mode(WriteMode.NO_OVERWRITE)
.username("test-user")
.parameters(passwordParameters.build())
.build());
assertThat(noOverwrite.getValue().getUsername()).isEqualTo("test-user");
assertThat(noOverwrite.getValue().getPassword()).isEqualTo(generated.getValue().getPassword());
assertThat(noOverwrite.getValue().getPasswordHash()).isEqualTo(generated.getValue().getPasswordHash());
}
@Test
public void generateOverwriteCredential() {
CredentialDetails<UserCredential> generated = credentials.generate(UserParametersRequest.builder()
.name(CREDENTIAL_NAME)
.username("test-user")
.parameters(passwordParameters.build())
.build());
assertThat(generated.getName().getName()).isEqualTo(CREDENTIAL_NAME.getName());
assertThat(generated.getValue().getUsername()).isEqualTo("test-user");
assertThat(generated.getValue().getPassword()).matches("^[a-zA-Z0-9\\p{Punct}]{12}$");
assertThat(generated.getValue().getPasswordHash()).isNotNull();
CredentialDetails<UserCredential> overwrite = credentials.generate(UserParametersRequest.builder()
.name(CREDENTIAL_NAME)
.mode(WriteMode.OVERWRITE)
.username("test-user")
.parameters(passwordParameters.build())
.build());
assertThat(overwrite.getValue().getUsername()).isEqualTo("test-user");
assertThat(overwrite.getValue().getPassword()).isNotEqualTo(generated.getValue().getPassword());
assertThat(overwrite.getValue().getPasswordHash()).isNotEqualTo(generated.getValue().getPasswordHash());
}
@Test
public void generateConvergeCredential() {
CredentialDetails<UserCredential> generated = credentials.generate(UserParametersRequest.builder()
.name(CREDENTIAL_NAME)
.username("test-user")
.parameters(passwordParameters.build())
.build());
assertThat(generated.getName().getName()).isEqualTo(CREDENTIAL_NAME.getName());
assertThat(generated.getValue().getUsername()).isEqualTo("test-user");
assertThat(generated.getValue().getPassword()).matches("^[a-zA-Z0-9\\p{Punct}]{12}$");
assertThat(generated.getValue().getPasswordHash()).isNotNull();
CredentialDetails<UserCredential> convergeWithoutChanges = credentials.generate(UserParametersRequest.builder()
.name(CREDENTIAL_NAME)
.mode(WriteMode.CONVERGE)
.username("test-user")
.parameters(passwordParameters.build())
.build());
assertThat(convergeWithoutChanges.getValue().getUsername()).isEqualTo("test-user");
assertThat(convergeWithoutChanges.getValue().getPassword()).isEqualTo(generated.getValue().getPassword());
assertThat(convergeWithoutChanges.getValue().getPasswordHash()).isEqualTo(generated.getValue().getPasswordHash());
passwordParameters.includeSpecial(false);
CredentialDetails<UserCredential> convergeWithChanges = credentials.generate(UserParametersRequest.builder()
.name(CREDENTIAL_NAME)
.mode(WriteMode.CONVERGE)
.username("test-user")
.parameters(passwordParameters.build())
.build());
assertThat(convergeWithChanges.getValue().getUsername()).isEqualTo("test-user");
assertThat(convergeWithChanges.getValue().getPassword()).isNotEqualTo(generated.getValue().getPassword());
assertThat(convergeWithChanges.getValue().getPasswordHash()).isNotEqualTo(generated.getValue().getPasswordHash());
}
}