From 6844020cc657347f506ac24d0c249ebc1aced4d3 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Fri, 19 Jul 2024 11:58:13 +0200 Subject: [PATCH 01/26] resetwahlen erste Teilimpl bis Service-tests --- .../basisdatenservice/domain/Farbe.java | 31 ++++++++++ .../basisdatenservice/domain/Wahl.java | 61 +++++++++++++++++++ .../domain/WahlRepository.java | 56 +++++++++++++++++ .../basisdatenservice/domain/Wahlart.java | 5 ++ .../rest/wahlen/ResetWahlenController.java | 36 +++++++++++ .../resetwahlen/ResetWahlenService.java | 31 ++++++++++ .../migrations/h2/V4_0__createWahlTable.sql | 13 ++++ .../oracle/V4_0__createWahlTable.sql | 12 ++++ .../domain/WahlRepositoryTest.java | 58 ++++++++++++++++++ 9 files changed, 303 insertions(+) create mode 100644 wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Farbe.java create mode 100644 wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Wahl.java create mode 100644 wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepository.java create mode 100644 wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Wahlart.java create mode 100644 wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenController.java create mode 100644 wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenService.java create mode 100644 wls-basisdaten-service/src/main/resources/db/migrations/h2/V4_0__createWahlTable.sql create mode 100644 wls-basisdaten-service/src/main/resources/db/migrations/oracle/V4_0__createWahlTable.sql create mode 100644 wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepositoryTest.java diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Farbe.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Farbe.java new file mode 100644 index 000000000..f29b6c32c --- /dev/null +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Farbe.java @@ -0,0 +1,31 @@ +package de.muenchen.oss.wahllokalsystem.basisdatenservice.domain; + +import jakarta.persistence.Embeddable; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@Embeddable +@EqualsAndHashCode +@NoArgsConstructor +@AllArgsConstructor +public class Farbe { + + @NotNull + @Min((long) 0.0) + @Max((long) 255.0) + private long r; + + @NotNull + @Min((long) 0.0) + @Max((long) 255.0) + private long g; + + @NotNull + @Min((long) 0.0) + @Max((long) 255.0) + private long b; +} diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Wahl.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Wahl.java new file mode 100644 index 000000000..3e547c120 --- /dev/null +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Wahl.java @@ -0,0 +1,61 @@ +package de.muenchen.oss.wahllokalsystem.basisdatenservice.domain; + +import jakarta.persistence.Embedded; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import java.time.LocalDate; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; +import org.springframework.stereotype.Indexed; + +@Entity +@Indexed +@Data +@EqualsAndHashCode +@NoArgsConstructor +@AllArgsConstructor +@Table(name = "Wahl") +public class Wahl { + + @Id + @NotNull + @Size(max = 1024) + @ToString.Include + private String wahlID; + + @Size(max = 255) + @ToString.Include + private String name; + + @NotNull + @ToString.Include + private long reihenfolge; + + @NotNull + @Min((long) 1.0) + private long waehlerverzeichnisNummer; + + @NotNull + @ToString.Include + private LocalDate wahltag; + + @Enumerated(EnumType.STRING) + @NotNull + private Wahlart wahlart; + + @Embedded + private Farbe farbe; + + @Size(max = 255) + @ToString.Include + private String nummer; +} diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepository.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepository.java new file mode 100644 index 000000000..e099d4fa7 --- /dev/null +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepository.java @@ -0,0 +1,56 @@ +package de.muenchen.oss.wahllokalsystem.basisdatenservice.domain; + +import java.time.LocalDate; +import java.util.List; +import java.util.Optional; +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; +import org.springframework.transaction.annotation.Transactional; + +@PreAuthorize("hasAuthority('Basisdaten_READ_Wahl')") +@Transactional +public interface WahlRepository extends CrudRepository { + + String CACHE = "WAHL_CACHE"; + + @Override + List findAll(); + + @Override + @Cacheable(value = CACHE, key = "#p0") + Optional findById(String wahlID); + + @Override + @CachePut(value = CACHE, key = "#p0.wahlID") + @PreAuthorize("hasAuthority('Basisdaten_WRITE_Wahl')") + S save(S entity); + + @Override + @PreAuthorize("hasAuthority('Basisdaten_WRITE_Wahl')") + Iterable saveAll(Iterable entities); + + @Override + @CacheEvict(value = CACHE, key = "#p0") + @PreAuthorize("hasAuthority('Basisdaten_DELETE_Wahl')") + void deleteById(String wahlID); + + @Override + @CacheEvict(value = CACHE, key = "#p0.wahlID") + @PreAuthorize("hasAuthority('Basisdaten_DELETE_Wahl')") + void delete(Wahl entity); + + @Override + @CacheEvict(value = CACHE, allEntries = true) + @PreAuthorize("hasAuthority('Basisdaten_DELETE_Wahl')") + void deleteAll(Iterable entities); + + @Override + @CacheEvict(value = CACHE, allEntries = true) + @PreAuthorize("hasAuthority('Basisdaten_DELETE_Wahl')") + void deleteAll(); + + List findByWahltagOrderByReihenfolge(LocalDate wahltag); +} diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Wahlart.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Wahlart.java new file mode 100644 index 000000000..46e98d394 --- /dev/null +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Wahlart.java @@ -0,0 +1,5 @@ +package de.muenchen.oss.wahllokalsystem.basisdatenservice.domain; + +public enum Wahlart { + BAW, BEB, BTW, BZW, EUW, LTW, MBW, OBW, SRW, SVW, VE +} diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenController.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenController.java new file mode 100644 index 000000000..cff7c28d4 --- /dev/null +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenController.java @@ -0,0 +1,36 @@ + +package de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen; + +import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.resetwahlen.ResetWahlenService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/businessActions/resetWahlen") +@RequiredArgsConstructor +@Slf4j +public class ResetWahlenController { + + private final ResetWahlenService resetWahlenService; + + @Operation( + description = "Setzt die Attribute Farbe, Reihenfolge und Waehlerverzeichnis der vorhandenen Wahlen auf die Standardwerte.", + responses = { + @ApiResponse( + responseCode = "200", description = "Die Wahlen wurden zurückgesetzt." + ) + } + ) + @PostMapping + public ResponseEntity resetWahlen() { + resetWahlenService.resetWahlen(); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenService.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenService.java new file mode 100644 index 000000000..e05c0a5ac --- /dev/null +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenService.java @@ -0,0 +1,31 @@ +package de.muenchen.oss.wahllokalsystem.basisdatenservice.services.resetwahlen; + +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.Farbe; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.WahlRepository; +import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +@Slf4j +public class ResetWahlenService { + + private final WahlRepository wahlRepository; + + @PreAuthorize( + "hasAuthority('Basisdaten_BUSINESSACTION_ResetWahlen')" + ) + public void resetWahlen() { + log.info("#resetWahlen"); + wahlRepository.saveAll(wahlRepository.findAll().stream() + .peek(wahl -> { + wahl.setFarbe(new Farbe(0, 0, 0)); + wahl.setReihenfolge(0); + wahl.setWaehlerverzeichnisNummer(1); + }) + .collect(Collectors.toList())); + } +} diff --git a/wls-basisdaten-service/src/main/resources/db/migrations/h2/V4_0__createWahlTable.sql b/wls-basisdaten-service/src/main/resources/db/migrations/h2/V4_0__createWahlTable.sql new file mode 100644 index 000000000..5eee6a917 --- /dev/null +++ b/wls-basisdaten-service/src/main/resources/db/migrations/h2/V4_0__createWahlTable.sql @@ -0,0 +1,13 @@ +create table Wahl ( +wahlid varchar(1024) not null, +name varchar(255) not null, +reihenfolge bigint not null, +waehlerverzeichnisnummer bigint not null, +wahltag datetime not null, +wahlart varchar(255) not null, +r bigint not null, +g bigint not null, +b bigint not null, +nummer varchar(255) not null, +primary key (wahlid) +); \ No newline at end of file diff --git a/wls-basisdaten-service/src/main/resources/db/migrations/oracle/V4_0__createWahlTable.sql b/wls-basisdaten-service/src/main/resources/db/migrations/oracle/V4_0__createWahlTable.sql new file mode 100644 index 000000000..12ddd8e76 --- /dev/null +++ b/wls-basisdaten-service/src/main/resources/db/migrations/oracle/V4_0__createWahlTable.sql @@ -0,0 +1,12 @@ +create table Wahl ( +wahlid varchar(1024) not null, +name varchar(255) not null, +reihenfolge NUMBER(19, 0) not null, +waehlerverzeichnisnummer NUMBER(19, 0) not null, +wahltag TIMESTAMP not null, +wahlart varchar(255) not null, +r NUMBER(19, 0) not null, +g NUMBER(19, 0) not null, +b NUMBER(19, 0) not null, +nummer varchar(255) not null, +primary key (wahlid)); \ No newline at end of file diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepositoryTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepositoryTest.java new file mode 100644 index 000000000..8968539f6 --- /dev/null +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepositoryTest.java @@ -0,0 +1,58 @@ +package de.muenchen.oss.wahllokalsystem.basisdatenservice.domain; + +import static de.muenchen.oss.wahllokalsystem.basisdatenservice.TestConstants.SPRING_NO_SECURITY_PROFILE; +import static de.muenchen.oss.wahllokalsystem.basisdatenservice.TestConstants.SPRING_TEST_PROFILE; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.MicroServiceApplication; +import java.time.LocalDate; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; +import lombok.extern.slf4j.Slf4j; +import lombok.val; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.AfterEach; +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; + +@SpringBootTest( + classes = { MicroServiceApplication.class }, + webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT +) +@ActiveProfiles(profiles = { SPRING_TEST_PROFILE, SPRING_NO_SECURITY_PROFILE }) +@Slf4j +class WahlRepositoryTest { + + @Autowired + private WahlRepository repository; + + @AfterEach + void tearDown() { + repository.deleteAll(); + } + + @Test + void findByWahltagOrderByReihenfolge() { + val wahlenToSave = createWahlenList(); + repository.saveAll(wahlenToSave); + + val wahltagToFind = LocalDate.now().minusMonths(1); + val foundWahlen = repository.findByWahltagOrderByReihenfolge(wahltagToFind); + val expectedWahlen = wahlenToSave.stream().filter(wahl -> Objects.equals(wahl.getWahltag(), wahltagToFind)).sorted( + Comparator.comparing(Wahl::getReihenfolge)).collect(Collectors.toList()); + + Assertions.assertThat(foundWahlen).isEqualTo(expectedWahlen); + } + + private List createWahlenList() { + val wahl1 = new Wahl("wahlID1", "name1", 3L, 1L, LocalDate.now().minusMonths(1), Wahlart.BAW, new Farbe(1, 1, 1), "1"); + val wahl2 = new Wahl("wahlID2", "name2", 2L, 2L, LocalDate.now().plusMonths(1), Wahlart.EUW, new Farbe(2, 2, 2), "2"); + val wahl3 = new Wahl("wahlID3", "name3", 1L, 3L, LocalDate.now().minusMonths(1), Wahlart.VE, new Farbe(3, 3, 3), "3"); + val wahl4 = new Wahl("wahlID4", "name4", 4L, 3L, LocalDate.now().minusMonths(1), Wahlart.LTW, new Farbe(3, 3, 3), "0"); + + return Arrays.asList(wahl1, wahl2, wahl3, wahl4); + } +} From ed31c9433fefc8f924273df31e152f84c0479440 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Fri, 19 Jul 2024 11:58:13 +0200 Subject: [PATCH 02/26] Nummerierung sql Skripte angepasst --- .../h2/{V4_0__createWahlTable.sql => V5_0__createWahlTable.sql} | 0 .../{V4_0__createWahlTable.sql => V5_0__createWahlTable.sql} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename wls-basisdaten-service/src/main/resources/db/migrations/h2/{V4_0__createWahlTable.sql => V5_0__createWahlTable.sql} (100%) rename wls-basisdaten-service/src/main/resources/db/migrations/oracle/{V4_0__createWahlTable.sql => V5_0__createWahlTable.sql} (100%) diff --git a/wls-basisdaten-service/src/main/resources/db/migrations/h2/V4_0__createWahlTable.sql b/wls-basisdaten-service/src/main/resources/db/migrations/h2/V5_0__createWahlTable.sql similarity index 100% rename from wls-basisdaten-service/src/main/resources/db/migrations/h2/V4_0__createWahlTable.sql rename to wls-basisdaten-service/src/main/resources/db/migrations/h2/V5_0__createWahlTable.sql diff --git a/wls-basisdaten-service/src/main/resources/db/migrations/oracle/V4_0__createWahlTable.sql b/wls-basisdaten-service/src/main/resources/db/migrations/oracle/V5_0__createWahlTable.sql similarity index 100% rename from wls-basisdaten-service/src/main/resources/db/migrations/oracle/V4_0__createWahlTable.sql rename to wls-basisdaten-service/src/main/resources/db/migrations/oracle/V5_0__createWahlTable.sql From 72c69cd7f37108aa93d1d6cc3b7cfaca9f5230c1 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Mon, 22 Jul 2024 15:54:29 +0200 Subject: [PATCH 03/26] Tests bis Service --- .../ResetWahlenControllerIntegrationTest.java | 122 ++++++++++++++++++ .../ResetWahlenControllerTest.java | 39 ++++++ .../resetwahlen/ResetWahlenServiceTest.java | 75 +++++++++++ .../basisdatenservice/utils/Authorities.java | 12 ++ 4 files changed, 248 insertions(+) create mode 100644 wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerIntegrationTest.java create mode 100644 wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerTest.java create mode 100644 wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceTest.java diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerIntegrationTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerIntegrationTest.java new file mode 100644 index 000000000..d5d43f7e9 --- /dev/null +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerIntegrationTest.java @@ -0,0 +1,122 @@ +package de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.resetwahlen; + +import static de.muenchen.oss.wahllokalsystem.basisdatenservice.TestConstants.SPRING_NO_SECURITY_PROFILE; +import static de.muenchen.oss.wahllokalsystem.basisdatenservice.TestConstants.SPRING_TEST_PROFILE; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import com.github.tomakehurst.wiremock.client.WireMock; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.MicroServiceApplication; + +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.Farbe; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.Wahl; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.WahlRepository; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.Wahlart; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.utils.Authorities; +import de.muenchen.oss.wahllokalsystem.wls.common.testing.SecurityUtils; +import java.time.LocalDate; +import java.util.List; +import lombok.val; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.cloud.contract.wiremock.AutoConfigureWireMock; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; + +@SpringBootTest(classes = MicroServiceApplication.class, webEnvironment = SpringBootTest.WebEnvironment.MOCK) +@AutoConfigureMockMvc +@AutoConfigureWireMock +@ActiveProfiles(profiles = { SPRING_TEST_PROFILE, SPRING_NO_SECURITY_PROFILE }) +public class ResetWahlenControllerIntegrationTest { + + @Value("${service.info.oid}") + String serviceID; + + @Autowired + MockMvc mockMvc; + + @Autowired + WahlRepository wahlRepository; + + @AfterEach + void tearDown() { + SecurityUtils.runWith(Authorities.ALL_AUTHORITIES_RESET_WAHLEN); + wahlRepository.deleteAll(); + } + + @BeforeEach + void setup() { + WireMock.resetAllRequests(); + } + + @Nested + class ResetWahlen { + + @Test + void existingWahlenAreReplaced() throws Exception { + SecurityUtils.runWith(Authorities.REPOSITORY_WRITE_WAHL); + val oldRepositoryWahlen = createWahlEntities(false); + wahlRepository.saveAll(oldRepositoryWahlen); + + SecurityUtils.runWith(Authorities.ALL_AUTHORITIES_RESET_WAHLEN); + val request = MockMvcRequestBuilders.post("/businessActions/resetWahlen"); + mockMvc.perform(request).andExpect(status().isOk()); + + val expectedResetedWahlen = createWahlEntities(true); + + SecurityUtils.runWith(Authorities.REPOSITORY_READ_WAHL); + val savedWahlen = wahlRepository.findAll(); + + Assertions.assertThat(savedWahlen).isEqualTo(expectedResetedWahlen); + } + } + + private List createWahlEntities(boolean returnResetedWahlen) { + val wahl1 = new Wahl(); + wahl1.setWahlID("wahlid1"); + wahl1.setName("wahl1"); + wahl1.setNummer("0"); + wahl1.setFarbe(new Farbe(1,1,1)); + wahl1.setWahlart(Wahlart.BAW); + wahl1.setReihenfolge(1); + wahl1.setWaehlerverzeichnisNummer(1); + wahl1.setWahltag(LocalDate.now().plusMonths(1)); + + val wahl2 = new Wahl(); + wahl2.setWahlID("wahlid2"); + wahl2.setName("wahl2"); + wahl2.setNummer("1"); + wahl2.setFarbe(new Farbe(2,2,2)); + wahl2.setWahlart(Wahlart.LTW); + wahl2.setReihenfolge(2); + wahl2.setWaehlerverzeichnisNummer(2); + wahl2.setWahltag(LocalDate.now().plusMonths(2)); + + val wahl3 = new Wahl(); + wahl3.setWahlID("wahlid3"); + wahl3.setName("wahl3"); + wahl3.setNummer("2"); + wahl3.setFarbe(new Farbe(3,3,3)); + wahl3.setWahlart(Wahlart.EUW); + wahl3.setReihenfolge(3); + wahl3.setWaehlerverzeichnisNummer(3); + wahl3.setWahltag(LocalDate.now().plusMonths(3)); + + return (returnResetedWahlen)? + List.of(resetWahl(wahl1), resetWahl(wahl2), resetWahl(wahl3)): + List.of(wahl1, wahl2, wahl3); + } + + private Wahl resetWahl(Wahl wahl){ + wahl.setFarbe(new Farbe(0, 0, 0)); + wahl.setReihenfolge(0); + wahl.setWaehlerverzeichnisNummer(1); + return wahl; + } +} diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerTest.java new file mode 100644 index 000000000..53b471909 --- /dev/null +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerTest.java @@ -0,0 +1,39 @@ +package de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.resetwahlen; + + +import de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen.ResetWahlenController; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.resetwahlen.ResetWahlenService; +import lombok.val; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; + +@ExtendWith(MockitoExtension.class) +class ResetWahlenControllerTest { + + @Mock + ResetWahlenService resetWahlenService; + + @InjectMocks + ResetWahlenController resetWahlenController; + + @Nested + class ResetWahlen { + + @Test + void serviceIsCalledWithoutExceptions() { + Assertions.assertThatCode(() -> resetWahlenService.resetWahlen()).doesNotThrowAnyException(); + + val result = resetWahlenController.resetWahlen(); + Assertions.assertThat(result).isInstanceOf(ResponseEntity.class); + Assertions.assertThat(result.getStatusCode()).isEqualTo(HttpStatus.OK); + } + + } +} \ No newline at end of file diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceTest.java new file mode 100644 index 000000000..60e1cd8ba --- /dev/null +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceTest.java @@ -0,0 +1,75 @@ +package de.muenchen.oss.wahllokalsystem.basisdatenservice.services.resetwahlen; + +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.Farbe; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.Wahl; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.WahlRepository; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.Wahlart; +import java.time.LocalDate; +import java.util.List; +import lombok.val; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.jupiter.MockitoExtension; + +@ExtendWith(MockitoExtension.class) +class ResetWahlenServiceTest { + + @Mock + WahlRepository wahlRepository; + + @InjectMocks + ResetWahlenService unitUnderTest; + + @Nested + class ResetWahlen { + + @Test + void dataSuccessfullyReseted() { + val wahlenToReset = createWahlEntities(); + + Assertions.assertThatNoException().isThrownBy(() -> unitUnderTest.resetWahlen()); + + Mockito.verify(wahlRepository).saveAll(wahlenToReset); + } + + private List createWahlEntities() { + val wahl1 = new Wahl(); + wahl1.setWahlID("wahlid1"); + wahl1.setName("wahl1"); + wahl1.setNummer("0"); + wahl1.setFarbe(new Farbe(1,1,1)); + wahl1.setWahlart(Wahlart.BAW); + wahl1.setReihenfolge(1); + wahl1.setWaehlerverzeichnisNummer(1); + wahl1.setWahltag(LocalDate.now().plusMonths(1)); + + val wahl2 = new Wahl(); + wahl2.setWahlID("wahlid2"); + wahl2.setName("wahl2"); + wahl2.setNummer("1"); + wahl2.setFarbe(new Farbe(2,2,2)); + wahl2.setWahlart(Wahlart.LTW); + wahl2.setReihenfolge(2); + wahl2.setWaehlerverzeichnisNummer(2); + wahl2.setWahltag(LocalDate.now().plusMonths(2)); + + val wahl3 = new Wahl(); + wahl3.setWahlID("wahlid3"); + wahl3.setName("wahl3"); + wahl3.setNummer("2"); + wahl3.setFarbe(new Farbe(3,3,3)); + wahl3.setWahlart(Wahlart.EUW); + wahl3.setReihenfolge(3); + wahl3.setWaehlerverzeichnisNummer(3); + wahl3.setWahltag(LocalDate.now().plusMonths(3)); + + return List.of(wahl1, wahl2, wahl3); + } + } + +} diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/utils/Authorities.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/utils/Authorities.java index adbca30a6..a60b06777 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/utils/Authorities.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/utils/Authorities.java @@ -9,6 +9,8 @@ public class Authorities { public static final String SERVICE_GET_WAHLVORSCHLAEGE = "Basisdaten_BUSINESSACTION_GetWahlvorschlaege"; public static final String SERVICE_GET_WAHLTAGE = "Basisdaten_BUSINESSACTION_GetWahltage"; + public static final String SERVICE_RESET_WAHLEN = "Basisdaten_BUSINESSACTION_ResetWahlen"; + public static final String SERVICE_GET_HANDBUCH = "Basisdaten_BUSINESSACTION_GetHandbuch"; public static final String SERVICE_POST_HANDBUCH = "Basisdaten_BUSINESSACTION_PostHandbuch"; @@ -32,6 +34,10 @@ public class Authorities { public static final String REPOSITORY_WRITE_HANDBUCH = "Basisdaten_WRITE_Handbuch"; public static final String REPOSITORY_DELETE_HANDBUCH = "Basisdaten_DELETE_Handbuch"; + public static final String REPOSITORY_READ_WAHL = "Basisdaten_READ_Wahl"; + public static final String REPOSITORY_WRITE_WAHL = "Basisdaten_WRITE_Wahl"; + public static final String REPOSITORY_DELETE_WAHL = "Basisdaten_DELETE_Wahl"; + public static final String[] ALL_AUTHORITIES_GET_WAHLVORSCHLAEGE = new String[] { SERVICE_GET_WAHLVORSCHLAEGE, REPOSITORY_READ_WAHLVORSCHLAEGE, @@ -72,4 +78,10 @@ public class Authorities { REPOSITORY_DELETE_WAHLTAG }; + public static final String[] ALL_AUTHORITIES_RESET_WAHLEN = new String[] { + SERVICE_RESET_WAHLEN, + REPOSITORY_READ_WAHL, + REPOSITORY_WRITE_WAHL + }; + } From ee27b01753ee21dede1a62f750ff359e1022fab7 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Tue, 23 Jul 2024 11:25:04 +0200 Subject: [PATCH 04/26] Finished Tests --- .../basisdatenservice/domain/Wahl.java | 2 +- .../exception/ExceptionConstants.java | 2 + .../resetwahlen/ResetWahlenService.java | 23 +++++--- .../ResetWahlenControllerIntegrationTest.java | 24 ++++----- .../ResetWahlenControllerTest.java | 3 +- .../ResetWahlenServiceSecurityTest.java | 54 +++++++++++++++++++ .../resetwahlen/ResetWahlenServiceTest.java | 33 ++++++++---- 7 files changed, 108 insertions(+), 33 deletions(-) create mode 100644 wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Wahl.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Wahl.java index 3e547c120..5f2980fad 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Wahl.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Wahl.java @@ -42,7 +42,7 @@ public class Wahl { @NotNull @Min((long) 1.0) - private long waehlerverzeichnisNummer; + private long waehlerverzeichnisnummer; @NotNull @ToString.Include diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/exception/ExceptionConstants.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/exception/ExceptionConstants.java index 865be3813..37d9c29c1 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/exception/ExceptionConstants.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/exception/ExceptionConstants.java @@ -30,5 +30,7 @@ public class ExceptionConstants { public static ExceptionDataWrapper POSTHANDBUCH_PARAMETER_UNVOLLSTAENDIG = new ExceptionDataWrapper("315", "postHandbuch: Suchkriterien unvollständig."); public static ExceptionDataWrapper POSTHANDBUCH_SPEICHERN_NICHT_ERFOLGREICH = new ExceptionDataWrapper("316", "postHandbuch: Das speichern des Handbuches war nicht erfolgreich."); + public static ExceptionDataWrapper RESET_WAHLEN_NICHT_ERFOLGREICH = new ExceptionDataWrapper("317", + "resetWahlen: Das Zurücksetzen der Wahlen war nicht erfolgreich."); } diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenService.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenService.java index e05c0a5ac..23e75adb5 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenService.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenService.java @@ -2,6 +2,8 @@ import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.Farbe; import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.WahlRepository; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.exception.ExceptionConstants; +import de.muenchen.oss.wahllokalsystem.wls.common.exception.util.ExceptionFactory; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -15,17 +17,24 @@ public class ResetWahlenService { private final WahlRepository wahlRepository; + private final ExceptionFactory exceptionFactory; + @PreAuthorize( "hasAuthority('Basisdaten_BUSINESSACTION_ResetWahlen')" ) public void resetWahlen() { log.info("#resetWahlen"); - wahlRepository.saveAll(wahlRepository.findAll().stream() - .peek(wahl -> { - wahl.setFarbe(new Farbe(0, 0, 0)); - wahl.setReihenfolge(0); - wahl.setWaehlerverzeichnisNummer(1); - }) - .collect(Collectors.toList())); + try { + wahlRepository.saveAll( + wahlRepository.findAll().stream() + .peek(wahl -> { + wahl.setFarbe(new Farbe(0, 0, 0)); + wahl.setReihenfolge(0); + wahl.setWaehlerverzeichnisnummer(1); + }) + .collect(Collectors.toList())); + } catch (final Exception e) { + throw exceptionFactory.createTechnischeWlsException(ExceptionConstants.RESET_WAHLEN_NICHT_ERFOLGREICH); + } } } diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerIntegrationTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerIntegrationTest.java index d5d43f7e9..755b78433 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerIntegrationTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerIntegrationTest.java @@ -82,41 +82,39 @@ private List createWahlEntities(boolean returnResetedWahlen) { wahl1.setWahlID("wahlid1"); wahl1.setName("wahl1"); wahl1.setNummer("0"); - wahl1.setFarbe(new Farbe(1,1,1)); + wahl1.setFarbe(new Farbe(1, 1, 1)); wahl1.setWahlart(Wahlart.BAW); wahl1.setReihenfolge(1); - wahl1.setWaehlerverzeichnisNummer(1); + wahl1.setWaehlerverzeichnisnummer(1); wahl1.setWahltag(LocalDate.now().plusMonths(1)); val wahl2 = new Wahl(); wahl2.setWahlID("wahlid2"); wahl2.setName("wahl2"); wahl2.setNummer("1"); - wahl2.setFarbe(new Farbe(2,2,2)); + wahl2.setFarbe(new Farbe(2, 2, 2)); wahl2.setWahlart(Wahlart.LTW); wahl2.setReihenfolge(2); - wahl2.setWaehlerverzeichnisNummer(2); + wahl2.setWaehlerverzeichnisnummer(2); wahl2.setWahltag(LocalDate.now().plusMonths(2)); val wahl3 = new Wahl(); wahl3.setWahlID("wahlid3"); wahl3.setName("wahl3"); wahl3.setNummer("2"); - wahl3.setFarbe(new Farbe(3,3,3)); + wahl3.setFarbe(new Farbe(3, 3, 3)); wahl3.setWahlart(Wahlart.EUW); wahl3.setReihenfolge(3); - wahl3.setWaehlerverzeichnisNummer(3); + wahl3.setWaehlerverzeichnisnummer(3); wahl3.setWahltag(LocalDate.now().plusMonths(3)); - return (returnResetedWahlen)? - List.of(resetWahl(wahl1), resetWahl(wahl2), resetWahl(wahl3)): - List.of(wahl1, wahl2, wahl3); + return (returnResetedWahlen) ? List.of(resetWahl(wahl1), resetWahl(wahl2), resetWahl(wahl3)) : List.of(wahl1, wahl2, wahl3); } - private Wahl resetWahl(Wahl wahl){ - wahl.setFarbe(new Farbe(0, 0, 0)); - wahl.setReihenfolge(0); - wahl.setWaehlerverzeichnisNummer(1); + private Wahl resetWahl(Wahl wahl) { + wahl.setFarbe(new Farbe(0, 0, 0)); + wahl.setReihenfolge(0); + wahl.setWaehlerverzeichnisnummer(1); return wahl; } } diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerTest.java index 53b471909..37f3ea8e8 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerTest.java @@ -1,6 +1,5 @@ package de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.resetwahlen; - import de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen.ResetWahlenController; import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.resetwahlen.ResetWahlenService; import lombok.val; @@ -36,4 +35,4 @@ void serviceIsCalledWithoutExceptions() { } } -} \ No newline at end of file +} diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java new file mode 100644 index 000000000..1c6ef9dbe --- /dev/null +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java @@ -0,0 +1,54 @@ +package de.muenchen.oss.wahllokalsystem.basisdatenservice.services.resetwahlen; + +import de.muenchen.oss.wahllokalsystem.basisdatenservice.MicroServiceApplication; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.WahlRepository; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.utils.Authorities; +import de.muenchen.oss.wahllokalsystem.wls.common.exception.TechnischeWlsException; +import de.muenchen.oss.wahllokalsystem.wls.common.testing.SecurityUtils; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.security.core.context.SecurityContextHolder; + +@SpringBootTest(classes = MicroServiceApplication.class) +public class ResetWahlenServiceSecurityTest { + + @Autowired + ResetWahlenService resetWahlenService; + + @Autowired + WahlRepository wahlRepository; + + @BeforeEach + void setup() { + SecurityUtils.runWith(Authorities.REPOSITORY_DELETE_WAHL); + wahlRepository.deleteAll(); + SecurityContextHolder.clearContext(); + } + + @Nested + class ResetWahlen { + + @Test + void accessGranted() { + SecurityUtils.runWith(Authorities.ALL_AUTHORITIES_RESET_WAHLEN); + Assertions.assertThatNoException().isThrownBy(() -> resetWahlenService.resetWahlen()); + } + + @Test + void accessDeniedWhenServiceAuthoritiyIsMissing() { + SecurityUtils.runWith(Authorities.REPOSITORY_READ_WAHL, Authorities.REPOSITORY_WRITE_WAHL, Authorities.REPOSITORY_DELETE_WAHL); + Assertions.assertThatThrownBy(() -> resetWahlenService.resetWahlen()).isInstanceOf(AccessDeniedException.class); + } + + @Test + void technischeWlsExceptionWhenRepoAuthorityIsMissing() { + SecurityUtils.runWith(Authorities.SERVICE_RESET_WAHLEN); + Assertions.assertThatThrownBy(() -> resetWahlenService.resetWahlen()).isInstanceOf(TechnischeWlsException.class); + } + } +} diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceTest.java index 60e1cd8ba..6d3f435d1 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceTest.java @@ -11,6 +11,7 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; @@ -30,45 +31,57 @@ class ResetWahlen { @Test void dataSuccessfullyReseted() { - val wahlenToReset = createWahlEntities(); + ArgumentCaptor> reqCaptor = ArgumentCaptor.forClass(List.class); + val wahlenToReset = createWahlEntities(false); + Mockito.when(wahlRepository.findAll()).thenReturn(wahlenToReset); Assertions.assertThatNoException().isThrownBy(() -> unitUnderTest.resetWahlen()); - Mockito.verify(wahlRepository).saveAll(wahlenToReset); + val resetedWahlen = createWahlEntities(true); + + Mockito.verify(wahlRepository).saveAll(reqCaptor.capture()); + Assertions.assertThat(reqCaptor.getValue()).containsExactlyInAnyOrderElementsOf(resetedWahlen); } - private List createWahlEntities() { + private List createWahlEntities(boolean returnResetedWahlen) { val wahl1 = new Wahl(); wahl1.setWahlID("wahlid1"); wahl1.setName("wahl1"); wahl1.setNummer("0"); - wahl1.setFarbe(new Farbe(1,1,1)); + wahl1.setFarbe(new Farbe(1, 1, 1)); wahl1.setWahlart(Wahlart.BAW); wahl1.setReihenfolge(1); - wahl1.setWaehlerverzeichnisNummer(1); + wahl1.setWaehlerverzeichnisnummer(1); wahl1.setWahltag(LocalDate.now().plusMonths(1)); val wahl2 = new Wahl(); wahl2.setWahlID("wahlid2"); wahl2.setName("wahl2"); wahl2.setNummer("1"); - wahl2.setFarbe(new Farbe(2,2,2)); + wahl2.setFarbe(new Farbe(2, 2, 2)); wahl2.setWahlart(Wahlart.LTW); wahl2.setReihenfolge(2); - wahl2.setWaehlerverzeichnisNummer(2); + wahl2.setWaehlerverzeichnisnummer(2); wahl2.setWahltag(LocalDate.now().plusMonths(2)); val wahl3 = new Wahl(); wahl3.setWahlID("wahlid3"); wahl3.setName("wahl3"); wahl3.setNummer("2"); - wahl3.setFarbe(new Farbe(3,3,3)); + wahl3.setFarbe(new Farbe(3, 3, 3)); wahl3.setWahlart(Wahlart.EUW); wahl3.setReihenfolge(3); - wahl3.setWaehlerverzeichnisNummer(3); + wahl3.setWaehlerverzeichnisnummer(3); wahl3.setWahltag(LocalDate.now().plusMonths(3)); - return List.of(wahl1, wahl2, wahl3); + return (returnResetedWahlen) ? List.of(resetWahl(wahl1), resetWahl(wahl2), resetWahl(wahl3)) : List.of(wahl1, wahl2, wahl3); + } + + private Wahl resetWahl(Wahl wahl) { + wahl.setFarbe(new Farbe(0, 0, 0)); + wahl.setReihenfolge(0); + wahl.setWaehlerverzeichnisnummer(1); + return wahl; } } From 52f3034266b0a3a68d7d625da2d6186253f0fa21 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Tue, 23 Jul 2024 11:26:22 +0200 Subject: [PATCH 05/26] resetwahlen authorities keycloak gepflegt --- ...add-authorities-basisdaten-resetwahlen.yml | 37 +++++++++++++++++++ .../keycloak/migration/keycloak-changelog.yml | 3 +- 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 stack/keycloak/migration/add-authorities-basisdaten-resetwahlen.yml diff --git a/stack/keycloak/migration/add-authorities-basisdaten-resetwahlen.yml b/stack/keycloak/migration/add-authorities-basisdaten-resetwahlen.yml new file mode 100644 index 000000000..0214a2438 --- /dev/null +++ b/stack/keycloak/migration/add-authorities-basisdaten-resetwahlen.yml @@ -0,0 +1,37 @@ +id: add authorities basisdaten resetwahlen +author: Nic12345678 +realm: ${SSO_REALM} +changes: + - addRole: + name: Basisdaten_BUSINESSACTION_ResetWahlen + clientRole: true + clientId: ${SSO_CLIENT_ID} + - assignRoleToGroup: + group: allBasisdatenAuthorities + role: Basisdaten_BUSINESSACTION_ResetWahlen + clientId: ${SSO_CLIENT_ID} + + - addRole: + name: Basisdaten_READ_Wahl + clientRole: true + clientId: ${SSO_CLIENT_ID} + - assignRoleToGroup: + group: allBasisdatenAuthorities + role: Basisdaten_READ_Wahl + clientId: ${SSO_CLIENT_ID} + - addRole: + name: Basisdaten_WRITE_Wahl + clientRole: true + clientId: ${SSO_CLIENT_ID} + - assignRoleToGroup: + group: allBasisdatenAuthorities + role: Basisdaten_WRITE_Wahl + clientId: ${SSO_CLIENT_ID} + - addRole: + name: Basisdaten_DELETE_Wahl + clientRole: true + clientId: ${SSO_CLIENT_ID} + - assignRoleToGroup: + group: allBasisdatenAuthorities + role: Basisdaten_DELETE_Wahl + clientId: ${SSO_CLIENT_ID} \ No newline at end of file diff --git a/stack/keycloak/migration/keycloak-changelog.yml b/stack/keycloak/migration/keycloak-changelog.yml index 1be1b5a89..a78fb58f0 100644 --- a/stack/keycloak/migration/keycloak-changelog.yml +++ b/stack/keycloak/migration/keycloak-changelog.yml @@ -34,4 +34,5 @@ includes: - path: add-authorities-eai-wahlvorschlag.yml - path: add-authorities-eai-wahldaten.yml - path: add-authorities-basisdaten-handbuch.yml - - path: add-authorities-basisdaten-wahltage.yml \ No newline at end of file + - path: add-authorities-basisdaten-wahltage.yml + - path: add-authorities-basisdaten-resetwahlen.yml \ No newline at end of file From 859e5dc4363478fa7db5ca84b8aa0eb4a5b83017 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Tue, 23 Jul 2024 15:56:43 +0200 Subject: [PATCH 06/26] resetwahlen http request example --- .../src/test/resources/resetwahlen.http | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 wls-basisdaten-service/src/test/resources/resetwahlen.http diff --git a/wls-basisdaten-service/src/test/resources/resetwahlen.http b/wls-basisdaten-service/src/test/resources/resetwahlen.http new file mode 100644 index 000000000..5223b6c74 --- /dev/null +++ b/wls-basisdaten-service/src/test/resources/resetwahlen.http @@ -0,0 +1,23 @@ +### Get token wls_all +POST {{ SSO_URL }}/auth/realms/wls_realm/protocol/openid-connect/token +Content-Type: application/x-www-form-urlencoded + +password = test & +grant_type = password & +client_secret = top-secret & +client_id = wls & +username = wls_all + +> {% + client.global.set("auth_token", response.body.access_token); + client.global.set("token_type", response.body.token_type); +%} + +### get userinfo with auth_token +GET {{ SSO_URL }}/auth/realms/wls_realm/protocol/openid-connect/userinfo +Authorization: {{ token_type }} {{ auth_token }} + +### POST RESET WAHLEN +POST {{ WLS_BASISDATEN_SERVICE_URL }}/businessActions/resetWahlen +Authorization: {{ token_type }} {{ auth_token }} +Content-Type: application/json From 3d917671f6057e7297ea5b81d16c84b8300fd111 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Tue, 23 Jul 2024 16:04:45 +0200 Subject: [PATCH 07/26] fix bad spotless check --- .../basisdatenservice/utils/Authorities.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/utils/Authorities.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/utils/Authorities.java index 4ea24a036..79f0bfc06 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/utils/Authorities.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/utils/Authorities.java @@ -40,7 +40,7 @@ public class Authorities { public static final String REPOSITORY_READ_WAHL = "Basisdaten_READ_Wahl"; public static final String REPOSITORY_WRITE_WAHL = "Basisdaten_WRITE_Wahl"; public static final String REPOSITORY_DELETE_WAHL = "Basisdaten_DELETE_Wahl"; - + public static final String REPOSITORY_READ_UNGUELTIGEWAHLSCHEINE = "Basisdaten_READ_Ungueltigews"; public static final String REPOSITORY_WRITE_UNGUELTIGEWAHLSCHEINE = "Basisdaten_WRITE_Ungueltigews"; public static final String REPOSITORY_DELETE_UNGUELTIGEWAHLSCHEINE = "Basisdaten_DELETE_Ungueltigews"; @@ -90,12 +90,12 @@ public class Authorities { REPOSITORY_READ_WAHL, REPOSITORY_WRITE_WAHL }; - + public static final String[] ALL_AUTHORITIES_GET_UNGUELTIGEWAHLSCHEINE = { SERVICE_GET_UNGUELTIGEWAHLSCHEINE, REPOSITORY_READ_UNGUELTIGEWAHLSCHEINE }; - + public static final String[] ALL_AUTHORITIES_POST_UNGUELTIGEWAHLSCHEINE = { SERVICE_POST_UNGUELTIGEWAHLSCHEINE, REPOSITORY_WRITE_UNGUELTIGEWAHLSCHEINE From 30b621ad0f3db915c0a2705e0dd413bbbc72c36d Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Thu, 25 Jul 2024 09:59:30 +0200 Subject: [PATCH 08/26] Domain-Objekte zur Wahl in ein Subpackage wahl --- .../basisdatenservice/domain/{ => wahl}/Farbe.java | 2 +- .../basisdatenservice/domain/{ => wahl}/Wahl.java | 2 +- .../domain/{ => wahl}/WahlRepository.java | 2 +- .../basisdatenservice/domain/{ => wahl}/Wahlart.java | 2 +- .../services/resetwahlen/ResetWahlenService.java | 4 ++-- .../basisdatenservice/domain/WahlRepositoryTest.java | 4 ++++ .../resetwahlen/ResetWahlenControllerIntegrationTest.java | 8 ++++---- .../resetwahlen/ResetWahlenServiceSecurityTest.java | 2 +- .../services/resetwahlen/ResetWahlenServiceTest.java | 8 ++++---- 9 files changed, 19 insertions(+), 15 deletions(-) rename wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/{ => wahl}/Farbe.java (98%) rename wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/{ => wahl}/Wahl.java (99%) rename wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/{ => wahl}/WahlRepository.java (99%) rename wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/{ => wahl}/Wahlart.java (95%) diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Farbe.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Farbe.java similarity index 98% rename from wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Farbe.java rename to wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Farbe.java index f29b6c32c..b8e2f3628 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Farbe.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Farbe.java @@ -1,4 +1,4 @@ -package de.muenchen.oss.wahllokalsystem.basisdatenservice.domain; +package de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl; import jakarta.persistence.Embeddable; import jakarta.validation.constraints.Max; diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Wahl.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Wahl.java similarity index 99% rename from wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Wahl.java rename to wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Wahl.java index 5f2980fad..928129de4 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Wahl.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Wahl.java @@ -1,4 +1,4 @@ -package de.muenchen.oss.wahllokalsystem.basisdatenservice.domain; +package de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl; import jakarta.persistence.Embedded; import jakarta.persistence.Entity; diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepository.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/WahlRepository.java similarity index 99% rename from wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepository.java rename to wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/WahlRepository.java index e099d4fa7..fb80b4768 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepository.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/WahlRepository.java @@ -1,4 +1,4 @@ -package de.muenchen.oss.wahllokalsystem.basisdatenservice.domain; +package de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl; import java.time.LocalDate; import java.util.List; diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Wahlart.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Wahlart.java similarity index 95% rename from wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Wahlart.java rename to wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Wahlart.java index 46e98d394..0c84ad68a 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/Wahlart.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Wahlart.java @@ -1,4 +1,4 @@ -package de.muenchen.oss.wahllokalsystem.basisdatenservice.domain; +package de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl; public enum Wahlart { BAW, BEB, BTW, BZW, EUW, LTW, MBW, OBW, SRW, SVW, VE diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenService.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenService.java index 23e75adb5..5330c9e5a 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenService.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenService.java @@ -1,7 +1,7 @@ package de.muenchen.oss.wahllokalsystem.basisdatenservice.services.resetwahlen; -import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.Farbe; -import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.WahlRepository; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.Farbe; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.WahlRepository; import de.muenchen.oss.wahllokalsystem.basisdatenservice.exception.ExceptionConstants; import de.muenchen.oss.wahllokalsystem.wls.common.exception.util.ExceptionFactory; import java.util.stream.Collectors; diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepositoryTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepositoryTest.java index 8968539f6..c854de75c 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepositoryTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/WahlRepositoryTest.java @@ -3,6 +3,10 @@ import static de.muenchen.oss.wahllokalsystem.basisdatenservice.TestConstants.SPRING_NO_SECURITY_PROFILE; import static de.muenchen.oss.wahllokalsystem.basisdatenservice.TestConstants.SPRING_TEST_PROFILE; import de.muenchen.oss.wahllokalsystem.basisdatenservice.MicroServiceApplication; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.Farbe; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.Wahl; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.WahlRepository; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.Wahlart; import java.time.LocalDate; import java.util.Arrays; import java.util.Comparator; diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerIntegrationTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerIntegrationTest.java index 755b78433..13ba09f1f 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerIntegrationTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerIntegrationTest.java @@ -6,10 +6,10 @@ import com.github.tomakehurst.wiremock.client.WireMock; import de.muenchen.oss.wahllokalsystem.basisdatenservice.MicroServiceApplication; -import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.Farbe; -import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.Wahl; -import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.WahlRepository; -import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.Wahlart; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.Farbe; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.Wahl; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.WahlRepository; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.Wahlart; import de.muenchen.oss.wahllokalsystem.basisdatenservice.utils.Authorities; import de.muenchen.oss.wahllokalsystem.wls.common.testing.SecurityUtils; import java.time.LocalDate; diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java index 1c6ef9dbe..46c81c9dc 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java @@ -1,7 +1,7 @@ package de.muenchen.oss.wahllokalsystem.basisdatenservice.services.resetwahlen; import de.muenchen.oss.wahllokalsystem.basisdatenservice.MicroServiceApplication; -import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.WahlRepository; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.WahlRepository; import de.muenchen.oss.wahllokalsystem.basisdatenservice.utils.Authorities; import de.muenchen.oss.wahllokalsystem.wls.common.exception.TechnischeWlsException; import de.muenchen.oss.wahllokalsystem.wls.common.testing.SecurityUtils; diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceTest.java index 6d3f435d1..edd8fd8a0 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceTest.java @@ -1,9 +1,9 @@ package de.muenchen.oss.wahllokalsystem.basisdatenservice.services.resetwahlen; -import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.Farbe; -import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.Wahl; -import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.WahlRepository; -import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.Wahlart; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.Farbe; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.Wahl; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.WahlRepository; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.Wahlart; import java.time.LocalDate; import java.util.List; import lombok.val; From 43e2228897b616249174e30d84e630a17d3070c5 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Thu, 25 Jul 2024 10:17:47 +0200 Subject: [PATCH 09/26] Declaration (long) x.0 simplyfied --- .../basisdatenservice/domain/wahl/Farbe.java | 12 ++++++------ .../basisdatenservice/domain/wahl/Wahl.java | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Farbe.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Farbe.java index b8e2f3628..607132db1 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Farbe.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Farbe.java @@ -15,17 +15,17 @@ public class Farbe { @NotNull - @Min((long) 0.0) - @Max((long) 255.0) + @Min(0) + @Max(255) private long r; @NotNull - @Min((long) 0.0) - @Max((long) 255.0) + @Min(0) + @Max(255) private long g; @NotNull - @Min((long) 0.0) - @Max((long) 255.0) + @Min(0) + @Max(255) private long b; } diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Wahl.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Wahl.java index 928129de4..df33522fe 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Wahl.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Wahl.java @@ -41,7 +41,7 @@ public class Wahl { private long reihenfolge; @NotNull - @Min((long) 1.0) + @Min(1) private long waehlerverzeichnisnummer; @NotNull From fa452b8b870f7fbd01cddc5295037a2b2f784a59 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Thu, 25 Jul 2024 10:20:45 +0200 Subject: [PATCH 10/26] getter und setter for Farbe --- .../wahllokalsystem/basisdatenservice/domain/wahl/Farbe.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Farbe.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Farbe.java index 607132db1..0079c4c6b 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Farbe.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Farbe.java @@ -6,9 +6,13 @@ import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; +import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.Setter; @Embeddable +@Getter +@Setter @EqualsAndHashCode @NoArgsConstructor @AllArgsConstructor From a8ee9fb404fd0e0a79bc0795a7314b8daaafc57f Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Thu, 25 Jul 2024 10:25:12 +0200 Subject: [PATCH 11/26] removed unnecessary ToString.Include --- .../wahllokalsystem/basisdatenservice/domain/wahl/Wahl.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Wahl.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Wahl.java index df33522fe..4d9e38708 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Wahl.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/Wahl.java @@ -29,15 +29,12 @@ public class Wahl { @Id @NotNull @Size(max = 1024) - @ToString.Include private String wahlID; @Size(max = 255) - @ToString.Include private String name; @NotNull - @ToString.Include private long reihenfolge; @NotNull @@ -45,7 +42,6 @@ public class Wahl { private long waehlerverzeichnisnummer; @NotNull - @ToString.Include private LocalDate wahltag; @Enumerated(EnumType.STRING) @@ -56,6 +52,5 @@ public class Wahl { private Farbe farbe; @Size(max = 255) - @ToString.Include private String nummer; } From 9e612c9693d130a10c45c0d56eb3f143851fac72 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Thu, 25 Jul 2024 10:33:35 +0200 Subject: [PATCH 12/26] =?UTF-8?q?Moving=20Transactional=20Annotation=20f?= =?UTF-8?q?=C3=BCr=20bessere=20Lesbarkeit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basisdatenservice/domain/wahl/WahlRepository.java | 2 -- .../services/resetwahlen/ResetWahlenService.java | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/WahlRepository.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/WahlRepository.java index fb80b4768..acf4df253 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/WahlRepository.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/domain/wahl/WahlRepository.java @@ -8,10 +8,8 @@ import org.springframework.cache.annotation.Cacheable; import org.springframework.data.repository.CrudRepository; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.transaction.annotation.Transactional; @PreAuthorize("hasAuthority('Basisdaten_READ_Wahl')") -@Transactional public interface WahlRepository extends CrudRepository { String CACHE = "WAHL_CACHE"; diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenService.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenService.java index 5330c9e5a..bd339f4da 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenService.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenService.java @@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; @Service @RequiredArgsConstructor @@ -22,6 +23,7 @@ public class ResetWahlenService { @PreAuthorize( "hasAuthority('Basisdaten_BUSINESSACTION_ResetWahlen')" ) + @Transactional public void resetWahlen() { log.info("#resetWahlen"); try { From 765282cde2c9ee9c25fa8acc7328319dc42b7be8 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Thu, 25 Jul 2024 10:42:01 +0200 Subject: [PATCH 13/26] =?UTF-8?q?Unn=C3=B6tige=20Authority=20entfernt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../services/resetwahlen/ResetWahlenServiceSecurityTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java index 46c81c9dc..d49c26e1d 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java @@ -41,7 +41,7 @@ void accessGranted() { @Test void accessDeniedWhenServiceAuthoritiyIsMissing() { - SecurityUtils.runWith(Authorities.REPOSITORY_READ_WAHL, Authorities.REPOSITORY_WRITE_WAHL, Authorities.REPOSITORY_DELETE_WAHL); + SecurityUtils.runWith(Authorities.REPOSITORY_READ_WAHL, Authorities.REPOSITORY_WRITE_WAHL); Assertions.assertThatThrownBy(() -> resetWahlenService.resetWahlen()).isInstanceOf(AccessDeniedException.class); } From 02b04a578da82a3b2d307bc170d549dfe752deeb Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Thu, 25 Jul 2024 12:29:50 +0200 Subject: [PATCH 14/26] Test Missing Authorities separat auch wenn die Service Authority eine andere Exception wirft als die RepoAuthority --- .../ResetWahlenServiceSecurityTest.java | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java index d49c26e1d..bc96273e9 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java @@ -5,10 +5,19 @@ import de.muenchen.oss.wahllokalsystem.basisdatenservice.utils.Authorities; import de.muenchen.oss.wahllokalsystem.wls.common.exception.TechnischeWlsException; import de.muenchen.oss.wahllokalsystem.wls.common.testing.SecurityUtils; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Stream; +import lombok.val; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.aggregator.ArgumentsAccessor; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.security.access.AccessDeniedException; @@ -45,10 +54,21 @@ void accessDeniedWhenServiceAuthoritiyIsMissing() { Assertions.assertThatThrownBy(() -> resetWahlenService.resetWahlen()).isInstanceOf(AccessDeniedException.class); } - @Test - void technischeWlsExceptionWhenRepoAuthorityIsMissing() { - SecurityUtils.runWith(Authorities.SERVICE_RESET_WAHLEN); + @ParameterizedTest(name = "{index} - {1} missing") + @MethodSource("getMissingRepoAuthoritiesVariations") + void technischeWlsExceptionWhenRepoAuthorityIsMissing(final ArgumentsAccessor argumentsAccessor) { + ArrayList mList = new ArrayList<>(Arrays.asList(argumentsAccessor.get(0, String[].class))); + mList.add(Authorities.SERVICE_RESET_WAHLEN); + String[] strArray = new String[mList.size()]; + for(int i = 0; i < mList.size(); i++) { + strArray[i] = mList.get(i); + } + SecurityUtils.runWith(strArray); Assertions.assertThatThrownBy(() -> resetWahlenService.resetWahlen()).isInstanceOf(TechnischeWlsException.class); } + + private static Stream getMissingRepoAuthoritiesVariations() { + return SecurityUtils.buildArgumentsForMissingAuthoritiesVariations(new String[]{Authorities.REPOSITORY_WRITE_WAHL, Authorities.REPOSITORY_READ_WAHL}); + } } } From 2dec7070c146a373998684520d5f9f1afadae8d8 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Thu, 25 Jul 2024 12:38:34 +0200 Subject: [PATCH 15/26] Lesbarkeit resetWahl verbessert --- .../resetwahlen/ResetWahlenServiceSecurityTest.java | 2 -- .../services/resetwahlen/ResetWahlenServiceTest.java | 8 ++++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java index bc96273e9..f81834566 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java @@ -7,9 +7,7 @@ import de.muenchen.oss.wahllokalsystem.wls.common.testing.SecurityUtils; import java.util.ArrayList; import java.util.Arrays; -import java.util.List; import java.util.stream.Stream; -import lombok.val; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceTest.java index edd8fd8a0..fc56e6222 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceTest.java @@ -33,17 +33,17 @@ class ResetWahlen { void dataSuccessfullyReseted() { ArgumentCaptor> reqCaptor = ArgumentCaptor.forClass(List.class); - val wahlenToReset = createWahlEntities(false); + val wahlenToReset = createWahlEntities(); Mockito.when(wahlRepository.findAll()).thenReturn(wahlenToReset); Assertions.assertThatNoException().isThrownBy(() -> unitUnderTest.resetWahlen()); - val resetedWahlen = createWahlEntities(true); + val resetedWahlen = createWahlEntities().stream().map(this::resetWahl).toList(); Mockito.verify(wahlRepository).saveAll(reqCaptor.capture()); Assertions.assertThat(reqCaptor.getValue()).containsExactlyInAnyOrderElementsOf(resetedWahlen); } - private List createWahlEntities(boolean returnResetedWahlen) { + private List createWahlEntities() { val wahl1 = new Wahl(); wahl1.setWahlID("wahlid1"); wahl1.setName("wahl1"); @@ -74,7 +74,7 @@ private List createWahlEntities(boolean returnResetedWahlen) { wahl3.setWaehlerverzeichnisnummer(3); wahl3.setWahltag(LocalDate.now().plusMonths(3)); - return (returnResetedWahlen) ? List.of(resetWahl(wahl1), resetWahl(wahl2), resetWahl(wahl3)) : List.of(wahl1, wahl2, wahl3); + return List.of(wahl1, wahl2, wahl3); } private Wahl resetWahl(Wahl wahl) { From 310f6d1351f2c0e0053858b3912775175d1a6b2d Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Thu, 25 Jul 2024 12:41:32 +0200 Subject: [PATCH 16/26] Einfachere Synthax bei Initialisieren von String[] --- .../basisdatenservice/utils/Authorities.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/utils/Authorities.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/utils/Authorities.java index 79f0bfc06..390ee0383 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/utils/Authorities.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/utils/Authorities.java @@ -45,20 +45,20 @@ public class Authorities { public static final String REPOSITORY_WRITE_UNGUELTIGEWAHLSCHEINE = "Basisdaten_WRITE_Ungueltigews"; public static final String REPOSITORY_DELETE_UNGUELTIGEWAHLSCHEINE = "Basisdaten_DELETE_Ungueltigews"; - public static final String[] ALL_AUTHORITIES_GET_WAHLVORSCHLAEGE = new String[] { + public static final String[] ALL_AUTHORITIES_GET_WAHLVORSCHLAEGE = { SERVICE_GET_WAHLVORSCHLAEGE, REPOSITORY_READ_WAHLVORSCHLAEGE, REPOSITORY_WRITE_WAHLVORSCHLAEGE, REPOSITORY_WRITE_WAHLVORSCHLAG, REPOSITORY_WRITE_KANDIDAT }; - public static final String[] ALL_AUTHORITIES_SET_WAHLVORSCHLAEGE = new String[] { + public static final String[] ALL_AUTHORITIES_SET_WAHLVORSCHLAEGE = { SERVICE_GET_WAHLVORSCHLAEGE, REPOSITORY_READ_WAHLVORSCHLAEGE, REPOSITORY_WRITE_WAHLVORSCHLAEGE }; - public static final String[] ALL_AUTHORITIES_DELETE_WAHLVORSCHLAEGE = new String[] { + public static final String[] ALL_AUTHORITIES_DELETE_WAHLVORSCHLAEGE = { REPOSITORY_DELETE_WAHLVORSCHLAEGE }; public static final String[] ALL_AUTHORITIES_GET_HANDBUCH = { @@ -70,22 +70,22 @@ public class Authorities { REPOSITORY_WRITE_HANDBUCH }; - public static final String[] ALL_AUTHORITIES_GET_WAHLTAGE = new String[] { + public static final String[] ALL_AUTHORITIES_GET_WAHLTAGE = { SERVICE_GET_WAHLTAGE, REPOSITORY_READ_WAHLTAG, REPOSITORY_WRITE_WAHLTAG }; - public static final String[] ALL_AUTHORITIES_SET_WAHLTAGE = new String[] { + public static final String[] ALL_AUTHORITIES_SET_WAHLTAGE = { SERVICE_GET_WAHLTAGE, REPOSITORY_READ_WAHLTAG, REPOSITORY_WRITE_WAHLTAG }; - public static final String[] ALL_AUTHORITIES_DELETE_WAHLTAGE = new String[] { + public static final String[] ALL_AUTHORITIES_DELETE_WAHLTAGE = { REPOSITORY_DELETE_WAHLTAG }; - public static final String[] ALL_AUTHORITIES_RESET_WAHLEN = new String[] { + public static final String[] ALL_AUTHORITIES_RESET_WAHLEN = { SERVICE_RESET_WAHLEN, REPOSITORY_READ_WAHL, REPOSITORY_WRITE_WAHL From 4d56c2ef136db0e5aa4252f2b03416e1f61f2a0c Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Thu, 25 Jul 2024 13:52:02 +0200 Subject: [PATCH 17/26] post resetWahlen ohne ResponseEntity --- .../rest/wahlen/ResetWahlenController.java | 5 +++-- .../rest/resetwahlen/ResetWahlenControllerTest.java | 9 ++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenController.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenController.java index cff7c28d4..7d72e6e95 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenController.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenController.java @@ -10,6 +10,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; @RestController @@ -29,8 +30,8 @@ public class ResetWahlenController { } ) @PostMapping - public ResponseEntity resetWahlen() { + @ResponseStatus(HttpStatus.OK) + public void resetWahlen() { resetWahlenService.resetWahlen(); - return new ResponseEntity<>(HttpStatus.OK); } } diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerTest.java index 37f3ea8e8..6c4bc8518 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerTest.java @@ -1,7 +1,9 @@ package de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.resetwahlen; +import static org.mockito.ArgumentMatchers.eq; import de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen.ResetWahlenController; import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.resetwahlen.ResetWahlenService; +import java.time.LocalDateTime; import lombok.val; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Nested; @@ -9,6 +11,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -28,11 +31,7 @@ class ResetWahlen { @Test void serviceIsCalledWithoutExceptions() { Assertions.assertThatCode(() -> resetWahlenService.resetWahlen()).doesNotThrowAnyException(); - - val result = resetWahlenController.resetWahlen(); - Assertions.assertThat(result).isInstanceOf(ResponseEntity.class); - Assertions.assertThat(result.getStatusCode()).isEqualTo(HttpStatus.OK); + Mockito.verify(resetWahlenService).resetWahlen(); } - } } From 29bef69977eb1679c9ac80705c946a36f971659f Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Thu, 25 Jul 2024 14:08:44 +0200 Subject: [PATCH 18/26] =?UTF-8?q?Controller=20resetWahlen=20Method=20optim?= =?UTF-8?q?iert=20und=20resetWahlen=20Elemente=20umbenannt=20zwecks=20sema?= =?UTF-8?q?ntischer=20Kompatibilit=C3=A4t=20mit=20den=20dazugeh=C3=B6rigen?= =?UTF-8?q?=20anderen=20Elementen=20des=20Kontexts=20Wahlen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...add-authorities-basisdaten-resetwahlen.yml | 2 +- .../keycloak/migration/keycloak-changelog.yml | 2 +- .../rest/wahlen/ResetWahlenController.java | 7 +++--- .../WahlenService.java} | 25 +++++++++++-------- .../ResetWahlenControllerTest.java | 12 +++------ .../WahlenServiceSecurityTest.java} | 17 +++++++------ .../WahlenServiceTest.java} | 6 ++--- 7 files changed, 35 insertions(+), 36 deletions(-) rename wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/{resetwahlen/ResetWahlenService.java => wahlen/WahlenService.java} (69%) rename wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/{resetwahlen/ResetWahlenServiceSecurityTest.java => wahlen/WahlenServiceSecurityTest.java} (81%) rename wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/{resetwahlen/ResetWahlenServiceTest.java => wahlen/WahlenServiceTest.java} (97%) diff --git a/stack/keycloak/migration/add-authorities-basisdaten-resetwahlen.yml b/stack/keycloak/migration/add-authorities-basisdaten-resetwahlen.yml index 0214a2438..3c157f14c 100644 --- a/stack/keycloak/migration/add-authorities-basisdaten-resetwahlen.yml +++ b/stack/keycloak/migration/add-authorities-basisdaten-resetwahlen.yml @@ -1,4 +1,4 @@ -id: add authorities basisdaten resetwahlen +id: add authorities basisdaten wahlen author: Nic12345678 realm: ${SSO_REALM} changes: diff --git a/stack/keycloak/migration/keycloak-changelog.yml b/stack/keycloak/migration/keycloak-changelog.yml index 5f3fdbf5b..42c3b7b47 100644 --- a/stack/keycloak/migration/keycloak-changelog.yml +++ b/stack/keycloak/migration/keycloak-changelog.yml @@ -37,4 +37,4 @@ includes: - path: add-authorities-basisdaten-wahltage.yml - path: add-authorities-basisdaten-ungueltigewahlscheine.yml - path: add-authorities-eai-wahlbeteiligung.yml - - path: add-authorities-basisdaten-resetwahlen.yml + - path: add-authorities-basisdaten-wahlen.yml diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenController.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenController.java index 7d72e6e95..614478095 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenController.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenController.java @@ -1,13 +1,12 @@ package de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen; -import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.resetwahlen.ResetWahlenService; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.wahlen.WahlenService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseStatus; @@ -19,7 +18,7 @@ @Slf4j public class ResetWahlenController { - private final ResetWahlenService resetWahlenService; + private final WahlenService wahlenService; @Operation( description = "Setzt die Attribute Farbe, Reihenfolge und Waehlerverzeichnis der vorhandenen Wahlen auf die Standardwerte.", @@ -32,6 +31,6 @@ public class ResetWahlenController { @PostMapping @ResponseStatus(HttpStatus.OK) public void resetWahlen() { - resetWahlenService.resetWahlen(); + wahlenService.resetWahlen(); } } diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenService.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenService.java similarity index 69% rename from wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenService.java rename to wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenService.java index bd339f4da..b790f02d7 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenService.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenService.java @@ -1,12 +1,13 @@ -package de.muenchen.oss.wahllokalsystem.basisdatenservice.services.resetwahlen; +package de.muenchen.oss.wahllokalsystem.basisdatenservice.services.wahlen; import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.Farbe; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.Wahl; import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.WahlRepository; import de.muenchen.oss.wahllokalsystem.basisdatenservice.exception.ExceptionConstants; import de.muenchen.oss.wahllokalsystem.wls.common.exception.util.ExceptionFactory; -import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import lombok.val; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -14,7 +15,7 @@ @Service @RequiredArgsConstructor @Slf4j -public class ResetWahlenService { +public class WahlenService { private final WahlRepository wahlRepository; @@ -27,16 +28,18 @@ public class ResetWahlenService { public void resetWahlen() { log.info("#resetWahlen"); try { - wahlRepository.saveAll( - wahlRepository.findAll().stream() - .peek(wahl -> { - wahl.setFarbe(new Farbe(0, 0, 0)); - wahl.setReihenfolge(0); - wahl.setWaehlerverzeichnisnummer(1); - }) - .collect(Collectors.toList())); + val existingWahlenToReset = wahlRepository.findAll(); + existingWahlenToReset.forEach(this::resetWahl); + wahlRepository.saveAll(existingWahlenToReset); } catch (final Exception e) { throw exceptionFactory.createTechnischeWlsException(ExceptionConstants.RESET_WAHLEN_NICHT_ERFOLGREICH); } } + + private Wahl resetWahl(final Wahl wahl) { + wahl.setFarbe(new Farbe(0, 0, 0)); + wahl.setReihenfolge(0); + wahl.setWaehlerverzeichnisnummer(1); + return wahl; + } } diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerTest.java index 6c4bc8518..52b0a7f5d 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerTest.java @@ -2,9 +2,7 @@ import static org.mockito.ArgumentMatchers.eq; import de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen.ResetWahlenController; -import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.resetwahlen.ResetWahlenService; -import java.time.LocalDateTime; -import lombok.val; +import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.wahlen.WahlenService; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -13,14 +11,12 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; @ExtendWith(MockitoExtension.class) class ResetWahlenControllerTest { @Mock - ResetWahlenService resetWahlenService; + WahlenService wahlenService; @InjectMocks ResetWahlenController resetWahlenController; @@ -30,8 +26,8 @@ class ResetWahlen { @Test void serviceIsCalledWithoutExceptions() { - Assertions.assertThatCode(() -> resetWahlenService.resetWahlen()).doesNotThrowAnyException(); - Mockito.verify(resetWahlenService).resetWahlen(); + Assertions.assertThatCode(() -> wahlenService.resetWahlen()).doesNotThrowAnyException(); + Mockito.verify(wahlenService).resetWahlen(); } } } diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceSecurityTest.java similarity index 81% rename from wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java rename to wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceSecurityTest.java index f81834566..e0d57a6d7 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceSecurityTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceSecurityTest.java @@ -1,4 +1,4 @@ -package de.muenchen.oss.wahllokalsystem.basisdatenservice.services.resetwahlen; +package de.muenchen.oss.wahllokalsystem.basisdatenservice.services.wahlen; import de.muenchen.oss.wahllokalsystem.basisdatenservice.MicroServiceApplication; import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.WahlRepository; @@ -22,10 +22,10 @@ import org.springframework.security.core.context.SecurityContextHolder; @SpringBootTest(classes = MicroServiceApplication.class) -public class ResetWahlenServiceSecurityTest { +public class WahlenServiceSecurityTest { @Autowired - ResetWahlenService resetWahlenService; + WahlenService wahlenService; @Autowired WahlRepository wahlRepository; @@ -43,13 +43,13 @@ class ResetWahlen { @Test void accessGranted() { SecurityUtils.runWith(Authorities.ALL_AUTHORITIES_RESET_WAHLEN); - Assertions.assertThatNoException().isThrownBy(() -> resetWahlenService.resetWahlen()); + Assertions.assertThatNoException().isThrownBy(() -> wahlenService.resetWahlen()); } @Test void accessDeniedWhenServiceAuthoritiyIsMissing() { SecurityUtils.runWith(Authorities.REPOSITORY_READ_WAHL, Authorities.REPOSITORY_WRITE_WAHL); - Assertions.assertThatThrownBy(() -> resetWahlenService.resetWahlen()).isInstanceOf(AccessDeniedException.class); + Assertions.assertThatThrownBy(() -> wahlenService.resetWahlen()).isInstanceOf(AccessDeniedException.class); } @ParameterizedTest(name = "{index} - {1} missing") @@ -58,15 +58,16 @@ void technischeWlsExceptionWhenRepoAuthorityIsMissing(final ArgumentsAccessor ar ArrayList mList = new ArrayList<>(Arrays.asList(argumentsAccessor.get(0, String[].class))); mList.add(Authorities.SERVICE_RESET_WAHLEN); String[] strArray = new String[mList.size()]; - for(int i = 0; i < mList.size(); i++) { + for (int i = 0; i < mList.size(); i++) { strArray[i] = mList.get(i); } SecurityUtils.runWith(strArray); - Assertions.assertThatThrownBy(() -> resetWahlenService.resetWahlen()).isInstanceOf(TechnischeWlsException.class); + Assertions.assertThatThrownBy(() -> wahlenService.resetWahlen()).isInstanceOf(TechnischeWlsException.class); } private static Stream getMissingRepoAuthoritiesVariations() { - return SecurityUtils.buildArgumentsForMissingAuthoritiesVariations(new String[]{Authorities.REPOSITORY_WRITE_WAHL, Authorities.REPOSITORY_READ_WAHL}); + return SecurityUtils + .buildArgumentsForMissingAuthoritiesVariations(new String[] { Authorities.REPOSITORY_WRITE_WAHL, Authorities.REPOSITORY_READ_WAHL }); } } } diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceTest.java similarity index 97% rename from wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceTest.java rename to wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceTest.java index fc56e6222..ba0e881d9 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/resetwahlen/ResetWahlenServiceTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceTest.java @@ -1,4 +1,4 @@ -package de.muenchen.oss.wahllokalsystem.basisdatenservice.services.resetwahlen; +package de.muenchen.oss.wahllokalsystem.basisdatenservice.services.wahlen; import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.Farbe; import de.muenchen.oss.wahllokalsystem.basisdatenservice.domain.wahl.Wahl; @@ -18,13 +18,13 @@ import org.mockito.junit.jupiter.MockitoExtension; @ExtendWith(MockitoExtension.class) -class ResetWahlenServiceTest { +class WahlenServiceTest { @Mock WahlRepository wahlRepository; @InjectMocks - ResetWahlenService unitUnderTest; + WahlenService unitUnderTest; @Nested class ResetWahlen { From 67927c4f0628efbb38fd2be24fb3ee659fde833f Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Thu, 25 Jul 2024 14:17:16 +0200 Subject: [PATCH 19/26] Lesbarkeit Tabellen Wahl --- .../migrations/h2/V5_0__createWahlTable.sql | 26 +++++++++--------- .../oracle/V5_0__createWahlTable.sql | 27 ++++++++++--------- 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/wls-basisdaten-service/src/main/resources/db/migrations/h2/V5_0__createWahlTable.sql b/wls-basisdaten-service/src/main/resources/db/migrations/h2/V5_0__createWahlTable.sql index 5eee6a917..c236abf40 100644 --- a/wls-basisdaten-service/src/main/resources/db/migrations/h2/V5_0__createWahlTable.sql +++ b/wls-basisdaten-service/src/main/resources/db/migrations/h2/V5_0__createWahlTable.sql @@ -1,13 +1,15 @@ -create table Wahl ( -wahlid varchar(1024) not null, -name varchar(255) not null, -reihenfolge bigint not null, -waehlerverzeichnisnummer bigint not null, -wahltag datetime not null, -wahlart varchar(255) not null, -r bigint not null, -g bigint not null, -b bigint not null, -nummer varchar(255) not null, -primary key (wahlid) +create table Wahl +( + wahlid varchar(1024) not null, + name varchar(255) not null, + reihenfolge bigint not null, + waehlerverzeichnisnummer bigint not null, + wahltag datetime not null, + wahlart varchar(255) not null, + r bigint not null, + g bigint not null, + b bigint not null, + nummer varchar(255) not null, + + primary key (wahlid) ); \ No newline at end of file diff --git a/wls-basisdaten-service/src/main/resources/db/migrations/oracle/V5_0__createWahlTable.sql b/wls-basisdaten-service/src/main/resources/db/migrations/oracle/V5_0__createWahlTable.sql index 12ddd8e76..f5b8cda2e 100644 --- a/wls-basisdaten-service/src/main/resources/db/migrations/oracle/V5_0__createWahlTable.sql +++ b/wls-basisdaten-service/src/main/resources/db/migrations/oracle/V5_0__createWahlTable.sql @@ -1,12 +1,15 @@ -create table Wahl ( -wahlid varchar(1024) not null, -name varchar(255) not null, -reihenfolge NUMBER(19, 0) not null, -waehlerverzeichnisnummer NUMBER(19, 0) not null, -wahltag TIMESTAMP not null, -wahlart varchar(255) not null, -r NUMBER(19, 0) not null, -g NUMBER(19, 0) not null, -b NUMBER(19, 0) not null, -nummer varchar(255) not null, -primary key (wahlid)); \ No newline at end of file +create table Wahl +( + wahlid varchar(1024) not null, + name varchar(255) not null, + reihenfolge NUMBER(19, 0) not null, + waehlerverzeichnisnummer NUMBER(19, 0) not null, + wahltag TIMESTAMP not null, + wahlart varchar(255) not null, + r NUMBER(19, 0) not null, + g NUMBER(19, 0) not null, + b NUMBER(19, 0) not null, + nummer varchar(255) not null, + + PRIMARY KEY (wahlid) +); \ No newline at end of file From 0dcb9f961dd046542e93332d285a9b5166d161be Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Thu, 25 Jul 2024 14:34:59 +0200 Subject: [PATCH 20/26] Lesbarkeit ResetWahlenController / IntegrationTest --- .../ResetWahlenControllerIntegrationTest.java | 10 +++++----- .../ResetWahlenControllerTest.java | 8 +------- 2 files changed, 6 insertions(+), 12 deletions(-) rename wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/{resetwahlen => wahlen}/ResetWahlenControllerIntegrationTest.java (91%) rename wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/{resetwahlen => wahlen}/ResetWahlenControllerTest.java (70%) diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerIntegrationTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenControllerIntegrationTest.java similarity index 91% rename from wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerIntegrationTest.java rename to wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenControllerIntegrationTest.java index 13ba09f1f..0e7afe714 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerIntegrationTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenControllerIntegrationTest.java @@ -1,4 +1,4 @@ -package de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.resetwahlen; +package de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen; import static de.muenchen.oss.wahllokalsystem.basisdatenservice.TestConstants.SPRING_NO_SECURITY_PROFILE; import static de.muenchen.oss.wahllokalsystem.basisdatenservice.TestConstants.SPRING_TEST_PROFILE; @@ -61,14 +61,14 @@ class ResetWahlen { @Test void existingWahlenAreReplaced() throws Exception { SecurityUtils.runWith(Authorities.REPOSITORY_WRITE_WAHL); - val oldRepositoryWahlen = createWahlEntities(false); + val oldRepositoryWahlen = createWahlEntities(); wahlRepository.saveAll(oldRepositoryWahlen); SecurityUtils.runWith(Authorities.ALL_AUTHORITIES_RESET_WAHLEN); val request = MockMvcRequestBuilders.post("/businessActions/resetWahlen"); mockMvc.perform(request).andExpect(status().isOk()); - val expectedResetedWahlen = createWahlEntities(true); + val expectedResetedWahlen = createWahlEntities().stream().map((ResetWahlenControllerIntegrationTest.this::resetWahl)).toList(); SecurityUtils.runWith(Authorities.REPOSITORY_READ_WAHL); val savedWahlen = wahlRepository.findAll(); @@ -77,7 +77,7 @@ void existingWahlenAreReplaced() throws Exception { } } - private List createWahlEntities(boolean returnResetedWahlen) { + private List createWahlEntities() { val wahl1 = new Wahl(); wahl1.setWahlID("wahlid1"); wahl1.setName("wahl1"); @@ -108,7 +108,7 @@ private List createWahlEntities(boolean returnResetedWahlen) { wahl3.setWaehlerverzeichnisnummer(3); wahl3.setWahltag(LocalDate.now().plusMonths(3)); - return (returnResetedWahlen) ? List.of(resetWahl(wahl1), resetWahl(wahl2), resetWahl(wahl3)) : List.of(wahl1, wahl2, wahl3); + return List.of(wahl1, wahl2, wahl3); } private Wahl resetWahl(Wahl wahl) { diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenControllerTest.java similarity index 70% rename from wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerTest.java rename to wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenControllerTest.java index 52b0a7f5d..bc8169e05 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/resetwahlen/ResetWahlenControllerTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenControllerTest.java @@ -1,13 +1,10 @@ -package de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.resetwahlen; +package de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen; -import static org.mockito.ArgumentMatchers.eq; -import de.muenchen.oss.wahllokalsystem.basisdatenservice.rest.wahlen.ResetWahlenController; import de.muenchen.oss.wahllokalsystem.basisdatenservice.services.wahlen.WahlenService; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; @@ -18,9 +15,6 @@ class ResetWahlenControllerTest { @Mock WahlenService wahlenService; - @InjectMocks - ResetWahlenController resetWahlenController; - @Nested class ResetWahlen { From ddf835f1063c6546f1ee68d4a132cdf35df96d82 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Mon, 29 Jul 2024 15:20:05 +0200 Subject: [PATCH 21/26] =?UTF-8?q?resetWahl=20return=20unn=C3=B6tig?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basisdatenservice/services/wahlen/WahlenService.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenService.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenService.java index b790f02d7..b84ae09fa 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenService.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenService.java @@ -36,10 +36,9 @@ public void resetWahlen() { } } - private Wahl resetWahl(final Wahl wahl) { + private void resetWahl(final Wahl wahl) { wahl.setFarbe(new Farbe(0, 0, 0)); wahl.setReihenfolge(0); wahl.setWaehlerverzeichnisnummer(1); - return wahl; } } From 6bdedd6b5e2787166ab518ce5e6916c0c5780ca5 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Mon, 29 Jul 2024 15:25:49 +0200 Subject: [PATCH 22/26] ArrayUtils optimiert Code --- .../services/wahlen/WahlenServiceSecurityTest.java | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceSecurityTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceSecurityTest.java index e0d57a6d7..b88269055 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceSecurityTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/services/wahlen/WahlenServiceSecurityTest.java @@ -5,9 +5,8 @@ import de.muenchen.oss.wahllokalsystem.basisdatenservice.utils.Authorities; import de.muenchen.oss.wahllokalsystem.wls.common.exception.TechnischeWlsException; import de.muenchen.oss.wahllokalsystem.wls.common.testing.SecurityUtils; -import java.util.ArrayList; -import java.util.Arrays; import java.util.stream.Stream; +import org.apache.commons.lang3.ArrayUtils; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; @@ -55,13 +54,7 @@ void accessDeniedWhenServiceAuthoritiyIsMissing() { @ParameterizedTest(name = "{index} - {1} missing") @MethodSource("getMissingRepoAuthoritiesVariations") void technischeWlsExceptionWhenRepoAuthorityIsMissing(final ArgumentsAccessor argumentsAccessor) { - ArrayList mList = new ArrayList<>(Arrays.asList(argumentsAccessor.get(0, String[].class))); - mList.add(Authorities.SERVICE_RESET_WAHLEN); - String[] strArray = new String[mList.size()]; - for (int i = 0; i < mList.size(); i++) { - strArray[i] = mList.get(i); - } - SecurityUtils.runWith(strArray); + SecurityUtils.runWith(ArrayUtils.add(argumentsAccessor.get(0, String[].class), Authorities.SERVICE_RESET_WAHLEN)); Assertions.assertThatThrownBy(() -> wahlenService.resetWahlen()).isInstanceOf(TechnischeWlsException.class); } From 889b115562bcd0d37139e52b35abde17bb3ddd19 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Mon, 29 Jul 2024 15:28:45 +0200 Subject: [PATCH 23/26] Nummerierung Skripte --- .../h2/{V5_0__createWahlTable.sql => V6_0__createWahlTable.sql} | 0 .../{V5_0__createWahlTable.sql => V6_0__createWahlTable.sql} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename wls-basisdaten-service/src/main/resources/db/migrations/h2/{V5_0__createWahlTable.sql => V6_0__createWahlTable.sql} (100%) rename wls-basisdaten-service/src/main/resources/db/migrations/oracle/{V5_0__createWahlTable.sql => V6_0__createWahlTable.sql} (100%) diff --git a/wls-basisdaten-service/src/main/resources/db/migrations/h2/V5_0__createWahlTable.sql b/wls-basisdaten-service/src/main/resources/db/migrations/h2/V6_0__createWahlTable.sql similarity index 100% rename from wls-basisdaten-service/src/main/resources/db/migrations/h2/V5_0__createWahlTable.sql rename to wls-basisdaten-service/src/main/resources/db/migrations/h2/V6_0__createWahlTable.sql diff --git a/wls-basisdaten-service/src/main/resources/db/migrations/oracle/V5_0__createWahlTable.sql b/wls-basisdaten-service/src/main/resources/db/migrations/oracle/V6_0__createWahlTable.sql similarity index 100% rename from wls-basisdaten-service/src/main/resources/db/migrations/oracle/V5_0__createWahlTable.sql rename to wls-basisdaten-service/src/main/resources/db/migrations/oracle/V6_0__createWahlTable.sql From bf982d2a5b4dc4770c32cf030c7e6aba930de628 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Mon, 29 Jul 2024 17:04:05 +0200 Subject: [PATCH 24/26] =?UTF-8?q?Umbenennung=20im=20Hinblick=20auf=20die?= =?UTF-8?q?=20Vereinheitlichung=20der=20Package-Namen=20f=C3=BCr=20die=20D?= =?UTF-8?q?om=C3=A4ne=20"Wahlen"=20und=20Minimierung=20der=20zu=20erwartet?= =?UTF-8?q?en=20Konflikte=20mit=20dem=20kommenden=20Issue=20#141?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{ResetWahlenController.java => WahlenController.java} | 2 +- ...egrationTest.java => WahlenControllerIntegrationTest.java} | 4 ++-- ...setWahlenControllerTest.java => WahlenControllerTest.java} | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/{ResetWahlenController.java => WahlenController.java} (97%) rename wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/{ResetWahlenControllerIntegrationTest.java => WahlenControllerIntegrationTest.java} (97%) rename wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/{ResetWahlenControllerTest.java => WahlenControllerTest.java} (95%) diff --git a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenController.java b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenController.java similarity index 97% rename from wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenController.java rename to wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenController.java index 614478095..fa1866afc 100644 --- a/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenController.java +++ b/wls-basisdaten-service/src/main/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenController.java @@ -16,7 +16,7 @@ @RequestMapping("/businessActions/resetWahlen") @RequiredArgsConstructor @Slf4j -public class ResetWahlenController { +public class WahlenController { private final WahlenService wahlenService; diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenControllerIntegrationTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenControllerIntegrationTest.java similarity index 97% rename from wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenControllerIntegrationTest.java rename to wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenControllerIntegrationTest.java index 0e7afe714..b08aa43fc 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenControllerIntegrationTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenControllerIntegrationTest.java @@ -33,7 +33,7 @@ @AutoConfigureMockMvc @AutoConfigureWireMock @ActiveProfiles(profiles = { SPRING_TEST_PROFILE, SPRING_NO_SECURITY_PROFILE }) -public class ResetWahlenControllerIntegrationTest { +public class WahlenControllerIntegrationTest { @Value("${service.info.oid}") String serviceID; @@ -68,7 +68,7 @@ void existingWahlenAreReplaced() throws Exception { val request = MockMvcRequestBuilders.post("/businessActions/resetWahlen"); mockMvc.perform(request).andExpect(status().isOk()); - val expectedResetedWahlen = createWahlEntities().stream().map((ResetWahlenControllerIntegrationTest.this::resetWahl)).toList(); + val expectedResetedWahlen = createWahlEntities().stream().map((WahlenControllerIntegrationTest.this::resetWahl)).toList(); SecurityUtils.runWith(Authorities.REPOSITORY_READ_WAHL); val savedWahlen = wahlRepository.findAll(); diff --git a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenControllerTest.java b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenControllerTest.java similarity index 95% rename from wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenControllerTest.java rename to wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenControllerTest.java index bc8169e05..943ffe3d0 100644 --- a/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/ResetWahlenControllerTest.java +++ b/wls-basisdaten-service/src/test/java/de/muenchen/oss/wahllokalsystem/basisdatenservice/rest/wahlen/WahlenControllerTest.java @@ -10,7 +10,7 @@ import org.mockito.junit.jupiter.MockitoExtension; @ExtendWith(MockitoExtension.class) -class ResetWahlenControllerTest { +class WahlenControllerTest { @Mock WahlenService wahlenService; From 5c1461665e1d700299e440c06d536c9f34cc7524 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Tue, 30 Jul 2024 14:36:38 +0200 Subject: [PATCH 25/26] Aus resetwahlen.yml und wahlen.yml eine Datei .. wahlen.yml sie ist im changelog eingepflegt --- ... => add-authorities-basisdaten-wahlen.yml} | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) rename stack/keycloak/migration/{add-authorities-basisdaten-resetwahlen.yml => add-authorities-basisdaten-wahlen.yml} (61%) diff --git a/stack/keycloak/migration/add-authorities-basisdaten-resetwahlen.yml b/stack/keycloak/migration/add-authorities-basisdaten-wahlen.yml similarity index 61% rename from stack/keycloak/migration/add-authorities-basisdaten-resetwahlen.yml rename to stack/keycloak/migration/add-authorities-basisdaten-wahlen.yml index 3c157f14c..5200ad1b0 100644 --- a/stack/keycloak/migration/add-authorities-basisdaten-resetwahlen.yml +++ b/stack/keycloak/migration/add-authorities-basisdaten-wahlen.yml @@ -1,7 +1,25 @@ id: add authorities basisdaten wahlen -author: Nic12345678 +author: GerhardPx realm: ${SSO_REALM} changes: + - addRole: + name: Basisdaten_BUSINESSACTION_GetWahlen + clientRole: true + clientId: ${SSO_CLIENT_ID} + - assignRoleToGroup: + group: allBasisdatenAuthorities + role: Basisdaten_BUSINESSACTION_GetWahlen + clientId: ${SSO_CLIENT_ID} + + - addRole: + name: Basisdaten_BUSINESSACTION_PostWahlen + clientRole: true + clientId: ${SSO_CLIENT_ID} + - assignRoleToGroup: + group: allBasisdatenAuthorities + role: Basisdaten_BUSINESSACTION_PostWahlen + clientId: ${SSO_CLIENT_ID} + - addRole: name: Basisdaten_BUSINESSACTION_ResetWahlen clientRole: true @@ -17,8 +35,9 @@ changes: clientId: ${SSO_CLIENT_ID} - assignRoleToGroup: group: allBasisdatenAuthorities - role: Basisdaten_READ_Wahl + role: Basisdaten_READ_Wahlen clientId: ${SSO_CLIENT_ID} + - addRole: name: Basisdaten_WRITE_Wahl clientRole: true @@ -27,6 +46,7 @@ changes: group: allBasisdatenAuthorities role: Basisdaten_WRITE_Wahl clientId: ${SSO_CLIENT_ID} + - addRole: name: Basisdaten_DELETE_Wahl clientRole: true @@ -34,4 +54,5 @@ changes: - assignRoleToGroup: group: allBasisdatenAuthorities role: Basisdaten_DELETE_Wahl - clientId: ${SSO_CLIENT_ID} \ No newline at end of file + clientId: ${SSO_CLIENT_ID} + From db29c17edfe1623385a06e1dd0cf6aa4680d7cc3 Mon Sep 17 00:00:00 2001 From: Nic12345678 <162564162+Nic12345678@users.noreply.github.com> Date: Tue, 30 Jul 2024 15:11:31 +0200 Subject: [PATCH 26/26] Aus resetwahlen.yml und wahlen.yml eine Datei .. wahlen.yml sie ist im changelog eingepflegt --- stack/keycloak/migration/add-authorities-basisdaten-wahlen.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stack/keycloak/migration/add-authorities-basisdaten-wahlen.yml b/stack/keycloak/migration/add-authorities-basisdaten-wahlen.yml index 5200ad1b0..a7115555e 100644 --- a/stack/keycloak/migration/add-authorities-basisdaten-wahlen.yml +++ b/stack/keycloak/migration/add-authorities-basisdaten-wahlen.yml @@ -35,7 +35,7 @@ changes: clientId: ${SSO_CLIENT_ID} - assignRoleToGroup: group: allBasisdatenAuthorities - role: Basisdaten_READ_Wahlen + role: Basisdaten_READ_Wahl clientId: ${SSO_CLIENT_ID} - addRole: