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

OZG-4697 check if mapper is responsible

parent 97da30e8
No related branches found
No related tags found
No related merge requests found
package de.ozgcloud.eingang.semantik.enginebased.afm;
import static java.util.Objects.*;
import static org.apache.commons.lang3.StringUtils.*;
import java.util.Collections;
import java.util.Map;
import org.springframework.stereotype.Component;
import de.ozgcloud.eingang.common.errorhandling.TechnicalException;
import de.ozgcloud.eingang.common.formdata.FormData;
@Component
public class AfmAntragstellerHeaderMapper {
static final String HEADER_POSTFACH_ID = "u:saml_legacypostkorbhandle";
static final String HEADER_VORNAME = "u:saml_givenname";
static final String HEADER_NACHNAME = "u:saml_surename";
static final String HEADER_GEBURTSORT = "u:saml_placeofbirth";
static final String KEY_POSTFACH_ID = "u:saml_legacypostkorbhandle";
static final String KEY_VORNAME = "u:saml_givenname";
static final String KEY_NACHNAME = "u:saml_surename";
static final String KEY_GEBURTSORT = "u:saml_placeofbirth";
// TODO: public static final String HEADER_GEBURTSNAME = "u:saml_??";
static final String HEADER_EMAIL = "u:saml_mail";
static final String HEADER_TELEFON = "u:saml_telephonenumber";
static final String HEADER_STRASSE = "u:saml_postaladdress";
static final String HEADER_PLZ = "u:saml_postalcode";
static final String HEADER_ORT = "u:saml_localityname";
static final String KEY_EMAIL = "u:saml_mail";
static final String KEY_TELEFON = "u:saml_telephonenumber";
static final String KEY_STRASSE = "u:saml_postaladdress";
static final String KEY_PLZ = "u:saml_postalcode";
static final String KEY_ORT = "u:saml_localityname";
public FormData parseAntragstellerData(FormData formData) {
return formData;
}
public boolean isResponsible(FormData formData) {
return false;
var headers = getHeaders(formData);
return headers.containsKey(KEY_POSTFACH_ID) && isPostfachIdNotBlank(headers.get(KEY_POSTFACH_ID));
}
@SuppressWarnings("unchecked")
Map<String, Object> getHeaders(FormData formData) {
return (Map<String, Object>) formData.getFormData().getOrDefault(AfmHeaderMapper.HEADER_FIELD, Collections.emptyMap());
}
boolean isPostfachIdNotBlank(Object postfachId) {
if (isNull(postfachId)) {
return false;
}
if (postfachId instanceof String id) {
return isNotBlank(id);
}
throw new TechnicalException("Unexpected type of postfach id: " + postfachId.getClass().getName());
}
}
package de.ozgcloud.eingang.semantik.enginebased.afm;
import static org.assertj.core.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
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.provider.NullAndEmptySource;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
import de.ozgcloud.eingang.common.errorhandling.TechnicalException;
import de.ozgcloud.eingang.common.formdata.FormData;
class AfmAntragstellerHeaderMapperTest {
@Spy
@InjectMocks
private AfmAntragstellerHeaderMapper mapper;
@Nested
class TestParseAntragstellerData {
}
@Nested
class TestIsResponsible {
@Mock
private FormData formData;
@BeforeEach
void setup() {
}
@Test
void shouldApproveResponsibility() {
doReturn(true).when(mapper).isPostfachIdNotBlank(any());
doReturn(createHeaders(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, "123")).when(mapper).getHeaders(any());
var isResponsible = mapper.isResponsible(formData);
assertTrue(isResponsible);
}
@Nested
class TestDenyResponsibility {
@Test
void shouldDenyWhenNoHeader() {
doReturn(Collections.emptyMap()).when(mapper).getHeaders(any());
var isResponsible = mapper.isResponsible(FormData.builder().build());
assertFalse(isResponsible);
}
@Test
void shouldDenyWhenNoPostfachId() {
doReturn(createHeaders(AfmAntragstellerHeaderMapper.KEY_VORNAME, "name")).when(mapper).getHeaders(any());
var isResponsible = mapper.isResponsible(formData);
assertFalse(isResponsible);
}
void shouldDenyWhenPostfachIdIsBlank() {
doReturn(createHeaders(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, null)).when(mapper).getHeaders(any());
doReturn(false).when(mapper).isPostfachIdNotBlank(any());
var isResponsible = mapper.isResponsible(formData);
assertFalse(isResponsible);
}
@Nested
class TestGetHeaders {
@Test
void shouldReturnHeaders() {
var headers = createHeaders(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, "123");
var formData = FormData.builder().formData(createHeaders(AfmHeaderMapper.HEADER_FIELD, headers)).build();
var result = mapper.getHeaders(formData);
assertThat(result).isEqualTo(headers);
}
@Test
void shouldReturnEmptyMapWhenNoHeaders() {
var formData = FormData.builder().build();
var result = mapper.getHeaders(formData);
assertThat(result).isEmpty();
}
}
@Nested
class TestIsPostfachIdNotBlank {
@ParameterizedTest
@NullAndEmptySource
void shouldReturnFalseWhenPostfachIdIsBlank(String postfachId) {
var isNotBlank = mapper.isPostfachIdNotBlank(postfachId);
assertFalse(isNotBlank);
}
@Test
void shouldApprove() {
var isNotBlank = mapper.isPostfachIdNotBlank("123");
assertTrue(isNotBlank);
}
@Test
void shouldFailOnUnexpectedType() {
var postfachId = new Object();
assertThrows(TechnicalException.class, () -> mapper.isPostfachIdNotBlank(postfachId));
}
}
}
}
private Map<String, Object> createHeaders(String key, Object value) {
var map = new HashMap<String, Object>();
map.put(key, value);
return map;
}
}
\ No newline at end of file
......@@ -74,15 +74,15 @@ public class AfmHeaderTestFactory {
public static Map<String, Object> createCustomHeaderMap() {
var map = new HashMap<String, Object>();
map.put(AfmAntragstellerHeaderMapper.HEADER_POSTFACH_ID, CUSTOM_POSTFACH_ID);
map.put(AfmAntragstellerHeaderMapper.HEADER_VORNAME, CUSTOM_VORNAME);
map.put(AfmAntragstellerHeaderMapper.HEADER_NACHNAME, CUSTOM_NACHNAME);
map.put(AfmAntragstellerHeaderMapper.HEADER_GEBURTSORT, CUSTOM_GEBURTSORT);
map.put(AfmAntragstellerHeaderMapper.HEADER_EMAIL, CUSTOM_EMAIL);
map.put(AfmAntragstellerHeaderMapper.HEADER_TELEFON, CUSTOM_TELEFON);
map.put(AfmAntragstellerHeaderMapper.HEADER_STRASSE, CUSTOM_STRASSE);
map.put(AfmAntragstellerHeaderMapper.HEADER_PLZ, CUSTOM_PLZ);
map.put(AfmAntragstellerHeaderMapper.HEADER_ORT, CUSTOM_ORT);
map.put(AfmAntragstellerHeaderMapper.KEY_POSTFACH_ID, CUSTOM_POSTFACH_ID);
map.put(AfmAntragstellerHeaderMapper.KEY_VORNAME, CUSTOM_VORNAME);
map.put(AfmAntragstellerHeaderMapper.KEY_NACHNAME, CUSTOM_NACHNAME);
map.put(AfmAntragstellerHeaderMapper.KEY_GEBURTSORT, CUSTOM_GEBURTSORT);
map.put(AfmAntragstellerHeaderMapper.KEY_EMAIL, CUSTOM_EMAIL);
map.put(AfmAntragstellerHeaderMapper.KEY_TELEFON, CUSTOM_TELEFON);
map.put(AfmAntragstellerHeaderMapper.KEY_STRASSE, CUSTOM_STRASSE);
map.put(AfmAntragstellerHeaderMapper.KEY_PLZ, CUSTOM_PLZ);
map.put(AfmAntragstellerHeaderMapper.KEY_ORT, CUSTOM_ORT);
return map;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment