diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/ServiceKonto.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/ServiceKonto.java index ab2f7588d424a1358a4d8bcd01d360e705917e86..6cce21a27b16bcf67062209a83427366ba35b583 100644 --- a/common/src/main/java/de/ozgcloud/eingang/common/formdata/ServiceKonto.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/ServiceKonto.java @@ -1,9 +1,14 @@ package de.ozgcloud.eingang.common.formdata; +import java.util.EnumSet; import java.util.List; +import org.apache.commons.lang3.StringUtils; + +import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; +import lombok.RequiredArgsConstructor; import lombok.Singular; @Getter @@ -22,4 +27,23 @@ public class ServiceKonto { private String version; private PostfachAddressIdentifier identifier; } + + @RequiredArgsConstructor(access = AccessLevel.PRIVATE) + public enum TrustLevel { + + LEVEL_1("STORK-QAA-Level-1"), + LEVEL_2("STORK-QAA-Level-2"), + LEVEL_3("STORK-QAA-Level-3"), + LEVEL_4("STORK-QAA-Level-4"); + + private final String value; + + public static boolean exists(String trustLevelValue) { + if (StringUtils.isBlank(trustLevelValue)) { + return false; + } + return EnumSet.allOf(TrustLevel.class).stream().map(trustLevel -> trustLevel.value).anyMatch(trustLevelValue::equalsIgnoreCase); + } + } + } \ No newline at end of file diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/TrustLevelTest.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/TrustLevelTest.java new file mode 100644 index 0000000000000000000000000000000000000000..93c12966a7e2b57ae3053bb583e585d6683025d9 --- /dev/null +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/TrustLevelTest.java @@ -0,0 +1,32 @@ +package de.ozgcloud.eingang.common.formdata; + +import static org.assertj.core.api.Assertions.*; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.NullAndEmptySource; +import org.junit.jupiter.params.provider.ValueSource; + +import de.ozgcloud.eingang.common.formdata.ServiceKonto.TrustLevel; + +class TrustLevelTest { + + @DisplayName("should return true when") + @ParameterizedTest(name = "trust level is {0}") + @ValueSource(strings = {"STORK-QAA-Level-1", "STORK-QAA-Level-2", "STORK-QAA-Level-3", "STORK-QAA-Level-4"}) + void shouldReturnTrue(String trustLevel) { + var isValid = TrustLevel.exists(trustLevel); + + assertThat(isValid).isTrue(); + } + + @DisplayName("should return false when") + @ParameterizedTest(name = "trust level is \"{0}\"") + @NullAndEmptySource + @ValueSource(strings = {"STORK-QAA-Level-0", "unexpected"}) + void shouldReturnFalse(String trustLevel) { + var isValid = TrustLevel.exists(trustLevel); + + assertThat(isValid).isFalse(); + } +} \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ServiceKontoFactory.java similarity index 71% rename from semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelper.java rename to semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ServiceKontoFactory.java index 1ec87a0e456865b00b7edbddf0834dad0f8e9948..0b7320fbe23a0a9820ccebfa9c82fd78347798f4 100644 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/common/ServiceKontoFactory.java @@ -1,4 +1,4 @@ -package de.ozgcloud.eingang.semantik.enginebased; +package de.ozgcloud.eingang.semantik.common; import java.util.Collections; import java.util.List; @@ -6,21 +6,27 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; +import org.apache.commons.collections.MapUtils; import org.springframework.stereotype.Component; import de.ozgcloud.eingang.common.formdata.FormData; import de.ozgcloud.eingang.common.formdata.PostfachAddressIdentifier; import de.ozgcloud.eingang.common.formdata.ServiceKonto; -import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; +import de.ozgcloud.eingang.common.formdata.ServiceKonto.TrustLevel; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import lombok.extern.log4j.Log4j2; @Component -public class ServiceKontoBuildHelper { +@Log4j2 +public class ServiceKontoFactory { public static final int POSTFACH_ADDRESS_DEFAULT = 1; public static final String POSTFACH_TYPE_OSI = "OSI"; public static final String POSTFACH_TYPE_BAYERN_ID = "BayernID"; public static final String POSTFACH_VERSION = "1.0"; + public static final String KEY_BAYERN_ID_POSTFACH_ID = "u:saml_legacypostkorbhandle"; + public static final String KEY_BAYERN_ID_TRUST_LEVEL = "u:saml_eid_citizen_qaa_level"; public static final String REST_RESPONSE_NAME = "rest_response_name"; public static final String REST_RESPONSE_NAME_MEMBER_SCOPE = "memberscope"; @@ -85,8 +91,27 @@ public class ServiceKontoBuildHelper { return ((List<Map<String, Object>>) restResponseName.get(REST_RESPONSE_NAME_MEMBER_SCOPE)).get(0); } - public ServiceKonto buildBayernIdServiceKonto(String postfachId) { - return ServiceKonto.builder().type(POSTFACH_TYPE_BAYERN_ID).postfachAddress(buildPostfachAddress(postfachId)).build(); + public Optional<ServiceKonto> createBayernIdServiceKonto(Map<String, Object> formDataHeaders) { + if (Objects.isNull(formDataHeaders) || !formDataHeaders.containsKey(KEY_BAYERN_ID_POSTFACH_ID)) { + return Optional.empty(); + } + if (isValidTrustLevel(formDataHeaders)) { + return Optional.of(buildBayernIdServiceKonto(formDataHeaders)); + } + LOG.error("TrustLevel has an unexpected value '{}'. BayernID user account is not connected", getTrustLevel(formDataHeaders)); + return Optional.empty(); + } + + boolean isValidTrustLevel(Map<String, Object> formDataHeader) { + return TrustLevel.exists(getTrustLevel(formDataHeader)); + } + + ServiceKonto buildBayernIdServiceKonto(Map<String, Object> formDataHeaders) { + return ServiceKonto.builder() + .type(POSTFACH_TYPE_BAYERN_ID) + .postfachAddress(buildPostfachAddress(MapUtils.getString(formDataHeaders, KEY_BAYERN_ID_POSTFACH_ID))) + .trustLevel(getTrustLevel(formDataHeaders)) + .build(); } PostfachAddress buildPostfachAddress(String postkorbHandle) { @@ -101,4 +126,8 @@ public class ServiceKontoBuildHelper { return StringBasedIdentifier.builder().postfachId(postfachId).build(); } + String getTrustLevel(Map<String, Object> formDataHeaders) { + return MapUtils.getString(formDataHeaders, KEY_BAYERN_ID_TRUST_LEVEL); + } + } \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapper.java index 3171846b129f4f676a7392d2f857e0f72714705c..df134be93dbf148d8cc9f2009d9f2ad6ec6d581d 100644 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapper.java @@ -6,16 +6,17 @@ import static org.apache.commons.lang3.StringUtils.*; import java.util.Collections; import java.util.Map; +import org.apache.commons.collections.MapUtils; import org.springframework.stereotype.Component; import de.ozgcloud.eingang.common.errorhandling.TechnicalException; import de.ozgcloud.eingang.common.formdata.Antragsteller; import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; @Component public class AfmAntragstellerHeaderMapper { - static final String KEY_POSTFACH_ID = "u:saml_legacypostkorbhandle"; static final String KEY_VORNAME = "u:saml_givenname"; static final String KEY_NACHNAME = "u:saml_surname"; static final String KEY_GEBURTSORT = "u:saml_placeofbirth"; @@ -32,22 +33,23 @@ public class AfmAntragstellerHeaderMapper { Antragsteller buildAntragsteller(Map<String, Object> headers) { return Antragsteller.builder() - .postfachId((String) headers.get(KEY_POSTFACH_ID)) - .vorname((String) headers.get(KEY_VORNAME)) - .nachname((String) headers.get(KEY_NACHNAME)) - .geburtsname((String) headers.get(KEY_GEBURTSNAME)) - .geburtsort((String) headers.get(KEY_GEBURTSORT)) - .email((String) headers.get(KEY_EMAIL)) - .telefon((String) headers.get(KEY_TELEFON)) - .strasse((String) headers.get(KEY_STRASSE)) - .plz((String) headers.get(KEY_PLZ)) - .ort((String) headers.get(KEY_ORT)) + .postfachId(MapUtils.getString(headers, ServiceKontoFactory.KEY_BAYERN_ID_POSTFACH_ID)) + .vorname(MapUtils.getString(headers, KEY_VORNAME)) + .nachname(MapUtils.getString(headers, KEY_NACHNAME)) + .geburtsname(MapUtils.getString(headers, KEY_GEBURTSNAME)) + .geburtsort(MapUtils.getString(headers, KEY_GEBURTSORT)) + .email(MapUtils.getString(headers, KEY_EMAIL)) + .telefon(MapUtils.getString(headers, KEY_TELEFON)) + .strasse(MapUtils.getString(headers, KEY_STRASSE)) + .plz(MapUtils.getString(headers, KEY_PLZ)) + .ort(MapUtils.getString(headers, KEY_ORT)) .build(); } public boolean isResponsible(FormData formData) { var headers = getHeaders(formData); - return headers.containsKey(KEY_POSTFACH_ID) && isPostfachIdNotBlank(headers.get(KEY_POSTFACH_ID)); + return headers.containsKey(ServiceKontoFactory.KEY_BAYERN_ID_POSTFACH_ID) + && isPostfachIdNotBlank(headers.get(ServiceKontoFactory.KEY_BAYERN_ID_POSTFACH_ID)); } @SuppressWarnings("unchecked") diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapper.java index 2984f9a6d257eeae0e1c6e2d361383b37d6a2dbb..0f63ef3686963482d332dd1d844e75ae4d2ec865 100644 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapper.java @@ -35,7 +35,7 @@ import de.ozgcloud.eingang.common.formdata.FormData; import de.ozgcloud.eingang.common.formdata.FormDataUtils; import de.ozgcloud.eingang.common.formdata.FormHeader; import de.ozgcloud.eingang.common.formdata.ServiceKonto; -import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; +import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; @Component class AfmHeaderMapper implements AfmEngineBasedMapper { @@ -53,7 +53,7 @@ class AfmHeaderMapper implements AfmEngineBasedMapper { static final String SENDER = "t:sender"; @Autowired - private ServiceKontoBuildHelper serviceKontoBuildHelper; + private ServiceKontoFactory serviceKontoFactory; @Override public FormData parseFormData(FormData formData) { @@ -84,13 +84,7 @@ class AfmHeaderMapper implements AfmEngineBasedMapper { } Optional<ServiceKonto> createBayernIdServiceKonto(FormData formData) { - var postfachId1 = getPostfachId(formData); - return postfachId1.map(postfachId -> serviceKontoBuildHelper.buildBayernIdServiceKonto(postfachId)); - } - - Optional<String> getPostfachId(FormData formData) { - return Optional.ofNullable(getHeaderMap(formData)).map(headers -> headers.get(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID)) - .map(String.class::cast); + return serviceKontoFactory.createBayernIdServiceKonto(getHeaderMap(formData)); } @SuppressWarnings("unchecked") @@ -99,7 +93,7 @@ class AfmHeaderMapper implements AfmEngineBasedMapper { } Optional<ServiceKonto> createOsiServiceKonto(FormData formData) { - return getNameId(formData).map(nameId -> serviceKontoBuildHelper.buildOsiServiceKonto(nameId, formData)); + return getNameId(formData).map(nameId -> serviceKontoFactory.buildOsiServiceKonto(nameId, formData)); } private Optional<String> getNameId(FormData formData) { @@ -108,7 +102,7 @@ class AfmHeaderMapper implements AfmEngineBasedMapper { private FormData removeMappedData(FormData formData) { return FormDataUtils.from(formData) - .remove(ServiceKontoBuildHelper.REST_RESPONSE_NAME) + .remove(ServiceKontoFactory.REST_RESPONSE_NAME) .build(); } } \ No newline at end of file diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java index aedb47f05d7d39b109d67b5ba214ac90b3e1d8f7..b3e75f0cd900dd24d9095c7953939ae450d5db5c 100644 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java @@ -21,7 +21,7 @@ import de.ozgcloud.eingang.common.formdata.IncomingFile; import de.ozgcloud.eingang.common.formdata.ServiceKonto; import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; import de.ozgcloud.eingang.semantik.enginebased.EngineBasedSemantikAdapter; -import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; +import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; import lombok.NonNull; import lombok.extern.log4j.Log4j2; @@ -37,7 +37,7 @@ public class DFoerdermittelEngineBasedSemantikAdapter implements EngineBasedSema private static final String KEY_ORGANISATIONS_EINHEIT_ID = "MetaText1"; @Autowired - private ServiceKontoBuildHelper serviceKontoHelper; + private ServiceKontoFactory serviceKontoFactory; @Override public FormData parseFormData(FormData formData) { @@ -109,7 +109,7 @@ public class DFoerdermittelEngineBasedSemantikAdapter implements EngineBasedSema } private ServiceKonto createServiceKonto(String postfachId) { - return serviceKontoHelper.buildOsiServiceKonto(postfachId); + return serviceKontoFactory.buildOsiServiceKonto(postfachId); } FormData parseFachnachricht(FormData formData, IncomingFile fachnachrichtFile) { diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapper.java index 0c8bc2d63bcbf51bdfba7f6963cac424c773c7e8..c2b0de118717b7bb54f0af27ef37e123788f3368 100644 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapper.java @@ -34,7 +34,7 @@ import org.springframework.stereotype.Component; import de.ozgcloud.eingang.common.formdata.FormData; import de.ozgcloud.eingang.common.formdata.FormDataUtils; import de.ozgcloud.eingang.common.formdata.FormHeader; -import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; +import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; @Component class FormSolutionsHeaderMapper implements FormSolutionsEngineBasedMapper { @@ -48,7 +48,7 @@ class FormSolutionsHeaderMapper implements FormSolutionsEngineBasedMapper { public static final String POSTKORBHANDLE = "postkorbhandle"; @Autowired - private ServiceKontoBuildHelper serviceKontoBuildHelper; + private ServiceKontoFactory serviceKontoFactory; @Override public FormData parseFormData(FormData formData) { @@ -66,7 +66,7 @@ class FormSolutionsHeaderMapper implements FormSolutionsEngineBasedMapper { .requestId(getRequestId(formData)) .formEngineName(FORM_ENGINE_NAME); - Optional.ofNullable(getPostkorbhandle(formData)).map(serviceKontoBuildHelper::buildOsiServiceKonto).ifPresent(formHeaderBuilder::serviceKonto); + Optional.ofNullable(getPostkorbhandle(formData)).map(serviceKontoFactory::buildOsiServiceKonto).ifPresent(formHeaderBuilder::serviceKonto); return formHeaderBuilder.build(); } diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/common/ServiceKontoFactoryTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/common/ServiceKontoFactoryTest.java new file mode 100644 index 0000000000000000000000000000000000000000..66d9d3e302806e9b4aab54e4bba79627488e92fe --- /dev/null +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/common/ServiceKontoFactoryTest.java @@ -0,0 +1,303 @@ +package de.ozgcloud.eingang.semantik.common; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Spy; + +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataUtils; +import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory; +import de.ozgcloud.eingang.common.formdata.ServiceKonto; +import de.ozgcloud.eingang.common.formdata.ServiceKonto.TrustLevel; +import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; +import de.ozgcloud.eingang.semantik.enginebased.afm.AfmHeaderTestFactory; + +class ServiceKontoFactoryTest { + + @Spy + @InjectMocks + private ServiceKontoFactory factory; + + @DisplayName("OSI service konto") + @Nested + class TestOsiServiceKonto { + + private static final FormData FORM_DATA = FormData.builder().formData(AfmHeaderTestFactory.createFormDataMap()).build(); + + @DisplayName("with configured postfach") + @Nested + class TestWithConfiguredPostfach { + + private static final PostfachAddress POSTFACH_ADDRESS = PostfachAddressTestFactory.create(); + + @BeforeEach + void mockBuildPostfachAddresses() { + doReturn(List.of(POSTFACH_ADDRESS)).when(factory).buildPostfachAddresses(any(), any()); + } + + @Test + void shouldContainsType() { + var serviceKonto = getServiceKonto(FORM_DATA); + + assertThat(serviceKonto.getType()).isEqualTo(ServiceKontoFactory.POSTFACH_TYPE_OSI); + } + + @Test + void shouldContainsPostfachAddresses() { + var serviceKonto = getServiceKonto(FORM_DATA); + + assertThat(serviceKonto.getPostfachAddresses()).hasSize(1); + assertThat(serviceKonto.getPostfachAddresses().get(0)).isEqualTo(POSTFACH_ADDRESS); + } + + @Test + void shouldBuildPostfachAddresses() { + getServiceKonto(FORM_DATA); + + verify(factory).buildPostfachAddresses(any(), any()); + } + } + + private ServiceKonto getServiceKonto(FormData formData) { + return factory.buildOsiServiceKonto(AfmHeaderTestFactory.POSTFACH_NAME_ID, formData); + } + + @DisplayName("postfach addresses") + @Nested + class TestBuildPostfachAddresses { + + @DisplayName("with rest_response_name") + @Nested + class TestWithRestResponseName { + + @Test + void shouldCallBuildAddresses() { + getPostfachAddresses(); + + verify(factory).buildOsiPostfachV1Address(any(), anyInt()); + } + + @Test + void shouldReturnPostfachAddresses() { + var addresses = getPostfachAddresses(); + + assertThat(addresses).hasSize(1); + assertThat(addresses.get(0).getIdentifier()).isInstanceOf(StringBasedIdentifier.class); + assertThat(((StringBasedIdentifier) addresses.get(0).getIdentifier()).getPostfachId()) + .isEqualTo(AfmHeaderTestFactory.POSTFACH_NAME_ID); + assertThat(addresses.get(0).getVersion()).isEqualTo(ServiceKontoFactory.POSTFACH_VERSION); + assertThat(addresses.get(0).getType()).isEqualTo(PostfachAddressTestFactory.POSTFACH_ADDRESS_TYPE); + } + + private List<PostfachAddress> getPostfachAddresses() { + return buildServiceKonto(FORM_DATA).getPostfachAddresses(); + } + } + + @DisplayName("without rest_response_name") + @Nested + class TestWithoutRestResponseName { + + private static final FormData FORM_DATA_WITHOUT_REST_RESPONSE_NAME = FormDataUtils.from(FORM_DATA) + .remove(ServiceKontoFactory.REST_RESPONSE_NAME).build(); + + @Test + void shouldBuildDefault() { + getPostfachAddresses(); + + verify(factory).buildDefault(AfmHeaderTestFactory.POSTFACH_NAME_ID); + } + + @Test + void shouldReturnPostfachAddresses() { + var addresses = getPostfachAddresses(); + + assertThat(addresses).hasSize(1); + + assertThat(addresses.get(0).getIdentifier()).isInstanceOf(StringBasedIdentifier.class); + + assertThat(((StringBasedIdentifier) addresses.get(0).getIdentifier()).getPostfachId()) + .isEqualTo(AfmHeaderTestFactory.POSTFACH_NAME_ID); + assertThat(addresses.get(0).getVersion()).isEqualTo(ServiceKontoFactory.POSTFACH_VERSION); + assertThat(addresses.get(0).getType()).isEqualTo(1); + } + + private List<PostfachAddress> getPostfachAddresses() { + return buildServiceKonto(FORM_DATA_WITHOUT_REST_RESPONSE_NAME).getPostfachAddresses(); + } + } + + private ServiceKonto buildServiceKonto(FormData formData) { + return factory.buildOsiServiceKonto(AfmHeaderTestFactory.POSTFACH_NAME_ID, formData); + } + } + } + + @Nested + class TestCreateBayernIdServicekonto { + + private final Map<String, Object> formDataHeaders = Map.of( + ServiceKontoFactory.KEY_BAYERN_ID_POSTFACH_ID, PostfachAddressTestFactory.POSTFACH_ID, + ServiceKontoFactory.KEY_BAYERN_ID_TRUST_LEVEL, ServiceKontoTestFactory.TRUST_LEVEL + ); + + @DisplayName("should return empty when headers map is null") + @Test + void shouldReturnEmptyWhenNull() { + var serviceKonto = factory.createBayernIdServiceKonto(null); + + assertThat(serviceKonto).isEmpty(); + } + + @DisplayName("should return empty when postfach id is missing") + @Test + void shouldReturnEmptyWhenPostfachIdIsMissing() { + var serviceKonto = factory.createBayernIdServiceKonto(Map.of()); + + assertThat(serviceKonto).isEmpty(); + } + + @Test + void shouldCallIsValidTrustLevel() { + factory.createBayernIdServiceKonto(formDataHeaders); + + verify(factory).isValidTrustLevel(formDataHeaders); + } + + @Test + void shouldCallBuildBayernIdServiceKonto() { + factory.createBayernIdServiceKonto(formDataHeaders); + + verify(factory).buildBayernIdServiceKonto(formDataHeaders); + } + + @Test + void shouldReturnServiceKonto() { + var serviceKonto = ServiceKonto.builder().build(); + doReturn(serviceKonto).when(factory).buildBayernIdServiceKonto(any()); + + var result = factory.createBayernIdServiceKonto(formDataHeaders); + + assertThat(result).contains(serviceKonto); + } + + @DisplayName("should return empty when trust level has unexpected value") + @Test + void shouldReturnEmptyWhenTrustLevelCorrupted() { + doReturn(false).when(factory).isValidTrustLevel(any()); + + var serviceKonto = factory.createBayernIdServiceKonto(formDataHeaders); + + assertThat(serviceKonto).isEmpty(); + } + } + + @Nested + class TestIsValidTrustLevel { + + @Test + void shouldCallExists() { + try (var trustLevelMock = mockStatic(TrustLevel.class)) { + isValidTrustLevel(); + + trustLevelMock.verify(() -> TrustLevel.exists(ServiceKontoTestFactory.TRUST_LEVEL)); + } + } + + @Test + void shouldReturnValue() { + try (var trustLevelMock = mockStatic(TrustLevel.class)) { + trustLevelMock.when(() -> TrustLevel.exists(any())).thenReturn(true); + + var result = isValidTrustLevel(); + + assertThat(result).isTrue(); + } + } + + private boolean isValidTrustLevel() { + return factory.isValidTrustLevel(Map.of(ServiceKontoFactory.KEY_BAYERN_ID_TRUST_LEVEL, ServiceKontoTestFactory.TRUST_LEVEL)); + } + } + + @Nested + class TestBuildBayernIdServiceKonto { + + private static final String POSTFACH_ID = "postfach-id"; + private static final PostfachAddress POSTFACH_ADDRESS = PostfachAddressTestFactory.create(); + private static final String TRUST_LEVEL = "STORK-QAA-Level-2"; + + private final Map<String, Object> formDataHeaders = Map.of( + ServiceKontoFactory.KEY_BAYERN_ID_POSTFACH_ID, POSTFACH_ID, + ServiceKontoFactory.KEY_BAYERN_ID_TRUST_LEVEL, TRUST_LEVEL); + + @Test + void shouldSetType() { + var serviceKonto = buildBayernIdServiceKonto(); + + assertThat(serviceKonto.getType()).isEqualTo(ServiceKontoFactory.POSTFACH_TYPE_BAYERN_ID); + } + + @Test + void shouldCallBuildPostfachAddress() { + buildBayernIdServiceKonto(); + + verify(factory).buildPostfachAddress(POSTFACH_ID); + } + + @Test + void shouldSetPostfachAddress() { + doReturn(POSTFACH_ADDRESS).when(factory).buildPostfachAddress(any()); + + var serviceKonto = buildBayernIdServiceKonto(); + + assertThat(serviceKonto.getPostfachAddresses()).containsOnly(POSTFACH_ADDRESS); + } + + @Test + void shouldCallGetTrustLevel() { + buildBayernIdServiceKonto(); + + verify(factory).getTrustLevel(formDataHeaders); + } + + @Test + void shouldSetTrustLevel() { + var serviceKonto = buildBayernIdServiceKonto(); + + assertThat(serviceKonto.getTrustLevel()).isEqualTo(TRUST_LEVEL); + } + + private ServiceKonto buildBayernIdServiceKonto() { + return factory.buildBayernIdServiceKonto(formDataHeaders); + } + } + + @Nested + class TestGetTrustLevel { + + private final Map<String, Object> formDataHeaders = Map.of(ServiceKontoFactory.KEY_BAYERN_ID_TRUST_LEVEL, + ServiceKontoTestFactory.TRUST_LEVEL); + + @Test + void shouldReturnTrustLevel() { + var trustLevel = factory.getTrustLevel(formDataHeaders); + + assertThat(trustLevel).isEqualTo(ServiceKontoTestFactory.TRUST_LEVEL); + } + + } + +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelperTest.java deleted file mode 100644 index 8d49520d80e2d2ef27042b0dc2399202e44466c9..0000000000000000000000000000000000000000 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/ServiceKontoBuildHelperTest.java +++ /dev/null @@ -1,171 +0,0 @@ -package de.ozgcloud.eingang.semantik.enginebased; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.*; -import static org.mockito.Mockito.*; - -import java.util.List; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Spy; - -import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.common.formdata.FormDataUtils; -import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory; -import de.ozgcloud.eingang.common.formdata.ServiceKonto; -import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; -import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; -import de.ozgcloud.eingang.semantik.enginebased.afm.AfmHeaderTestFactory; - -class ServiceKontoBuildHelperTest { - - @Spy - @InjectMocks - private ServiceKontoBuildHelper helper; - - @DisplayName("OSI service konto") - @Nested - class TestOsiServiceKonto { - - private static final FormData FORM_DATA = FormData.builder().formData(AfmHeaderTestFactory.createFormDataMap()).build(); - - @DisplayName("with configured postfach") - @Nested - class TestWithConfiguredPostfach { - - private static final PostfachAddress POSTFACH_ADDRESS = PostfachAddressTestFactory.create(); - - @BeforeEach - void mockBuildPostfachAddresses() { - doReturn(List.of(POSTFACH_ADDRESS)).when(helper).buildPostfachAddresses(any(), any()); - } - - @Test - void shouldContainsType() { - var serviceKonto = getServiceKonto(FORM_DATA); - - assertThat(serviceKonto.getType()).isEqualTo(ServiceKontoBuildHelper.POSTFACH_TYPE_OSI); - } - - @Test - void shouldContainsPostfachAddresses() { - var serviceKonto = getServiceKonto(FORM_DATA); - - assertThat(serviceKonto.getPostfachAddresses()).hasSize(1); - assertThat(serviceKonto.getPostfachAddresses().get(0)).isEqualTo(POSTFACH_ADDRESS); - } - - @Test - void shouldBuildPostfachAddresses() { - getServiceKonto(FORM_DATA); - - verify(helper).buildPostfachAddresses(any(), any()); - } - } - - private ServiceKonto getServiceKonto(FormData formData) { - return helper.buildOsiServiceKonto(AfmHeaderTestFactory.POSTFACH_NAME_ID, formData); - } - - @DisplayName("postfach addresses") - @Nested - class TestBuildPostfachAddresses { - - @DisplayName("with rest_response_name") - @Nested - class TestWithRestResponseName { - - @Test - void shouldCallBuildAddresses() { - getPostfachAddresses(); - - verify(helper).buildOsiPostfachV1Address(any(), anyInt()); - } - - @Test - void shouldReturnPostfachAddresses() { - var addresses = getPostfachAddresses(); - - assertThat(addresses).hasSize(1); - assertThat(addresses.get(0).getIdentifier()).isInstanceOf(StringBasedIdentifier.class); - assertThat(((StringBasedIdentifier) addresses.get(0).getIdentifier()).getPostfachId()) - .isEqualTo(AfmHeaderTestFactory.POSTFACH_NAME_ID); - assertThat(addresses.get(0).getVersion()).isEqualTo(ServiceKontoBuildHelper.POSTFACH_VERSION); - assertThat(addresses.get(0).getType()).isEqualTo(PostfachAddressTestFactory.POSTFACH_ADDRESS_TYPE); - } - - private List<PostfachAddress> getPostfachAddresses() { - return buildServiceKonto(FORM_DATA).getPostfachAddresses(); - } - } - - @DisplayName("without rest_response_name") - @Nested - class TestWithoutRestResponseName { - - private static final FormData FORM_DATA_WITHOUT_REST_RESPONSE_NAME = FormDataUtils.from(FORM_DATA) - .remove(ServiceKontoBuildHelper.REST_RESPONSE_NAME).build(); - - @Test - void shouldBuildDefault() { - getPostfachAddresses(); - - verify(helper).buildDefault(AfmHeaderTestFactory.POSTFACH_NAME_ID); - } - - @Test - void shouldReturnPostfachAddresses() { - var addresses = getPostfachAddresses(); - - assertThat(addresses).hasSize(1); - - assertThat(addresses.get(0).getIdentifier()).isInstanceOf(StringBasedIdentifier.class); - - assertThat(((StringBasedIdentifier) addresses.get(0).getIdentifier()).getPostfachId()) - .isEqualTo(AfmHeaderTestFactory.POSTFACH_NAME_ID); - assertThat(addresses.get(0).getVersion()).isEqualTo(ServiceKontoBuildHelper.POSTFACH_VERSION); - assertThat(addresses.get(0).getType()).isEqualTo(1); - } - - private List<PostfachAddress> getPostfachAddresses() { - return buildServiceKonto(FORM_DATA_WITHOUT_REST_RESPONSE_NAME).getPostfachAddresses(); - } - } - - private ServiceKonto buildServiceKonto(FormData formData) { - return helper.buildOsiServiceKonto(AfmHeaderTestFactory.POSTFACH_NAME_ID, formData); - } - } - } - - @Nested - class TestBayernIdServiceKonto { - - private static final String POSTFACH_ID = "postfach-id"; - private static final PostfachAddress POSTFACH_ADDRESS = PostfachAddressTestFactory.create(); - - @Test - void shouldSetType() { - var serviceKonto = buildBayernIdServiceKonto(); - - assertThat(serviceKonto.getType()).isEqualTo(ServiceKontoBuildHelper.POSTFACH_TYPE_BAYERN_ID); - } - - @Test - void shouldSetPostfachAddress() { - doReturn(POSTFACH_ADDRESS).when(helper).buildPostfachAddress(any()); - - var serviceKonto = buildBayernIdServiceKonto(); - - assertThat(serviceKonto.getPostfachAddresses()).containsOnly(POSTFACH_ADDRESS); - } - - ServiceKonto buildBayernIdServiceKonto() { - return helper.buildBayernIdServiceKonto(POSTFACH_ID); - } - } -} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapperTest.java index 953ff17d4427885712c3d95f1b9524b0b1dc1bc1..c5c99d30268b7e40f00ef05af208d0a346052bd0 100644 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerHeaderMapperTest.java @@ -20,6 +20,7 @@ import org.mockito.Spy; import de.ozgcloud.eingang.common.errorhandling.TechnicalException; import de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory; import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; class AfmAntragstellerHeaderMapperTest { @@ -145,7 +146,7 @@ class AfmAntragstellerHeaderMapperTest { @Test void shouldApproveResponsibility() { doReturn(true).when(mapper).isPostfachIdNotBlank(any()); - doReturn(createHeaders(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, "123")).when(mapper).getHeaders(any()); + doReturn(createHeaders(ServiceKontoFactory.KEY_BAYERN_ID_POSTFACH_ID, "123")).when(mapper).getHeaders(any()); var isResponsible = mapper.isResponsible(formData); @@ -173,8 +174,9 @@ class AfmAntragstellerHeaderMapperTest { assertFalse(isResponsible); } + @Test void shouldDenyWhenPostfachIdIsBlank() { - doReturn(createHeaders(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, null)).when(mapper).getHeaders(any()); + doReturn(createHeaders(ServiceKontoFactory.KEY_BAYERN_ID_POSTFACH_ID, null)).when(mapper).getHeaders(any()); doReturn(false).when(mapper).isPostfachIdNotBlank(any()); var isResponsible = mapper.isResponsible(formData); @@ -215,7 +217,7 @@ class AfmAntragstellerHeaderMapperTest { @Test void shouldReturnHeaders() { - var headers = createHeaders(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, "123"); + var headers = createHeaders(ServiceKontoFactory.KEY_BAYERN_ID_POSTFACH_ID, "123"); var formData = FormData.builder().formData(createHeaders(AfmHeaderMapper.HEADER_FIELD, headers)).build(); var result = mapper.getHeaders(formData); diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapperTest.java index 93ddc2f4f3e24d4dd2b4c045e6a4d8e39a23086c..7af0dcd5c208e6c3989c0e8be54948e382c45ac6 100644 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderMapperTest.java @@ -27,7 +27,6 @@ import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; -import java.util.Map; import java.util.Optional; import org.junit.jupiter.api.DisplayName; @@ -40,7 +39,7 @@ import org.mockito.Spy; import de.ozgcloud.eingang.common.formdata.FormData; import de.ozgcloud.eingang.common.formdata.FormDataUtils; import de.ozgcloud.eingang.common.formdata.ServiceKonto; -import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; +import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; class AfmHeaderMapperTest { @@ -48,7 +47,7 @@ class AfmHeaderMapperTest { @InjectMocks private AfmHeaderMapper mapper; @Mock - private ServiceKontoBuildHelper serviceKontoBuildHelper; + private ServiceKontoFactory serviceKontoFactory; @DisplayName("Parse form data") @Nested @@ -124,14 +123,14 @@ class AfmHeaderMapperTest { void shouldCallBuildServiceKontoIfPresent() { parseFormData(); - verify(serviceKontoBuildHelper).buildOsiServiceKonto(any(), eq(FORM_DATA)); + verify(serviceKontoFactory).buildOsiServiceKonto(any(), eq(FORM_DATA)); } @Test void shouldNotCallBuildServiceKontoIfNotExists() { mapper.parseFormData(FormDataUtils.from(FORM_DATA).remove(AfmHeaderMapper.POSTFACH_NAME_ID).build()); - verify(serviceKontoBuildHelper, never()).buildOsiServiceKonto(any(), any()); + verify(serviceKontoFactory, never()).buildOsiServiceKonto(any(), any()); } } @@ -155,22 +154,13 @@ class AfmHeaderMapperTest { @Test void shouldReturnServiceKonto() { - doReturn(Optional.of("id")).when(mapper).getPostfachId(any()); - when(serviceKontoBuildHelper.buildBayernIdServiceKonto(any())).thenReturn(serviceKonto); + when(serviceKontoFactory.createBayernIdServiceKonto(any())).thenReturn(Optional.of(serviceKonto)); var parsedFormData = mapper.createBayernIdServiceKonto(formData); - assertThat(parsedFormData).isPresent().get().isEqualTo(serviceKonto); + assertThat(parsedFormData).contains(serviceKonto); } - @Test - void shouldNotCallServiceKontoBuildHelper() { - doReturn(Optional.empty()).when(mapper).getPostfachId(any()); - - mapper.createBayernIdServiceKonto(formData); - - verify(serviceKontoBuildHelper, never()).buildBayernIdServiceKonto(any()); - } } } } @@ -190,7 +180,7 @@ class AfmHeaderMapperTest { void shouldRemoveRestResponseName() { var parsedFormData = parseFormData(); - assertThat(parsedFormData.getFormData().get(ServiceKontoBuildHelper.REST_RESPONSE_NAME)).isNull(); + assertThat(parsedFormData.getFormData().get(ServiceKontoFactory.REST_RESPONSE_NAME)).isNull(); } private FormData parseFormData() { @@ -199,28 +189,4 @@ class AfmHeaderMapperTest { } } - @Nested - class TestGetPostfachId { - - @Mock - private FormData formData; - - @Test - void shouldReturnPostfachId() { - doReturn(Map.of(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, AfmAntragstellerTestFactory.POSTFACH_ID)).when(mapper).getHeaderMap(any()); - - var postfachId = mapper.getPostfachId(formData); - - assertThat(postfachId).isPresent().get().isEqualTo(AfmAntragstellerTestFactory.POSTFACH_ID); - } - - @Test - void shouldReturnEmpty() { - doReturn(null).when(mapper).getHeaderMap(any()); - - var postfachId = mapper.getPostfachId(formData); - - assertThat(postfachId).isEmpty(); - } - } } \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderTestFactory.java index 4cdd6b5f7ed887dbd9841e0d844b5389b25bb366..ff8b85d511d22fd84c3a3302d29c2fe58b31eb78 100644 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderTestFactory.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmHeaderTestFactory.java @@ -28,7 +28,7 @@ import java.util.List; import java.util.Map; import java.util.UUID; -import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; +import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; public class AfmHeaderTestFactory { @@ -57,7 +57,7 @@ public class AfmHeaderTestFactory { var map = new HashMap<String, Object>(); map.put(AfmHeaderMapper.HEADER_FIELD, createHeaderMap()); map.put(AfmHeaderMapper.POSTFACH_NAME_ID, POSTFACH_NAME_ID); - map.put(ServiceKontoBuildHelper.REST_RESPONSE_NAME, List.of(createRestResponseNameMap())); + map.put(ServiceKontoFactory.REST_RESPONSE_NAME, List.of(createRestResponseNameMap())); return map; } @@ -81,7 +81,7 @@ public class AfmHeaderTestFactory { public static Map<String, Object> createCustomHeaderMap() { var map = new HashMap<String, Object>(); - map.put(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, CUSTOM_POSTFACH_ID); + map.put(ServiceKontoFactory.KEY_BAYERN_ID_POSTFACH_ID, CUSTOM_POSTFACH_ID); map.put(AfmAntragstellerHeaderMapper.KEY_VORNAME, CUSTOM_VORNAME); map.put(AfmAntragstellerHeaderMapper.KEY_NACHNAME, CUSTOM_NACHNAME); map.put(AfmAntragstellerHeaderMapper.KEY_GEBURTSNAME, CUSTOM_GEBURTSNAME); @@ -95,10 +95,10 @@ public class AfmHeaderTestFactory { } public static Map<String, Object> createRestResponseNameMap() { - return Map.of(ServiceKontoBuildHelper.REST_RESPONSE_NAME_MEMBER_SCOPE, List.of(createRestResponseNameMemberScopeMap())); + return Map.of(ServiceKontoFactory.REST_RESPONSE_NAME_MEMBER_SCOPE, List.of(createRestResponseNameMemberScopeMap())); } private static Map<String, Object> createRestResponseNameMemberScopeMap() { - return Map.of(ServiceKontoBuildHelper.REST_RESPONSE_NAME_MEMBER_SCOPE_MAILBOX_TYPE, REST_RESPONSE_NAME_MEMBER_SCOPE_MAILBOX_TYPE_VALUE); + return Map.of(ServiceKontoFactory.REST_RESPONSE_NAME_MEMBER_SCOPE_MAILBOX_TYPE, REST_RESPONSE_NAME_MEMBER_SCOPE_MAILBOX_TYPE_VALUE); } } \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java index cccd254d34afde615debd689c4c5f73fd1c7dd5d..05473793842bc54d734988d7cf1ad872d5789b7a 100644 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java @@ -24,7 +24,7 @@ import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory; import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory; import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; -import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; +import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; class DFoerdermittelEngineBasedSemantikAdapterTest { @@ -33,7 +33,7 @@ class DFoerdermittelEngineBasedSemantikAdapterTest { private DFoerdermittelEngineBasedSemantikAdapter adapter; @Mock - private ServiceKontoBuildHelper serviceKontoHelper; + private ServiceKontoFactory serviceKontoFactory; @Nested class TestIsResponsible { @@ -174,7 +174,7 @@ class DFoerdermittelEngineBasedSemantikAdapterTest { @BeforeEach void init() { - when(serviceKontoHelper.buildOsiServiceKonto(any())).thenReturn(ServiceKontoTestFactory.create()); + when(serviceKontoFactory.buildOsiServiceKonto(any())).thenReturn(ServiceKontoTestFactory.create()); } @Test @@ -191,7 +191,7 @@ class DFoerdermittelEngineBasedSemantikAdapterTest { void shouldRemovePrefix() { adapter.addServiceKonto(DFoerdermittelFormDataTestFactory.create(), DFoerdermittelFormDataTestFactory.createFachnachrichtMap()); - verify(serviceKontoHelper).buildOsiServiceKonto(DFoerdermittelFormDataTestFactory.POSTFACH_ID); + verify(serviceKontoFactory).buildOsiServiceKonto(DFoerdermittelFormDataTestFactory.POSTFACH_ID); } } diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapperTest.java index 89c782671e7e568ffebc70299df1fc8431499a71..56df1f639ff2bac7f59b24ba6d36bf387227ee59 100644 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formsolutions/FormSolutionsHeaderMapperTest.java @@ -38,7 +38,7 @@ import org.mockito.Spy; import de.ozgcloud.eingang.common.formdata.FormData; import de.ozgcloud.eingang.common.formdata.FormDataUtils; import de.ozgcloud.eingang.common.formdata.FormHeader; -import de.ozgcloud.eingang.semantik.enginebased.ServiceKontoBuildHelper; +import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; class FormSolutionsHeaderMapperTest { @@ -46,7 +46,7 @@ class FormSolutionsHeaderMapperTest { @InjectMocks private final FormSolutionsHeaderMapper mapper = new FormSolutionsHeaderMapper(); @Mock - private ServiceKontoBuildHelper serviceKontoBuildHelper; + private ServiceKontoFactory serviceKontoFactory; @DisplayName("Parse formData") @Nested @@ -119,7 +119,7 @@ class FormSolutionsHeaderMapperTest { void shouldCallServiceKontoBuildHelper() { buildFormHeader(); - verify(serviceKontoBuildHelper).buildOsiServiceKonto(any()); + verify(serviceKontoFactory).buildOsiServiceKonto(any()); } @Test @@ -128,7 +128,7 @@ class FormSolutionsHeaderMapperTest { mapper.buildFormHeader(formDataWithoutPostkorbHandle); - verify(serviceKontoBuildHelper, never()).buildOsiServiceKonto(any()); + verify(serviceKontoFactory, never()).buildOsiServiceKonto(any()); } }