From 8d83cba2cd12871bd8d010bb35a3d185d7984238 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20Le=C3=9Fmann=20=28=40MarkL4YG=29?= Date: Fri, 22 Nov 2024 21:43:13 +0100 Subject: [PATCH] chore: Fix JDBC driver issues caused by blob incompatibility chore: Remove lob annotation from certificate entity chore: Rename commonName colum to reflect it being in the subject information chore: Add more verbose logging chore: Update test to yield actually usefull assertion errors fix: Delete all items in the repository before running test - This fixes an issue where non-deterministic test order would cause the #singleElement assertion to fail sometimes --- .../certassist/models/Certificate.java | 12 +++++------ .../service/CertificateCreationService.java | 2 +- src/main/resources/application.properties | 3 +++ .../CertificateRepositoryTest.java | 20 ++++++++++++++----- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/main/java/de/mlessmann/certassist/models/Certificate.java b/src/main/java/de/mlessmann/certassist/models/Certificate.java index cc9dfa2..a92484a 100644 --- a/src/main/java/de/mlessmann/certassist/models/Certificate.java +++ b/src/main/java/de/mlessmann/certassist/models/Certificate.java @@ -24,9 +24,6 @@ public class Certificate { @Enumerated(EnumType.STRING) private CertificateType type; - @NotNull - private String commonName; - private String trustingAuthority; @Min(1) @@ -35,6 +32,9 @@ public class Certificate { @Min(1) private int requestedValidityDays; + @NotNull + private String subjectCommonName; + private String subjectEmailAddress; private String subjectOrganization; private String subjectOrganizationalUnit; @@ -45,15 +45,15 @@ public class Certificate { @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) private List certificateExtension = new ArrayList<>(); - @Lob + //@Lob - Cannot annotate column: https://github.com/xerial/sqlite-jdbc/issues/135 @Column(nullable = false) private byte[] cert = new byte[0]; - @Lob + //@Lob - Cannot annotate column: https://github.com/xerial/sqlite-jdbc/issues/135 @Column(nullable = false) private byte[] privateKey = new byte[0]; - @Lob + //@Lob - Cannot annotate column: https://github.com/xerial/sqlite-jdbc/issues/135 @Column private byte[] fullchain; diff --git a/src/main/java/de/mlessmann/certassist/service/CertificateCreationService.java b/src/main/java/de/mlessmann/certassist/service/CertificateCreationService.java index cdd34b9..bc1265f 100644 --- a/src/main/java/de/mlessmann/certassist/service/CertificateCreationService.java +++ b/src/main/java/de/mlessmann/certassist/service/CertificateCreationService.java @@ -46,7 +46,7 @@ public class CertificateCreationService { private Certificate createEntityFromRequest(CertificateRequest certificateRequest) { final Certificate certificate = new Certificate(); certificate.setType(mapCertificateRequestType(certificateRequest.getType())); - certificate.setCommonName(certificateRequest.getSubject().getCommonName()); + certificate.setSubjectCommonName(certificateRequest.getSubject().getCommonName()); certificate.setTrustingAuthority(certificateRequest.getTrustingAuthority()); certificate.setRequestedKeyLength(certificateRequest.getRequestedKeyLength()); certificate.setRequestedValidityDays(certificateRequest.getRequestedValidityDays()); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 228334a..115f1fb 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -9,7 +9,10 @@ spring.jpa.database-platform=org.hibernate.community.dialect.SQLiteDialect #TODO: Use flyway for db setup hibernate.hbm2ddl.auto=update hibernate.show_sql=true +hibernate.format_sql=true # Logging logging.level.root=INFO logging.level.de.mlessmann.certassist=DEBUG +logging.level.org.sqlite=TRACE +logging.level.org.hibernate=DEBUG \ No newline at end of file diff --git a/src/test/java/de/mlessmann/certassist/repositories/CertificateRepositoryTest.java b/src/test/java/de/mlessmann/certassist/repositories/CertificateRepositoryTest.java index f107461..1afdc3f 100644 --- a/src/test/java/de/mlessmann/certassist/repositories/CertificateRepositoryTest.java +++ b/src/test/java/de/mlessmann/certassist/repositories/CertificateRepositoryTest.java @@ -7,6 +7,8 @@ import de.mlessmann.certassist.models.CertificateExtension; import de.mlessmann.certassist.models.CertificateType; import jakarta.transaction.Transactional; import java.util.List; +import java.util.stream.StreamSupport; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -20,9 +22,15 @@ class CertificateRepositoryTest { @Autowired private CertificateExtensionRepository extensionRepository; + @BeforeEach + void cleanUp() { + extensionRepository.deleteAll(); + repository.deleteAll(); + } + private Certificate getCertificate() { final Certificate certificate = new Certificate(); - certificate.setCommonName("test-cn"); + certificate.setSubjectCommonName("test-cn"); certificate.setType(CertificateType.SIGNED_CERT); certificate.setRequestedKeyLength(1); certificate.setRequestedValidityDays(1); @@ -37,7 +45,7 @@ class CertificateRepositoryTest { repository.save(certificate); Certificate foundCertificate = repository.findById(certificate.getId()).orElseThrow(); - assertThat(foundCertificate.getCommonName()).isEqualTo("test-cn"); + assertThat(foundCertificate.getSubjectCommonName()).isEqualTo("test-cn"); assertThat(foundCertificate.getType()).isEqualTo(CertificateType.SIGNED_CERT); } @@ -51,8 +59,10 @@ class CertificateRepositoryTest { repository.save(certificate); assertThat(repository.findById(certificate.getId()).orElseThrow().getCertificateExtension()).hasSize(1); - assertThat(extensionRepository.findAll()) - .singleElement() - .satisfies(ce -> assertThat(ce.getValue()).isEqualTo("test-ext-value")); + List extensions = StreamSupport + .stream(extensionRepository.findAll().spliterator(), false) + .toList(); + assertThat(extensions).hasSize(1); + assertThat(extensions).singleElement().satisfies(ce -> assertThat(ce.getValue()).isEqualTo("test-ext-value")); } }