Skip to content
Snippets Groups Projects
Commit ceb321dd authored by OZGCloud's avatar OZGCloud
Browse files

OZG-4797 set bayernId service konto

parent 8e874feb
No related merge requests found
...@@ -34,6 +34,7 @@ import org.springframework.stereotype.Component; ...@@ -34,6 +34,7 @@ import org.springframework.stereotype.Component;
import de.ozgcloud.eingang.common.formdata.FormData; import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.formdata.FormDataUtils; import de.ozgcloud.eingang.common.formdata.FormDataUtils;
import de.ozgcloud.eingang.common.formdata.FormHeader; 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.enginebased.ServiceKontoBuildHelper;
@Component @Component
...@@ -73,24 +74,36 @@ class AfmHeaderMapper implements AfmEngineBasedMapper { ...@@ -73,24 +74,36 @@ class AfmHeaderMapper implements AfmEngineBasedMapper {
.formEngineName(AFM_FORMENGINE_NAME) .formEngineName(AFM_FORMENGINE_NAME)
.build(); .build();
Optional.ofNullable(getNameId(formData)) createBayernIdServiceKonto(formData).or(() -> createOsiServiceKonto(formData)).ifPresent(formHeaderBuilder::setServiceKonto);
.map(nameId -> serviceKontoBuildHelper.buildOsiServiceKonto(nameId, formData))
.ifPresent(formHeaderBuilder::setServiceKonto);
return formHeaderBuilder; return formHeaderBuilder;
} }
private ZonedDateTime getCreatedAt(Map<String, Object> headerDataMap) {
return ZonedDateTime.parse((String) headerDataMap.get(TIMESTAMP), DateTimeFormatter.ISO_OFFSET_DATE_TIME);
}
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);
}
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private Map<String, Object> getHeaderMap(FormData formData) { Map<String, Object> getHeaderMap(FormData formData) {
return (Map<String, Object>) formData.getFormData().get(HEADER_FIELD); return (Map<String, Object>) formData.getFormData().get(HEADER_FIELD);
} }
private ZonedDateTime getCreatedAt(Map<String, Object> headerDataMap) { Optional<ServiceKonto> createOsiServiceKonto(FormData formData) {
return ZonedDateTime.parse((String) headerDataMap.get(TIMESTAMP), DateTimeFormatter.ISO_OFFSET_DATE_TIME); return getNameId(formData).map(nameId -> serviceKontoBuildHelper.buildOsiServiceKonto(nameId, formData));
} }
private String getNameId(FormData formData) { private Optional<String> getNameId(FormData formData) {
return (String) formData.getFormData().get(POSTFACH_NAME_ID); return Optional.of(formData.getFormData()).map(formDataMap -> formDataMap.get(POSTFACH_NAME_ID)).map(String.class::cast);
} }
private FormData removeMappedData(FormData formData) { private FormData removeMappedData(FormData formData) {
......
...@@ -27,6 +27,9 @@ import static org.assertj.core.api.Assertions.*; ...@@ -27,6 +27,9 @@ import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*; import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
import java.util.Map;
import java.util.Optional;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
...@@ -36,13 +39,14 @@ import org.mockito.Spy; ...@@ -36,13 +39,14 @@ import org.mockito.Spy;
import de.ozgcloud.eingang.common.formdata.FormData; import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.formdata.FormDataUtils; 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.enginebased.ServiceKontoBuildHelper;
class AfmHeaderMapperTest { class AfmHeaderMapperTest {
@Spy @Spy
@InjectMocks @InjectMocks
private final AfmHeaderMapper mapper = new AfmHeaderMapper(); private AfmHeaderMapper mapper;
@Mock @Mock
private ServiceKontoBuildHelper serviceKontoBuildHelper; private ServiceKontoBuildHelper serviceKontoBuildHelper;
...@@ -106,6 +110,9 @@ class AfmHeaderMapperTest { ...@@ -106,6 +110,9 @@ class AfmHeaderMapperTest {
@Nested @Nested
class TestServiceKonto { class TestServiceKonto {
@DisplayName("OSI")
@Nested
class TestOsiServiceKonto {
@Test @Test
void shouldCallBuildServiceKontoIfPresent() { void shouldCallBuildServiceKontoIfPresent() {
parseFormData(); parseFormData();
...@@ -121,6 +128,45 @@ class AfmHeaderMapperTest { ...@@ -121,6 +128,45 @@ class AfmHeaderMapperTest {
} }
} }
@DisplayName("BayernID")
@Nested
class TestBayernId {
@Mock
private FormData formData;
@Mock
private ServiceKonto serviceKonto;
@Test
void shouldCallCreateBayernIdServiceKonto() {
var formData = FormData.builder().formData(AfmHeaderTestFactory.createFormDataMapWithExtendedHeaders()).build();
mapper.parseFormData(formData);
verify(mapper).createBayernIdServiceKonto(formData);
}
@Test
void shouldReturnServiceKonto() {
doReturn(Optional.of("id")).when(mapper).getPostfachId(any());
when(serviceKontoBuildHelper.buildBayernIdServiceKonto(any())).thenReturn(serviceKonto);
var parsedFormData = mapper.createBayernIdServiceKonto(formData);
assertThat(parsedFormData).isPresent().get().isEqualTo(serviceKonto);
}
@Test
void shouldNotCallServiceKontoBuildHelper() {
doReturn(Optional.empty()).when(mapper).getPostfachId(any());
mapper.createBayernIdServiceKonto(formData);
verify(serviceKontoBuildHelper, never()).buildBayernIdServiceKonto(any());
}
}
}
private FormData parseFormData() { private FormData parseFormData() {
return mapper.parseFormData(FORM_DATA); return mapper.parseFormData(FORM_DATA);
} }
...@@ -152,4 +198,29 @@ class AfmHeaderMapperTest { ...@@ -152,4 +198,29 @@ 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
...@@ -62,6 +62,13 @@ public class AfmHeaderTestFactory { ...@@ -62,6 +62,13 @@ public class AfmHeaderTestFactory {
return map; return map;
} }
@SuppressWarnings("unchecked")
public static Map<String, Object> createFormDataMapWithExtendedHeaders() {
var map = new HashMap<>(createFormDataMap());
((Map<String, Object>) map.get(AfmHeaderMapper.HEADER_FIELD)).putAll(createCustomHeaderMap());
return map;
}
public static Map<String, Object> createHeaderMap() { public static Map<String, Object> createHeaderMap() {
var map = new HashMap<String, Object>(); var map = new HashMap<String, Object>();
map.put(AfmHeaderMapper.ID, ID); map.put(AfmHeaderMapper.ID, ID);
...@@ -69,7 +76,6 @@ public class AfmHeaderTestFactory { ...@@ -69,7 +76,6 @@ public class AfmHeaderTestFactory {
map.put(AfmHeaderMapper.FORM_ID, FORM_ID); map.put(AfmHeaderMapper.FORM_ID, FORM_ID);
map.put(AfmHeaderMapper.FORM, FORM); map.put(AfmHeaderMapper.FORM, FORM);
map.put(AfmHeaderMapper.SENDER, SENDER); map.put(AfmHeaderMapper.SENDER, SENDER);
map.putAll(createCustomHeaderMap());
return map; return map;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment