From 385542efd1390a93fa7fc829774527044f1e610e Mon Sep 17 00:00:00 2001 From: Robert Jasny Date: Thu, 31 Oct 2024 13:55:12 +0100 Subject: [PATCH 1/2] =?UTF-8?q?-=20TheEntity,=20BaseEntity,=20TheEntityRep?= =?UTF-8?q?ository=20entfernt=20-=20Flyway-Skripte=20f=C3=BCr=20Entfernen?= =?UTF-8?q?=20der=20Tabelle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/TheEntity.java | 43 ------ .../domain/ereignis/Ereignis.java | 18 ++- .../rest/TheEntityRepository.java | 126 ------------------ .../h2/V2_0__dropTableTheEntity.sql | 1 + .../oracle/V2_0__dropTableTheEntity.sql | 1 + .../rest/TheEntityRepositoryTest.java | 55 -------- .../EreignisControllerIntegrationTest.java | 12 +- .../utils/TestdataFactory.java | 10 +- 8 files changed, 28 insertions(+), 238 deletions(-) delete mode 100644 wls-vorfaelleundvorkommnisse-service/src/main/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/domain/TheEntity.java delete mode 100644 wls-vorfaelleundvorkommnisse-service/src/main/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/rest/TheEntityRepository.java create mode 100644 wls-vorfaelleundvorkommnisse-service/src/main/resources/db/migrations/h2/V2_0__dropTableTheEntity.sql create mode 100644 wls-vorfaelleundvorkommnisse-service/src/main/resources/db/migrations/oracle/V2_0__dropTableTheEntity.sql delete mode 100644 wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/rest/TheEntityRepositoryTest.java diff --git a/wls-vorfaelleundvorkommnisse-service/src/main/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/domain/TheEntity.java b/wls-vorfaelleundvorkommnisse-service/src/main/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/domain/TheEntity.java deleted file mode 100644 index c6cae2d2d..000000000 --- a/wls-vorfaelleundvorkommnisse-service/src/main/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/domain/TheEntity.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c): it@M - Dienstleister für Informations- und Telekommunikationstechnik - * der Landeshauptstadt München, 2024 - */ -package de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.domain; - -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; -import lombok.ToString; - -/** - * This class represents a TheEntity. - *

- * The entity's content will be loaded according to the reference variable. - *

- */ -@Entity -// Definition of getter, setter, ... -@Getter -@Setter -@ToString(callSuper = true) -@EqualsAndHashCode(callSuper = true) -@NoArgsConstructor -public class TheEntity extends BaseEntity { - - private static final long serialVersionUID = 1L; - - // ========= // - // Variables // - // ========= // - - @Column(name = "textattribute", nullable = false, length = 8) - @NotNull - @Size(min = 2, max = 8) - private String textAttribute; - -} diff --git a/wls-vorfaelleundvorkommnisse-service/src/main/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/domain/ereignis/Ereignis.java b/wls-vorfaelleundvorkommnisse-service/src/main/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/domain/ereignis/Ereignis.java index cfe122fe0..717bbb379 100644 --- a/wls-vorfaelleundvorkommnisse-service/src/main/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/domain/ereignis/Ereignis.java +++ b/wls-vorfaelleundvorkommnisse-service/src/main/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/domain/ereignis/Ereignis.java @@ -1,23 +1,35 @@ package de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.domain.ereignis; -import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.domain.BaseEntity; +import static java.sql.Types.VARCHAR; + import jakarta.persistence.Entity; import jakarta.persistence.EnumType; import jakarta.persistence.Enumerated; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; import java.time.LocalDateTime; +import java.util.UUID; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; +import org.hibernate.annotations.JdbcTypeCode; +import org.hibernate.annotations.UuidGenerator; @Entity @Data @NoArgsConstructor @AllArgsConstructor -@EqualsAndHashCode(callSuper = true) -public class Ereignis extends BaseEntity { +@EqualsAndHashCode +public class Ereignis { + + @Id + @GeneratedValue(generator = "uuid") + @UuidGenerator + @JdbcTypeCode(VARCHAR) + private UUID id; @NotNull @Size(max = 1024) diff --git a/wls-vorfaelleundvorkommnisse-service/src/main/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/rest/TheEntityRepository.java b/wls-vorfaelleundvorkommnisse-service/src/main/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/rest/TheEntityRepository.java deleted file mode 100644 index 911466c0a..000000000 --- a/wls-vorfaelleundvorkommnisse-service/src/main/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/rest/TheEntityRepository.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (c): it@M - Dienstleister für Informations- und Telekommunikationstechnik - * der Landeshauptstadt München, 2024 - */ -package de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.rest; - -import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.domain.TheEntity; -import java.util.Optional; -import java.util.UUID; -import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.CachePut; -import org.springframework.cache.annotation.Cacheable; -import org.springframework.data.repository.CrudRepository; -import org.springframework.security.access.prepost.PreAuthorize; - -/** - * Provides a Repository for {@link TheEntity}. This Repository is exported as a REST resource. - *

