diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormHeaderTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormHeaderTestFactory.java index c243a89641e1ca5589188a680ed0ace8536fb747..0a371946028f0b2b9bf8b5b99af163d4d540d687 100644 --- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormHeaderTestFactory.java +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/FormHeaderTestFactory.java @@ -40,6 +40,8 @@ public class FormHeaderTestFactory { public static final String CREATED_AT_STR = "2024-04-01T01:00:30Z"; public static final ZonedDateTime CREATED_AT = ZonedDateTime.parse(CREATED_AT_STR); + public static final ServiceKonto SERVICE_KONTO = ServiceKontoTestFactory.create(); + public static FormHeader create() { return createBuilder().build(); } @@ -53,7 +55,7 @@ public class FormHeaderTestFactory { .formId(FORM_ID) .formName(FORM_NAME) .sender(SENDER) - .serviceKonto(ServiceKontoTestFactory.create()); + .serviceKonto(SERVICE_KONTO); } } diff --git a/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java b/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java index f93955719be0545b3d73e133feeb4cd72850bdd8..08e4bddd5d01e6c049f7e0da2256555da694b919 100644 --- a/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java +++ b/router/src/main/java/de/ozgcloud/eingang/router/VorgangService.java @@ -48,6 +48,17 @@ public class VorgangService { } FormData preserveConsistency(FormData formData) { - return null; + if (hasNoPostfachAddress(formData)) { + return clearServiceKonto(formData); + } + return formData; + } + + private boolean hasNoPostfachAddress(FormData formData) { + return formData.getHeader().getServiceKonto().getPostfachAddresses().isEmpty(); + } + + private FormData clearServiceKonto(FormData formData) { + return formData.toBuilder().header(formData.getHeader().toBuilder().serviceKonto(null).build()).build(); } } \ No newline at end of file diff --git a/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java b/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java index 5425c19d615ab4d6943459f2e0c3bf13ae3cffae..c5745c2a12f2bcca89eb17bb88f713ed67f3541e 100644 --- a/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/VorgangServiceTest.java @@ -23,6 +23,7 @@ */ package de.ozgcloud.eingang.router; +import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; import java.util.Optional; @@ -37,6 +38,10 @@ import org.mockito.Spy; import de.ozgcloud.eingang.common.formdata.FormData; import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; +import de.ozgcloud.eingang.common.formdata.FormHeader; +import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory; +import de.ozgcloud.eingang.common.formdata.ServiceKonto; +import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory; import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory; class VorgangServiceTest { @@ -84,10 +89,24 @@ class VorgangServiceTest { @Nested class TestPreserveConsistency { + private final ServiceKonto serviceKonto = ServiceKontoTestFactory.createBuilder().clearPostfachAddresses().build(); + private final FormHeader header = FormHeaderTestFactory.createBuilder().serviceKonto(serviceKonto).build(); + private final FormData formData = FormDataTestFactory.createBuilder().header(header).build(); + @DisplayName("should set serviceKonto to null if no postfachAddress exists") @Test void shouldSetServiceKontoToNull() { + var consistentFormData = service.preserveConsistency(formData); + + assertThat(consistentFormData.getHeader().getServiceKonto()).isNull(); + } + + @DisplayName("should keep serviceKonto if postfachAddress eixsts") + @Test + void shouldKeepServiceKonto() { + var consistentFormData = service.preserveConsistency(FormDataTestFactory.create()); + assertThat(consistentFormData.getHeader().getServiceKonto()).isEqualTo(FormHeaderTestFactory.SERVICE_KONTO); } } } \ No newline at end of file