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

OZG-4697 read bayern header from xml

parent 714ef6a9
No related branches found
No related tags found
No related merge requests found
/*
* Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.eingang.common.formdata;
import static lombok.AccessLevel.*;
import lombok.NoArgsConstructor;
@NoArgsConstructor(access = PRIVATE)
public class BayernHeader {
public static final String HEADER_POSTFACH_ID = "u:saml_legacypostkorbhandle";
public static final String HEADER_VORNAME = "u:saml_givenname";
public static final String HEADER_NACHNAME = "u:saml_surename";
public static final String HEADER_GEBURTSORT = "u:saml_placeofbirth";
// TODO: public static final String HEADER_GEBURTSNAME = "u:saml_??";
public static final String HEADER_EMAIL = "u:saml_mail";
public static final String HEADER_TELEFON = "u:saml_telephonenumber";
public static final String HEADER_STRASSE = "u:saml_postaladdress";
public static final String HEADER_PLZ = "u:saml_postalcode";
public static final String HEADER_ORT = "u:saml_localityname";
}
...@@ -39,6 +39,7 @@ import org.w3c.dom.Document; ...@@ -39,6 +39,7 @@ import org.w3c.dom.Document;
import de.ozgcloud.eingang.common.formdata.FormData; import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.formdata.IncomingFile; import de.ozgcloud.eingang.common.formdata.IncomingFile;
import de.ozgcloud.eingang.common.formdata.IncomingFileGroup; import de.ozgcloud.eingang.common.formdata.IncomingFileGroup;
import de.ozgcloud.eingang.intelliform.bayern.BayernHeaderReader;
import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper; import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
...@@ -86,6 +87,9 @@ class SemantikFormDataMapper { ...@@ -86,6 +87,9 @@ class SemantikFormDataMapper {
@Autowired @Autowired
private final AttachmentsContentAdder attachmentsContentAdder; private final AttachmentsContentAdder attachmentsContentAdder;
@Autowired
private final BayernHeaderReader bayernHeaderReader;
public FormData mapToFormData(Deposit depositData) { public FormData mapToFormData(Deposit depositData) {
var xmlFormDataStream = getXmlFormData(depositData.getData()); var xmlFormDataStream = getXmlFormData(depositData.getData());
...@@ -156,6 +160,7 @@ class SemantikFormDataMapper { ...@@ -156,6 +160,7 @@ class SemantikFormDataMapper {
map.put(HEADER_CUSTOMER_ID, document.getDocumentElement().getAttribute(HEADER_CUSTOMER_ID)); map.put(HEADER_CUSTOMER_ID, document.getDocumentElement().getAttribute(HEADER_CUSTOMER_ID));
map.put(HEADER_CLIENT, document.getDocumentElement().getAttribute(HEADER_CLIENT)); map.put(HEADER_CLIENT, document.getDocumentElement().getAttribute(HEADER_CLIENT));
map.put(HEADER_CLIENT_ID, document.getDocumentElement().getAttribute(HEADER_CLIENT_ID)); map.put(HEADER_CLIENT_ID, document.getDocumentElement().getAttribute(HEADER_CLIENT_ID));
map.putAll(bayernHeaderReader.getHeader(document));
return map; return map;
} }
} }
\ No newline at end of file
/*
* Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.eingang.intelliform.bayern;
import static de.ozgcloud.eingang.common.formdata.BayernHeader.*;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Component;
import org.w3c.dom.Document;
@Component
public class BayernHeaderReader {
public Map<String, Object> getHeader(Document document) {
var map = new HashMap<String, Object>();
map.put(HEADER_POSTFACH_ID, document.getDocumentElement().getAttribute(HEADER_POSTFACH_ID));
map.put(HEADER_VORNAME, document.getDocumentElement().getAttribute(HEADER_VORNAME));
map.put(HEADER_NACHNAME, document.getDocumentElement().getAttribute(HEADER_NACHNAME));
map.put(HEADER_GEBURTSORT, document.getDocumentElement().getAttribute(HEADER_GEBURTSORT));
map.put(HEADER_EMAIL, document.getDocumentElement().getAttribute(HEADER_EMAIL));
map.put(HEADER_TELEFON, document.getDocumentElement().getAttribute(HEADER_TELEFON));
map.put(HEADER_STRASSE, document.getDocumentElement().getAttribute(HEADER_STRASSE));
map.put(HEADER_PLZ, document.getDocumentElement().getAttribute(HEADER_PLZ));
map.put(HEADER_ORT, document.getDocumentElement().getAttribute(HEADER_ORT));
return map;
}
}
\ No newline at end of file
...@@ -25,6 +25,8 @@ package de.ozgcloud.eingang.intelliform; ...@@ -25,6 +25,8 @@ package de.ozgcloud.eingang.intelliform;
import static de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory.*; import static de.ozgcloud.eingang.common.formdata.IncomingFileGroupTestFactory.*;
import static org.assertj.core.api.Assertions.*; import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap; import java.util.HashMap;
...@@ -33,18 +35,31 @@ import java.util.Map; ...@@ -33,18 +35,31 @@ import java.util.Map;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.ParserConfigurationException;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
import de.ozgcloud.eingang.common.formdata.BayernHeader;
import de.ozgcloud.eingang.common.formdata.FormData; import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.formdata.IncomingFile; import de.ozgcloud.eingang.common.formdata.IncomingFile;
import de.ozgcloud.eingang.intelliform.bayern.BayernHeaderReader;
import de.ozgcloud.eingang.intelliform.bayern.BayernHeaderTestFactory;
import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper; import de.ozgcloud.eingang.semantik.enginebased.FilesMapperHelper;
class SemantikFormDataMapperTest { class SemantikFormDataMapperTest {
private SemantikFormDataMapper mapper = new SemantikFormDataMapper(new XmlToJavaMapsMapper(), new FormDataIncomingFileMapper(), private SemantikFormDataMapper mapper;
new RepresentationsCalculator(), new DepositRequestIncomingFileMapper(), new AttachmentsContentAdder());
@Mock
private BayernHeaderReader bayernHeaderReader;
@BeforeEach
void setup() {
mapper = new SemantikFormDataMapper(new XmlToJavaMapsMapper(), new FormDataIncomingFileMapper(),
new RepresentationsCalculator(), new DepositRequestIncomingFileMapper(), new AttachmentsContentAdder(), bayernHeaderReader);
}
@Nested @Nested
class TestMapFormData { class TestMapFormData {
...@@ -136,6 +151,17 @@ class SemantikFormDataMapperTest { ...@@ -136,6 +151,17 @@ class SemantikFormDataMapperTest {
.containsEntry(SemantikFormDataMapper.HEADER_CLIENT_ID, "land"); .containsEntry(SemantikFormDataMapper.HEADER_CLIENT_ID, "land");
} }
@Test
void shouldAddBayernHeader() {
Map<String, Object> bayernHeader = Map.of(BayernHeader.HEADER_POSTFACH_ID, BayernHeaderTestFactory.POSTFACH_ID);
when(bayernHeaderReader.getHeader(any())).thenReturn(bayernHeader);
var formData = mapToFormData(deposit);
verify(bayernHeaderReader).getHeader(any());
assertThat(getHeader(formData)).containsEntry(BayernHeader.HEADER_POSTFACH_ID,BayernHeaderTestFactory.POSTFACH_ID);
}
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private Map<String, Object> getHeader(FormData formData) { private Map<String, Object> getHeader(FormData formData) {
return (Map<String, Object>) formData.getFormData().get(SemantikFormDataMapper.HEADER_FIELD); return (Map<String, Object>) formData.getFormData().get(SemantikFormDataMapper.HEADER_FIELD);
......
/*
* Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.eingang.intelliform.bayern;
import static de.ozgcloud.eingang.common.formdata.BayernHeader.*;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
class BayernHeaderReaderTest {
@InjectMocks
private BayernHeaderReader reader;
@Mock
private Document document;
@Mock
private Element element;
@BeforeEach
void setup() {
when(document.getDocumentElement()).thenReturn(element);
}
@Test
void shouldAddPostfachId() {
when(element.getAttribute(any())).thenReturn(BayernHeaderTestFactory.POSTFACH_ID);
var formData = reader.getHeader(document);
assertThat(formData).containsEntry(HEADER_POSTFACH_ID, BayernHeaderTestFactory.POSTFACH_ID);
}
@Test
void shouldAddVorname() {
when(element.getAttribute(any())).thenReturn(BayernHeaderTestFactory.VORNAME);
var formData = reader.getHeader(document);
assertThat(formData).containsEntry(HEADER_VORNAME, BayernHeaderTestFactory.VORNAME);
}
@Test
void shouldAddNachname() {
when(element.getAttribute(any())).thenReturn(BayernHeaderTestFactory.NACHNAME);
var formData = reader.getHeader(document);
assertThat(formData).containsEntry(HEADER_NACHNAME, BayernHeaderTestFactory.NACHNAME);
}
@Test
void shouldAddGeburtsort() {
when(element.getAttribute(any())).thenReturn(BayernHeaderTestFactory.GEBURTSORT);
var formData = reader.getHeader(document);
assertThat(formData).containsEntry(HEADER_GEBURTSORT, BayernHeaderTestFactory.GEBURTSORT);
}
@Test
void shouldAddEmail() {
when(element.getAttribute(any())).thenReturn(BayernHeaderTestFactory.EMAIL);
var formData = reader.getHeader(document);
assertThat(formData).containsEntry(HEADER_EMAIL, BayernHeaderTestFactory.EMAIL);
}
@Test
void shouldAddTelefon() {
when(element.getAttribute(any())).thenReturn(BayernHeaderTestFactory.TELEFON);
var formData = reader.getHeader(document);
assertThat(formData).containsEntry(HEADER_TELEFON, BayernHeaderTestFactory.TELEFON);
}
@Test
void shouldAddStrasse() {
when(element.getAttribute(any())).thenReturn(BayernHeaderTestFactory.STRASSE);
var formData = reader.getHeader(document);
assertThat(formData).containsEntry(HEADER_STRASSE, BayernHeaderTestFactory.STRASSE);
}
@Test
void shouldAddPlz() {
when(element.getAttribute(any())).thenReturn(BayernHeaderTestFactory.PLZ);
var formData = reader.getHeader(document);
assertThat(formData).containsEntry(HEADER_PLZ, BayernHeaderTestFactory.PLZ);
}
@Test
void shouldAddOrt() {
when(element.getAttribute(any())).thenReturn(BayernHeaderTestFactory.ORT);
var formData = reader.getHeader(document);
assertThat(formData).containsEntry(HEADER_ORT, BayernHeaderTestFactory.ORT);
}
}
\ No newline at end of file
/*
* Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.eingang.intelliform.bayern;
import static de.ozgcloud.eingang.common.formdata.BayernHeader.*;
import java.util.HashMap;
import java.util.Map;
public class BayernHeaderTestFactory {
public static final String POSTFACH_ID = "postfach_id";
public static final String VORNAME = "vorname";
public static final String NACHNAME = "nachname";
public static final String GEBURTSORT = "geburtsort";
public static final String EMAIL = "email";
public static final String TELEFON = "telefon";
public static final String STRASSE = "strasse";
public static final String PLZ = "plz";
public static final String ORT = "ort";
public static Map<String, Object> create() {
var map = new HashMap<String, Object>();
map.put(HEADER_POSTFACH_ID, POSTFACH_ID);
map.put(HEADER_VORNAME, VORNAME);
map.put(HEADER_NACHNAME, NACHNAME);
map.put(HEADER_GEBURTSORT, GEBURTSORT);
map.put(HEADER_EMAIL, EMAIL);
map.put(HEADER_TELEFON, TELEFON);
map.put(HEADER_STRASSE, STRASSE);
map.put(HEADER_PLZ, PLZ);
map.put(HEADER_ORT, ORT);
return map;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment