* ============LICENSE_END=========================================================
*/
-package org.onap.oom.truststoremerger.certification.file.provider;
+package org.onap.oom.truststoremerger.merger.model;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
+import static org.mockito.Mockito.mock;
import java.io.File;
import java.io.IOException;
+import java.security.KeyStore;
+import java.security.KeyStoreSpi;
import java.security.cert.Certificate;
import java.util.List;
import java.util.stream.Collectors;
import org.junit.jupiter.api.Test;
import org.onap.oom.truststoremerger.api.ExitableException;
-import org.onap.oom.truststoremerger.certification.file.provider.entry.CertificateWithAlias;
-import org.onap.oom.truststoremerger.certification.file.TestCertificateProvider;
-import org.onap.oom.truststoremerger.certification.file.exception.MissingTruststoreException;
-import org.onap.oom.truststoremerger.certification.file.exception.TruststoreDataOperationException;
-import org.onap.oom.truststoremerger.certification.file.model.PemTruststore;
+import org.onap.oom.truststoremerger.merger.exception.MissingTruststoreException;
+import org.onap.oom.truststoremerger.merger.exception.TruststoreDataOperationException;
+import org.onap.oom.truststoremerger.merger.exception.WriteTruststoreFileException;
+import org.onap.oom.truststoremerger.merger.model.certificate.CertificateWithAlias;
-class PemCertificateControllerTest {
+class PemTruststoreTest {
+
+ private static final int EXPECTED_ONE = 1;
@Test
- void getNotEmptyCertificateListShouldThrowExceptionWhenFileNotContainsCertificate() {
+ void getCertificatesShouldThrowExceptionWhenFileNotContainsCertificate() {
//given
- File emptyPemFile = TestCertificateProvider.getEmptyPemTruststoreFile().getFile();
- PemCertificateController pemCertificateController = new PemCertificateController(emptyPemFile);
+ File emptyPemFile = TestCertificateProvider.getEmptyPemFile();
+ PemTruststore pemCertificate = new PemTruststore(emptyPemFile);
//when//then
assertThatExceptionOfType(MissingTruststoreException.class)
- .isThrownBy(pemCertificateController::getNotEmptyCertificateList);
+ .isThrownBy(pemCertificate::getCertificates);
+ }
+
+ @Test
+ void shouldThrowExceptionWhenCannotSaveFile() {
+ //given
+ KeyStoreSpi keyStoreSpi = mock(KeyStoreSpi.class);
+ KeyStore keyStore = new KeyStore(keyStoreSpi, null, "") {
+ };
+ File pemFile = TestCertificateProvider.getEmptyPemFile();
+ pemFile.setWritable(false);
+ PemTruststore pem = new PemTruststore(pemFile);
+
+ //when. then
+ assertThatExceptionOfType(WriteTruststoreFileException.class)
+ .isThrownBy(pem::saveFile);
}
@Test
void transformToStringInPemFormatShouldCorrectlyTransform() throws ExitableException, IOException {
//given
- PemTruststore pemTruststore = TestCertificateProvider.getSamplePemTruststoreFile();
+ Truststore pemTruststore = TestCertificateProvider.getSamplePemTruststoreFile();
+
List<CertificateWithAlias> wrappedCertificates = pemTruststore.getCertificates();
- File notEmptyPemFile = pemTruststore.getFile();
List<Certificate> certificateList = unWrapCertificate(wrappedCertificates);
- PemCertificateController pemCertificateController = new PemCertificateController(notEmptyPemFile);
- String expected = TestCertificateProvider.getExpectedPemCertificateAsString();
+ File notEmptyPemFile = TestCertificateProvider.getNotEmptyPemFile();
+ PemTruststore pemCertificate = new PemTruststore(notEmptyPemFile);
//when
- String certificateTransformed = pemCertificateController.transformToStringInPemFormat(certificateList);
+ String certificateTransformed = pemCertificate.transformToStringInPemFormat(certificateList);
//then
+ String expected = TestCertificateProvider.getExpectedPemCertificateAsString();
assertThat(certificateTransformed).isEqualTo(expected);
}
void fileNotContainsPemCertificateShouldReturnTrueIfFileNotContainsCertificate()
throws TruststoreDataOperationException {
//given
- File emptyPemFile = TestCertificateProvider.getEmptyPemTruststoreFile().getFile();
- PemCertificateController pemCertificateController = new PemCertificateController(emptyPemFile);
+ File emptyPemFile = TestCertificateProvider.getEmptyPemFile();
+ PemTruststore pemCertificate = new PemTruststore(emptyPemFile);
//when//then
- assertThat(pemCertificateController.isFileWithoutPemCertificate()).isTrue();
+ assertThat(pemCertificate.isFileWithoutPemCertificate()).isTrue();
}
@Test
void fileNotContainsPemCertificateShouldReturnFalseIfFileContainsCertificate()
throws TruststoreDataOperationException {
//given
- File notEmptyPemFile = TestCertificateProvider.getSamplePemTruststoreFile().getFile();
- PemCertificateController pemCertificateController = new PemCertificateController(notEmptyPemFile);
+ File notEmptyPemFile = TestCertificateProvider.getNotEmptyPemFile();
+ PemTruststore pemCertificate = new PemTruststore(notEmptyPemFile);
//when//then
- assertThat(pemCertificateController.isFileWithoutPemCertificate()).isFalse();
+ assertThat(pemCertificate.isFileWithoutPemCertificate()).isFalse();
+ }
+
+ @Test
+ void privateKeyIsSkippedWhileReadingCertificates() throws ExitableException {
+ //given
+ File pemTruststoreFile = TestCertificateProvider.getPemWithPrivateKeyFile();
+ PemTruststore pemCertificate = new PemTruststore(pemTruststoreFile);
+
+ //when
+ List<CertificateWithAlias> certificate = pemCertificate.getCertificates();
+
+ //then
+ assertThat(certificate).hasSize(EXPECTED_ONE);
}
private List<Certificate> unWrapCertificate(List<CertificateWithAlias> certificateWithAliases) {