diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/information/InfoManagerProperties.java b/info-manager-server/src/main/java/de/ozgcloud/info/information/InfoManagerProperties.java index 1cd0f36ff7c553b0a52ea3f3020cedb2b5617a9a..18c39e699d56e7db2d7d8fbe9b7f1fc8c1eb4210 100644 --- a/info-manager-server/src/main/java/de/ozgcloud/info/information/InfoManagerProperties.java +++ b/info-manager-server/src/main/java/de/ozgcloud/info/information/InfoManagerProperties.java @@ -21,14 +21,19 @@ package de.ozgcloud.info.information; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.ConfigurationPropertiesScan; import org.springframework.context.annotation.Configuration; import lombok.Getter; +import lombok.Setter; @Getter +@Setter @Configuration @ConfigurationProperties(prefix = InfoManagerProperties.PREFIX) +@ConfigurationPropertiesScan public class InfoManagerProperties { static final String PREFIX = "ozgcloud.infomanager"; - private final String postfachIdKeyName = "postkorbhandle"; + public static final String POSTKORBHANDLE = "postkorbhandle"; + private String postfachIdKeyName = POSTKORBHANDLE; } diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtGrpcService.java b/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtGrpcService.java index 4bae8077690e8f41248ec23576e321846cdeb574..dea916356a1f30a8238f84fcadb1ff69760b294d 100644 --- a/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtGrpcService.java +++ b/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtGrpcService.java @@ -57,18 +57,16 @@ public class NachrichtGrpcService extends NachrichtServiceGrpc.NachrichtServiceI private void saveNachricht(GrpcNewNachrichtRequest request) { var nachricht = nachrichtenMapper.fromGrpcNachricht(request.getNachricht()); - if (isValid(nachricht)) { - nachrichtService.save(nachricht); - } + checkForValidity(nachricht); + + nachrichtService.save(nachricht); } - private boolean isValid(NachrichtEvent nachrichtEvent) { + private void checkForValidity(NachrichtEvent nachrichtEvent) { Set<ConstraintViolation<NachrichtEvent>> violations = validator.validate(nachrichtEvent); if (!violations.isEmpty()) { throw new ConstraintViolationException(violations); } - - return true; } @Override diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/InfoManagerApplicationTest.java b/info-manager-server/src/test/java/de/ozgcloud/info/InfoManagerApplicationTest.java index bece6d4ca6823e7e9fc882c82e6451ee81e13f00..5ccbd9a68e1b9dcece9f6c9e55e74d08f9d8b1e3 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/InfoManagerApplicationTest.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/InfoManagerApplicationTest.java @@ -22,6 +22,7 @@ */ package de.ozgcloud.info; +import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Spy; @@ -29,4 +30,9 @@ class InfoManagerApplicationTest { @Spy @InjectMocks private InfoManagerApplication application; + + @Test + void shouldLoadContext() { //NOSONAR + // empty + } } \ No newline at end of file diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/NachrichtEventTestFactory.java b/info-manager-server/src/test/java/de/ozgcloud/info/NachrichtEventTestFactory.java index e263d684a09aa7448b811b99e27b239214052c86..cc970234f680bb3a18cdd9fe5fe31e159accf513 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/NachrichtEventTestFactory.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/NachrichtEventTestFactory.java @@ -47,7 +47,11 @@ public class NachrichtEventTestFactory { } public static GrpcNewNachrichtRequest createNewNachrichtRequest() { - return GrpcNewNachrichtRequest.newBuilder().setNachricht(createGrpcNachricht()).build(); + return createNewNachrichtRequestBuilder().setNachricht(createGrpcNachricht()).build(); + } + + public static GrpcNewNachrichtRequest.Builder createNewNachrichtRequestBuilder() { + return GrpcNewNachrichtRequest.newBuilder().setNachricht(createGrpcNachricht()); } public static GrpcFinishedNachrichtRequest createFinishNachrichtRequest() { diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/information/InfoManagerPropertiesITCase.java b/info-manager-server/src/test/java/de/ozgcloud/info/information/InfoManagerPropertiesITCase.java new file mode 100644 index 0000000000000000000000000000000000000000..04e51e55fecae5e6e266b3aabc2364b69d7580ac --- /dev/null +++ b/info-manager-server/src/test/java/de/ozgcloud/info/information/InfoManagerPropertiesITCase.java @@ -0,0 +1,54 @@ +package de.ozgcloud.info.information; + +import static de.ozgcloud.info.information.InfoManagerProperties.*; +import static org.assertj.core.api.Assertions.*; + +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.test.context.TestPropertySource; + +import de.ozgcloud.common.test.ITCase; + +@SpringBootTest(classes = { InfoManagerProperties.class }) +@ITCase +class InfoManagerPropertiesITCase { + @TestPropertySource(properties = { + InfoManagerProperties.PREFIX + ".postfachIdKeyName" + "=" + TestLoadingConfiguration.OTHER_POSTFACH_KEY, + }) + @Nested + class TestLoadingConfiguration { + static final String OTHER_POSTFACH_KEY = "otherPostfachKey"; + + @Autowired + private InfoManagerProperties infoManagerProperties; + + @Test + void shouldHaveProperties() { + assertThat(infoManagerProperties).isNotNull(); + } + + @Test + void testPostfachHandleKey() { + assertThat(infoManagerProperties.getPostfachIdKeyName()).isEqualTo(OTHER_POSTFACH_KEY); + } + } + + @Nested + class TestLoadingDefaultConfiguration { + + @Autowired + private InfoManagerProperties infoManagerProperties; + + @Test + void shouldHaveProperties() { + assertThat(infoManagerProperties).isNotNull(); + } + + @Test + void testPostfachHandleKey() { + assertThat(infoManagerProperties.getPostfachIdKeyName()).isEqualTo(POSTKORBHANDLE); + } + } +} \ No newline at end of file diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcServiceTest.java b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcServiceTest.java index 223e74bba19796799218cdf4ea40c69a1c5a3a17..5c31a181c4312cabd72a6ea6984df1908fa7b790 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcServiceTest.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcServiceTest.java @@ -25,6 +25,7 @@ import static org.mockito.Mockito.*; import java.util.Set; +import jakarta.validation.ConstraintViolation; import jakarta.validation.ConstraintViolationException; import jakarta.validation.Validator; @@ -129,6 +130,33 @@ class NachrichtenGrpcServiceTest { } } + @Nested + class TestSaveInvalidNewNachrichtEvent { + @Mock + private StreamObserver<GrpcNewNachrichtReply> newNachrichtStreamObserver; + private final GrpcNachricht invalidNachricht = NachrichtEventTestFactory.createGrpcNachrichtBuilder().setNachrichtenListUrl("invalid") + .build(); + private final GrpcNewNachrichtRequest invalidNachrichtRequest = NachrichtEventTestFactory.createNewNachrichtRequestBuilder() + .setNachricht(invalidNachricht).build(); + + @BeforeEach + @SuppressWarnings("unchecked") + void init() { + when(nachrichtenMapper.fromGrpcNachricht(any())).thenReturn( + NachrichtEventTestFactory.createNachrichtEventBuilder().id(null).nachrichtenListUrl("invalid").build()); + var constraintViolation = mock(ConstraintViolation.class); + + when(validator.validate(any(NachrichtEvent.class))).thenReturn(Set.of(constraintViolation)); + } + + @Test + void shouldNotCreateNachrichtBecauseInvalidNachrichtenListUrl() { + nachrichtenGrpcService.saveNewNachricht(invalidNachrichtRequest, newNachrichtStreamObserver); + + verify(nachrichtenService, never()).save(any()); + } + } + @Nested class TestFinishNachrichtEvent { @Mock diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenServiceTest.java b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenServiceTest.java index 38d8a14bf966ac47d9b055a74008a84c99d54eec..d93e6e6b1ad52c59277b98ca69742b7893d7bef5 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenServiceTest.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenServiceTest.java @@ -94,6 +94,10 @@ class NachrichtenServiceTest { class TestFinishNachrichtEvent { @Test void shouldCallDelete() { + when( + repository.findByPostfachIdAndNachrichtenListUrl(NachrichtEventTestFactory.POSTKORB_HANDLE, NachrichtEventTestFactory.URL)).thenReturn( + Optional.of(NachrichtEventTestFactory.createNachrichtEvent())); + service.finish(NachrichtEventTestFactory.createNachrichtEvent()); verify(repository, atMostOnce()).findByPostfachIdAndNachrichtenListUrl(NachrichtEventTestFactory.POSTKORB_HANDLE,