- * The Repository handles CRUD Operations. Every Operation is secured and takes care of the tenancy. - * For specific Documentation on how the generated REST point - * behaves, please consider the Spring Data Rest Reference - * here. - *

- */ -@PreAuthorize( - "hasAuthority(T(de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.security.AuthoritiesEnum).WLS_AUTH_SERVICE_READ_THEENTITY.name())" -) -public interface TheEntityRepository extends CrudRepository { //NOSONAR - - /** - * Name for the specific cache. - */ - String CACHE = "THEENTITY_CACHE"; - - /** - * Get one specific {@link TheEntity} by its unique id. - * - * @param id The identifier of the {@link TheEntity}. - * @return The {@link TheEntity} with the requested id. - */ - @Override - @Cacheable(value = CACHE, key = "#p0") - Optional findById(UUID id); - - /** - * Create or update a {@link TheEntity}. - *

- * If the id already exists, the {@link TheEntity} will be overridden, hence update. If the id does - * not already exist, a new {@link TheEntity} will be - * created, hence create. - *

- * - * @param theEntity The {@link TheEntity} that will be saved. - * @return the saved {@link TheEntity}. - */ - @Override - @CachePut(value = CACHE, key = "#p0.id") - @PreAuthorize( - "hasAuthority(T(de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.security.AuthoritiesEnum).WLS_AUTH_SERVICE_WRITE_THEENTITY.name())" - ) - S save(S theEntity); - - /** - * Create or update a collection of {@link TheEntity}. - *

- * If the id already exists, the {@link TheEntity}s will be overridden, hence update. If the id does - * not already exist, the new {@link TheEntity}s will be - * created, hence create. - *

- * - * @param entities The {@link TheEntity} that will be saved. - * @return the collection saved {@link TheEntity}. - */ - @Override - @PreAuthorize( - "hasAuthority(T(de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.security.AuthoritiesEnum).WLS_AUTH_SERVICE_WRITE_THEENTITY.name())" - ) - Iterable saveAll(Iterable entities); - - /** - * Delete the {@link TheEntity} by a specified id. - * - * @param id the unique id of the {@link TheEntity} that will be deleted. - */ - @Override - @CacheEvict(value = CACHE, key = "#p0") - @PreAuthorize( - "hasAuthority(T(de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.security.AuthoritiesEnum).WLS_AUTH_SERVICE_DELETE_THEENTITY.name())" - ) - void deleteById(UUID id); - - /** - * Delete a {@link TheEntity} by entity. - * - * @param entity The {@link TheEntity} that will be deleted. - */ - @Override - @CacheEvict(value = CACHE, key = "#p0.id") - @PreAuthorize( - "hasAuthority(T(de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.security.AuthoritiesEnum).WLS_AUTH_SERVICE_DELETE_THEENTITY.name())" - ) - void delete(TheEntity entity); - - /** - * Delete multiple {@link TheEntity} entities by their id. - * - * @param entities The Iterable of {@link TheEntity} that will be deleted. - */ - @Override - @CacheEvict(value = CACHE, allEntries = true) - @PreAuthorize( - "hasAuthority(T(de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.security.AuthoritiesEnum).WLS_AUTH_SERVICE_DELETE_THEENTITY.name())" - ) - void deleteAll(Iterable entities); - - /** - * Delete all {@link TheEntity} entities. - */ - @Override - @CacheEvict(value = CACHE, allEntries = true) - @PreAuthorize( - "hasAuthority(T(de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.security.AuthoritiesEnum).WLS_AUTH_SERVICE_DELETE_THEENTITY.name())" - ) - void deleteAll(); - -} diff --git a/wls-vorfaelleundvorkommnisse-service/src/main/resources/db/migrations/h2/V2_0__dropTableTheEntity.sql b/wls-vorfaelleundvorkommnisse-service/src/main/resources/db/migrations/h2/V2_0__dropTableTheEntity.sql new file mode 100644 index 000000000..25bcba5ac --- /dev/null +++ b/wls-vorfaelleundvorkommnisse-service/src/main/resources/db/migrations/h2/V2_0__dropTableTheEntity.sql @@ -0,0 +1 @@ +DROP TABLE theEntity \ No newline at end of file diff --git a/wls-vorfaelleundvorkommnisse-service/src/main/resources/db/migrations/oracle/V2_0__dropTableTheEntity.sql b/wls-vorfaelleundvorkommnisse-service/src/main/resources/db/migrations/oracle/V2_0__dropTableTheEntity.sql new file mode 100644 index 000000000..25bcba5ac --- /dev/null +++ b/wls-vorfaelleundvorkommnisse-service/src/main/resources/db/migrations/oracle/V2_0__dropTableTheEntity.sql @@ -0,0 +1 @@ +DROP TABLE theEntity \ No newline at end of file diff --git a/wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/rest/TheEntityRepositoryTest.java b/wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/rest/TheEntityRepositoryTest.java deleted file mode 100644 index b689f9959..000000000 --- a/wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/rest/TheEntityRepositoryTest.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c): it@M - Dienstleister für Informations- und Telekommunikationstechnik - * der Landeshauptstadt München, 2024 - */ -package de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.rest; - -import static de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.TestConstants.SPRING_NO_SECURITY_PROFILE; -import static de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.TestConstants.SPRING_TEST_PROFILE; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.MicroServiceApplication; -import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.domain.TheEntity; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; - -@SpringBootTest( - classes = { MicroServiceApplication.class }, - webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, - properties = { - "spring.datasource.url=jdbc:h2:mem:wls;DB_CLOSE_ON_EXIT=FALSE", - "refarch.gracefulshutdown.pre-wait-seconds=0" - } -) -@ActiveProfiles(profiles = { SPRING_TEST_PROFILE, SPRING_NO_SECURITY_PROFILE }) -class TheEntityRepositoryTest { - - @Autowired - private TheEntityRepository repository; - - @Test - @Transactional(propagation = Propagation.REQUIRED, noRollbackFor = Exception.class) - void testSave() { - - // Implement your logic here by replacing and/or extending the code - - // initialize - TheEntity original = new TheEntity(); - original.setTextAttribute("test"); - - // persist - original = repository.save(original); - - // check - TheEntity persisted = repository.findById(original.getId()).orElse(null); - assertNotNull(persisted); - assertEquals(original, persisted); - - } - -} diff --git a/wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/rest/ereignis/EreignisControllerIntegrationTest.java b/wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/rest/ereignis/EreignisControllerIntegrationTest.java index b95a378c4..7ab64ea29 100644 --- a/wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/rest/ereignis/EreignisControllerIntegrationTest.java +++ b/wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/rest/ereignis/EreignisControllerIntegrationTest.java @@ -1,5 +1,9 @@ package de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.rest.ereignis; +import static de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.TestConstants.SPRING_TEST_PROFILE; +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + import com.fasterxml.jackson.databind.ObjectMapper; import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.MicroServiceApplication; import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.domain.ereignis.Ereignis; @@ -27,10 +31,6 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.transaction.annotation.Transactional; -import static de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.TestConstants.SPRING_TEST_PROFILE; -import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - @SpringBootTest(classes = MicroServiceApplication.class, webEnvironment = SpringBootTest.WebEnvironment.MOCK) @AutoConfigureMockMvc @ActiveProfiles(profiles = { SPRING_TEST_PROFILE, Profiles.NO_BEZIRKS_ID_CHECK }) @@ -112,7 +112,7 @@ void should_saveListOfEreignisEntities_when_newDataSuccessfullySaved() throws Ex val savedEreignisse = ereignisRepository.findByWahlbezirkID(wahlbezirkID); val expectedSavedEreignisse = mockedEreignisseWriteDto.ereigniseintraege().stream() - .map(ereignisDto -> new Ereignis(wahlbezirkID, ereignisDto.beschreibung(), ereignisDto.uhrzeit(), + .map(ereignisDto -> new Ereignis(null, wahlbezirkID, ereignisDto.beschreibung(), ereignisDto.uhrzeit(), TestdataFactory.MapEreignisart.ereignisartDtoToEreignisart(ereignisDto.ereignisart()))) .toList(); Assertions.assertThat(response.getResponse().getContentAsString()).isEmpty(); @@ -147,7 +147,7 @@ void should_overrideOldListOfEreignisEntities_when_newDataSuccessfullySaved() th SecurityUtils.runWith(Authorities.REPOSITORY_READ_EREIGNISSE); val savedEreignisse = ereignisRepository.findByWahlbezirkID(wahlbezirkID); val expectedSavedEreignisse = mockedEreignisseWriteDto.ereigniseintraege().stream() - .map(ereignisDto -> new Ereignis(wahlbezirkID, ereignisDto.beschreibung(), ereignisDto.uhrzeit(), + .map(ereignisDto -> new Ereignis(null, wahlbezirkID, ereignisDto.beschreibung(), ereignisDto.uhrzeit(), TestdataFactory.MapEreignisart.ereignisartDtoToEreignisart(ereignisDto.ereignisart()))) .toList(); Assertions.assertThat(savedEreignisseBeforeOverridden.size()).isEqualTo(ereignisListToOverride.size()); diff --git a/wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/utils/TestdataFactory.java b/wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/utils/TestdataFactory.java index 15af85626..4d42b9038 100644 --- a/wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/utils/TestdataFactory.java +++ b/wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/utils/TestdataFactory.java @@ -2,14 +2,14 @@ import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.domain.ereignis.Ereignis; import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.domain.ereignis.Ereignisart; +import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.rest.ereignis.EreignisDTO; import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.rest.ereignis.EreignisartDTO; import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.rest.ereignis.EreignisseWriteDTO; import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.rest.ereignis.WahlbezirkEreignisseDTO; -import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.rest.ereignis.EreignisDTO; import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.service.EreignisModel; import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.service.EreignisartModel; -import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.service.WahlbezirkEreignisseModel; import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.service.EreignisseWriteModel; +import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.service.WahlbezirkEreignisseModel; import java.time.LocalDateTime; import java.util.List; @@ -18,16 +18,16 @@ public class TestdataFactory { public static class CreateEreignisEntity { public static Ereignis withData(String wahlbezirkID) { - return new Ereignis(wahlbezirkID, "beschreibung", LocalDateTime.now().withNano(0), Ereignisart.VORFALL); + return new Ereignis(null, wahlbezirkID, "beschreibung", LocalDateTime.now().withNano(0), Ereignisart.VORFALL); } public static Ereignis fromModel(EreignisModel ereignisModel, String wahlbezirkID) { - return new Ereignis(wahlbezirkID, ereignisModel.beschreibung(), ereignisModel.uhrzeit(), + return new Ereignis(null, wahlbezirkID, ereignisModel.beschreibung(), ereignisModel.uhrzeit(), MapEreignisart.ereignisartModelToEreignisart(ereignisModel.ereignisart())); } public static List listFromModel(EreignisseWriteModel ereignisWriteModel) { - List ereignisList = ereignisWriteModel.ereigniseintraege().stream().map(ereignis -> new Ereignis(ereignisWriteModel.wahlbezirkID(), + List ereignisList = ereignisWriteModel.ereigniseintraege().stream().map(ereignis -> new Ereignis(null, ereignisWriteModel.wahlbezirkID(), ereignis.beschreibung(), ereignis.uhrzeit(), MapEreignisart.ereignisartModelToEreignisart(ereignis.ereignisart()))).toList(); return ereignisList; } From 457995a5e0427b9d98dbaf1b748eb6dbb7ffdb24 Mon Sep 17 00:00:00 2001 From: Robert Jasny Date: Thu, 31 Oct 2024 15:14:37 +0100 Subject: [PATCH 2/2] one test deleted, disabled test implemented --- .../CacheControlConfigurationTest.java | 51 ------------------- .../UnicodeConfigurationTest.java | 43 ++++++++-------- 2 files changed, 20 insertions(+), 74 deletions(-) delete mode 100644 wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/configuration/CacheControlConfigurationTest.java diff --git a/wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/configuration/CacheControlConfigurationTest.java b/wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/configuration/CacheControlConfigurationTest.java deleted file mode 100644 index e518925b7..000000000 --- a/wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/configuration/CacheControlConfigurationTest.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c): it@M - Dienstleister für Informations- und Telekommunikationstechnik - * der Landeshauptstadt München, 2024 - */ -package de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.configuration; - -import static de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.TestConstants.SPRING_NO_SECURITY_PROFILE; -import static de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.TestConstants.SPRING_TEST_PROFILE; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.MicroServiceApplication; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.web.client.TestRestTemplate; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.test.context.ActiveProfiles; - -@SpringBootTest( - classes = { MicroServiceApplication.class }, - webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, - properties = { - "spring.datasource.url=jdbc:h2:mem:testexample;DB_CLOSE_ON_EXIT=FALSE", - "refarch.gracefulshutdown.pre-wait-seconds=0" - } -) -@ActiveProfiles(profiles = { SPRING_TEST_PROFILE, SPRING_NO_SECURITY_PROFILE }) -class CacheControlConfigurationTest { - - private static final String ENTITY_ENDPOINT_URL = "/theEntities"; - - private static final String EXPECTED_CACHE_CONTROL_HEADER_VALUES = "no-cache, no-store, must-revalidate"; - - @Autowired - private TestRestTemplate testRestTemplate; - - @Test - @Disabled - void testForCacheControlHeadersForEntityEndpoint() { - ResponseEntity response = testRestTemplate.exchange(ENTITY_ENDPOINT_URL, HttpMethod.GET, null, String.class); - assertEquals(HttpStatus.OK, response.getStatusCode()); - assertTrue(response.getHeaders().containsKey(HttpHeaders.CACHE_CONTROL)); - assertEquals(EXPECTED_CACHE_CONTROL_HEADER_VALUES, response.getHeaders().getCacheControl()); - } - -} diff --git a/wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/configuration/UnicodeConfigurationTest.java b/wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/configuration/UnicodeConfigurationTest.java index beebd26eb..cc0a6134f 100644 --- a/wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/configuration/UnicodeConfigurationTest.java +++ b/wls-vorfaelleundvorkommnisse-service/src/test/java/de/muenchen/oss/wahllokalsystem/vorfaelleundvorkommnisseservice/configuration/UnicodeConfigurationTest.java @@ -6,16 +6,17 @@ import static de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.TestConstants.SPRING_NO_SECURITY_PROFILE; import static de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.TestConstants.SPRING_TEST_PROFILE; -import static de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.TestConstants.TheEntityDto; import static org.junit.jupiter.api.Assertions.assertEquals; import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.MicroServiceApplication; -import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.domain.TheEntity; -import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.rest.TheEntityRepository; +import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.domain.ereignis.EreignisRepository; +import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.rest.ereignis.EreignisDTO; +import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.rest.ereignis.EreignisartDTO; +import de.muenchen.oss.wahllokalsystem.vorfaelleundvorkommnisseservice.rest.ereignis.EreignisseWriteDTO; import java.net.URI; -import java.util.UUID; -import org.apache.commons.lang3.StringUtils; -import org.junit.jupiter.api.Disabled; +import java.time.LocalDateTime; +import java.util.Arrays; +import lombok.val; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -33,7 +34,7 @@ @ActiveProfiles(profiles = { SPRING_TEST_PROFILE, SPRING_NO_SECURITY_PROFILE }) class UnicodeConfigurationTest { - private static final String ENTITY_ENDPOINT_URL = "/theEntities"; + private static final String ENTITY_ENDPOINT_URL = "/businessActions/ereignisse/"; /** * Decomposed string: String "Ä-é" represented with unicode letters "A◌̈-e◌́" @@ -49,28 +50,24 @@ class UnicodeConfigurationTest { private TestRestTemplate testRestTemplate; @Autowired - private TheEntityRepository theEntityRepository; + private EreignisRepository ereignisRepository; @Test - @Disabled void testForNfcNormalization() { // Persist entity with decomposed string. - final TheEntityDto theEntityDto = new TheEntityDto(); - theEntityDto.setTextAttribute(TEXT_ATTRIBUTE_DECOMPOSED); - assertEquals(TEXT_ATTRIBUTE_DECOMPOSED.length(), theEntityDto.getTextAttribute().length()); - final TheEntityDto response = testRestTemplate.postForEntity(URI.create(ENTITY_ENDPOINT_URL), theEntityDto, TheEntityDto.class).getBody(); + val wahlbezirkID = "wahlbezirkID01"; + // create a list of Ereignisse with only one Ereignis containing the TEXT_ATTRIBUTE_DECOMPOSED as 'beschreibung' + val ereignisDTO = new EreignisDTO(TEXT_ATTRIBUTE_DECOMPOSED, LocalDateTime.now().withNano(0), EreignisartDTO.VORFALL); + assertEquals(TEXT_ATTRIBUTE_DECOMPOSED.length(), ereignisDTO.beschreibung().length()); + val ereignisseWriteDTO = new EreignisseWriteDTO(Arrays.asList(ereignisDTO)); - // Check whether response contains a composed string. - assertEquals(TEXT_ATTRIBUTE_COMPOSED, response.getTextAttribute()); - assertEquals(TEXT_ATTRIBUTE_COMPOSED.length(), response.getTextAttribute().length()); - - // Extract uuid from self link. - final UUID uuid = UUID.fromString(StringUtils.substringAfterLast(response.getRequiredLink("self").getHref(), "/")); + // store list of Ereignisse + testRestTemplate.postForEntity(URI.create(ENTITY_ENDPOINT_URL + wahlbezirkID), ereignisseWriteDTO, + Void.class); // Check persisted entity contains a composed string via JPA repository. - final TheEntity theEntity = theEntityRepository.findById(uuid).orElse(null); - assertEquals(TEXT_ATTRIBUTE_COMPOSED, theEntity.getTextAttribute()); - assertEquals(TEXT_ATTRIBUTE_COMPOSED.length(), theEntity.getTextAttribute().length()); + val ereignis = ereignisRepository.findByWahlbezirkID(wahlbezirkID); + assertEquals(TEXT_ATTRIBUTE_COMPOSED, ereignis.get(0).getBeschreibung()); + assertEquals(TEXT_ATTRIBUTE_COMPOSED.length(), ereignis.get(0).getBeschreibung().length()); } - }