aboutsummaryrefslogtreecommitdiff
path: root/modules/authmodule-eIDAS-v2
diff options
context:
space:
mode:
authorThomas <>2022-10-17 14:44:34 +0200
committerThomas <>2022-10-17 14:44:34 +0200
commit7e7291581ca59bb8f5c8fbf18dba37e0d262fa7a (patch)
treeada18f64245024ea987bff3bd3498862ca221a58 /modules/authmodule-eIDAS-v2
parentadfcf67d75156dd80aec0755b87cd65cf8d82dd7 (diff)
downloadNational_eIDAS_Gateway-7e7291581ca59bb8f5c8fbf18dba37e0d262fa7a.tar.gz
National_eIDAS_Gateway-7e7291581ca59bb8f5c8fbf18dba37e0d262fa7a.tar.bz2
National_eIDAS_Gateway-7e7291581ca59bb8f5c8fbf18dba37e0d262fa7a.zip
feat(zmr): requesting latest version for ZMR update by using bPK only
Diffstat (limited to 'modules/authmodule-eIDAS-v2')
-rw-r--r--modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java2
-rw-r--r--modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/zmr/ZmrSoapClient.java10
-rw-r--r--modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientTest.java108
3 files changed, 117 insertions, 3 deletions
diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java
index 3c41bf0a..faf38b64 100644
--- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java
+++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java
@@ -152,6 +152,8 @@ public class Constants {
+ ".req.organisation.behoerdennr";
public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_REQ_UPDATE_REASON_CODE = CONIG_PROPS_EIDAS_ZMRCLIENT
+ ".req.update.reason.code";
+ public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_UPDATE_WITH_BPK_ONLY = CONIG_PROPS_EIDAS_ZMRCLIENT
+ + ".req.update.with.bpk.only";
public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_REQ_UPDATE_REASON_TEXT = CONIG_PROPS_EIDAS_ZMRCLIENT
+ ".req.update.reason.text";
public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_KEYSTORE_PATH = CONIG_PROPS_EIDAS_ZMRCLIENT
diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/zmr/ZmrSoapClient.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/zmr/ZmrSoapClient.java
index 444bd4e7..b6e0cbb7 100644
--- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/zmr/ZmrSoapClient.java
+++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/zmr/ZmrSoapClient.java
@@ -733,9 +733,13 @@ public class ZmrSoapClient extends AbstractSoapClient implements IZmrClient {
natPersonInfos.getIdentification().add(bpkInfo);
// set MDS
- nameInfo.setVorname(registerResult.getGivenName());
- nameInfo.setFamilienname(registerResult.getFamilyName());
- natPersonInfos.setGeburtsdatum(registerResult.getDateOfBirth());
+ if (!basicConfig.getBasicConfigurationBoolean(
+ Constants.CONIG_PROPS_EIDAS_ZMRCLIENT_UPDATE_WITH_BPK_ONLY, false)) {
+ nameInfo.setVorname(registerResult.getGivenName());
+ nameInfo.setFamilienname(registerResult.getFamilyName());
+ natPersonInfos.setGeburtsdatum(registerResult.getDateOfBirth());
+
+ }
//set bPK
bpkInfo.setValue(registerResult.getBpk());
diff --git a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientTest.java b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientTest.java
index 1f0ddb02..eb1e68ce 100644
--- a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientTest.java
+++ b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientTest.java
@@ -38,6 +38,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.github.skjolber.mockito.soap.SoapServiceRule;
import at.asitplus.eidas.specific.core.test.config.dummy.MsConnectorDummyConfigMap;
+import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.ZmrSoapClient;
import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.ZmrSoapClient.ZmrRegisterResult;
import at.asitplus.eidas.specific.modules.auth.eidas.v2.controller.AdresssucheController.AdresssucheOutput;
@@ -102,6 +103,9 @@ public class ZmrClientTest {
if (zmrMock == null) {
zmrMock = soap.mock(ServicePort.class, "http://localhost:1234/demozmr");
}
+
+ basicConfig.putConfigValue(Constants.CONIG_PROPS_EIDAS_ZMRCLIENT_UPDATE_WITH_BPK_ONLY, "false");
+
}
@Test
@@ -1078,6 +1082,7 @@ public class ZmrClientTest {
assertEquals("1 req. givenName", "urn:publicid:gv.at:cdid+ZP",
pSuche.getNatuerlichePerson().getIdentification().get(0).getType());
assertNotNull("1 mds", pSuche.getNatuerlichePerson());
+
assertEquals("1 req. givenName", toUpdate.getGivenName(),
pSuche.getNatuerlichePerson().getPersonenName().getVorname());
assertEquals("1 req. familyName", toUpdate.getFamilyName(),
@@ -1122,6 +1127,109 @@ public class ZmrClientTest {
@Test
@SneakyThrows
+ public void updateProcessRequiredWithBpkOnly() {
+ BigInteger processId = new BigInteger(RandomStringUtils.randomNumeric(6));
+
+ basicConfig.putConfigValue(Constants.CONIG_PROPS_EIDAS_ZMRCLIENT_UPDATE_WITH_BPK_ONLY, "true");
+
+ final String personalIdentifier = "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit";
+ final String cc = "DE";
+ final SimpleEidasData eidasData = SimpleEidasData.builder()
+ .citizenCountryCode(cc)
+ .familyName("XXXvon Brandenburg")
+ .givenName("XXXClaus - Maria")
+ .dateOfBirth("1994-12-31")
+ .personalIdentifier(cc + "/AT/" + personalIdentifier)
+ .pseudonym(personalIdentifier)
+ .birthName("XXXvon Heuburg")
+ .placeOfBirth("Hintergigritzpotschn")
+ .build();
+
+ RegisterResult toUpdate = RegisterResult.builder()
+ .bpk("UgeknNsc26lVuB7U/uYGVmWtnnA=")
+ .dateOfBirth("1994-12-31")
+ .familyName("XXXvon Brandenburg")
+ .givenName("XXXClaus - Maria")
+ //.birthName("")
+ //.placeOfBirth("")
+ //.pseudonym(Arrays.asList(""))
+ .build();
+
+
+ final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
+
+ // inject response
+ when(zmrMock.service(zmrReq.capture(), any()))
+ .thenReturn(loadResponseFromFile("/data/zmr/seq_1-4_kitt_get_latest_version_resp.xml"))
+ .thenReturn(loadResponseFromFile("/data/zmr/seq_1-6_kitt_update_resp.xml"))
+ .thenThrow(new RuntimeException("Request not needed any more"));
+
+
+ // execute operation
+ ZmrRegisterResult resp = client.update(processId, toUpdate, eidasData);
+
+ // validate request
+ assertEquals("wrong number of req.", 2, zmrReq.getAllValues().size());
+
+ // check get laterst version request
+ RequestType firstReq = zmrReq.getAllValues().get(0);
+ assertNotNull("1 req.", firstReq.getPersonSuchenRequest());
+ checkBasicRequestParameters(firstReq , PROCESS_TASK_SEARCH, processId, "jUnit123456");
+ PersonSuchenRequest pSuche = firstReq .getPersonSuchenRequest();
+ checkSearchParameters(pSuche.getPersonensucheInfo());
+ assertNull("1 req. ZMR Zahl", pSuche.getZMRZahl());
+ assertEquals("1 req. identifier size", 1,
+ pSuche.getNatuerlichePerson().getIdentification().size());
+ assertEquals("1 req. givenName", toUpdate.getBpk(),
+ pSuche.getNatuerlichePerson().getIdentification().get(0).getValue());
+ assertEquals("1 req. givenName", "urn:publicid:gv.at:cdid+ZP",
+ pSuche.getNatuerlichePerson().getIdentification().get(0).getType());
+ assertNotNull("1 mds", pSuche.getNatuerlichePerson());
+
+ assertNull("1 req. givenName",
+ pSuche.getNatuerlichePerson().getPersonenName().getVorname());
+ assertNull("1 req. familyName",
+ pSuche.getNatuerlichePerson().getPersonenName().getFamilienname());
+ assertNull("1 req. dateOfBirth",
+ pSuche.getNatuerlichePerson().getGeburtsdatum());
+
+
+ // check update request
+ RequestType secondReq = zmrReq.getAllValues().get(1);
+ assertNotNull("2 req.", secondReq.getPersonAendernRequest());
+ checkBasicRequestParameters(secondReq , PROCESS_TASK_UPDATE, processId, "jUnit123456");
+ PersonAendernRequest secondpSuche = secondReq.getPersonAendernRequest();
+
+ assertEquals("2 req. ZMR Zahl", "000430320173", secondpSuche.getPersonReferenz().getZMRZahl());
+ assertEquals("2 req. tech. Ref. value", "44453600000000697",
+ secondpSuche.getPersonReferenz().getTechnisch().getEntityID());
+ assertEquals("2 req. tech. Ref. date", "2020-02-05T13:07:06.311",
+ secondpSuche.getPersonReferenz().getTechnisch().getLetzteAenderung().toString());
+
+ assertEquals("eidas Docs. size", 6, secondpSuche.getEidasIdentitaetAnlage().size());
+ checkEidasDocumentAdd(secondpSuche.getEidasIdentitaetAnlage(),
+ "http://eidas.europa.eu/attributes/naturalperson/PlaceOfBirth", cc, eidasData.getPlaceOfBirth());
+ checkEidasDocumentAdd(secondpSuche.getEidasIdentitaetAnlage(),
+ "http://eidas.europa.eu/attributes/naturalperson/BirthName", cc, eidasData.getBirthName());
+ checkEidasDocumentAdd(secondpSuche.getEidasIdentitaetAnlage(),
+ "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier", cc, eidasData.getPseudonym());
+ checkEidasDocumentAdd(secondpSuche.getEidasIdentitaetAnlage(),
+ "http://eidas.europa.eu/attributes/naturalperson/CurrentGivenName", cc, eidasData.getGivenName());
+ checkEidasDocumentAdd(secondpSuche.getEidasIdentitaetAnlage(),
+ "http://eidas.europa.eu/attributes/naturalperson/CurrentFamilyName", cc, eidasData.getFamilyName());
+ checkEidasDocumentAdd(secondpSuche.getEidasIdentitaetAnlage(),
+ "http://eidas.europa.eu/attributes/naturalperson/DateOfBirth", cc, eidasData.getDateOfBirth());
+
+
+ // validate state
+ assertNotNull("no ZMR response", resp);
+ assertEquals("wrong processId", "366200000000082", resp.getProcessId().toString());
+ assertEquals("wrong resp size", 1, resp.getPersonResult().size());
+
+ }
+
+ @Test
+ @SneakyThrows
public void updateProcessNoUpdateRequired() {
BigInteger processId = new BigInteger(RandomStringUtils.randomNumeric(6));