aboutsummaryrefslogtreecommitdiff
path: root/eidas_modules/authmodule-eIDAS-v2/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'eidas_modules/authmodule-eIDAS-v2/src/test/java')
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasAuthSpringResourceProviderTest.java56
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasAuthenticationModulImplTest.java121
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasDataStoreTest.java118
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasSignalServletTest.java241
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ErnpRestClientProductionTest.java460
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ErnpRestClientTest.java1085
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/SzrClientProductionTest.java116
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/SzrClientTest.java284
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrAddressSearchClientProductionTest.java169
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientProductionTest.java478
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientTest.java1242
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/config/EidasConnectorMessageSourceTest.java43
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/DummyAuthConfigMap.java144
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/DummyOA.java304
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/DummyPendingRequest.java8
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/DummySpecificCommunicationService.java58
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/IAhSpConfiguration.java152
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/handler/DeSpecificDetailSearchProcessorTest.java105
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/handler/ItSpecificDetailSearchProcessorTes.java84
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaAuthSignalControllerTest.java197
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientAuthHealthCheckTest.java130
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientAuthMetadataControllerTest.java136
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientAuthMetadataProviderFirstTest.java239
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientAuthMetadataProviderSecondTest.java66
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientCredentialProviderTest.java414
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/AlternativeSearchTaskWithRegisterTest.java1042
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskEidNewTest.java623
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskTest.java552
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateNewErnpEntryTaskTest.java198
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskTest.java637
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateMobilePhoneSignatureRequestTaskTest.java286
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateOtherLoginMethodGuiTaskTest.java207
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskTest.java939
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskWithRegistersTest.java683
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAustrianResidenceGuiResponseTaskRegisterTest.java337
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAustrianResidenceGuiResponseTaskTest.java312
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAuthnResponseTaskTest.java220
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveMobilePhoneSignatureResponseTaskTest.java479
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveOtherLoginMethodGuiResponseTaskTest.java148
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/utils/JoseUtilsTest.java136
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasAttributePostProcessingTest.java453
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasRequestPreProcessingFirstTest.java158
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasRequestPreProcessingSecondTest.java157
-rw-r--r--eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasResponseValidatorTest.java330
44 files changed, 0 insertions, 14347 deletions
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasAuthSpringResourceProviderTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasAuthSpringResourceProviderTest.java
deleted file mode 100644
index aef290f5..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasAuthSpringResourceProviderTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.apache.commons.io.IOUtils;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.BlockJUnit4ClassRunner;
-import org.springframework.core.io.Resource;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.EidasAuthenticationSpringResourceProvider;
-import at.gv.egiz.eaaf.core.test.TestConstants;
-
-
-
-@RunWith(BlockJUnit4ClassRunner.class)
-public class EidasAuthSpringResourceProviderTest {
-
- @Test
- public void testSpringConfig() {
- final EidasAuthenticationSpringResourceProvider test =
- new EidasAuthenticationSpringResourceProvider();
- for (final Resource el : test.getResourcesToLoad()) {
- try {
- IOUtils.toByteArray(el.getInputStream());
-
- } catch (final IOException e) {
- Assert.fail("Ressouce: " + el.getFilename() + " not found");
- }
-
- }
-
- Assert.assertNotNull("no Name", test.getName());
- Assert.assertNull("Find package definitions", test.getPackagesToScan());
-
- }
-
- @Test
- public void testSpILoaderConfig() {
- final InputStream el = this.getClass().getResourceAsStream(TestConstants.TEST_SPI_LOADER_PATH);
- try {
- final String spiFile = IOUtils.toString(el, "UTF-8");
-
- Assert.assertEquals("Wrong classpath in SPI file",
- EidasAuthenticationSpringResourceProvider.class.getName(), spiFile);
-
-
- } catch (final IOException e) {
- Assert.fail("Ressouce: " + TestConstants.TEST_SPI_LOADER_PATH + " not found");
-
- }
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasAuthenticationModulImplTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasAuthenticationModulImplTest.java
deleted file mode 100644
index 088c835c..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasAuthenticationModulImplTest.java
+++ /dev/null
@@ -1,121 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.ResourceLoader;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.EidasAuthenticationModulImpl;
-import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants;
-import at.gv.egiz.eaaf.core.api.idp.IConfiguration;
-import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;
-import at.gv.egiz.eaaf.core.impl.idp.auth.modules.ModuleRegistration;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.DummyConfiguration;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"})
-@DirtiesContext(classMode = ClassMode.BEFORE_CLASS)
-public class EidasAuthenticationModulImplTest {
-
- @Autowired ModuleRegistration moduleReg;
- @Autowired ResourceLoader loader;
-
- private final ExecutionContext executionContext = new ExecutionContextImpl();
- private DummySpConfiguration oaParam;
- private TestRequestImpl pendingReq;
- private EidasAuthenticationModulImpl authProcess = new EidasAuthenticationModulImpl();
-
- /**
- * jUnit class initializer.
- *
- */
- @BeforeClass
- public static void classInitializer() throws IOException {
- final String current = new java.io.File(".").toURI().toString();
- System.setProperty("eidas.ms.configuration", current + "../../basicConfig/default_config.properties");
-
- }
-
- /**
- * jUnit test set-up.
- *
- */
- @Before
- public void initialize() {
- Map<String, String> configMap = new HashMap<String, String>();
- configMap.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "http://test.com/test");
- IConfiguration basicConfig = new DummyConfiguration();
- oaParam = new DummySpConfiguration(configMap, basicConfig);
- pendingReq = new TestRequestImpl();
- pendingReq.setSpConfig(oaParam);
- }
-
- @Test
- public void checkProcessDefinition() {
- Assert.assertNotNull("AuthModule is null", authProcess);
- Assert.assertNotNull("AuthModule process is null", authProcess.getProcessDefinitions());
-
- for (String el : authProcess.getProcessDefinitions()) {
- Resource res = loader.getResource(el);
- Assert.assertTrue("AuthProcess description not extist", res.exists());
-
- }
- }
-
- @Test
- public void countrySelected() throws Exception {
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, RandomStringUtils.randomAlphanumeric(2));
- final String result =
- moduleReg.selectProcess(executionContext, pendingReq);
- Assert.assertNotNull("Process is null", result);
- Assert.assertEquals("Process Id not match", "eIDASAuthentication_v2", result);
-
- }
-
- @Test
- public void noCountryValid() throws Exception {
- final String result =
- moduleReg.selectProcess(executionContext, pendingReq);
-
- Assert.assertNull("Select wrong process", result);
-
- }
-
- @Test
- public void selectCountryWrongType() throws Exception {
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, 1);
- final String result =
- moduleReg.selectProcess(executionContext, pendingReq);
- Assert.assertNull("Select wrong process", result);
-
- }
-
- @Test
- public void selectCountryEmpty() throws Exception {
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "");
- final String result =
- moduleReg.selectProcess(executionContext, pendingReq);
- Assert.assertNull("Select wrong process", result);
-
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasDataStoreTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasDataStoreTest.java
deleted file mode 100644
index 1051bd9f..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasDataStoreTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright 2018 A-SIT Plus GmbH AT-specific eIDAS Connector has been developed
- * in a cooperation between EGIZ, A-SIT Plus GmbH, A-SIT, and Graz University of
- * Technology.
- *
- * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "License");
- * You may not use this work except in compliance with the License. You may
- * obtain a copy of the License at:
- * https://joinup.ec.europa.eu/news/understanding-eupl-v12
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" basis, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses. The "NOTICE" text file
- * is part of the distribution. Any derivative works that you distribute must
- * include a readable copy of the "NOTICE" text file.
-*/
-
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test;
-
-//import java.security.MessageDigest;
-//
-//import org.apache.commons.lang3.StringUtils;
-//import org.junit.Test;
-//import org.junit.runner.RunWith;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.test.context.ContextConfiguration;
-//import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-//import org.springframework.util.Base64Utils;
-//
-//import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.SQLiteServiceException;
-//import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.eIDASAuthenticationException;
-//import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.eIDASResponseUtils;
-//import at.gv.egiz.eaaf.core.impl.data.Trible;
-//
-//@RunWith(SpringJUnit4ClassRunner.class)
-//@ContextConfiguration("/SpringTest-context_basic_test.xml")
-//public class EidasDataStoreTest {
-//
-// @Autowired
-// private EidasDataStore dataStore;
-//
-// private static final String P1_TRANSID = "123456789";
-// private static final String P1_eIDASID =
-// "DE/AT/121asdf1as5f1as6f1asd2f1asdf1asdf1asd23f1asdf1asdf4sd7fsdf1asdf1asd2f1asd56f7asdf4asdfasdf1";
-//
-// private static final String P2_TRANSID = "987654321";
-// private static final String P2_eIDASID =
-// "EE/AT/asfasfasdfasdfasdfasdfasdfasvafasdfasdfasdfasdfasdfasvascasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasd";
-//
-// @Test
-// public void dummyTest() {
-//
-// }
-//
-// @Test
-// public void insertTestOne() throws SQLiteServiceException, eIDASAuthenticationException {
-// Trible<String, String, String> eidasId = eIDASResponseUtils.parseEidasPersonalIdentifier(P1_eIDASID);
-// String ernbId = createHashFromUniqueId(eidasId.getThird());
-// dataStore.storeNationalId(
-// P1_TRANSID,
-// eidasId,
-// ernbId);
-//
-// if (StringUtils.isEmpty(dataStore.getEidasRawNationalId(ernbId)) {
-// && dataStore.getEidasRawNationalId(ernbId).equals(eidasId.getThird()))
-// throw new SQLiteServiceException("No eIDAS RAW Id in SQLite DB", null);
-//
-// }
-//
-// if (StringUtils.isEmpty(dataStore.getErnbNationalId(eidasId)) {
-// && dataStore.getErnbNationalId(eidasId).equals(ernbId))
-// throw new SQLiteServiceException("No ERnB Id in SQLite DB", null);
-// }
-//
-// }
-//
-// @Test
-// public void insertTestTwo() throws SQLiteServiceException, eIDASAuthenticationException {
-// Trible<String, String, String> eidasId = eIDASResponseUtils.parseEidasPersonalIdentifier(P2_eIDASID);
-// String ernbId = createHashFromUniqueId(eidasId.getThird());
-// dataStore.storeNationalId(
-// P2_TRANSID,
-// eidasId,
-// ernbId);
-//
-// if (StringUtils.isEmpty(dataStore.getEidasRawNationalId(ernbId)) {
-// && dataStore.getEidasRawNationalId(ernbId).equals(eidasId.getThird()))
-// throw new SQLiteServiceException("No eIDAS RAW Id in SQLite DB", null);
-//
-// }
-//
-// if (StringUtils.isEmpty(dataStore.getErnbNationalId(eidasId)) {
-// && dataStore.getErnbNationalId(eidasId).equals(ernbId))
-// throw new SQLiteServiceException("No ERnB Id in SQLite DB", null);
-//
-// }
-//
-// }
-//
-// private String createHashFromUniqueId(String uniqueId) throws eIDASAuthenticationException {
-// try {
-// MessageDigest md = MessageDigest.getInstance("SHA-256");
-// byte[] hash = md.digest(uniqueId.getBytes("UTF-8"));
-// String hashBase64 = new String(Base64Utils.encode(hash), "UTF-8").replaceAll("\r\n", "");
-// return hashBase64;
-//
-// } catch (Exception ex) {
-// throw new eIDASAuthenticationException("internal.03", new Object[] {}, ex);
-//
-// }
-// }
-//}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasSignalServletTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasSignalServletTest.java
deleted file mode 100644
index f23d61db..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasSignalServletTest.java
+++ /dev/null
@@ -1,241 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test;
-
-import static at.asitplus.eidas.specific.connector.MsEidasNodeConstants.PROP_CONFIG_SP_NEW_EID_MODE;
-
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.util.Arrays;
-import java.util.Base64;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-
-import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap;
-import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummySpConfiguration;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.EidasSignalServlet;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.CreateIdentityLinkTask;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy.DummySpecificCommunicationService;
-import at.gv.egiz.eaaf.core.api.IRequestStorage;
-import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants;
-import at.gv.egiz.eaaf.core.api.data.EaafConstants;
-import at.gv.egiz.eaaf.core.api.storage.ITransactionStorage;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.DummyProtocolAuthService;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import at.gv.egiz.eaaf.core.impl.utils.Random;
-import eu.eidas.auth.commons.EidasParameterKeys;
-import eu.eidas.auth.commons.protocol.impl.AuthenticationResponse;
-import eu.eidas.auth.commons.protocol.impl.AuthenticationResponse.Builder;
-import eu.eidas.auth.commons.tx.BinaryLightToken;
-import eu.eidas.specificcommunication.exception.SpecificCommunicationException;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"})
-public class EidasSignalServletTest {
-
- @Autowired private MsConnectorDummyConfigMap basicConfig;
- @Autowired private EidasSignalServlet controller;
- @Autowired private IRequestStorage storage;
- @Autowired private ITransactionStorage transStore;
- @Autowired private DummyProtocolAuthService protAuthService;
- @Autowired private DummySpecificCommunicationService connector;
-
-
- private MockHttpServletRequest httpReq;
- private MockHttpServletResponse httpResp;
- private TestRequestImpl pendingReq;
- private MsConnectorDummySpConfiguration oaParam;
-
-
- /**
- * jUnit test set-up.
- */
- @Before
- public void setUp() throws EaafStorageException, URISyntaxException {
- httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler");
- httpResp = new MockHttpServletResponse();
- RequestContextHolder.resetRequestAttributes();
- RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));
-
- final Map<String, String> spConfig = new HashMap<>();
- spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp");
- spConfig.put("target", "urn:publicid:gv.at:cdid+XX");
- spConfig.put(PROP_CONFIG_SP_NEW_EID_MODE, "true");
- oaParam = new MsConnectorDummySpConfiguration(spConfig, basicConfig);
- oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH));
- pendingReq = new TestRequestImpl();
-
- pendingReq.setSpConfig(oaParam);
- pendingReq.setPendingReqId(at.gv.egiz.eaaf.core.impl.utils.Random.nextProcessReferenceValue());
- pendingReq.setAuthUrl("http://test.com/");
- pendingReq.setTransactionId("avaasbav");
- pendingReq.setPiiTransactionId(RandomStringUtils.randomAlphanumeric(10));
-
- connector.setiLightResponse(null);
-
-
- }
-
- @Test
- public void noResponsToken() throws IOException, EaafException {
- //set-up
-
- //execute test
- controller.restoreEidasAuthProcess(httpReq, httpResp);
-
- //validate state
- Assert.assertNull("eIDAS response", httpReq.getAttribute(Constants.DATA_FULL_EIDAS_RESPONSE));
- Assert.assertNotNull("missing error", protAuthService.getException());
- Assert.assertEquals("Wrong errorId", "auth.26",
- ((EaafException) protAuthService.getException()).getErrorId());
-
- }
-
- @Test
- public void unknownResponseToken() throws IOException, EaafException {
- //set-up
- httpReq.setParameter(EidasParameterKeys.TOKEN.toString(),
- RandomStringUtils.randomAlphanumeric(10));
-
- //execute test
- controller.restoreEidasAuthProcess(httpReq, httpResp);
-
- //validate state
- Assert.assertNull("eIDAS response", httpReq.getAttribute(Constants.DATA_FULL_EIDAS_RESPONSE));
- Assert.assertNotNull("missing error", protAuthService.getException());
- Assert.assertEquals("Wrong errorId", "auth.26",
- ((EaafException) protAuthService.getException()).getErrorId());
-
- }
-
- @Test
- public void withRelayState() throws IOException, EaafException, SpecificCommunicationException {
- //set-up
- String relayState = RandomStringUtils.randomAlphanumeric(10);
- pendingReq.setPendingReqId(relayState);
- storage.storePendingRequest(pendingReq);
-
- Builder iLightResponse = new AuthenticationResponse.Builder();
- iLightResponse.id("_".concat(Random.nextHexRandom16()))
- .issuer(RandomStringUtils.randomAlphabetic(10))
- .subject(RandomStringUtils.randomAlphabetic(10))
- .statusCode(Constants.SUCCESS_URI)
- .inResponseTo("_".concat(Random.nextHexRandom16()))
- .subjectNameIdFormat("afaf")
- .relayState(relayState);
-
- AuthenticationResponse eidasResp = iLightResponse.build();
- BinaryLightToken token = connector.putResponse(eidasResp);
- httpReq.setParameter(EidasParameterKeys.TOKEN.toString(),
- Base64.getEncoder().encodeToString(token.getTokenBytes()));
-
-
- //execute test
- controller.restoreEidasAuthProcess(httpReq, httpResp);
-
-
- //validate state
- Assert.assertNotNull("eIDAS response", httpReq.getAttribute(Constants.DATA_FULL_EIDAS_RESPONSE));
- Assert.assertEquals("wrong eIDAS response", eidasResp,
- httpReq.getAttribute(Constants.DATA_FULL_EIDAS_RESPONSE));
-
- Assert.assertNotNull("missing error", protAuthService.getException());
- Assert.assertEquals("Wrong errorId", "PendingRequest object is not of type 'RequestImpl.class'",
- ((EaafException) protAuthService.getException()).getErrorId());
-
- }
-
- @Test
- public void withOutRelayStateMissingPendingReq() throws IOException, EaafException, SpecificCommunicationException {
- //set-up
- String pendingReqId = RandomStringUtils.randomAlphanumeric(10);
- pendingReq.setPendingReqId(pendingReqId);
- storage.storePendingRequest(pendingReq);
-
- String inResponseTo = "_".concat(Random.nextHexRandom16());
-
- Builder iLightResponse = new AuthenticationResponse.Builder();
- iLightResponse.id("_".concat(Random.nextHexRandom16()))
- .issuer(RandomStringUtils.randomAlphabetic(10))
- .subject(RandomStringUtils.randomAlphabetic(10))
- .statusCode(Constants.SUCCESS_URI)
- .inResponseTo(inResponseTo)
- .subjectNameIdFormat("afaf");
-
- AuthenticationResponse eidasResp = iLightResponse.build();
- BinaryLightToken token = connector.putResponse(eidasResp);
- httpReq.setParameter(EidasParameterKeys.TOKEN.toString(),
- Base64.getEncoder().encodeToString(token.getTokenBytes()));
-
-
- //execute test
- controller.restoreEidasAuthProcess(httpReq, httpResp);
-
-
- //validate state
- Assert.assertNull("eIDAS response", httpReq.getAttribute(Constants.DATA_FULL_EIDAS_RESPONSE));
- Assert.assertNotNull("missing error", protAuthService.getException());
- Assert.assertEquals("Wrong errorId", "auth.26",
- ((EaafException) protAuthService.getException()).getErrorId());
-
- }
-
- @Test
- public void withInResponseToElement() throws IOException, EaafException, SpecificCommunicationException {
- //set-up
- String pendingReqId = RandomStringUtils.randomAlphanumeric(10);
- pendingReq.setPendingReqId(pendingReqId);
- storage.storePendingRequest(pendingReq);
-
- String inResponseTo = "_".concat(Random.nextHexRandom16());
- transStore.put(inResponseTo, pendingReqId, -1);
-
- Builder iLightResponse = new AuthenticationResponse.Builder();
- iLightResponse.id("_".concat(Random.nextHexRandom16()))
- .issuer(RandomStringUtils.randomAlphabetic(10))
- .subject(RandomStringUtils.randomAlphabetic(10))
- .statusCode(Constants.SUCCESS_URI)
- .inResponseTo(inResponseTo)
- .subjectNameIdFormat("afaf");
-
- AuthenticationResponse eidasResp = iLightResponse.build();
- BinaryLightToken token = connector.putResponse(eidasResp);
- httpReq.setParameter(EidasParameterKeys.TOKEN.toString(),
- Base64.getEncoder().encodeToString(token.getTokenBytes()));
-
-
- //execute test
- controller.restoreEidasAuthProcess(httpReq, httpResp);
-
-
- //validate state
- Assert.assertNotNull("eIDAS response", httpReq.getAttribute(Constants.DATA_FULL_EIDAS_RESPONSE));
- Assert.assertEquals("wrong eIDAS response", eidasResp,
- httpReq.getAttribute(Constants.DATA_FULL_EIDAS_RESPONSE));
-
- Assert.assertNotNull("missing error", protAuthService.getException());
- Assert.assertEquals("Wrong errorId", "PendingRequest object is not of type 'RequestImpl.class'",
- ((EaafException) protAuthService.getException()).getErrorId());
-
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ErnpRestClientProductionTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ErnpRestClientProductionTest.java
deleted file mode 100644
index 66a426a1..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ErnpRestClientProductionTest.java
+++ /dev/null
@@ -1,460 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.clients;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThrows;
-import static org.junit.Assert.assertTrue;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.annotation.IfProfileValue;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.ernp.ErnpRestClient.ErnpRegisterResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.ernp.IErnpClient;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.RegisterResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.DeSpecificDetailSearchProcessor;
-import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonSuchenRequest;
-import lombok.SneakyThrows;
-
-@IfProfileValue(name = "spring.profiles.active", value = "devEnvironment")
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_realConfig.xml"})
-@TestPropertySource(locations = {
- //"classpath:/application.properties",
- "file:/home/tlenz/Projekte/config/ms_connector/default_config.properties",
- })
-public class ErnpRestClientProductionTest {
-
- //private static final String TEST_PREFIX = "XXX_";
- private static final String TEST_PREFIX = "";
-
- @Autowired IErnpClient client;
-
- @Test
- @SneakyThrows
- public void searchWithPersonalIdentifierServerError() {
- String personalIdentifierFirst = "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit";
- personalIdentifierFirst = "";
- final String cc = "DE";
- final SimpleEidasData eidasDataFirst = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName("XXXvon Brandenburg")
- .givenName("XXXClaus - Maria")
- .dateOfBirth("1994-12-00")
- .personalIdentifier(cc + "/AT/" + personalIdentifierFirst)
- .pseudonym(personalIdentifierFirst)
- .build();
-
- // execute operation
- EidasSAuthenticationException error = assertThrows("wrong Exception", EidasSAuthenticationException.class,
- () -> client.searchWithPersonIdentifier(
- eidasDataFirst.getPseudonym(), eidasDataFirst.getCitizenCountryCode()));
-
- assertEquals("wrong errorCode", "module.eidasauth.matching.11", error.getErrorId());
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithPersonalIdentifierSuccess() {
- final String personalIdentifierFirst = "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit";
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName("DOPISNÍ")
- .givenName("DANA")
- .dateOfBirth("1996-01-01")
- .personalIdentifier(cc + "/AT/" + personalIdentifierFirst)
- .pseudonym(personalIdentifierFirst)
- .build();
-
- // execute operation
- ErnpRegisterResult resp = client.searchWithPersonIdentifier(
- eidasDataFirst.getPseudonym(), eidasDataFirst.getCitizenCountryCode());
-
- // validate state
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
- checkErnpResult(resp.getPersonResult().get(0), eidasDataFirst, 1);
- assertEquals("wrong bpk", "vypyCkyczK7i+cgPWlJasuJphIA=",
- resp.getPersonResult().get(0).getBpk());
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithPersonalIdentifierNoResult() {
- final String personalIdentifierFirst = RandomStringUtils.randomAlphanumeric(10);
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName("DOPISNÍ")
- .givenName("DANA")
- .dateOfBirth("1996-01-01")
- .personalIdentifier(cc + "/AT/" + personalIdentifierFirst)
- .pseudonym(personalIdentifierFirst)
- .build();
-
- // execute operation
- ErnpRegisterResult resp = client.searchWithPersonIdentifier(
- eidasDataFirst.getPseudonym(), eidasDataFirst.getCitizenCountryCode());
-
- // validate state
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 0, resp.getPersonResult().size());
-
- }
-
-
- @Test
- @SneakyThrows
- public void searchWithMdsSuccess() {
- final String personalIdentifierFirst = "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit";
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName("DOPISNÍ")
- .givenName("DANA")
- .dateOfBirth("1996-01-01")
- .personalIdentifier(cc + "/AT/" + personalIdentifierFirst)
- .pseudonym(personalIdentifierFirst)
- .build();
-
- // execute operation
- ErnpRegisterResult resp = client.searchWithMds(eidasDataFirst.getGivenName(), eidasDataFirst.getFamilyName(),
- eidasDataFirst.getDateOfBirth(), eidasDataFirst.getCitizenCountryCode());
-
- // validate state
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
- checkErnpResult(resp.getPersonResult().get(0), eidasDataFirst, 1);
- assertEquals("wrong bpk", "vypyCkyczK7i+cgPWlJasuJphIA=",
- resp.getPersonResult().get(0).getBpk());
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithMdsNoResult() {
- final String personalIdentifierFirst = RandomStringUtils.randomAlphanumeric(10);
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName(RandomStringUtils.randomAlphanumeric(10))
- .givenName(RandomStringUtils.randomAlphanumeric(10))
- .dateOfBirth("1996-10-15")
- .personalIdentifier(cc + "/AT/" + personalIdentifierFirst)
- .pseudonym(personalIdentifierFirst)
- .build();
-
- // execute operation
- ErnpRegisterResult resp = client.searchWithMds(eidasDataFirst.getGivenName(), eidasDataFirst.getFamilyName(),
- eidasDataFirst.getDateOfBirth(), eidasDataFirst.getCitizenCountryCode());
-
- // validate state
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 0, resp.getPersonResult().size());
-
- }
-
- @Test
- @SneakyThrows
- public void addTwiceSameMdsAndMdsSearch() {
- // *** add new random first person ***
- final String addFirstPersonPersonalIdentifier = RandomStringUtils.randomAlphanumeric(10);
- final String cc = "XZ";
- final SimpleEidasData addFirstPersonData = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName(TEST_PREFIX + RandomStringUtils.randomAlphabetic(8))
- .givenName(TEST_PREFIX + RandomStringUtils.randomAlphabetic(8))
- .dateOfBirth("1996-01-01")
- .personalIdentifier(cc + "/AT/" + addFirstPersonPersonalIdentifier)
- .pseudonym(addFirstPersonPersonalIdentifier)
- .build();
-
- // add entry
- ErnpRegisterResult addFirstPersonResponse = client.add(addFirstPersonData);
-
- // verify added entry
- assertNotNull("no ERnP response", addFirstPersonResponse);
- assertEquals("wrong resp size", 1, addFirstPersonResponse.getPersonResult().size());
- checkErnpResult(addFirstPersonResponse.getPersonResult().get(0), addFirstPersonData, 1);
-
-
- // *** add new random second person with same MDS ***
- final String addSecondPersonPersonalIdentifier = RandomStringUtils.randomAlphanumeric(10);
- final SimpleEidasData addSecondPersonData = addFirstPersonData.toBuilder()
- .personalIdentifier(cc + "/AT/" + addSecondPersonPersonalIdentifier)
- .pseudonym(addSecondPersonPersonalIdentifier)
- .build();
-
- // add entry
- ErnpRegisterResult addSecondPersonResponse = client.add(addSecondPersonData);
-
- // verify added entry
- assertNotNull("no ERnP response", addSecondPersonResponse);
- assertEquals("wrong resp size", 1, addSecondPersonResponse.getPersonResult().size());
- checkErnpResult(addSecondPersonResponse.getPersonResult().get(0), addSecondPersonData, 1);
-
-
-
- // search with MDS
- ErnpRegisterResult resp = client.searchWithMds(addFirstPersonData.getGivenName(), addFirstPersonData.getFamilyName(),
- addFirstPersonData.getDateOfBirth(), cc);
-
- // validate state
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 2, resp.getPersonResult().size());
-
- }
-
-
-
- @Test
- @SneakyThrows
- public void addSearchAndPersonalIdUpdate() {
- // *** add new random entry ***
-
- final String addPersonPersonalIdentifier = RandomStringUtils.randomAlphanumeric(10);
- final String cc = "DE";
- final SimpleEidasData addPersonData = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName(TEST_PREFIX + RandomStringUtils.randomAlphabetic(8))
- .givenName(TEST_PREFIX + RandomStringUtils.randomAlphabetic(8))
- .dateOfBirth("1996-01-01")
- .personalIdentifier(cc + "/AT/" + addPersonPersonalIdentifier)
- .pseudonym(addPersonPersonalIdentifier)
- .birthName(RandomStringUtils.randomAlphabetic(8))
- .placeOfBirth(RandomStringUtils.randomAlphabetic(8))
- .build();
-
- // add entry
- ErnpRegisterResult addPersonResponse = client.add(addPersonData);
-
- // verify added entry
- assertNotNull("no ERnP response", addPersonResponse);
- assertEquals("wrong resp size", 1, addPersonResponse.getPersonResult().size());
- checkErnpResult(addPersonResponse.getPersonResult().get(0), addPersonData, 1);
-
-
- // *** search entry by countrySpecifics ***
- final String ccPersonPersonalIdentifier = RandomStringUtils.randomAlphanumeric(10);
- SimpleEidasData ccSpecificData = addPersonData.toBuilder()
- .personalIdentifier(cc + "/AT/" + ccPersonPersonalIdentifier)
- .pseudonym(ccPersonPersonalIdentifier)
- .build();
- PersonSuchenRequest ccSearchReq =
- new DeSpecificDetailSearchProcessor().generateSearchRequest(ccSpecificData);
-
- // search CC specific
- ErnpRegisterResult ccSearchResponse = client.searchCountrySpecific(ccSearchReq, cc);
-
- // verify cc specific result
- assertNotNull("no ERnP response", ccSearchResponse);
- assertEquals("wrong resp size", 1, ccSearchResponse.getPersonResult().size());
- RegisterResult ccSearchPersResult = ccSearchResponse.getPersonResult().get(0);
- checkErnpResult(ccSearchResponse.getPersonResult().get(0), addPersonData, 1);
- assertEquals("wrong bPK", addPersonResponse.getPersonResult().get(0).getBpk(),
- ccSearchPersResult.getBpk());
- assertFalse("no PersonalId change detected", ccSpecificData.equalsRegisterData(ccSearchPersResult));
-
-
- // *** update entry because PersonalId has changed ***
- // update ERnP entry
- ErnpRegisterResult updateResponse = client.update(ccSearchPersResult, ccSpecificData);
- assertNotNull("no ERnP response", updateResponse);
- assertEquals("wrong resp size", 1, updateResponse.getPersonResult().size());
- checkErnpResult(updateResponse.getPersonResult().get(0), addPersonData, 2);
- assertEquals("wrong bPK", addPersonResponse.getPersonResult().get(0).getBpk(), ccSearchPersResult.getBpk());
- checkPersonalIdentifier(updateResponse.getPersonResult().get(0), addPersonPersonalIdentifier);
- checkPersonalIdentifier(updateResponse.getPersonResult().get(0), ccPersonPersonalIdentifier);
-
-
-
- // *** search by first personalIdentifier
- ErnpRegisterResult persIdSearchFirstResp = client.searchWithPersonIdentifier(
- addPersonPersonalIdentifier, cc);
- assertNotNull("no ERnP response", persIdSearchFirstResp);
- assertEquals("wrong resp size", 1, persIdSearchFirstResp.getPersonResult().size());
- assertEquals("wrong bPK", addPersonResponse.getPersonResult().get(0).getBpk(), ccSearchPersResult.getBpk());
- checkPersonalIdentifier(updateResponse.getPersonResult().get(0), addPersonPersonalIdentifier);
- checkPersonalIdentifier(updateResponse.getPersonResult().get(0), ccPersonPersonalIdentifier);
- checkErnpResult(updateResponse.getPersonResult().get(0), addPersonData, 2);
-
-
-
- // *** search by second personalIdentifier
- ErnpRegisterResult persIdSearchSecondResp = client.searchWithPersonIdentifier(
- ccPersonPersonalIdentifier, cc);
- assertNotNull("no ERnP response", persIdSearchSecondResp);
- assertEquals("wrong resp size", 1, persIdSearchSecondResp.getPersonResult().size());
- assertEquals("wrong bPK", addPersonResponse.getPersonResult().get(0).getBpk(), ccSearchPersResult.getBpk());
- checkPersonalIdentifier(updateResponse.getPersonResult().get(0), addPersonPersonalIdentifier);
- checkPersonalIdentifier(updateResponse.getPersonResult().get(0), ccPersonPersonalIdentifier);
- checkErnpResult(updateResponse.getPersonResult().get(0), addPersonData, 2);
-
- }
-
- @Test
- @SneakyThrows
- public void addSearchAndMdsUpdate() {
- // *** add new random entry ***
-
- final String addPersonPersonalIdentifier = RandomStringUtils.randomAlphanumeric(10);
- final String cc = "DE";
- final SimpleEidasData addPersonData = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName(TEST_PREFIX + RandomStringUtils.randomAlphabetic(8))
- .givenName(TEST_PREFIX + RandomStringUtils.randomAlphabetic(8))
- .dateOfBirth("1985-05-05")
- .personalIdentifier(cc + "/AT/" + addPersonPersonalIdentifier)
- .pseudonym(addPersonPersonalIdentifier)
- .birthName(RandomStringUtils.randomAlphabetic(8))
- .placeOfBirth(RandomStringUtils.randomAlphabetic(8))
- .build();
-
- // add entry
- ErnpRegisterResult addPersonResponse = client.add(addPersonData);
-
- // verify added entry
- assertNotNull("no ERnP response", addPersonResponse);
- assertEquals("wrong resp size", 1, addPersonResponse.getPersonResult().size());
- checkErnpResult(addPersonResponse.getPersonResult().get(0), addPersonData, 1);
-
-
- // *** search entry by personalId ***
- SimpleEidasData mdsHasChanged = addPersonData.toBuilder()
- .givenName(RandomStringUtils.randomAlphanumeric(10))
- .familyName(RandomStringUtils.randomAlphanumeric(10))
- .build();
-
- // search by personalId
- ErnpRegisterResult personalIdResponse = client.searchWithPersonIdentifier(addPersonPersonalIdentifier, cc);
-
- // verify personalId result
- assertNotNull("no ERnP response", personalIdResponse);
- assertEquals("wrong resp size", 1, personalIdResponse.getPersonResult().size());
- RegisterResult persIdSearchResult = personalIdResponse.getPersonResult().get(0);
- checkErnpResult(personalIdResponse.getPersonResult().get(0), addPersonData, 1);
- assertEquals("wrong bPK", addPersonResponse.getPersonResult().get(0).getBpk(),
- persIdSearchResult.getBpk());
- assertFalse("no MDS change detected", mdsHasChanged.equalsRegisterData(persIdSearchResult));
-
-
- // *** update entry because MDS has changed ***
- // update ERnP entry
- ErnpRegisterResult updateResponse = client.update(persIdSearchResult, mdsHasChanged);
- assertNotNull("no ERnP response", updateResponse);
- assertEquals("wrong resp size", 1, updateResponse.getPersonResult().size());
- checkErnpResult(updateResponse.getPersonResult().get(0), mdsHasChanged, 1);
- assertEquals("wrong bPK", addPersonResponse.getPersonResult().get(0).getBpk(), persIdSearchResult.getBpk());
- checkPersonalIdentifier(updateResponse.getPersonResult().get(0), addPersonPersonalIdentifier);
-
-
- // *** search by first personalIdentifier
- ErnpRegisterResult persIdSearchFirstResp = client.searchWithPersonIdentifier(
- addPersonPersonalIdentifier, cc);
- assertNotNull("no ERnP response", persIdSearchFirstResp);
- assertEquals("wrong resp size", 1, persIdSearchFirstResp.getPersonResult().size());
- assertEquals("wrong bPK", addPersonResponse.getPersonResult().get(0).getBpk(), persIdSearchResult.getBpk());
- checkPersonalIdentifier(updateResponse.getPersonResult().get(0), addPersonPersonalIdentifier);
- checkErnpResult(updateResponse.getPersonResult().get(0), mdsHasChanged, 1);
-
- // *** search by first personalIdentifier
- ErnpRegisterResult mdsSearchResp = client.searchWithMds(
- mdsHasChanged.getGivenName(), mdsHasChanged.getFamilyName(), mdsHasChanged.getDateOfBirth(), cc);
- assertNotNull("no ERnP response", mdsSearchResp);
- assertEquals("wrong resp size", 1, mdsSearchResp.getPersonResult().size());
- assertEquals("wrong bPK", addPersonResponse.getPersonResult().get(0).getBpk(), persIdSearchResult.getBpk());
- checkPersonalIdentifier(updateResponse.getPersonResult().get(0), addPersonPersonalIdentifier);
- checkErnpResult(updateResponse.getPersonResult().get(0), mdsHasChanged, 1);
-
-
-
- }
-
-
- @Ignore
- @Test
- @SneakyThrows
- public void addErnpEntry() {
- final String personalIdentifierFirst = "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit";
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName("DOPISNÍ")
- .givenName("DANA")
- .dateOfBirth("1996-01-01")
- .personalIdentifier(cc + "/AT/" + personalIdentifierFirst)
- .pseudonym(personalIdentifierFirst)
- .build();
-
- // execute operation
- ErnpRegisterResult resp = client.add(eidasDataFirst);
-
- // validate state
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
- checkErnpResult(resp.getPersonResult().get(0), eidasDataFirst, 1);
-
- }
-
- @Test
- @SneakyThrows
- public void addRandomErnpEntry() {
- final String addPersonPersonalIdentifier = RandomStringUtils.randomAlphanumeric(10);
- final String cc = "XZ";
- final SimpleEidasData addPersonData = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName(TEST_PREFIX + RandomStringUtils.randomAlphabetic(8))
- .givenName(TEST_PREFIX + RandomStringUtils.randomAlphabetic(8))
- .dateOfBirth("1985-05-05")
- .personalIdentifier(cc + "/AT/" + addPersonPersonalIdentifier)
- .pseudonym(addPersonPersonalIdentifier)
- .birthName(RandomStringUtils.randomAlphabetic(8))
- .placeOfBirth(RandomStringUtils.randomAlphabetic(8))
- .build();
-
- // add entry
- ErnpRegisterResult addPersonResponse = client.add(addPersonData);
-
- // verify added entry
- assertNotNull("no ERnP response", addPersonResponse);
- assertEquals("wrong resp size", 1, addPersonResponse.getPersonResult().size());
- checkErnpResult(addPersonResponse.getPersonResult().get(0), addPersonData, 1);
-
- }
-
-
- private void checkErnpResult(RegisterResult registerResult, final SimpleEidasData eidasData, int numOfPseudonyms) {
- assertEquals("wrong familyname", eidasData.getFamilyName(), registerResult.getFamilyName());
- assertEquals("wrong givenname", eidasData.getGivenName(), registerResult.getGivenName());
- assertEquals("wrong birthday", eidasData.getDateOfBirth(), registerResult.getDateOfBirth());
- assertEquals("wrong personalId size", numOfPseudonyms, registerResult.getPseudonym().size());
- assertEquals("wrong placeOfBirth", eidasData.getPlaceOfBirth(), registerResult.getPlaceOfBirth());
- assertEquals("wrong birthName", eidasData.getBirthName(), registerResult.getBirthName());
- assertTrue("no bPK", StringUtils.isNotEmpty(registerResult.getBpk()));
- checkPersonalIdentifier(registerResult, eidasData.getPseudonym());
-
- }
-
- private void checkPersonalIdentifier(RegisterResult registerResult, String pseudonym) {
- assertTrue("wrong or no personalId", registerResult.getPseudonym().stream()
- .filter(el -> pseudonym.equals(el))
- .findFirst()
- .isPresent());
-
- }
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ErnpRestClientTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ErnpRestClientTest.java
deleted file mode 100644
index ab1a502c..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ErnpRestClientTest.java
+++ /dev/null
@@ -1,1085 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.clients;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThrows;
-import static org.junit.Assert.assertTrue;
-
-import java.net.HttpURLConnection;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.UUID;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.RandomStringUtils;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.ernp.ErnpRestClient.ErnpRegisterResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.ernp.IErnpClient;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.RegisterResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.DeSpecificDetailSearchProcessor;
-import at.gv.egiz.eaaf.core.impl.utils.TransactionIdUtils;
-import lombok.SneakyThrows;
-import okhttp3.mockwebserver.MockResponse;
-import okhttp3.mockwebserver.MockWebServer;
-import okhttp3.mockwebserver.RecordedRequest;
-import okhttp3.mockwebserver.SocketPolicy;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml" })
-@DirtiesContext(classMode = ClassMode.AFTER_CLASS)
-public class ErnpRestClientTest {
-
- @Autowired MsConnectorDummyConfigMap basicConfig;
- @Autowired IErnpClient client;
-
- private static ObjectMapper mapper = new ObjectMapper();
- private static MockWebServer mockWebServer;
-
- /**
- * JUnit class initializer.
- *
- * @throws Exception In case of an OpenSAML3 initialization error
- */
- @BeforeClass
- @SneakyThrows
- public static void classInitializer() {
- mockWebServer = new MockWebServer();
- mockWebServer.start(1718);
-
- }
-
- @AfterClass
- @SneakyThrows
- public static void resetTestEnviroment() {
- mockWebServer.shutdown();
-
- }
-
- /**
- * jUnit test initializer.
- *
- * @throws InterruptedException in case of an error
- */
- @Before
- public void initialize() throws InterruptedException {
- mockWebServer.takeRequest(2, TimeUnit.MILLISECONDS);
- TransactionIdUtils.setTransactionId(UUID.randomUUID().toString());
-
- }
-
-
- @Test
- @SneakyThrows
- public void searchWithPersonalIdentifierServerError() {
- final String personalIdentifierFirst = "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit";
- final String cc = "DE";
- final SimpleEidasData eidasDataFirst = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName("XXXvon Brandenburg")
- .givenName("XXXClaus - Maria")
- .dateOfBirth("1994-12-31")
- .personalIdentifier(cc + "/AT/" + personalIdentifierFirst)
- .pseudonym(personalIdentifierFirst)
- .build();
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(500)
- .setBody("Internal error"));
-
- // execute operation
- EidasSAuthenticationException error = assertThrows("wrong Exception", EidasSAuthenticationException.class,
- () -> client.searchWithPersonIdentifier(
- eidasDataFirst.getPseudonym(), eidasDataFirst.getCitizenCountryCode()));
-
- mockWebServer.takeRequest();
- assertEquals("wrong errorCode", "module.eidasauth.matching.11", error.getErrorId());
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithPersonalIdentifierSuccess() {
- final String personalIdentifierFirst = "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit";
- final String cc = "DE";
- final SimpleEidasData eidasDataFirst = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName("XXXvon Brandenburg")
- .givenName("XXXClaus - Maria")
- .dateOfBirth("1994-12-31")
- .personalIdentifier(cc + "/AT/" + personalIdentifierFirst)
- .pseudonym(personalIdentifierFirst)
- .build();
-
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/ernp_handbook_example.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
-
- // execute operation
- ErnpRegisterResult resp = client.searchWithPersonIdentifier(
- eidasDataFirst.getPseudonym(), eidasDataFirst.getCitizenCountryCode());
-
- // validate request
- final RecordedRequest request = mockWebServer.takeRequest();
- String reqBody = request.getBody().readUtf8();
- assertFalse("no request body", reqBody.isEmpty());
-
- // validate state
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
-
-
- }
-
- @Test
- @SneakyThrows
- public void searchResidence() {
- // execute operation
- ErnpRegisterResult resp = client.searchWithResidenceData(null, null, null, null, null, null);
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 0, resp.getPersonResult().size());
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithMdsNoResponse() {
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc);
-
- mockWebServer.enqueue(new MockResponse()
- .setSocketPolicy(SocketPolicy.NO_RESPONSE)
- .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT));
-
- // execute operation
- EidasSAuthenticationException error = assertThrows("wrong Exception", EidasSAuthenticationException.class,
- () -> client.searchWithMds(eidasDataFirst.getGivenName(), eidasDataFirst.getFamilyName(), eidasDataFirst.getDateOfBirth(), cc));
- assertEquals("wrong errorCode", "module.eidasauth.matching.11", error.getErrorId());
- mockWebServer.takeRequest();
-
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithMdsErrorResponse() {
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc);
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(400)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/error_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- // execute operation
- EidasSAuthenticationException error = assertThrows("wrong Exception", EidasSAuthenticationException.class,
- () -> client.searchWithMds(eidasDataFirst.getGivenName(), eidasDataFirst.getFamilyName(), eidasDataFirst.getDateOfBirth(), cc));
- assertEquals("wrong errorCode", "module.eidasauth.matching.11", error.getErrorId());
- mockWebServer.takeRequest();
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithMdsNoResult() {
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc);
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/ernp_empty_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- // execute operation
- ErnpRegisterResult resp = client.searchWithMds(eidasDataFirst.getGivenName(), eidasDataFirst.getFamilyName(), eidasDataFirst.getDateOfBirth(), cc);
-
- // validate request
- final RecordedRequest request = mockWebServer.takeRequest();
- String reqBody = request.getBody().readUtf8();
- assertFalse("no request body", reqBody.isEmpty());
- JsonNode reqJson = mapper.readTree(reqBody);
- checkSearchOptions(reqJson, "Searching with MDS only");
- JsonNode person = getJsonObject(reqJson, "suchdaten");
- checkJsonElement(person, "familienname", eidasDataFirst.getFamilyName());
- checkJsonElement(person, "vorname", eidasDataFirst.getGivenName());
- checkPersonDateOfBirth(person, eidasDataFirst.getDateOfBirth());
-
- // validate state
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 0, resp.getPersonResult().size());
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithMdsSingleResult() {
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc);
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/3_search_with_mds_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- // execute operation
- ErnpRegisterResult resp = client.searchWithMds(eidasDataFirst.getGivenName(), eidasDataFirst.getFamilyName(), eidasDataFirst.getDateOfBirth(), cc);
-
- // validate state
- mockWebServer.takeRequest();
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
- RegisterResult persInfo = resp.getPersonResult().get(0);
- assertEquals("wrong familyname", "DOPISNÍ", persInfo.getFamilyName());
- assertEquals("wrong givenName", "DANA", persInfo.getGivenName());
- assertEquals("wrong dateOfBirth", "1996-01-01", persInfo.getDateOfBirth());
- assertEquals("wrong bpk", "vypyCkyczK7i+cgPWlJasuJphIA=", persInfo.getBpk());
- assertEquals("wrong pseudonym", "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit", persInfo.getPseudonym().get(0));
- assertNull("placeOfBirth", persInfo.getPlaceOfBirth());
- assertNull("birthName", persInfo.getBirthName());
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithMdsMultiResult() {
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc);
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/4_search_with_mds_multi_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- // execute operation
- ErnpRegisterResult resp = client.searchWithMds(eidasDataFirst.getGivenName(), eidasDataFirst.getFamilyName(), eidasDataFirst.getDateOfBirth(), cc);
-
- // validate state
- mockWebServer.takeRequest();
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 2, resp.getPersonResult().size());
-
- }
-
-
- @Test
- @SneakyThrows
- public void searchWithPersonalIdNoResponse() {
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc);
-
- mockWebServer.enqueue(new MockResponse()
- .setSocketPolicy(SocketPolicy.NO_RESPONSE)
- .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT));
-
- // execute operation
- EidasSAuthenticationException error = assertThrows("wrong Exception", EidasSAuthenticationException.class,
- () -> client.searchWithPersonIdentifier(eidasDataFirst.getPseudonym(), cc));
- assertEquals("wrong errorCode", "module.eidasauth.matching.11", error.getErrorId());
- mockWebServer.takeRequest();
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithPersonalIdErrorResponse() {
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc);
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(400)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/error_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- // execute operation
- EidasSAuthenticationException error = assertThrows("wrong Exception", EidasSAuthenticationException.class,
- () -> client.searchWithPersonIdentifier(eidasDataFirst.getPseudonym(), cc));
- assertEquals("wrong errorCode", "module.eidasauth.matching.11", error.getErrorId());
- mockWebServer.takeRequest();
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithPersonalIdNoResult() {
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc);
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/ernp_empty_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- // execute operation
- ErnpRegisterResult resp = client.searchWithPersonIdentifier(eidasDataFirst.getPseudonym(), cc);
-
- // validate request
- final RecordedRequest request = mockWebServer.takeRequest();
- String reqBody = request.getBody().readUtf8();
- assertFalse("no request body", reqBody.isEmpty());
- JsonNode reqJson = mapper.readTree(reqBody);
- checkSearchOptions(reqJson, "Searching PersonIdentifier");
- JsonNode person = getJsonObject(reqJson, "suchdaten");
- checkEidasDocument(person, "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier", cc, eidasDataFirst.getPseudonym());
-
- // validate state
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 0, resp.getPersonResult().size());
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithPersonalIdSingleResult() {
- final String cc = "DE";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc);
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/1_search_with_personalId_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- // execute operation
- ErnpRegisterResult resp = client.searchWithPersonIdentifier(eidasDataFirst.getPseudonym(), cc);
-
- // validate state
- mockWebServer.takeRequest();
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
- RegisterResult persInfo = resp.getPersonResult().get(0);
- assertEquals("wrong familyname", "CtKKrtUe", persInfo.getFamilyName());
- assertEquals("wrong givenName", "dUeYzUFg", persInfo.getGivenName());
- assertEquals("wrong dateOfBirth", "1985-05-05", persInfo.getDateOfBirth());
- assertEquals("wrong bpk", "+OQnljn0Son1W2rkM73nP/VMsvc=", persInfo.getBpk());
- assertEquals("wrong pseudonym", "Y8ADWaeh0h", persInfo.getPseudonym().get(0));
- assertEquals("wrong placeOfBirth", "hrFevCfP", persInfo.getPlaceOfBirth());
- assertEquals("wrong birthName", "sNUEAhEr", persInfo.getBirthName());
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithPersonalIdSingleResultCountryNoMatch() {
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc);
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/1_search_with_personalId_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- // execute operation
- ErnpRegisterResult resp = client.searchWithPersonIdentifier(eidasDataFirst.getPseudonym(), cc);
-
- // validate state
- mockWebServer.takeRequest();
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
- RegisterResult persInfo = resp.getPersonResult().get(0);
- assertEquals("wrong familyname", "CtKKrtUe", persInfo.getFamilyName());
- assertEquals("wrong givenName", "dUeYzUFg", persInfo.getGivenName());
- assertEquals("wrong dateOfBirth", "1985-05-05", persInfo.getDateOfBirth());
- assertEquals("wrong bpk", "+OQnljn0Son1W2rkM73nP/VMsvc=", persInfo.getBpk());
- assertTrue("pseudonym", persInfo.getPseudonym().isEmpty());
- assertNull("placeOfBirth", persInfo.getPlaceOfBirth());
- assertNull("birthName", persInfo.getBirthName());
-
- }
-
-
- @Test
- @SneakyThrows
- public void searchWithPersonalIdMultiResult() {
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc);
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/4_search_with_mds_multi_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- // execute operation
- EidasSAuthenticationException error = assertThrows("wrong Exception", EidasSAuthenticationException.class,
- () -> client.searchWithPersonIdentifier(eidasDataFirst.getPseudonym(), cc));
- assertEquals("wrong errorCode", "module.eidasauth.matching.03", error.getErrorId());
- mockWebServer.takeRequest();
-
- }
-
-
- @Test
- @SneakyThrows
- public void searchWithCcspecificsNoResponse() {
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc);
-
- mockWebServer.enqueue(new MockResponse()
- .setSocketPolicy(SocketPolicy.NO_RESPONSE)
- .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT));
-
- // execute operation
- EidasSAuthenticationException error = assertThrows("wrong Exception", EidasSAuthenticationException.class,
- () -> client.searchCountrySpecific(new DeSpecificDetailSearchProcessor().generateSearchRequest(eidasDataFirst), cc));
- assertEquals("wrong errorCode", "module.eidasauth.matching.11", error.getErrorId());
- mockWebServer.takeRequest();
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithCcspecificsErrorResponse() {
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc);
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(400)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/error_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- // execute operation
- EidasSAuthenticationException error = assertThrows("wrong Exception", EidasSAuthenticationException.class,
- () -> client.searchCountrySpecific(new DeSpecificDetailSearchProcessor().generateSearchRequest(eidasDataFirst), cc));
- assertEquals("wrong errorCode", "module.eidasauth.matching.11", error.getErrorId());
- mockWebServer.takeRequest();
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithCcspecificsNoResult() {
- final String cc = "DE";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc).toBuilder()
- .birthName(RandomStringUtils.randomAlphabetic(5))
- .placeOfBirth(RandomStringUtils.randomAlphabetic(5))
- .build();
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/ernp_empty_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- // execute operation
- ErnpRegisterResult resp = client.searchCountrySpecific(
- new DeSpecificDetailSearchProcessor().generateSearchRequest(eidasDataFirst), cc);
-
- // validate request
- final RecordedRequest request = mockWebServer.takeRequest();
- String reqBody = request.getBody().readUtf8();
- assertFalse("no request body", reqBody.isEmpty());
- JsonNode reqJson = mapper.readTree(reqBody);
- checkSearchOptions(reqJson, "Searching DE specific");
- JsonNode person = getJsonObject(reqJson, "suchdaten");
- checkJsonElement(person, "familienname", eidasDataFirst.getFamilyName());
- checkJsonElement(person, "vorname", eidasDataFirst.getGivenName());
- checkPersonDateOfBirth(person, eidasDataFirst.getDateOfBirth());
- checkEidasDocument(person, "http://eidas.europa.eu/attributes/naturalperson/PlaceOfBirth", cc, eidasDataFirst.getPlaceOfBirth());
- checkEidasDocument(person, "http://eidas.europa.eu/attributes/naturalperson/BirthName", cc, eidasDataFirst.getBirthName());
-
- // validate state
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 0, resp.getPersonResult().size());
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithCcspecificsSingleResult() {
- final String cc = "DE";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc);
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/1_search_with_personalId_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- // execute operation
- ErnpRegisterResult resp = client.searchCountrySpecific(
- new DeSpecificDetailSearchProcessor().generateSearchRequest(eidasDataFirst), cc);
-
- // validate state
- mockWebServer.takeRequest();
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
- RegisterResult persInfo = resp.getPersonResult().get(0);
- assertEquals("wrong familyname", "CtKKrtUe", persInfo.getFamilyName());
- assertEquals("wrong givenName", "dUeYzUFg", persInfo.getGivenName());
- assertEquals("wrong dateOfBirth", "1985-05-05", persInfo.getDateOfBirth());
- assertEquals("wrong bpk", "+OQnljn0Son1W2rkM73nP/VMsvc=", persInfo.getBpk());
- assertEquals("wrong pseudonym", "Y8ADWaeh0h", persInfo.getPseudonym().get(0));
- assertEquals("wrong placeOfBirth", "hrFevCfP", persInfo.getPlaceOfBirth());
- assertEquals("wrong birthName", "sNUEAhEr", persInfo.getBirthName());
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithCcspecificsSingleResultCountryNoMatch() {
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc);
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/1_search_with_personalId_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- // execute operation
- ErnpRegisterResult resp = client.searchCountrySpecific(
- new DeSpecificDetailSearchProcessor().generateSearchRequest(eidasDataFirst), cc);
-
- // validate state
- mockWebServer.takeRequest();
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
- RegisterResult persInfo = resp.getPersonResult().get(0);
- assertEquals("wrong familyname", "CtKKrtUe", persInfo.getFamilyName());
- assertEquals("wrong givenName", "dUeYzUFg", persInfo.getGivenName());
- assertEquals("wrong dateOfBirth", "1985-05-05", persInfo.getDateOfBirth());
- assertEquals("wrong bpk", "+OQnljn0Son1W2rkM73nP/VMsvc=", persInfo.getBpk());
- assertTrue("pseudonym", persInfo.getPseudonym().isEmpty());
- assertNull("placeOfBirth", persInfo.getPlaceOfBirth());
- assertNull("birthName", persInfo.getBirthName());
-
- }
-
-
- @Test
- @SneakyThrows
- public void searchWithCcspecificsMultiResult() {
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc);
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/4_search_with_mds_multi_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- // execute operation
- EidasSAuthenticationException error = assertThrows("wrong Exception", EidasSAuthenticationException.class,
- () -> client.searchCountrySpecific(new DeSpecificDetailSearchProcessor().generateSearchRequest(eidasDataFirst), cc));
- assertEquals("wrong errorCode", "module.eidasauth.matching.03", error.getErrorId());
- mockWebServer.takeRequest();
-
- }
-
-
- @Test
- @SneakyThrows
- public void addPersonNoResponse() {
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc);
-
- mockWebServer.enqueue(new MockResponse()
- .setSocketPolicy(SocketPolicy.NO_RESPONSE)
- .setResponseCode(HttpURLConnection.HTTP_NO_CONTENT));
-
- // execute operation
- EidasSAuthenticationException error = assertThrows("wrong Exception", EidasSAuthenticationException.class,
- () -> client.add(eidasDataFirst));
- assertEquals("wrong errorCode", "module.eidasauth.matching.11", error.getErrorId());
- mockWebServer.takeRequest();
-
- }
-
- @Test
- @SneakyThrows
- public void addPersonSimpleSuccess() {
- final String cc = "CZ";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc);
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/2_add_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- // execute operation
- // execute operation
- ErnpRegisterResult resp = client.add(eidasDataFirst);
-
- // validate request
- final RecordedRequest request = mockWebServer.takeRequest();
- String reqBody = request.getBody().readUtf8();
- assertFalse("no request body", reqBody.isEmpty());
- JsonNode reqJson = mapper.readTree(reqBody);
- checkJsonElement(reqJson, "begruendung", "Add new person");
- JsonNode person = getJsonObject(reqJson, "personendaten");
- checkJsonElement(person, "familienname", eidasDataFirst.getFamilyName());
- checkJsonElement(person, "vorname", eidasDataFirst.getGivenName());
- checkPersonDateOfBirth(person, eidasDataFirst.getDateOfBirth());
- checkEidasDocument(reqJson, "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier", cc, eidasDataFirst.getPseudonym());
- checkEidasDocument(reqJson, "http://eidas.europa.eu/attributes/naturalperson/PlaceOfBirth", cc);
- checkEidasDocument(reqJson, "http://eidas.europa.eu/attributes/naturalperson/BirthName", cc);
-
-
- // validate state
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
- RegisterResult persInfo = resp.getPersonResult().get(0);
- assertEquals("wrong familyname", "mRjMKAQc", persInfo.getFamilyName());
- assertEquals("wrong givenName", "vdqZZIaA", persInfo.getGivenName());
- assertEquals("wrong dateOfBirth", "1996-01-01", persInfo.getDateOfBirth());
- assertEquals("wrong bpk", "TBGoMlirU881e2jMGETa9WLx1+A=", persInfo.getBpk());
-
- }
-
- @Test
- @SneakyThrows
- public void addPersonSimpleComplexe() {
- final String cc = "DE";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc).toBuilder()
- .birthName(RandomStringUtils.randomAlphabetic(5))
- .placeOfBirth(RandomStringUtils.randomAlphabetic(5))
- .build();
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/2_add_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- // execute operation
- // execute operation
- ErnpRegisterResult resp = client.add(eidasDataFirst);
-
- // validate request
- final RecordedRequest request = mockWebServer.takeRequest();
- String reqBody = request.getBody().readUtf8();
- assertFalse("no request body", reqBody.isEmpty());
- JsonNode reqJson = mapper.readTree(reqBody);
- checkJsonElement(reqJson, "begruendung", "Add new person");
- JsonNode person = getJsonObject(reqJson, "personendaten");
- checkJsonElement(person, "familienname", eidasDataFirst.getFamilyName());
- checkJsonElement(person, "vorname", eidasDataFirst.getGivenName());
- checkPersonDateOfBirth(person, eidasDataFirst.getDateOfBirth());
- checkEidasDocument(reqJson, "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier", cc, eidasDataFirst.getPseudonym());
- checkEidasDocument(reqJson, "http://eidas.europa.eu/attributes/naturalperson/PlaceOfBirth", cc, eidasDataFirst.getPlaceOfBirth());
- checkEidasDocument(reqJson, "http://eidas.europa.eu/attributes/naturalperson/BirthName", cc, eidasDataFirst.getBirthName());
-
- // validate state
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
- RegisterResult persInfo = resp.getPersonResult().get(0);
- assertEquals("wrong familyname", "mRjMKAQc", persInfo.getFamilyName());
- assertEquals("wrong givenName", "vdqZZIaA", persInfo.getGivenName());
- assertEquals("wrong dateOfBirth", "1996-01-01", persInfo.getDateOfBirth());
- assertEquals("wrong bpk", "TBGoMlirU881e2jMGETa9WLx1+A=", persInfo.getBpk());
- assertEquals("wrong pseudonym", "88hvWzUaIX", persInfo.getPseudonym().get(0));
- assertEquals("wrong placeOfBirth", "VRNCAylF", persInfo.getPlaceOfBirth());
- assertEquals("wrong birthName", "miEklFHC", persInfo.getBirthName());
-
- }
-
- @Test
- @SneakyThrows
- public void updateNoLatestVersion() {
- final String cc = "DE";
- final SimpleEidasData eidasDataFirst = generateRandomEidasData(cc).toBuilder()
- .birthName(RandomStringUtils.randomAlphabetic(5))
- .placeOfBirth(RandomStringUtils.randomAlphabetic(5))
- .build();
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/ernp_empty_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- RegisterResult ernpResult = RegisterResult.builder()
- .familyName(eidasDataFirst.getFamilyName())
- .givenName(eidasDataFirst.getGivenName())
- .dateOfBirth(eidasDataFirst.getDateOfBirth())
- .bpk("")
- .pseudonym(Arrays.asList(eidasDataFirst.getPseudonym()))
- .build();
-
- // execute operation
- EidasSAuthenticationException error = assertThrows("wrong Exception", EidasSAuthenticationException.class,
- () -> client.update(ernpResult, eidasDataFirst));
- assertEquals("wrong errorCode", "module.eidasauth.matching.03", error.getErrorId());
- mockWebServer.takeRequest();
-
-
- }
-
-
- @Test
- @SneakyThrows
- public void updateNoUpdateRequired() {
- final String cc = "DE";
- final String personalIdentifierFirst = "Y8ADWaeh0h";
- final SimpleEidasData eidasDataFirst = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName("CtKKrtUe")
- .givenName("dUeYzUFg")
- .dateOfBirth("1985-05-05")
- .personalIdentifier(cc + "/AT/" + personalIdentifierFirst)
- .pseudonym(personalIdentifierFirst)
- .build();
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/1_kitt_search_latest_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- RegisterResult ernpResult = RegisterResult.builder()
- .familyName(eidasDataFirst.getFamilyName())
- .givenName(eidasDataFirst.getGivenName())
- .dateOfBirth(eidasDataFirst.getDateOfBirth())
- .bpk("+OQnljn0Son1W2rkM73nP/VMsvc=")
- .pseudonym(Arrays.asList(eidasDataFirst.getPseudonym()))
- .birthName("sNUEAhEr")
- .placeOfBirth("hrFevCfP")
- .build();
-
- // execute operation
- ErnpRegisterResult resp = client.update(ernpResult, eidasDataFirst);
-
- // validate request
- final RecordedRequest request = mockWebServer.takeRequest();
- String reqBody = request.getBody().readUtf8();
- assertFalse("no request body", reqBody.isEmpty());
- JsonNode reqJson = mapper.readTree(reqBody);
- checkSearchOptions(reqJson, "KITT get-latest-version");
- JsonNode person = getJsonObject(reqJson, "suchdaten");
- checkJsonElement(person, "familienname", ernpResult.getFamilyName());
- checkJsonElement(person, "vorname", ernpResult.getGivenName());
- checkJsonElement(person, "bpkZp", ernpResult.getBpk());
- checkPersonDateOfBirth(person, ernpResult.getDateOfBirth());
-
- //validate state
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
- RegisterResult persInfo = resp.getPersonResult().get(0);
- assertEquals("wrong familyname", ernpResult.getFamilyName(), persInfo.getFamilyName());
- assertEquals("wrong givenName", ernpResult.getGivenName(), persInfo.getGivenName());
- assertEquals("wrong dateOfBirth", ernpResult.getDateOfBirth(), persInfo.getDateOfBirth());
- assertEquals("wrong bpk", ernpResult.getBpk(), persInfo.getBpk());
- assertEquals("wrong pseudonym", ernpResult.getPseudonym().get(0), persInfo.getPseudonym().get(0));
- assertEquals("wrong placeOfBirth", "hrFevCfP", persInfo.getPlaceOfBirth());
- assertEquals("wrong birthName", "sNUEAhEr", persInfo.getBirthName());
-
- }
-
- @Test
- @SneakyThrows
- public void updateUpdateRequiredMds() {
- final String cc = "DE";
- final String personalIdentifierFirst = "Y8ADWaeh0h";
- final SimpleEidasData eidasDataFirst = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName("mVzTMpig6r")
- .givenName("Jb2vj1Xpql")
- .dateOfBirth("1985-05-05")
- .personalIdentifier(cc + "/AT/" + personalIdentifierFirst)
- .pseudonym(personalIdentifierFirst)
- .placeOfBirth("hrFevCfP")
- .birthName("sNUEAhEr")
- .build();
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/1_kitt_search_latest_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/1_kitt_update_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- RegisterResult ernpResult = RegisterResult.builder()
- .familyName("CtKKrtUe")
- .givenName("dUeYzUFg")
- .dateOfBirth("1985-05-05")
- .bpk("+OQnljn0Son1W2rkM73nP/VMsvc=")
- .pseudonym(Arrays.asList("Y8ADWaeh0h"))
- .birthName("sNUEAhEr")
- .placeOfBirth("hrFevCfP")
- .build();
-
- // execute operation
- ErnpRegisterResult resp = client.update(ernpResult, eidasDataFirst);
-
- // validate request
- // check get-latest-version request
- final RecordedRequest request = mockWebServer.takeRequest();
- String reqBody = request.getBody().readUtf8();
- assertFalse("no request body", reqBody.isEmpty());
- JsonNode reqJson = mapper.readTree(reqBody);
- checkSearchOptions(reqJson, "KITT get-latest-version");
- JsonNode person = getJsonObject(reqJson, "suchdaten");
- checkJsonElement(person, "familienname", ernpResult.getFamilyName());
- checkJsonElement(person, "vorname", ernpResult.getGivenName());
- checkJsonElement(person, "bpkZp", ernpResult.getBpk());
- checkPersonDateOfBirth(person, ernpResult.getDateOfBirth());
-
- // check update request
- final RecordedRequest requestKitt = mockWebServer.takeRequest();
- String reqBodyKitt = requestKitt.getBody().readUtf8();
- assertFalse("no request body", reqBodyKitt.isEmpty());
- JsonNode reqJsonKitt = mapper.readTree(reqBodyKitt);
- checkJsonElement(reqJsonKitt, "begruendung", "KITT update dataset");
- checkJsonElement(reqJsonKitt, "entityId", "1933000000000475");
- checkJsonElement(reqJsonKitt, "version", "2022-03-03T10:07:28.885Z");
- JsonNode personChange = getJsonObject(reqJsonKitt, "aendern");
- JsonNode personKitt = getJsonObject(personChange, "personendaten");
- checkJsonElement(personKitt, "familienname", eidasDataFirst.getFamilyName());
- checkJsonElement(personKitt, "vorname", eidasDataFirst.getGivenName());
- checkPersonDateOfBirth(personKitt, eidasDataFirst.getDateOfBirth());
-
- assertFalse("find 'aendern' element", reqJsonKitt.has("anlegen"));
- assertFalse("find 'aendern' element", personChange.has("eidas"));
-
-
- //validate state
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
- RegisterResult persInfo = resp.getPersonResult().get(0);
- assertEquals("wrong familyname", eidasDataFirst.getFamilyName(), persInfo.getFamilyName());
- assertEquals("wrong givenName", eidasDataFirst.getGivenName(), persInfo.getGivenName());
- assertEquals("wrong dateOfBirth", ernpResult.getDateOfBirth(), persInfo.getDateOfBirth());
- assertEquals("wrong bpk", ernpResult.getBpk(), persInfo.getBpk());
- assertEquals("wrong pseudonym", ernpResult.getPseudonym().get(0), persInfo.getPseudonym().get(0));
- assertEquals("wrong placeOfBirth", "hrFevCfP", persInfo.getPlaceOfBirth());
- assertEquals("wrong birthName", "sNUEAhEr", persInfo.getBirthName());
-
- }
-
- @Test
- @SneakyThrows
- public void updateUpdateRequiredEidasDocs() {
- final String cc = "DE";
- final String personalIdentifierFirst = "nj1m79jm9z";
- final SimpleEidasData eidasDataFirst = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName("mRjMKAQc")
- .givenName("vdqZZIaA")
- .dateOfBirth("1996-01-01")
- .personalIdentifier(cc + "/AT/" + personalIdentifierFirst)
- .pseudonym(personalIdentifierFirst)
- .birthName(RandomStringUtils.randomAlphabetic(10))
- .build();
-
- // set ERnP response
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/2_kitt_search_latest_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/2_kitt_update_resp.json"),
- "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- RegisterResult ernpResult = RegisterResult.builder()
- .familyName("mRjMKAQc")
- .givenName("vdqZZIaA")
- .dateOfBirth("1996-01-01")
- .bpk("TBGoMlirU881e2jMGETa9WLx1+A=")
- .pseudonym(Arrays.asList("88hvWzUaIX"))
- .birthName("VRNCAylF")
- .placeOfBirth("miEklFHC")
- .build();
-
- // execute operation
- ErnpRegisterResult resp = client.update(ernpResult, eidasDataFirst);
-
- // validate request
- // check get-latest-version request
- final RecordedRequest request = mockWebServer.takeRequest();
- String reqBody = request.getBody().readUtf8();
- assertFalse("no request body", reqBody.isEmpty());
- JsonNode reqJson = mapper.readTree(reqBody);
- checkSearchOptions(reqJson, "KITT get-latest-version");
- JsonNode person = getJsonObject(reqJson, "suchdaten");
- checkJsonElement(person, "familienname", ernpResult.getFamilyName());
- checkJsonElement(person, "vorname", ernpResult.getGivenName());
- checkJsonElement(person, "bpkZp", ernpResult.getBpk());
- checkPersonDateOfBirth(person, ernpResult.getDateOfBirth());
-
- // check update request
- final RecordedRequest requestKitt = mockWebServer.takeRequest();
- String reqBodyKitt = requestKitt.getBody().readUtf8();
- assertFalse("no request body", reqBodyKitt.isEmpty());
- JsonNode reqJsonKitt = mapper.readTree(reqBodyKitt);
- checkJsonElement(reqJsonKitt, "begruendung", "KITT update dataset");
- checkJsonElement(reqJsonKitt, "entityId", "1933000000000498");
- checkJsonElement(reqJsonKitt, "version", "2022-03-03T10:14:59.712Z");
- JsonNode personChange = getJsonObject(reqJsonKitt, "anlegen");
- checkEidasDocument(personChange, "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier", cc, eidasDataFirst.getPseudonym());
- assertFalse("find 'aendern' element", reqJsonKitt.has("aendern"));
-
- //validate state
- assertNotNull("no ERnP response", resp);
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
- RegisterResult persInfo = resp.getPersonResult().get(0);
- assertEquals("wrong familyname", eidasDataFirst.getFamilyName(), persInfo.getFamilyName());
- assertEquals("wrong givenName", eidasDataFirst.getGivenName(), persInfo.getGivenName());
- assertEquals("wrong dateOfBirth", ernpResult.getDateOfBirth(), persInfo.getDateOfBirth());
- assertEquals("wrong bpk", ernpResult.getBpk(), persInfo.getBpk());
- assertEquals("wrong pseudonym", ernpResult.getPseudonym().get(0), persInfo.getPseudonym().get(0));
- assertEquals("wrong pseudonym", eidasDataFirst.getPseudonym(), persInfo.getPseudonym().get(1));
- assertEquals("wrong placeOfBirth", "VRNCAylF", persInfo.getPlaceOfBirth());
- assertEquals("wrong birthName", "miEklFHC", persInfo.getBirthName());
-
- }
-
-
- private SimpleEidasData generateRandomEidasData(String cc) {
- final String personalIdentifierFirst = RandomStringUtils.randomAlphanumeric(10);
- return SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName(RandomStringUtils.randomAlphanumeric(10))
- .givenName(RandomStringUtils.randomAlphanumeric(10))
- .dateOfBirth("1996-10-15")
- .personalIdentifier(cc + "/AT/" + personalIdentifierFirst)
- .pseudonym(personalIdentifierFirst)
- .build();
-
- }
-
- private void checkEidasDocument(JsonNode person, String art, String cc, String expected) {
- assertTrue("no element: eidas", person.has("eidas"));
- assertTrue("wrong type element: eidas", person.get("eidas").isArray());
-
- boolean found = false;
- Iterator<JsonNode> docs = person.get("eidas").elements();
- while (docs.hasNext() && !found) {
- JsonNode el = docs.next();
- assertTrue("art", el.has("art"));
- assertTrue("wert", el.has("wert"));
- assertTrue("cc", el.has("staatscode2"));
- found = art.equals(el.get("art").asText()) && cc.equals(el.get("staatscode2").asText())
- && expected.equals(el.get("wert").asText());
-
- }
- assertTrue("Missing eidas document", found);
-
- }
-
- private void checkEidasDocument(JsonNode person, String art, String cc) {
- assertTrue("no element: eidas", person.has("eidas"));
- assertTrue("wrong type element: eidas", person.get("eidas").isArray());
-
- boolean found = false;
- Iterator<JsonNode> docs = person.get("eidas").elements();
- while (docs.hasNext() && !found) {
- JsonNode el = docs.next();
- assertTrue("art", el.has("art"));
- assertTrue("wert", el.has("wert"));
- assertTrue("cc", el.has("staatscode2"));
- found = art.equals(el.get("art").asText()) && cc.equals(el.get("staatscode2").asText());
-
- }
- assertFalse("Missing eidas document", found);
-
- }
-
- private void checkPersonDateOfBirth(JsonNode person, String dateOfBirth) {
- JsonNode birthDay = getJsonObject(person, "geburtsdatum");
- String[] el = dateOfBirth.split("-");
- checkJsonElement(birthDay, "jahr", Integer.parseInt(el[0]));
- checkJsonElement(birthDay, "monat", Integer.parseInt(el[1]));
- checkJsonElement(birthDay, "tag", Integer.parseInt(el[2]));
-
- }
-
- private void checkSearchOptions(JsonNode json, String reason) {
- checkJsonElement(json, "begruendung", reason);
- JsonNode options = getJsonObject(json, "suchoptionen");
- checkJsonElement(options, "historisch", "AktuellUndHistorisch");
- checkJsonElement(options, "sucheMitNamensteilen", false);
- checkJsonElement(options, "suchwizard", false);
- checkJsonElement(options, "zmr", false);
-
- }
-
- private JsonNode getJsonObject(JsonNode json, String key) {
- assertTrue("no element: " + key, json.has(key));
- assertTrue("wrong type element: " + key, json.get(key).isObject());
- return json.get(key);
-
- }
-
- private void checkJsonElement(JsonNode json, String key, int expected) {
- assertTrue("no element: " + key, json.has(key));
- assertTrue("wong element-type: " + key, json.get(key).isInt());
- assertEquals("wong element-value: " + key, expected, json.get(key).asInt());
-
- }
-
- private void checkJsonElement(JsonNode json, String key, String expected) {
- assertTrue("no element: " + key, json.has(key));
- assertTrue("wong element-type: " + key, json.get(key).isTextual());
- assertEquals("wong element-value: " + key, expected, json.get(key).asText());
-
- }
-
- private void checkJsonElement(JsonNode json, String key, boolean expected) {
- assertTrue("no element: " + key, json.has(key));
- assertTrue("wong element-type: " + key, json.get(key).isBoolean());
- assertEquals("wong element-value: " + key, expected, json.get(key).asBoolean());
-
- }
-
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/SzrClientProductionTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/SzrClientProductionTest.java
deleted file mode 100644
index fb52a729..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/SzrClientProductionTest.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright 2018 A-SIT Plus GmbH
- * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ,
- * A-SIT Plus GmbH, A-SIT, and Graz University of Technology.
- *
- * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "License");
- * You may not use this work except in compliance with the License.
- * You may obtain a copy of the License at:
- * https://joinup.ec.europa.eu/news/understanding-eupl-v12
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses.
- * The "NOTICE" text file is part of the distribution. Any derivative works
- * that you distribute must include a readable copy of the "NOTICE" text file.
-*/
-
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.clients;
-
-import java.util.List;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.bouncycastle.util.encoders.Base64;
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.annotation.IfProfileValue;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.szr.SzrClient;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.SzrCommunicationException;
-import at.gv.egiz.eaaf.core.api.data.EaafConstants;
-import at.gv.egiz.eaaf.core.api.idp.IConfiguration;
-
-
-@IfProfileValue(name = "spring.profiles.active", value = "devEnvironment")
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_realConfig.xml"})
-@TestPropertySource(locations = {
- //"classpath:/application.properties",
- "file:/home/tlenz/Projekte/config/ms_connector/default_config.properties",
- })
-public class SzrClientProductionTest {
- private static final Logger log = LoggerFactory.getLogger(SzrClientProductionTest.class);
-
- @Autowired
- SzrClient szrClient;
- @Autowired
- IConfiguration basicConfig;
-
- private static final String DUMMY_TARGET = EaafConstants.URN_PREFIX_CDID + "ZP";
-
- @Test
- public void dummyTest() {
-
- }
-
- @Test
- public void getEidasBind() throws EidasSAuthenticationException {
- String vsz = RandomStringUtils.randomAlphanumeric(10);
- String bindingPubKey = Base64.toBase64String(RandomStringUtils.random(20).getBytes());
- String eidStatus = "urn:eidgvat:eid.status.eidas";
-
- String eidasBind = szrClient.getEidasBind(vsz, bindingPubKey, eidStatus, getEidData());
-
- Assert.assertNotNull("eidasBind", eidasBind);
-
- }
-
- @Ignore
- @Test
- public void getBpkTest() throws EidasSAuthenticationException {
- String vkz = basicConfig.getBasicConfiguration(
- Constants.CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_VKZ, "no VKZ defined");
- final List<String> bPK = szrClient.getBpk(getEidData(), DUMMY_TARGET, vkz);
-
- if (bPK.isEmpty()) {
- throw new SzrCommunicationException("ernb.01", new Object[]{"bPK list is empty"});
- }
- for (String b : bPK) {
- if (StringUtils.isEmpty(b)) {
- throw new SzrCommunicationException("ernb.01", new Object[]{"bPK is null or empty"});
- }
- }
-
- }
-
- private SimpleEidasData getEidData() {
- return SimpleEidasData.builder()
- .familyName("Mustermann")
- .givenName("Franz")
- .dateOfBirth("1989-05-04")
- .citizenCountryCode("IS")
- .pseudonym("1234ffgsdfg56789ABCDEF")
- .build();
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/SzrClientTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/SzrClientTest.java
deleted file mode 100644
index c47c4fb0..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/SzrClientTest.java
+++ /dev/null
@@ -1,284 +0,0 @@
-/*
- * Copyright 2018 A-SIT Plus GmbH
- * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ,
- * A-SIT Plus GmbH, A-SIT, and Graz University of Technology.
- *
- * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "License");
- * You may not use this work except in compliance with the License.
- * You may obtain a copy of the License at:
- * https://joinup.ec.europa.eu/news/understanding-eupl-v12
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses.
- * The "NOTICE" text file is part of the distribution. Any derivative works
- * that you distribute must include a readable copy of the "NOTICE" text file.
- */
-
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.clients;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyList;
-import static org.mockito.Mockito.when;
-
-import java.io.IOException;
-import java.util.List;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.cxf.binding.soap.SoapFault;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
-
-import com.github.skjolber.mockito.soap.SoapServiceRule;
-
-import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.szr.SzrClient;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.SzrCommunicationException;
-import at.gv.egiz.eaaf.core.api.data.EaafConstants;
-import at.gv.egiz.eaaf.core.impl.utils.DomUtils;
-import lombok.extern.slf4j.Slf4j;
-import szrservices.GetIdentityLinkEidasResponse;
-import szrservices.PersonInfoType;
-import szrservices.SZR;
-import szrservices.SZRException_Exception;
-import szrservices.SignContentEntry;
-import szrservices.SignContentResponse;
-import szrservices.SignContentResponseType;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"})
-@DirtiesContext(classMode = ClassMode.AFTER_CLASS)
-@Slf4j
-public class SzrClientTest {
-
- @Autowired SzrClient szrClient;
- @Autowired MsConnectorDummyConfigMap basicConfig;
-
- private static final String DUMMY_TARGET = EaafConstants.URN_PREFIX_CDID + "ZP";
-
- private SZR szrMock = null;
-
- @Rule
- public SoapServiceRule soap = SoapServiceRule.newInstance();
-
- /**
- * Initialize jUnit test.
- */
- @Before
- public void initializer() {
- if (szrMock == null) {
- szrMock = soap.mock(SZR.class, "http://localhost:1234/demoszr");
- }
-
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.eidasbind.mds.inject", "false");
-
- }
-
- @Test
- public void getEidasBindRealSzrResponse() throws SZRException_Exception, SzrCommunicationException, IOException {
- final SignContentResponse szrResponse = new SignContentResponse();
- final SignContentEntry result1 = new SignContentEntry();
- final SignContentResponseType content = new SignContentResponseType();
- content.getOut().add(result1);
- szrResponse.setSignContentResponse(content);
-
- result1.setKey("bcBindReq");
- result1.setValue(IOUtils.toString(SzrClient.class.getResourceAsStream("/data/szr/signed_eidasBind.jws")));
-
- when(szrMock.signContent(any(), anyList(), anyList())).thenReturn(content);
-
- final String bcBind = szrClient
- .getEidasBind(RandomStringUtils.randomAlphabetic(10), RandomStringUtils.randomAlphabetic(10),
- RandomStringUtils.randomAlphabetic(10), getEidData());
-
- Assert.assertNotNull("bcBind is null", bcBind);
- Assert.assertEquals("bcBind not match", result1.getValue(), bcBind);
-
- }
-
- @Test
- public void eidasBindNull() throws SZRException_Exception {
- when(szrMock.signContent(any(), anyList(), anyList())).thenReturn(null);
-
- try {
- szrClient
- .getEidasBind(RandomStringUtils.randomAlphabetic(10), RandomStringUtils.randomAlphabetic(10),
- RandomStringUtils.randomAlphabetic(10), getEidData());
- } catch (SzrCommunicationException e) {
- Assert.assertTrue("Not correct error", e.getMessage().contains("ernb.01"));
-
- }
- }
-
- @Test
- public void eidasBindInvalidResponse() throws SZRException_Exception {
- final SignContentEntry result2 = new SignContentEntry();
- final SignContentResponseType content1 = new SignContentResponseType();
- content1.getOut().add(result2);
- when(szrMock.signContent(any(), anyList(), anyList())).thenReturn(content1);
-
- try {
- szrClient
- .getEidasBind(RandomStringUtils.randomAlphabetic(10), RandomStringUtils.randomAlphabetic(10),
- RandomStringUtils.randomAlphabetic(10), getEidData());
- } catch (SzrCommunicationException e) {
- Assert.assertTrue("Not correct error", e.getMessage().contains("ernb.01"));
-
- }
- }
-
- public void eidasBindEmptyResponse() throws SZRException_Exception {
- final SignContentEntry result2 = new SignContentEntry();
- final SignContentResponseType content1 = new SignContentResponseType();
- content1.getOut().add(result2);
- result2.setKey("bcBindReq");
- result2.setValue("");
- when(szrMock.signContent(any(), anyList(), anyList())).thenReturn(content1);
-
- try {
- szrClient
- .getEidasBind(RandomStringUtils.randomAlphabetic(10), RandomStringUtils.randomAlphabetic(10),
- RandomStringUtils.randomAlphabetic(10), getEidData());
- } catch (SzrCommunicationException e) {
- Assert.assertTrue("Not correct error", e.getMessage().contains("ernb.01"));
-
- }
- }
-
- @Test
- public void eidasBindValid() throws SZRException_Exception, SzrCommunicationException {
- final SignContentResponse szrResponse = new SignContentResponse();
- final SignContentEntry result1 = new SignContentEntry();
- final SignContentResponseType content = new SignContentResponseType();
- content.getOut().add(result1);
- szrResponse.setSignContentResponse(content);
-
- result1.setKey("bcBindReq");
- result1.setValue(RandomStringUtils.randomAlphanumeric(100));
-
- when(szrMock.signContent(any(), anyList(), anyList())).thenReturn(content);
-
- final String bcBind = szrClient
- .getEidasBind(RandomStringUtils.randomAlphabetic(10), RandomStringUtils.randomAlphabetic(10),
- RandomStringUtils.randomAlphabetic(10), getEidData());
-
- Assert.assertNotNull("bcBind is null", bcBind);
- Assert.assertEquals("bcBind not match", result1.getValue(), bcBind);
-
- }
-
- @Test
- public void eidasBindValidWithMds() throws SZRException_Exception, SzrCommunicationException {
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.eidasbind.mds.inject", "true");
-
- final SignContentResponse szrResponse = new SignContentResponse();
- final SignContentEntry result1 = new SignContentEntry();
- final SignContentResponseType content = new SignContentResponseType();
- content.getOut().add(result1);
- szrResponse.setSignContentResponse(content);
-
- result1.setKey("bcBindReq");
- result1.setValue(RandomStringUtils.randomAlphanumeric(100));
-
- when(szrMock.signContent(any(), anyList(), anyList())).thenReturn(content);
-
- final String bcBind = szrClient
- .getEidasBind(RandomStringUtils.randomAlphabetic(10), RandomStringUtils.randomAlphabetic(10),
- RandomStringUtils.randomAlphabetic(10), getEidData());
-
- Assert.assertNotNull("bcBind is null", bcBind);
- Assert.assertEquals("bcBind not match", result1.getValue(), bcBind);
-
- }
-
- @Ignore
- @Test
- public void getBpkTest() throws EidasSAuthenticationException {
- final List<String> bPK = szrClient.getBpk(getEidData(), DUMMY_TARGET, basicConfig
- .getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_VKZ, "no VKZ defined"));
-
- if (bPK.isEmpty()) {
- throw new SzrCommunicationException("ernb.01", new Object[]{"bPK list is empty"});
- }
- for (final String b : bPK) {
- if (StringUtils.isEmpty(b)) {
- throw new SzrCommunicationException("ernb.01", new Object[]{"bPK is null or empty"});
- }
- }
-
- }
-
- private void checkElement(String expected, String value) {
- Assert.assertNotNull(value);
- Assert.assertEquals(expected, value);
-
- }
-
- @SuppressWarnings("SameParameterValue")
- private void setSzrResponseIdentityLink(String responseXmlPath) throws JAXBException, SZRException_Exception {
- final JAXBContext jaxbContext = JAXBContext
- .newInstance(szrservices.ObjectFactory.class, org.w3._2001._04.xmldsig_more.ObjectFactory.class,
- org.w3._2000._09.xmldsig.ObjectFactory.class,
- at.gv.e_government.reference.namespace.persondata._20020228.ObjectFactory.class);
- final Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
- final GetIdentityLinkEidasResponse szrResponse = (GetIdentityLinkEidasResponse) jaxbUnmarshaller
- .unmarshal(this.getClass().getResourceAsStream(responseXmlPath));
- when(szrMock.getIdentityLinkEidas(any(PersonInfoType.class))).thenReturn(szrResponse.getGetIdentityLinkReturn());
-
- }
-
- @SuppressWarnings("SameParameterValue")
- private void setSzrExceptionIdentityLink(String responseXmlPath)
- throws ParserConfigurationException, SAXException, IOException, SZRException_Exception {
- final Element detailerror = DomUtils.parseXmlNonValidating(this.getClass().getResourceAsStream(responseXmlPath));
- final javax.xml.namespace.QName qName = new javax.xml.namespace.QName("urn:SZRServices", "F455", "p344");
- final SoapFault fault = new SoapFault(
- "The travel document you sent to insert a person already exists for another person. " + "Either check the document or have the person altered accordingly",
- qName);
- fault.setRole("urn:SZRServices");
- fault.setDetail(detailerror);
- when(szrMock.getIdentityLinkEidas(any(PersonInfoType.class))).thenThrow(fault);
-
- }
-
- private SimpleEidasData getEidData() {
- return SimpleEidasData.builder()
- .familyName("Mustermann")
- .givenName("Franz")
- .dateOfBirth("1989-05-05")
- .citizenCountryCode("IS")
- .pseudonym("1234sdgsdfg56789ABCDEF")
- .build();
- }
-
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrAddressSearchClientProductionTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrAddressSearchClientProductionTest.java
deleted file mode 100644
index a6ff234b..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrAddressSearchClientProductionTest.java
+++ /dev/null
@@ -1,169 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.clients;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.annotation.IfProfileValue;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.ZmrAddressSoapClient;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.ZmrAddressSoapClient.AddressInfo;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.ZmrAddressSoapClient.DetailLevel;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.LoggingHandler;
-import at.gv.bmi.namespace.zmr_su.zrm._20040201_.address.Adressdaten;
-import at.gv.e_government.reference.namespace.persondata.de._20040201.PostAdresseTyp;
-import at.gv.e_government.reference.namespace.persondata.de._20040201.ZustelladresseTyp;
-import at.gv.egiz.eaaf.core.api.idp.IConfiguration;
-import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.Logger;
-
-@IfProfileValue(name = "spring.profiles.active", value = "devEnvironment")
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_realConfig.xml" })
-@TestPropertySource(locations = {
- // "classpath:/application.properties",
- "file:/home/tlenz/Projekte/config/ms_connector/default_config.properties",
-})
-public class ZmrAddressSearchClientProductionTest {
-
-
- @Autowired ZmrAddressSoapClient client;
- @Autowired IConfiguration basicConfig;
-
- @BeforeClass
- public static void classInitializer() {
- final Logger logger1 = (Logger) LoggerFactory.getLogger(LoggingHandler.class);
- logger1.setLevel(Level.TRACE);
-
- final Logger logger2 = (Logger) LoggerFactory.getLogger(ZmrAddressSoapClient.class);
- logger2.setLevel(Level.TRACE);
-
- final Logger rootLogger = (Logger) LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
- rootLogger.setLevel(Level.INFO);
-
- }
-
- @Test
- public void gemeinde() throws EidasSAuthenticationException {
- // build dummy request
- Adressdaten req = new Adressdaten();
- PostAdresseTyp address = new PostAdresseTyp();
- address.setGemeinde("Frohnl*");
- req.setPostAdresse(address);
-
- // execute test
- AddressInfo resp = client.searchAddress(req);
-
- // validate state
- assertFalse("no results", resp.getPersonResult().isEmpty());
- assertEquals("wrong detail level", DetailLevel.CITY, resp.getLevel());
-
-
- }
-
- @Test
- public void ortschaftAndGemeinde() throws EidasSAuthenticationException {
- // build dummy request
- Adressdaten req = new Adressdaten();
- PostAdresseTyp address = new PostAdresseTyp();
- address.setGemeinde("Frohnleiten");
- address.setOrtschaft("Wannersdorf");
- req.setPostAdresse(address);
-
- // execute test
- AddressInfo resp = client.searchAddress(req);
-
- // validate state
- assertFalse("no results", resp.getPersonResult().isEmpty());
- assertEquals("wrong detail level", DetailLevel.STREET, resp.getLevel());
-
- }
-
- @Test
- public void ortschaftAndGemeindeAndStreet() throws EidasSAuthenticationException {
- // build dummy request
- Adressdaten req = new Adressdaten();
- PostAdresseTyp address = new PostAdresseTyp();
- address.setGemeinde("Frohnleiten");
- address.setOrtschaft("Wannersdorf");
- req.setPostAdresse(address);
-
- ZustelladresseTyp addressDetail = new ZustelladresseTyp();
- addressDetail.setStrassenname("Wannersdorf");
- address.setZustelladresse(addressDetail);
-
- // execute test
- AddressInfo resp = client.searchAddress(req);
-
- // validate state
- assertFalse("no results", resp.getPersonResult().isEmpty());
- assertEquals("wrong detail level", DetailLevel.NUMBER, resp.getLevel());
-
- }
-
-
- @Test
- public void ortschaftAndGemeinde2() throws EidasSAuthenticationException {
- // build dummy request
- Adressdaten req = new Adressdaten();
- PostAdresseTyp address = new PostAdresseTyp();
- address.setGemeinde("Fro*");
- address.setOrtschaft("Wannersdorf");
- req.setPostAdresse(address);
-
- // execute test
- AddressInfo resp = client.searchAddress(req);
-
- // validate state
- assertFalse("no results", resp.getPersonResult().isEmpty());
- assertEquals("wrong detail level", DetailLevel.CITY, resp.getLevel());
-
- }
-
- @Test
- public void ortschaftAndGemeinde3() throws EidasSAuthenticationException {
- // build dummy request
- Adressdaten req = new Adressdaten();
- PostAdresseTyp address = new PostAdresseTyp();
- address.setGemeinde("Eggelsberg");
- address.setOrtschaft("Wannersdorf");
- req.setPostAdresse(address);
-
- // execute test
- AddressInfo resp = client.searchAddress(req);
-
- // validate state
- assertFalse("no results", resp.getPersonResult().isEmpty());
- assertEquals("wrong detail level", DetailLevel.STREET, resp.getLevel());
-
- }
-
-
- @Test
- public void ortschaft() throws EidasSAuthenticationException {
- // build dummy request
- Adressdaten req = new Adressdaten();
- PostAdresseTyp address = new PostAdresseTyp();
- address.setOrtschaft("Wannersdorf");
- req.setPostAdresse(address);
-
- // execute test
- AddressInfo resp = client.searchAddress(req);
-
- // validate state
- assertFalse("no results", resp.getPersonResult().isEmpty());
- assertEquals("wrong detail level", DetailLevel.CITY, resp.getLevel());
-
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientProductionTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientProductionTest.java
deleted file mode 100644
index 97ea5bfa..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientProductionTest.java
+++ /dev/null
@@ -1,478 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.clients;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import java.util.List;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.annotation.IfProfileValue;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-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.dao.SimpleEidasData;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.LoggingHandler;
-import at.gv.bmi.namespace.zmr_su.zmr._20040201.EidasSuchdatenType;
-import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonSuchenRequest;
-import at.gv.e_government.reference.namespace.persondata.de._20040201.NatuerlichePersonTyp;
-import at.gv.e_government.reference.namespace.persondata.de._20040201.PersonenNameTyp;
-import at.gv.egiz.eaaf.core.api.idp.IConfiguration;
-import ch.qos.logback.classic.Level;
-import ch.qos.logback.classic.Logger;
-
-@IfProfileValue(name = "spring.profiles.active", value = "devEnvironment")
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_realConfig.xml" })
-@TestPropertySource(locations = {
- // "classpath:/application.properties",
- "file:/home/tlenz/Projekte/config/ms_connector/default_config.properties",
-})
-public class ZmrClientProductionTest {
-
- @Autowired
- ZmrSoapClient client;
- @Autowired
- IConfiguration basicConfig;
-
- @BeforeClass
- public static void classInitializer() {
- final Logger logger1 = (Logger) LoggerFactory.getLogger(LoggingHandler.class);
- logger1.setLevel(Level.TRACE);
-
- final Logger logger2 = (Logger) LoggerFactory.getLogger(ZmrSoapClient.class);
- logger2.setLevel(Level.TRACE);
-
- final Logger rootLogger = (Logger) LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
- rootLogger.setLevel(Level.INFO);
-
- }
-
- @Ignore
- @Test
- public void searchWithMdsOnly() throws EidasSAuthenticationException {
-
- final ZmrRegisterResult result = client.searchWithMds(null,
- "Thomas", "Lenz", "1982-09-06",
- "AT");
-
- assertNotNull("ZMR response", result);
- assertNotNull("ZMR processId", result.getProcessId());
- assertNotNull("ZMR personResult", result.getPersonResult());
- assertEquals("personResult size", 1, result.getPersonResult().size());
-
- }
-
- @Test
- public void searchWithMdsOnlyTestIdentity() throws EidasSAuthenticationException {
-
- final ZmrRegisterResult result = client.searchWithMds(null,
- "XXXHildegard", "XXXÖhlinger", "1971-02-18",
- "AT");
-
- assertNotNull("ZMR response", result);
- assertNotNull("ZMR processId", result.getProcessId());
- assertNotNull("ZMR personResult", result.getPersonResult());
- assertEquals("personResult size", 1, result.getPersonResult().size());
-
- }
-
- /*
- * Ignore this test because "javier", "Garcia", "1964-12-31", "EE" is used as test-identity
- * in test-country on vidp.gv.at. vidp.gv.at uses Test-SZR, but Test-SZR is connected to
- * Q-ZMR and Q-ERnP. There is a staging problem because this test uses T-ZMR and T-ERnP.
- */
- @Ignore
- @Test
- public void searchWithMdsOnlyEidasIdentity() throws EidasSAuthenticationException {
-
- final ZmrRegisterResult result = client.searchWithMds(null,
- "javier", "Garcia", "1964-12-31",
- "EE");
-
- assertNotNull("ZMR response", result);
- assertNotNull("ZMR processId", result.getProcessId());
- assertNotNull("ZMR personResult", result.getPersonResult());
- assertEquals("personResult size", 1, result.getPersonResult().size());
-
- }
-
- @Test
- public void searchWithCountrySpecificsNoExits() throws EidasSAuthenticationException {
- final ZmrRegisterResult result = client.searchCountrySpecific(null,
- generateCustomRequest("AT", "Lenz", "Thomas", "1982-09-06",
- null,
- RandomStringUtils.randomAlphabetic(5),
- RandomStringUtils.randomAlphabetic(5)),
- "AT");
-
- assertNotNull("ZMR response", result);
- assertNotNull("ZMR processId", result.getProcessId());
- assertNotNull("ZMR personResult", result.getPersonResult());
- assertEquals("personResult size", 0, result.getPersonResult().size());
-
- }
-
- @Test
- public void searchWithCountrySpecificsWithPersonalId() throws EidasSAuthenticationException {
- final ZmrRegisterResult result = client.searchCountrySpecific(null,
- generateCustomRequest("EE", "Lenz", "Thomas", "1982-09-06",
- "7cEYSvKZvon+V4CDVzNT4E7cjkU4Vq",
- null,
- null),
- "EE");
-
- assertNotNull("ZMR response", result);
- assertNotNull("ZMR processId", result.getProcessId());
- assertNotNull("ZMR personResult", result.getPersonResult());
- assertEquals("personResult size", 1, result.getPersonResult().size());
-
- }
-
- @Test
- public void searchWithPersonalIdOnlyNoExisting() throws EidasSAuthenticationException {
-
- final ZmrRegisterResult result = client.searchWithPersonIdentifier(null,
- RandomStringUtils.randomAlphanumeric(25),
- "AT");
-
- assertNotNull("ZMR response", result);
- assertNotNull("ZMR processId", result.getProcessId());
- assertNotNull("ZMR personResult", result.getPersonResult());
- assertEquals("personResult size", 0, result.getPersonResult().size());
-
- }
-
- @Test
- public void updateZmrEntry() throws EidasSAuthenticationException {
- final String personalIdentifier = "7cEYSvKZvon+V4CDVzNT4E7cjkU4Vq";
- final String cc = "EE";
-
- final SimpleEidasData eidasData = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName("Lenz")
- .givenName("Thomas")
- .dateOfBirth("1982-09-06")
- .personalIdentifier(cc + "/AT/" + personalIdentifier)
- .pseudonym(personalIdentifier)
- .build();
-
- // get initial result
- final ZmrRegisterResult result = client.searchWithMds(null,
- eidasData.getGivenName(),
- eidasData.getFamilyName(),
- eidasData.getDateOfBirth(),
- eidasData.getCitizenCountryCode());
- assertNotNull("ZMR response", result);
- assertEquals("personResult size", 1, result.getPersonResult().size());
-
- // update ZMR entry
- final ZmrRegisterResult updateResult =
- client.update(result.getProcessId(),
- result.getPersonResult().get(0),
- eidasData);
-
- assertNotNull("ZMR response", updateResult);
- assertEquals("personResult size", 1, updateResult.getPersonResult().size());
-
- final ZmrRegisterResult afterUpdateResult = client.searchWithPersonIdentifier(null,
- personalIdentifier, cc);
-
- assertNotNull("ZMR response", afterUpdateResult);
- assertEquals("personResult size", 1, afterUpdateResult.getPersonResult().size());
-
- }
-
- @Ignore
- @Test
- public void updateZmrEntryTestIdentity() throws EidasSAuthenticationException {
- final String personalIdentifier = "7cEYSvKZasdfsafsaf4CDVzNT4E7cjkU4Vq";
- final String cc = "EE";
-
- final SimpleEidasData eidasData = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName("XXXÖhlinger")
- .givenName("XXXHildegard")
- .dateOfBirth("1971-02-18")
- .personalIdentifier(cc + "/AT/" + personalIdentifier)
- .pseudonym(personalIdentifier)
- .build();
-
- // get initial result
- final ZmrRegisterResult result = client.searchWithMds(null,
- eidasData.getGivenName(),
- eidasData.getFamilyName(),
- eidasData.getDateOfBirth(),
- eidasData.getCitizenCountryCode());
- assertNotNull("ZMR response", result);
- assertEquals("personResult size", 1, result.getPersonResult().size());
-
- // update ZMR entry
- final ZmrRegisterResult updateResult =
- client.update(result.getProcessId(),
- result.getPersonResult().get(0),
- eidasData);
-
- assertNotNull("ZMR response", updateResult);
- assertEquals("personResult size", 1, updateResult.getPersonResult().size());
-
-
- final ZmrRegisterResult afterUpdateResultMds = client.searchCountrySpecific(null,
- generateCustomRequest("EE", "XXXHildegard", "XXXÖhlinger", "1971-02-18",
- "7cEYSvKZasdfsafsaf4CDVzNT4E7cjkU4Vq",
- null,
- null),
- cc);
-
- assertNotNull("ZMR response", afterUpdateResultMds);
- assertNotNull("ZMR processId", afterUpdateResultMds.getProcessId());
- assertNotNull("ZMR personResult", afterUpdateResultMds.getPersonResult());
- assertEquals("personResult size", 1, afterUpdateResultMds.getPersonResult().size());
-
-
- // check if ZMR entry can be found by PersonalId
- final ZmrRegisterResult afterUpdateResult = client.searchWithPersonIdentifier(null,
- personalIdentifier, cc);
-
- assertNotNull("ZMR response", afterUpdateResult);
- assertEquals("personResult size", 1, afterUpdateResult.getPersonResult().size());
-
- }
-
- @Test
- public void updateZmrEntryDeSpecific() throws EidasSAuthenticationException {
- final String personalIdentifierFirst = "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit";
- final String cc = "DE";
- final SimpleEidasData eidasDataFirst = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName("XXXvon Brandenburg")
- .givenName("XXXClaus - Maria")
- .dateOfBirth("1994-12-31")
- .personalIdentifier(cc + "/AT/" + personalIdentifierFirst)
- .pseudonym(personalIdentifierFirst)
- .placeOfBirth("Hintergigritzpotschn")
- .birthName("XXXvon Heuburg")
- .build();
-
- // first login with update
- // get initial result
- final ZmrRegisterResult result = client.searchWithMds(null,
- eidasDataFirst.getGivenName(),
- eidasDataFirst.getFamilyName(),
- eidasDataFirst.getDateOfBirth(),
- eidasDataFirst.getCitizenCountryCode());
- assertNotNull("ZMR response", result);
- assertEquals("personResult size", 1, result.getPersonResult().size());
-
- // update ZMR entry
- final ZmrRegisterResult updateResult =
- client.update(result.getProcessId(),
- result.getPersonResult().get(0),
- eidasDataFirst);
-
- assertNotNull("ZMR response", updateResult);
- assertEquals("personResult size", 1, updateResult.getPersonResult().size());
-
- // check if ZMR entry can be found by first PersonalId
- final ZmrRegisterResult firstPersonalIdResult = client.searchWithPersonIdentifier(null,
- personalIdentifierFirst, cc);
- assertNotNull("ZMR response", firstPersonalIdResult);
- assertEquals("first personResult size", 1, firstPersonalIdResult.getPersonResult().size());
-
-
- // check if ZMR entry is not found by valid pseudonym but wrong country
- final ZmrRegisterResult wrongPersonalIdResult = client.searchWithPersonIdentifier(null,
- personalIdentifierFirst, "ES");
- assertNotNull("ZMR response", wrongPersonalIdResult);
- assertEquals("first personResult size", 0, wrongPersonalIdResult.getPersonResult().size());
-
-
- // search CC-specific with MDS + placeOfBirth + birthName
- final ZmrRegisterResult ccSpecificFirstEntry = client.searchCountrySpecific(null,
- generateCustomRequest(
- eidasDataFirst.getCitizenCountryCode(),
- eidasDataFirst.getFamilyName(),
- eidasDataFirst.getGivenName(),
- eidasDataFirst.getDateOfBirth(),
- null,
- eidasDataFirst.getPlaceOfBirth(),
- eidasDataFirst.getBirthName()),
- cc);
-
- assertNotNull("ZMR response", ccSpecificFirstEntry);
- assertNotNull("ZMR processId", ccSpecificFirstEntry.getProcessId());
- assertNotNull("ZMR personResult", ccSpecificFirstEntry.getPersonResult());
- assertEquals("personResult size", 1, ccSpecificFirstEntry.getPersonResult().size());
-
- }
-
- @Test
- public void updateZmrEntryTestIdentity2() throws EidasSAuthenticationException {
- final String personalIdentifierFirst = "7cEYSvKZasdfsafsaf4CDVzNT4E7cjkU4Vq_first";
- final String personalIdentifierSecond = "7cEYSvKZasdfsafsaf4CDVzNT4E7cjkU4Vq_second";
- final String cc = "EE";
-
- final SimpleEidasData eidasDataFirst = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName("XXXTüzekçi")
- .givenName("XXXŐzgür")
- .dateOfBirth("1983-06-04")
- .personalIdentifier(cc + "/AT/" + personalIdentifierFirst)
- .pseudonym(personalIdentifierFirst)
- .build();
-
- final SimpleEidasData eidasDataSecond = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName("XXXTüzekçi")
- .givenName("XXXŐzgür")
- .dateOfBirth("1983-06-04")
- .personalIdentifier(cc + "/AT/" + personalIdentifierSecond)
- .pseudonym(personalIdentifierSecond)
- .build();
-
-
- // first login with update
- // get initial result
- final ZmrRegisterResult result = client.searchWithMds(null,
- eidasDataFirst.getGivenName(),
- eidasDataFirst.getFamilyName(),
- eidasDataFirst.getDateOfBirth(),
- eidasDataFirst.getCitizenCountryCode());
- assertNotNull("ZMR response", result);
- assertEquals("personResult size", 1, result.getPersonResult().size());
-
- // update ZMR entry
- final ZmrRegisterResult updateResult =
- client.update(result.getProcessId(),
- result.getPersonResult().get(0),
- eidasDataFirst);
-
- assertNotNull("ZMR response", updateResult);
- assertEquals("personResult size", 1, updateResult.getPersonResult().size());
-
-
- // second login with update
- // get initial result
- final ZmrRegisterResult resultSecond = client.searchWithMds(null,
- eidasDataSecond.getGivenName(),
- eidasDataSecond.getFamilyName(),
- eidasDataSecond.getDateOfBirth(),
- eidasDataSecond.getCitizenCountryCode());
- assertNotNull("ZMR response", resultSecond);
- assertEquals("personResult size", 1, resultSecond.getPersonResult().size());
-
- // update ZMR entry
- final ZmrRegisterResult updateResultSecond =
- client.update(resultSecond.getProcessId(),
- resultSecond.getPersonResult().get(0),
- eidasDataSecond);
-
- assertNotNull("ZMR response", updateResultSecond);
- assertEquals("personResult size", 1, updateResultSecond.getPersonResult().size());
-
-
- // check if ZMR entry can be found by first PersonalId
- final ZmrRegisterResult firstPersonalIdResult = client.searchWithPersonIdentifier(null,
- personalIdentifierFirst, cc);
- assertNotNull("ZMR response", firstPersonalIdResult);
- assertEquals("first personResult size", 1, firstPersonalIdResult.getPersonResult().size());
-
- // check if ZMR entry can be found by second PersonalId
- final ZmrRegisterResult secondPersonalIdResult = client.searchWithPersonIdentifier(null,
- personalIdentifierFirst, cc);
- assertNotNull("ZMR response", secondPersonalIdResult);
- assertEquals("second personResult size", 1, secondPersonalIdResult.getPersonResult().size());
-
-
- // search CC-specific with first MDS
- final ZmrRegisterResult ccSpecificFirstEntry = client.searchCountrySpecific(null,
- generateCustomRequest(
- eidasDataFirst.getCitizenCountryCode(),
- eidasDataFirst.getFamilyName(),
- eidasDataFirst.getGivenName(),
- eidasDataFirst.getDateOfBirth(),
- eidasDataFirst.getPseudonym(),
- null,
- null),
- cc);
-
- assertNotNull("ZMR response", ccSpecificFirstEntry);
- assertNotNull("ZMR processId", ccSpecificFirstEntry.getProcessId());
- assertNotNull("ZMR personResult", ccSpecificFirstEntry.getPersonResult());
- assertEquals("personResult size", 1, ccSpecificFirstEntry.getPersonResult().size());
-
-
- // search CC-specific with second MDS
- final ZmrRegisterResult ccSpecificSecondEntry = client.searchCountrySpecific(null,
- generateCustomRequest(
- eidasDataSecond.getCitizenCountryCode(),
- eidasDataSecond.getFamilyName(),
- eidasDataSecond.getGivenName(),
- eidasDataSecond.getDateOfBirth(),
- eidasDataSecond.getPseudonym(),
- null,
- null),
- cc);
-
- assertNotNull("ZMR response", ccSpecificSecondEntry);
- assertNotNull("ZMR processId", ccSpecificSecondEntry.getProcessId());
- assertNotNull("ZMR personResult", ccSpecificSecondEntry.getPersonResult());
- assertEquals("personResult size", 1, ccSpecificSecondEntry.getPersonResult().size());
-
-
- }
-
-
- private PersonSuchenRequest generateCustomRequest(String cc, String familyName, String givenName,
- String dateOfBirth, String personalId, String placeOfBirth, String birthName) {
- final PersonSuchenRequest req = new PersonSuchenRequest();
-
- // set basic MDS information
- final NatuerlichePersonTyp searchNatPerson = new NatuerlichePersonTyp();
- req.setNatuerlichePerson(searchNatPerson);
- final PersonenNameTyp searchNatPersonName = new PersonenNameTyp();
- searchNatPerson.setPersonenName(searchNatPersonName);
- searchNatPersonName.setFamilienname(familyName);
- searchNatPersonName.setVorname(givenName);
- searchNatPerson.setGeburtsdatum(dateOfBirth);
-
- // add addtional eIDAS attributes if available
- addIfAvailable(req.getEidasSuchdaten(), cc, Constants.eIDAS_ATTRURN_PLACEOFBIRTH, placeOfBirth);
- addIfAvailable(req.getEidasSuchdaten(), cc, Constants.eIDAS_ATTRURN_BIRTHNAME, birthName);
- addIfAvailable(req.getEidasSuchdaten(), cc, Constants.eIDAS_ATTRURN_PERSONALIDENTIFIER, personalId);
-
- return req;
-
- }
-
- private void addIfAvailable(List<EidasSuchdatenType> eidasSuchdaten,
- String cc, String attrName, String attrValue) {
- if (StringUtils.isNotEmpty(attrValue)) {
- eidasSuchdaten.add(buildEidasSuchData(cc, attrName, attrValue));
-
- }
- }
-
- private EidasSuchdatenType buildEidasSuchData(String cc, String attrName, String attrValue) {
- final EidasSuchdatenType eidasInfos = new EidasSuchdatenType();
- eidasInfos.setStaatscode2(cc);
- eidasInfos.setEidasArt(attrName);
- eidasInfos.setEidasWert(attrValue);
- return eidasInfos;
-
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientTest.java
deleted file mode 100644
index 2ff9f0cb..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientTest.java
+++ /dev/null
@@ -1,1242 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.clients;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThrows;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.when;
-
-import java.math.BigInteger;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Optional;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.cxf.binding.soap.SoapFault;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import com.github.skjolber.mockito.soap.SoapServiceRule;
-
-import at.asitplus.eidas.specific.connector.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;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.RegisterResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.WorkflowException;
-import at.gv.bmi.namespace.zmr_su.base._20040201.RequestType;
-import at.gv.bmi.namespace.zmr_su.base._20040201.ResponseType;
-import at.gv.bmi.namespace.zmr_su.base._20040201_.ServicePort;
-import at.gv.bmi.namespace.zmr_su.zmr._20040201.EidasIdentitaetAnlageType;
-import at.gv.bmi.namespace.zmr_su.zmr._20040201.EidasSuchdatenType;
-import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonAendernRequest;
-import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonSuchenRequest;
-import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonensucheInfoType;
-import at.gv.e_government.reference.namespace.persondata.de._20040201.NatuerlichePersonTyp;
-import at.gv.e_government.reference.namespace.persondata.de._20040201.PersonenNameTyp;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-import lombok.SneakyThrows;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml" })
-@DirtiesContext(classMode = ClassMode.AFTER_CLASS)
-public class ZmrClientTest {
-
- public static final String PROCESS_GENERAL = "GP_EIDAS";
- public static final String PROCESS_TASK_SEARCH = "ZPR_VO_Person_suchen_Meldevorgang";
- public static final String PROCESS_TASK_UPDATE = "ZPR_VO_Person_aendern";
-
- @Autowired
- MsConnectorDummyConfigMap basicConfig;
- @Autowired
- ZmrSoapClient client;
-
- @Rule
- public SoapServiceRule soap = SoapServiceRule.newInstance();
-
- private ServicePort zmrMock = null;
-
- private static JAXBContext jaxbContext;
-
- /**
- * Initialize jUnit class.
- */
- @BeforeClass
- @SneakyThrows
- public static void classInitializer() {
- jaxbContext = JAXBContext.newInstance(
- at.gv.bmi.namespace.zmr_su.zmr._20040201.ObjectFactory.class,
- at.gv.bmi.namespace.zmr_su.gis._20070725.ObjectFactory.class,
- at.gv.bmi.namespace.zmr_su.base._20040201.ObjectFactory.class);
- }
-
- /**
- * Initialize jUnit test.
- */
- @Before
- public void initializer() {
- if (zmrMock == null) {
- zmrMock = soap.mock(ServicePort.class, "http://localhost:1234/demozmr");
- }
- }
-
- @Test
- @SneakyThrows
- public void searchWithMdsEmpty() {
- String familyName = RandomStringUtils.randomAlphabetic(10);
- String givenName = RandomStringUtils.randomAlphabetic(10);
- String dateOfBirth = RandomStringUtils.randomAlphabetic(10);
- final String cc = RandomStringUtils.randomAlphabetic(2).toUpperCase();
- BigInteger processId = new BigInteger(RandomStringUtils.randomNumeric(6));
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any())).thenReturn(
- loadResponseFromFile("/data/zmr/empty_zmr_result.xml"));
-
- // execute operation
- ZmrRegisterResult resp = client.searchWithMds(processId,
- givenName, familyName, dateOfBirth, cc);
-
- // validate state
- assertNotNull("no ZMR response", resp);
- assertEquals("wrong processId", "367100000000079", resp.getProcessId().toString());
- assertEquals("wrong resp size", 0, resp.getPersonResult().size());
-
- // validate request
- assertEquals("wrong number of req.", 1, zmrReq.getAllValues().size());
- assertNotNull("Personensuche req.", zmrReq.getValue().getPersonSuchenRequest());
-
- checkBasicRequestParameters(zmrReq.getValue(), PROCESS_TASK_SEARCH, processId, "jUnit123456");
- PersonSuchenRequest pSuche = zmrReq.getValue().getPersonSuchenRequest();
- checkSearchParameters(pSuche.getPersonensucheInfo());
-
- assertEquals("eidas Docs. size", 0, pSuche.getEidasSuchdaten().size());
- assertNotNull("mds", pSuche.getNatuerlichePerson());
-
- assertEquals("req. givenName", givenName, pSuche.getNatuerlichePerson().getPersonenName().getVorname());
- assertEquals("req. familyName", familyName, pSuche.getNatuerlichePerson().getPersonenName().getFamilienname());
- assertEquals("req. dateOfBirth", dateOfBirth, pSuche.getNatuerlichePerson().getGeburtsdatum());
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithMdsGetHistoricInfos() {
- String familyName = RandomStringUtils.randomAlphabetic(10);
- String givenName = RandomStringUtils.randomAlphabetic(10);
- String dateOfBirth = RandomStringUtils.randomAlphabetic(10);
- final String cc = "EE";
-
- BigInteger processId = new BigInteger(RandomStringUtils.randomNumeric(6));
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any())).thenReturn(
- loadResponseFromFile("/data/zmr/search_with_personalId_only_resp_historicIncluded.xml"));
-
- // execute operation
- ZmrRegisterResult resp = client.searchWithMds(processId,
- givenName, familyName, dateOfBirth, cc);
-
- // validate state
- assertNotNull("no ZMR response", resp);
- assertEquals("wrong processId", "367100000000080", resp.getProcessId().toString());
- assertEquals("wrong resp size", 0, resp.getPersonResult().size());
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithMdsSuccess() {
- String familyName = RandomStringUtils.randomAlphabetic(10);
- String givenName = RandomStringUtils.randomAlphabetic(10);
- String dateOfBirth = RandomStringUtils.randomAlphabetic(10);
- final String cc = "EE";
-
- BigInteger processId = new BigInteger(RandomStringUtils.randomNumeric(6));
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any())).thenReturn(
- loadResponseFromFile("/data/zmr/search_with_personalId_only_resp_moreThanOne_2.xml"));
-
- // execute operation
- ZmrRegisterResult resp = client.searchWithMds(processId,
- givenName, familyName, dateOfBirth, cc);
-
- // validate state
- assertNotNull("no ZMR response", resp);
- assertEquals("wrong processId", "367100000000080", resp.getProcessId().toString());
- assertEquals("wrong resp size", 2, resp.getPersonResult().size());
-
- // check first person
- RegisterResult persInfo = resp.getPersonResult().get(0);
- assertEquals("bPK", "9/MtsPZgBHQMBpQOD6aOY2TUqcY=", persInfo.getBpk());
- assertEquals("dateOfBirth", "1983-06-04", persInfo.getDateOfBirth());
- assertEquals("familyName", "XXXTüzekçi", persInfo.getFamilyName());
- assertEquals("givenName", "XXXŐzgür", persInfo.getGivenName());
- assertNull("placeOfBirth", persInfo.getPlaceOfBirth());
- assertNull("birthName", persInfo.getBirthName());
- assertEquals("num. stored eIDAS identifiers", 1, persInfo.getPseudonym().size());
- assertEquals("stored eIDAS identifiers",
- "aabbcc_should_not_be_included_for_DE", persInfo.getPseudonym().get(0));
-
- // check second person
- RegisterResult persInfo2 = resp.getPersonResult().get(1);
- assertEquals("bPK", "UgeknNsc26lVuB7U/uYGVmWtnnA=", persInfo2.getBpk());
- assertEquals("dateOfBirth", "1983-06-04", persInfo2.getDateOfBirth());
- assertEquals("familyName", "XXXTüzekçi", persInfo2.getFamilyName());
- assertEquals("givenName", "XXXŐzgür", persInfo2.getGivenName());
- assertEquals("num. stored eIDAS identifiers", 1, persInfo2.getPseudonym().size());
- assertEquals("stored eIDAS identifiers",
- "7cEYSvKZasdfsafsaf4CDVzNT4E7cjkU4Vq_first", persInfo2.getPseudonym().get(0));
-
- // validate request
- assertEquals("wrong number of req.", 1, zmrReq.getAllValues().size());
- assertNotNull("Personensuche req.", zmrReq.getValue().getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getValue(), PROCESS_TASK_SEARCH, processId, "jUnit123456");
- PersonSuchenRequest pSuche = zmrReq.getValue().getPersonSuchenRequest();
- checkSearchParameters(pSuche.getPersonensucheInfo());
-
- assertEquals("eidas Docs. size", 0, pSuche.getEidasSuchdaten().size());
- assertNotNull("mds", pSuche.getNatuerlichePerson());
-
- assertEquals("req. givenName", givenName, pSuche.getNatuerlichePerson().getPersonenName().getVorname());
- assertEquals("req. familyName", familyName, pSuche.getNatuerlichePerson().getPersonenName().getFamilienname());
- assertEquals("req. dateOfBirth", dateOfBirth, pSuche.getNatuerlichePerson().getGeburtsdatum());
-
- }
-
- //TODO: test does not throw the valid exception to catch the error that we like to test.
- @Ignore
- @Test
- @SneakyThrows
- public void searchWithPersonalIdentifierZmrError() {
- final String personalIdentifierFirst = RandomStringUtils.randomAlphanumeric(10);
- final String cc = RandomStringUtils.randomAlphabetic(2).toUpperCase();
-
- // inject response
- when(zmrMock.service(any(), any())).thenThrow(injectError(false));
-
- // execute operation
- EidasSAuthenticationException error = assertThrows("wrong Exception", EidasSAuthenticationException.class,
- () -> client.searchWithPersonIdentifier(null, personalIdentifierFirst, cc));
-
- assertEquals("wrong errorCode", "module.eidasauth.matching.01", error.getErrorId());
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithPersonalIdentifierZmrGenericError() {
- final String personalIdentifierFirst = RandomStringUtils.randomAlphanumeric(10);
- final String cc = RandomStringUtils.randomAlphabetic(2).toUpperCase();
-
- // inject response
- when(zmrMock.service(any(), any())).thenThrow(injectError(true));
-
- // execute operation
- EidasSAuthenticationException error = assertThrows("wrong Exception", EidasSAuthenticationException.class,
- () -> client.searchWithPersonIdentifier(null, personalIdentifierFirst, cc));
-
- assertEquals("wrong errorCode", "module.eidasauth.matching.99", error.getErrorId());
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithPersonalIdentifierGetHistoricInfos() {
- final String personalIdentifierFirst = RandomStringUtils.randomAlphanumeric(10);
- final String cc = RandomStringUtils.randomAlphabetic(2).toUpperCase();
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any())).thenReturn(
- loadResponseFromFile("/data/zmr/search_with_personalId_only_resp_historicIncluded.xml"));
-
- // execute operation
- EidasSAuthenticationException error = assertThrows("wrong Exception", EidasSAuthenticationException.class,
- () -> client.searchWithPersonIdentifier(null, personalIdentifierFirst, cc));
-
- assertEquals("wrong errorCode", "module.eidasauth.matching.99", error.getErrorId());
- assertEquals("wrong errorCode", "module.eidasauth.matching.02", ((EaafException) error.getCause()).getErrorId());
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithPersonalIdentifierEmptyResult() {
- final String personalIdentifierFirst = RandomStringUtils.randomAlphanumeric(10);
- final String cc = RandomStringUtils.randomAlphabetic(2).toUpperCase();
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any())).thenReturn(
- loadResponseFromFile("/data/zmr/empty_zmr_result.xml"));
-
- // execute operation
- ZmrRegisterResult resp = client.searchWithPersonIdentifier(null, personalIdentifierFirst, cc);
-
- // validate state
- assertNotNull("no ZMR response", resp);
- assertEquals("wrong processId", "367100000000079", resp.getProcessId().toString());
- assertEquals("wrong resp size", 0, resp.getPersonResult().size());
-
- // validate request
- assertEquals("wrong number of req.", 1, zmrReq.getAllValues().size());
- assertNotNull("Personensuche req.", zmrReq.getValue().getPersonSuchenRequest());
-
- checkBasicRequestParameters(zmrReq.getValue(), PROCESS_TASK_SEARCH, null, "jUnit123456");
- PersonSuchenRequest pSuche = zmrReq.getValue().getPersonSuchenRequest();
- checkSearchParameters(pSuche.getPersonensucheInfo());
-
- assertEquals("eidas Docs. size", 1, pSuche.getEidasSuchdaten().size());
- checkEidasDocumentResult(pSuche.getEidasSuchdaten(),
- "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier", cc, personalIdentifierFirst);
- assertNull("mds", pSuche.getNatuerlichePerson());
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithPersonalIdentifierMoreThanOneResult() {
- final String personalIdentifierFirst = RandomStringUtils.randomAlphanumeric(10);
- final String cc = RandomStringUtils.randomAlphabetic(2).toUpperCase();
-
- // inject response
- when(zmrMock.service(any(), any())).thenReturn(
- loadResponseFromFile("/data/zmr/search_with_personalId_only_resp_moreThanOne.xml"));
-
- // execute operation
- WorkflowException error = assertThrows("wrong Exception", WorkflowException.class,
- () -> client.searchWithPersonIdentifier(null, personalIdentifierFirst, cc));
-
- assertEquals("wrong errorCode", "module.eidasauth.matching.03", error.getErrorId());
- assertEquals("wrong param 1", "Searching PersonIdentifier", error.getParams()[0]);
- assertEquals("wrong param 2", "Find more-than-one ZMR entry with search criteria that has to be unique",
- error.getParams()[1]);
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithPersonalIdentifierSuccess() {
- final String personalIdentifierFirst = "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit";
- final String cc = "DE";
- final SimpleEidasData eidasDataFirst = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName("XXXvon Brandenburg")
- .givenName("XXXClaus - Maria")
- .dateOfBirth("1994-12-31")
- .personalIdentifier(cc + "/AT/" + personalIdentifierFirst)
- .pseudonym(personalIdentifierFirst)
- .build();
-
- BigInteger processId = new BigInteger(RandomStringUtils.randomNumeric(6));
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any())).thenReturn(
- loadResponseFromFile("/data/zmr/search_with_personalId_only_resp.xml"));
-
- // execute operation
- ZmrRegisterResult resp = client.searchWithPersonIdentifier(processId,
- eidasDataFirst.getPseudonym(), eidasDataFirst.getCitizenCountryCode());
-
- // validate state
- assertNotNull("no ZMR response", resp);
- assertEquals("wrong processId", "367100000000079", resp.getProcessId().toString());
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
-
- RegisterResult persInfo = resp.getPersonResult().get(0);
- assertEquals("bPK", "UgeknNsc26lVuB7U/uYGVmWtnnA=", persInfo.getBpk());
- assertEquals("dateOfBirth", eidasDataFirst.getDateOfBirth(), persInfo.getDateOfBirth());
- assertEquals("familyName", eidasDataFirst.getFamilyName(), persInfo.getFamilyName());
- assertEquals("givenName", eidasDataFirst.getGivenName(), persInfo.getGivenName());
- assertEquals("placeOfBirth", "Hintergigritzpotschn", persInfo.getPlaceOfBirth());
- assertEquals("birthName", "XXXvon Heuburg", persInfo.getBirthName());
- assertEquals("num. stored eIDAS identifiers", 2, persInfo.getPseudonym().size());
- assertEquals("stored eIDAS identifiers", "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit",
- persInfo.getPseudonym().get(0));
- assertEquals("stored eIDAS identifiers",
- "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit_second_one",
- persInfo.getPseudonym().get(1));
-
- // validate request
- assertEquals("wrong number of req.", 1, zmrReq.getAllValues().size());
- assertNotNull("Personensuche req.", zmrReq.getValue().getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getValue(), PROCESS_TASK_SEARCH, processId, "jUnit123456");
- PersonSuchenRequest pSuche = zmrReq.getValue().getPersonSuchenRequest();
- checkSearchParameters(pSuche.getPersonensucheInfo());
-
- assertEquals("eidas Docs. size", 1, pSuche.getEidasSuchdaten().size());
- checkEidasDocumentResult(pSuche.getEidasSuchdaten(),
- "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier", cc, personalIdentifierFirst);
- assertNull("mds", pSuche.getNatuerlichePerson());
-
- }
-
- @Test
- @SneakyThrows
- public void searchWithPersonalIdentifierNoBpkZP() {
- final String personalIdentifierFirst = "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit";
- final String cc = "DE";
- final SimpleEidasData eidasDataFirst = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName("XXXvon Brandenburg")
- .givenName("XXXClaus - Maria")
- .dateOfBirth("1994-12-31")
- .personalIdentifier(cc + "/AT/" + personalIdentifierFirst)
- .pseudonym(personalIdentifierFirst)
- .build();
-
- BigInteger processId = new BigInteger(RandomStringUtils.randomNumeric(6));
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any())).thenReturn(
- loadResponseFromFile("/data/zmr/no_bpk_zp.xml"));
-
- // execute operation
- ZmrRegisterResult resp = client.searchWithPersonIdentifier(processId,
- eidasDataFirst.getPseudonym(), eidasDataFirst.getCitizenCountryCode());
-
- // validate state
- assertNotNull("no ZMR response", resp);
- assertEquals("wrong processId", "367100000000079", resp.getProcessId().toString());
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
-
- RegisterResult persInfo = resp.getPersonResult().get(0);
- assertNull("bPK", persInfo.getBpk());
- assertEquals("dateOfBirth", eidasDataFirst.getDateOfBirth(), persInfo.getDateOfBirth());
- assertEquals("familyName", eidasDataFirst.getFamilyName(), persInfo.getFamilyName());
- assertEquals("givenName", eidasDataFirst.getGivenName(), persInfo.getGivenName());
- assertEquals("placeOfBirth", "Hintergigritzpotschn", persInfo.getPlaceOfBirth());
- assertEquals("birthName", "XXXvon Heuburg", persInfo.getBirthName());
- assertEquals("num. stored eIDAS identifiers", 2, persInfo.getPseudonym().size());
- assertEquals("stored eIDAS identifiers", "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit",
- persInfo.getPseudonym().get(0));
- assertEquals("stored eIDAS identifiers",
- "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit_second_one",
- persInfo.getPseudonym().get(1));
-
- // validate request
- assertEquals("wrong number of req.", 1, zmrReq.getAllValues().size());
- assertNotNull("Personensuche req.", zmrReq.getValue().getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getValue(), PROCESS_TASK_SEARCH, processId, "jUnit123456");
- PersonSuchenRequest pSuche = zmrReq.getValue().getPersonSuchenRequest();
- checkSearchParameters(pSuche.getPersonensucheInfo());
-
- assertEquals("eidas Docs. size", 1, pSuche.getEidasSuchdaten().size());
- checkEidasDocumentResult(pSuche.getEidasSuchdaten(),
- "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier", cc, personalIdentifierFirst);
- assertNull("mds", pSuche.getNatuerlichePerson());
-
- }
-
- @Test
- @SneakyThrows
- public void searchCcSpecificEmpty() {
- BigInteger processId = new BigInteger(RandomStringUtils.randomNumeric(6));
-
- final String cc = "DE";
- String familyName = RandomStringUtils.randomAlphabetic(10);
- String givenName = RandomStringUtils.randomAlphabetic(10);
- String dateOfBirth = RandomStringUtils.randomAlphabetic(10);
- String personalIdentifier = RandomStringUtils.randomAlphabetic(10);
- String placeOfBirth = RandomStringUtils.randomAlphabetic(10);
- String birthName = RandomStringUtils.randomAlphabetic(10);
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any())).thenReturn(
- loadResponseFromFile("/data/zmr/empty_zmr_result.xml"));
-
- // execute operation
- ZmrRegisterResult resp = client.searchCountrySpecific(processId,
- generateCustomRequest(cc, familyName, givenName, dateOfBirth, personalIdentifier, placeOfBirth, birthName),
- cc);
-
- // validate state
- assertNotNull("no ZMR response", resp);
- assertEquals("wrong processId", "367100000000079", resp.getProcessId().toString());
- assertEquals("wrong resp size", 0, resp.getPersonResult().size());
-
- }
-
- @Test
- @SneakyThrows
- public void searchCcSpecificMoreThanOneResult() {
- BigInteger processId = new BigInteger(RandomStringUtils.randomNumeric(6));
-
- final String cc = "DE";
- String familyName = RandomStringUtils.randomAlphabetic(10);
- String givenName = RandomStringUtils.randomAlphabetic(10);
- String dateOfBirth = RandomStringUtils.randomAlphabetic(10);
- String personalIdentifier = RandomStringUtils.randomAlphabetic(10);
- String placeOfBirth = RandomStringUtils.randomAlphabetic(10);
- String birthName = RandomStringUtils.randomAlphabetic(10);
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any())).thenReturn(
- loadResponseFromFile("/data/zmr/search_with_personalId_only_resp_moreThanOne.xml"));
-
- // execute operation
- WorkflowException error = assertThrows("wrong Exception", WorkflowException.class,
- () -> client.searchCountrySpecific(processId,
- generateCustomRequest(cc, familyName, givenName, dateOfBirth, personalIdentifier, placeOfBirth, birthName),
- cc));
-
- assertEquals("wrong errorCode", "module.eidasauth.matching.03", error.getErrorId());
- assertEquals("wrong param 1", "Searching DE specific", error.getParams()[0]);
- assertEquals("wrong param 2", "Find more-than-one ZMR entry with search criteria that has to be unique",
- error.getParams()[1]);
-
- }
-
- @Test
- @SneakyThrows
- public void searchCcSpecificSuccess() {
- final String personalIdentifierFirst = "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit";
- final String cc = "DE";
- final SimpleEidasData eidasDataFirst = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName("XXXvon Brandenburg")
- .givenName("XXXClaus - Maria")
- .dateOfBirth("1994-12-31")
- .personalIdentifier(cc + "/AT/" + personalIdentifierFirst)
- .pseudonym(personalIdentifierFirst)
- .build();
-
- BigInteger processId = new BigInteger(RandomStringUtils.randomNumeric(6));
-
- String familyName = RandomStringUtils.randomAlphabetic(10);
- String givenName = RandomStringUtils.randomAlphabetic(10);
- String dateOfBirth = RandomStringUtils.randomAlphabetic(10);
- String personalIdentifier = RandomStringUtils.randomAlphabetic(10);
- String placeOfBirth = RandomStringUtils.randomAlphabetic(10);
- String birthName = RandomStringUtils.randomAlphabetic(10);
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any())).thenReturn(
- loadResponseFromFile("/data/zmr/search_with_personalId_only_resp.xml"));
-
- // execute operation
- ZmrRegisterResult resp = client.searchCountrySpecific(processId,
- generateCustomRequest(cc, familyName, givenName, dateOfBirth, personalIdentifier, placeOfBirth, birthName),
- cc);
-
- // validate state
- assertNotNull("no ZMR response", resp);
- assertEquals("wrong processId", "367100000000079", resp.getProcessId().toString());
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
-
- RegisterResult persInfo = resp.getPersonResult().get(0);
- assertEquals("bPK", "UgeknNsc26lVuB7U/uYGVmWtnnA=", persInfo.getBpk());
- assertEquals("dateOfBirth", eidasDataFirst.getDateOfBirth(), persInfo.getDateOfBirth());
- assertEquals("familyName", eidasDataFirst.getFamilyName(), persInfo.getFamilyName());
- assertEquals("givenName", eidasDataFirst.getGivenName(), persInfo.getGivenName());
- assertEquals("placeOfBirth", "Hintergigritzpotschn", persInfo.getPlaceOfBirth());
- assertEquals("birthName", "XXXvon Heuburg", persInfo.getBirthName());
- assertEquals("num. stored eIDAS identifiers", 2, persInfo.getPseudonym().size());
- assertEquals("stored eIDAS identifiers", "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit",
- persInfo.getPseudonym().get(0));
- assertEquals("stored eIDAS identifiers",
- "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit_second_one",
- persInfo.getPseudonym().get(1));
-
- // validate request
- assertEquals("wrong number of req.", 1, zmrReq.getAllValues().size());
- assertNotNull("Personensuche req.", zmrReq.getValue().getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getValue(), PROCESS_TASK_SEARCH, processId, "jUnit123456");
- PersonSuchenRequest pSuche = zmrReq.getValue().getPersonSuchenRequest();
- checkSearchParameters(pSuche.getPersonensucheInfo());
-
- assertEquals("eidas Docs. size", 3, pSuche.getEidasSuchdaten().size());
- checkEidasDocumentResult(pSuche.getEidasSuchdaten(),
- "http://eidas.europa.eu/attributes/naturalperson/PlaceOfBirth", cc, placeOfBirth);
- checkEidasDocumentResult(pSuche.getEidasSuchdaten(),
- "http://eidas.europa.eu/attributes/naturalperson/BirthName", cc, birthName);
- checkEidasDocumentResult(pSuche.getEidasSuchdaten(),
- "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier", cc, personalIdentifier);
-
- assertNotNull("mds", pSuche.getNatuerlichePerson());
- assertEquals("req. givenName", givenName, pSuche.getNatuerlichePerson().getPersonenName().getVorname());
- assertEquals("req. familyName", familyName, pSuche.getNatuerlichePerson().getPersonenName().getFamilienname());
- assertEquals("req. dateOfBirth", dateOfBirth, pSuche.getNatuerlichePerson().getGeburtsdatum());
-
- }
-
- @Test
- @SneakyThrows
- public void searchResidenceEmpty() {
- BigInteger processId = new BigInteger(RandomStringUtils.randomNumeric(6));
-
- final String cc = "DE";
- String familyName = RandomStringUtils.randomAlphabetic(10);
- String givenName = RandomStringUtils.randomAlphabetic(10);
- String dateOfBirth = RandomStringUtils.randomAlphabetic(10);
- AdresssucheOutput addressInfo = AdresssucheOutput.builder()
- .municipality(RandomStringUtils.randomAlphabetic(10))
- .number(RandomStringUtils.randomAlphabetic(10))
- .postleitzahl(RandomStringUtils.randomAlphabetic(10))
- .street(RandomStringUtils.randomAlphabetic(10))
- .village(RandomStringUtils.randomAlphabetic(10))
- .build();
-
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any())).thenReturn(
- loadResponseFromFile("/data/zmr/empty_zmr_result.xml"));
-
- // execute operation
- ZmrRegisterResult resp = client.searchWithResidenceData(processId,
- givenName, familyName, dateOfBirth, cc, addressInfo);
-
- // validate state
- assertNotNull("no ZMR response", resp);
- assertEquals("wrong processId", "367100000000079", resp.getProcessId().toString());
- assertEquals("wrong resp size", 0, resp.getPersonResult().size());
-
- // validate request
- assertEquals("wrong number of req.", 1, zmrReq.getAllValues().size());
- assertNotNull("Personensuche req.", zmrReq.getValue().getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getValue(), PROCESS_TASK_SEARCH, processId, "jUnit123456");
- PersonSuchenRequest pSuche = zmrReq.getValue().getPersonSuchenRequest();
- checkSearchParameters(pSuche.getPersonensucheInfo());
-
- assertNotNull("mds", pSuche.getNatuerlichePerson());
- assertEquals("req. givenName", givenName, pSuche.getNatuerlichePerson().getPersonenName().getVorname());
- assertEquals("req. familyName", familyName, pSuche.getNatuerlichePerson().getPersonenName().getFamilienname());
- assertEquals("req. dateOfBirth", dateOfBirth, pSuche.getNatuerlichePerson().getGeburtsdatum());
-
- assertEquals("req. Municipality", addressInfo.getMunicipality(), pSuche.getPostAdresse().getGemeinde());
- assertEquals("req. Postleitzahl", addressInfo.getPostleitzahl(), pSuche.getPostAdresse().getPostleitzahl());
- assertEquals("req. Village", addressInfo.getVillage(), pSuche.getPostAdresse().getOrtschaft());
- assertEquals("req. Street", addressInfo.getStreet(), pSuche.getPostAdresse().getZustelladresse().getStrassenname());
- assertEquals("req. Number", addressInfo.getNumber(), pSuche.getPostAdresse().getZustelladresse().getOrientierungsnummer());
-
- }
-
- @Test
- @SneakyThrows
- public void searchResidenceMoreThanOneResult() {
- BigInteger processId = new BigInteger(RandomStringUtils.randomNumeric(6));
-
- final String cc = "DE";
- String familyName = RandomStringUtils.randomAlphabetic(10);
- String givenName = RandomStringUtils.randomAlphabetic(10);
- String dateOfBirth = RandomStringUtils.randomAlphabetic(10);
- AdresssucheOutput addressInfo = AdresssucheOutput.builder()
- .municipality(RandomStringUtils.randomAlphabetic(10))
- .postleitzahl(RandomStringUtils.randomAlphabetic(10))
- .street(RandomStringUtils.randomAlphabetic(10))
- .build();
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any())).thenReturn(
- loadResponseFromFile("/data/zmr/search_with_personalId_only_resp_moreThanOne.xml"));
-
- // execute operation
- ZmrRegisterResult resp = client.searchWithResidenceData(processId,
- givenName, familyName, dateOfBirth, cc, addressInfo);
-
- // validate state
- assertNotNull("no ZMR response", resp);
- assertEquals("wrong processId", "367100000000079", resp.getProcessId().toString());
- assertEquals("wrong resp size", 2, resp.getPersonResult().size());
-
- // validate request
- assertEquals("wrong number of req.", 1, zmrReq.getAllValues().size());
- assertNotNull("Personensuche req.", zmrReq.getValue().getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getValue(), PROCESS_TASK_SEARCH, processId, "jUnit123456");
- PersonSuchenRequest pSuche = zmrReq.getValue().getPersonSuchenRequest();
- assertEquals("req. Municipality", addressInfo.getMunicipality(), pSuche.getPostAdresse().getGemeinde());
- assertEquals("req. Postleitzahl", addressInfo.getPostleitzahl(), pSuche.getPostAdresse().getPostleitzahl());
- assertNull("req. Village", pSuche.getPostAdresse().getOrtschaft());
- assertEquals("req. Street", addressInfo.getStreet(), pSuche.getPostAdresse().getZustelladresse().getStrassenname());
- assertNull("req. Number", pSuche.getPostAdresse().getZustelladresse().getOrientierungsnummer());
-
- }
-
- @Test
- @SneakyThrows
- public void searchResidenceSuccess() {
- final String personalIdentifierFirst = "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit";
- final String cc = "DE";
- final SimpleEidasData eidasDataFirst = SimpleEidasData.builder()
- .citizenCountryCode(cc)
- .familyName("XXXvon Brandenburg")
- .givenName("XXXClaus - Maria")
- .dateOfBirth("1994-12-31")
- .personalIdentifier(cc + "/AT/" + personalIdentifierFirst)
- .pseudonym(personalIdentifierFirst)
- .build();
-
- BigInteger processId = new BigInteger(RandomStringUtils.randomNumeric(6));
-
- String familyName = RandomStringUtils.randomAlphabetic(10);
- String givenName = RandomStringUtils.randomAlphabetic(10);
- String dateOfBirth = RandomStringUtils.randomAlphabetic(10);
- AdresssucheOutput addressInfo = AdresssucheOutput.builder()
- .municipality(RandomStringUtils.randomAlphabetic(10))
- .postleitzahl(RandomStringUtils.randomAlphabetic(10))
- .build();
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any())).thenReturn(
- loadResponseFromFile("/data/zmr/search_with_personalId_only_resp.xml"));
-
- // execute operation
- ZmrRegisterResult resp = client.searchWithResidenceData(processId,
- givenName, familyName, dateOfBirth, cc, addressInfo);
-
- // validate state
- assertNotNull("no ZMR response", resp);
- assertEquals("wrong processId", "367100000000079", resp.getProcessId().toString());
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
-
- RegisterResult persInfo = resp.getPersonResult().get(0);
- assertEquals("bPK", "UgeknNsc26lVuB7U/uYGVmWtnnA=", persInfo.getBpk());
- assertEquals("dateOfBirth", eidasDataFirst.getDateOfBirth(), persInfo.getDateOfBirth());
- assertEquals("familyName", eidasDataFirst.getFamilyName(), persInfo.getFamilyName());
- assertEquals("givenName", eidasDataFirst.getGivenName(), persInfo.getGivenName());
- assertEquals("placeOfBirth", "Hintergigritzpotschn", persInfo.getPlaceOfBirth());
- assertEquals("birthName", "XXXvon Heuburg", persInfo.getBirthName());
- assertEquals("num. stored eIDAS identifiers", 2, persInfo.getPseudonym().size());
- assertEquals("stored eIDAS identifiers", "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit",
- persInfo.getPseudonym().get(0));
- assertEquals("stored eIDAS identifiers",
- "7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit_second_one",
- persInfo.getPseudonym().get(1));
-
- // validate request
- assertEquals("wrong number of req.", 1, zmrReq.getAllValues().size());
- assertNotNull("Personensuche req.", zmrReq.getValue().getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getValue(), PROCESS_TASK_SEARCH, processId, "jUnit123456");
- PersonSuchenRequest pSuche = zmrReq.getValue().getPersonSuchenRequest();
- assertEquals("req. Municipality", addressInfo.getMunicipality(), pSuche.getPostAdresse().getGemeinde());
- assertEquals("req. Postleitzahl", addressInfo.getPostleitzahl(), pSuche.getPostAdresse().getPostleitzahl());
- assertNull("req. Village", pSuche.getPostAdresse().getOrtschaft());
- assertNull("req. Number", pSuche.getPostAdresse().getZustelladresse());
-
- }
-
-
- @Test
- @SneakyThrows
- public void updateProcessNoLatestVersionResult() {
- BigInteger processId = new BigInteger(RandomStringUtils.randomNumeric(6));
-
- 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/empty_zmr_result.xml"))
- .thenThrow(new RuntimeException("Request not needed any more"));
-
-
- // execute operation
- WorkflowException error = assertThrows("wrong Exception", WorkflowException.class,
- () -> client.update(processId, toUpdate, eidasData));
-
- assertEquals("wrong errorCode", "module.eidasauth.matching.03", error.getErrorId());
- assertEquals("wrong param 1", "KITT get-latest-version", error.getParams()[0]);
- assertEquals("wrong param 2", "Find NO data-set with already matchted eID during ZMR KITT process",
- error.getParams()[1]);
-
- }
-
- @Test
- @SneakyThrows
- public void updateProcessMultiLatestVersionResult() {
- BigInteger processId = new BigInteger(RandomStringUtils.randomNumeric(6));
-
- 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/search_with_personalId_only_resp_moreThanOne.xml"))
- .thenThrow(new RuntimeException("Request not needed any more"));
-
-
- // execute operation
- WorkflowException error = assertThrows("wrong Exception", WorkflowException.class,
- () -> client.update(processId, toUpdate, eidasData));
-
- assertEquals("wrong errorCode", "module.eidasauth.matching.03", error.getErrorId());
- assertEquals("wrong param 1", "KITT get-latest-version", error.getParams()[0]);
- assertEquals("wrong param 2", "Find MORE-THAN-ONE data-sets with already matchted eID during ZMR KITT process",
- error.getParams()[1]);
-
- }
-
- @Test
- @SneakyThrows
- public void updateProcessRequired() {
- BigInteger processId = new BigInteger(RandomStringUtils.randomNumeric(6));
-
- 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());
- assertEquals("1 req. givenName", toUpdate.getGivenName(),
- pSuche.getNatuerlichePerson().getPersonenName().getVorname());
- assertEquals("1 req. familyName", toUpdate.getFamilyName(),
- pSuche.getNatuerlichePerson().getPersonenName().getFamilienname());
- assertEquals("1 req. dateOfBirth", toUpdate.getDateOfBirth(),
- 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));
-
- 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("XXXvon Heuburg")
- .placeOfBirth("Hintergigritzpotschn")
- .pseudonym(Arrays.asList(personalIdentifier))
- .build();
-
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any()))
- .thenReturn(loadResponseFromFile("/data/zmr/seq_1-8_search_with_personalId_only_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.", 1, 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());
- assertEquals("1 req. givenName", toUpdate.getGivenName(),
- pSuche.getNatuerlichePerson().getPersonenName().getVorname());
- assertEquals("1 req. familyName", toUpdate.getFamilyName(),
- pSuche.getNatuerlichePerson().getPersonenName().getFamilienname());
- assertEquals("1 req. dateOfBirth", toUpdate.getDateOfBirth(),
- pSuche.getNatuerlichePerson().getGeburtsdatum());
-
-
- // validate state
- assertNotNull("no ZMR response", resp);
- assertEquals("wrong processId", processId.toString(), resp.getProcessId().toString());
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
-
- }
-
- @Test
- @SneakyThrows
- public void updateProcessSomeSpecialCases() {
- BigInteger processId = new BigInteger(RandomStringUtils.randomNumeric(6));
-
- final String personalIdentifier = RandomStringUtils.randomAlphanumeric(10);
- 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("") //empty addr. values should be ignored
- .placeOfBirth(RandomStringUtils.randomAlphabetic(10)) //should be ignored because it was already set for DE
- .build();
-
- RegisterResult toUpdate = RegisterResult.builder()
- .bpk("UgeknNsc26lVuB7U/uYGVmWtnnA=")
- .dateOfBirth("1994-12-31")
- .familyName("XXXvon Brandenburg")
- .givenName("XXXClaus - Maria")
- .birthName("XXXvon Heuburg")
- .placeOfBirth("Hintergigritzpotschn")
- .pseudonym(Arrays.asList("7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit"))
- .build();
-
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any()))
- .thenReturn(loadResponseFromFile("/data/zmr/seq_1-8_search_with_personalId_only_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 latest 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());
- assertEquals("1 req. givenName", toUpdate.getGivenName(),
- pSuche.getNatuerlichePerson().getPersonenName().getVorname());
- assertEquals("1 req. familyName", toUpdate.getFamilyName(),
- pSuche.getNatuerlichePerson().getPersonenName().getFamilienname());
- assertEquals("1 req. dateOfBirth", toUpdate.getDateOfBirth(),
- 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());
-
-
- // only one attribute for update because birthname is empty and placeOfBirth was already set for DE
- assertEquals("eidas Docs. size", 1, secondpSuche.getEidasIdentitaetAnlage().size());
- checkEidasDocumentAdd(secondpSuche.getEidasIdentitaetAnlage(),
- "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier", cc, eidasData.getPseudonym());
-
- // validate state
- assertNotNull("no ZMR response", resp);
- assertEquals("wrong processId", "366200000000082", resp.getProcessId().toString());
- assertEquals("wrong resp size", 1, resp.getPersonResult().size());
-
- }
-
-
- private PersonSuchenRequest generateCustomRequest(String cc, String familyName, String givenName,
- String dateOfBirth, String personalId, String placeOfBirth, String birthName) {
- final PersonSuchenRequest req = new PersonSuchenRequest();
-
- // set basic MDS information
- final NatuerlichePersonTyp searchNatPerson = new NatuerlichePersonTyp();
- req.setNatuerlichePerson(searchNatPerson);
- final PersonenNameTyp searchNatPersonName = new PersonenNameTyp();
- searchNatPerson.setPersonenName(searchNatPersonName);
- searchNatPersonName.setFamilienname(familyName);
- searchNatPersonName.setVorname(givenName);
- searchNatPerson.setGeburtsdatum(dateOfBirth);
-
- // add addtional eIDAS attributes if available
- addIfAvailable(req.getEidasSuchdaten(), cc, Constants.eIDAS_ATTRURN_PLACEOFBIRTH, placeOfBirth);
- addIfAvailable(req.getEidasSuchdaten(), cc, Constants.eIDAS_ATTRURN_BIRTHNAME, birthName);
- addIfAvailable(req.getEidasSuchdaten(), cc, Constants.eIDAS_ATTRURN_PERSONALIDENTIFIER, personalId);
-
- return req;
-
- }
-
- private void addIfAvailable(List<EidasSuchdatenType> eidasSuchdaten,
- String cc, String attrName, String attrValue) {
- if (StringUtils.isNotEmpty(attrValue)) {
- eidasSuchdaten.add(buildEidasSuchData(cc, attrName, attrValue));
-
- }
- }
-
- private EidasSuchdatenType buildEidasSuchData(String cc, String attrName, String attrValue) {
- final EidasSuchdatenType eidasInfos = new EidasSuchdatenType();
- eidasInfos.setStaatscode2(cc);
- eidasInfos.setEidasArt(attrName);
- eidasInfos.setEidasWert(attrValue);
- return eidasInfos;
-
- }
-
- private void checkSearchParameters(PersonensucheInfoType toCheck) {
- assertTrue("searchWithHistory flag", toCheck.getSuchkriterien().isInclusivHistorie());
- assertFalse("withERsB flag", toCheck.getSuchkriterien().isInclusivERnP());
- assertFalse("formalisiert flag", toCheck.getSuchkriterien().isFormalisiert());
- assertFalse("resultWithHistory flag", toCheck.getErgebniskriterien().isInclusivHistorie());
-
- }
-
- private void checkEidasDocumentResult(List<EidasSuchdatenType> list, String type, String cc, String value) {
- Optional<EidasSuchdatenType> eidasDoc = list.stream()
- .filter(el -> type.equals(el.getEidasArt()))
- .findFirst();
-
- assertTrue("eidas doc: " + type, eidasDoc.isPresent());
- assertEquals("eIDAS docType", type, eidasDoc.get().getEidasArt());
- assertEquals("eIDAS docValue", value, eidasDoc.get().getEidasWert());
- assertEquals("eIDAS docCC", cc, eidasDoc.get().getStaatscode2());
-
- }
-
- private void checkEidasDocumentAdd(List<EidasIdentitaetAnlageType> list, String type, String cc,
- String value) {
- Optional<EidasIdentitaetAnlageType> eidasDoc = list.stream()
- .filter(el -> type.equals(el.getEidasArt()))
- .findFirst();
-
- assertTrue("eidas doc: " + type, eidasDoc.isPresent());
- assertEquals("eIDAS docType", type, eidasDoc.get().getEidasArt());
- assertEquals("eIDAS docValue", value, eidasDoc.get().getEidasWert());
- assertEquals("eIDAS docCC", cc, eidasDoc.get().getStaatscode2());
-
- }
-
- private void checkBasicRequestParameters(RequestType requestType, String vorgangName, BigInteger processId,
- String behoerdennummer) {
- assertNotNull("no workflow infos", requestType.getWorkflowInfoClient());
- assertEquals("processName", PROCESS_GENERAL, requestType.getWorkflowInfoClient().getProzessName());
- assertEquals("vorgangsName", vorgangName, requestType.getWorkflowInfoClient().getVorgangName());
-
- if (processId != null) {
- assertEquals("processId", processId, requestType.getWorkflowInfoClient().getProzessInstanzID());
- } else {
- assertNull("processId", requestType.getWorkflowInfoClient().getProzessInstanzID());
- }
-
- assertNotNull("no client infos", requestType.getClientInfo());
- assertEquals("behoerdennummer", behoerdennummer, requestType.getClientInfo().getOrganisation()
- .getBehoerdenNr());
- }
-
- private ResponseType loadResponseFromFile(String filepath) throws JAXBException {
- final Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
- JAXBElement<?> resp = (JAXBElement<?>) unmarshaller.unmarshal(ZmrClientTest.class.getResourceAsStream(
- filepath));
- return (ResponseType) resp.getValue();
-
- }
-
- private Throwable injectError(boolean isGeneric) {
- javax.xml.namespace.QName qName;
- if (isGeneric) {
- qName = new javax.xml.namespace.QName("urn:SZRServices", "F455", "p344");
-
- } else {
- qName = new javax.xml.namespace.QName("http://bmi.gv.at/namespace/zmr-su/base/20040201#", "ServiceFault", "zmr");
-
- }
- final SoapFault fault = new SoapFault(
- "The travel document you sent to insert a person already exists for another person. " + "Either check the document or have the person altered accordingly",
- qName);
- fault.setRole("zmr:ServiceFault");
- return fault;
-
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/config/EidasConnectorMessageSourceTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/config/EidasConnectorMessageSourceTest.java
deleted file mode 100644
index 1f96b25c..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/config/EidasConnectorMessageSourceTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.config;
-
-import java.util.List;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.ResourceLoader;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import at.gv.egiz.eaaf.core.api.logging.IMessageSourceLocation;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"})
-@DirtiesContext
-public class EidasConnectorMessageSourceTest {
-
- @Autowired
- private ResourceLoader loader;
- @Autowired(required = false)
- private List<IMessageSourceLocation> messageSources;
-
- @Test
- public void checkMessageSources() {
- Assert.assertNotNull("No messageSource", messageSources);
-
- for (final IMessageSourceLocation messageSource : messageSources) {
- Assert.assertNotNull("No sourcePath", messageSource.getMessageSourceLocation());
-
- for (final String el : messageSource.getMessageSourceLocation()) {
- final Resource messages = loader.getResource(el + ".properties");
- Assert.assertTrue("Source not exist", messages.exists());
-
- }
- }
- }
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/DummyAuthConfigMap.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/DummyAuthConfigMap.java
deleted file mode 100644
index ba531029..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/DummyAuthConfigMap.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URI;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-import at.gv.egiz.eaaf.core.api.idp.IConfigurationWithSP;
-import at.gv.egiz.eaaf.core.api.idp.ISpConfiguration;
-import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-import at.gv.egiz.eaaf.core.impl.utils.KeyValueUtils;
-
-import org.apache.commons.lang3.StringUtils;
-
-/**
- * Dummy Application-configuration implementation for jUnit tests.
- *
- * @author tlenz
- *
- */
-public class DummyAuthConfigMap implements IConfigurationWithSP {
-
- private Map<String, String> config = new HashMap<>();
-
- /**
- * Empty Dummy Application-configuration.
- *
- */
- public DummyAuthConfigMap() {
-
- }
-
- /**
- * Dummy Application-configuration.
- *
- * @param configIs Property based configuration
- * @throws IOException In case of an configuration read error
- */
- public DummyAuthConfigMap(final InputStream configIs) throws IOException {
-
- final Properties props = new Properties();
- props.load(configIs);
-
- config = KeyValueUtils.convertPropertiesToMap(props);
-
- }
-
- /**
- * Dummy Application-configuration.
- *
- * @param path Path to property based configuration
- * @throws IOException In case of an configuration read error
- */
- public DummyAuthConfigMap(final String path) throws IOException {
-
- final Properties props = new Properties();
- props.load(this.getClass().getResourceAsStream(path));
-
- config = KeyValueUtils.convertPropertiesToMap(props);
-
- }
-
-
- @Override
- public String getBasicConfiguration(final String key) {
- return config.get(key);
-
- }
-
- @Override
- public String getBasicConfiguration(final String key, final String defaultValue) {
- final String value = getBasicConfiguration(key);
- if (StringUtils.isEmpty(value)) {
- return defaultValue;
- } else {
- return value;
- }
-
- }
-
- @Override
- public boolean getBasicConfigurationBoolean(final String key) {
- final String value = getBasicConfiguration(key);
- if (StringUtils.isEmpty(value)) {
- return false;
- } else {
- return Boolean.valueOf(value);
- }
- }
-
- @Override
- public boolean getBasicConfigurationBoolean(final String key, final boolean defaultValue) {
- return Boolean.parseBoolean(getBasicConfiguration(key, String.valueOf(defaultValue)));
-
- }
-
- @Override
- public Map<String, String> getBasicConfigurationWithPrefix(final String prefix) {
- return KeyValueUtils.getSubSetWithPrefix(config, prefix);
-
- }
-
- @Override
- public ISpConfiguration getServiceProviderConfiguration(final String uniqueID)
- throws EaafConfigurationException {
- return null;
- }
-
- @Override
- public <T> T getServiceProviderConfiguration(final String spIdentifier, final Class<T> decorator)
- throws EaafConfigurationException {
- return null;
- }
-
- @Override
- public URI getConfigurationRootDirectory() {
- return new java.io.File(".").toURI();
-
- }
-
- @Override
- public String validateIdpUrl(final URL authReqUrl) throws EaafException {
- return authReqUrl.toString();
- }
-
- public void putConfigValue(final String key, final String value) {
- config.put(key, value);
- }
-
- public void removeConfigValue(final String key) {
- config.remove(key);
-
- }
-
- public void removeAll() {
- config.clear();
-
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/DummyOA.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/DummyOA.java
deleted file mode 100644
index 074dd0bb..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/DummyOA.java
+++ /dev/null
@@ -1,304 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.lang3.StringUtils;
-
-import at.gv.egiz.eaaf.core.impl.builder.BpkBuilder;
-import at.gv.egiz.eaaf.core.impl.data.Pair;
-import at.gv.egiz.eaaf.core.impl.utils.KeyValueUtils;
-import lombok.Getter;
-import lombok.Setter;
-
-public class DummyOA implements IAhSpConfiguration {
-
- private static final long serialVersionUID = 1L;
- private String uniqueAppId = null;
- private String targetIdentifier = null;
- private String friendlyName = null;
- private String cc = "AT";
- private final Map<String, String> config = new HashMap<>();
- private final List<Pair<String, String>> reqAttributes = new ArrayList<>();
-
- private boolean mandateEnabled = false;
- private boolean onlyMandateEnabled = false;
- private String mandateProfilesCsv;
-
- private boolean eidasEnabled = false;
-
- private boolean testCredentialEnabled = true;
- private String additionalBpkTargetCsv;
- private List<Pair<String, String>> additionalEncBpkTargets;
-
- @Setter
- private boolean restricted = true;
-
- @Setter
- private long latestVdaAuthentication = 60 * 365 * 5;
-
- @Getter
- @Setter
- private boolean publicServiceProvider;
-
- @Getter
- @Setter
- private boolean multiMandateEnabled;
-
- @Setter
- private String bmiUniqueIdentifier;
-
- @Override
- public Map<String, String> getFullConfiguration() {
- return this.config;
- }
-
- @Override
- public String getConfigurationValue(final String key) {
- return this.config.get(key);
- }
-
- @Override
- public String getConfigurationValue(final String key, final String defaultValue) {
- if (StringUtils.isNotEmpty(getConfigurationValue(key))) {
- return getConfigurationValue(key);
- } else {
- return defaultValue;
- }
- }
-
- @Override
- public boolean isConfigurationValue(final String key) {
- if (StringUtils.isNotEmpty(getConfigurationValue(key))) {
- return Boolean.parseBoolean(getConfigurationValue(key));
- } else {
- return false;
- }
-
- }
-
- @Override
- public boolean isConfigurationValue(final String key, final boolean defaultValue) {
- return Boolean.parseBoolean(getConfigurationValue(key, String.valueOf(defaultValue)));
-
- }
-
- @Override
- public boolean containsConfigurationKey(final String key) {
- return this.config.containsKey(key);
- }
-
- @Override
- public String getUniqueIdentifier() {
- return this.uniqueAppId;
- }
-
- @Override
- public String getUniqueApplicationRegisterIdentifier() {
- return this.bmiUniqueIdentifier;
-
- }
-
- @Override
- public String getFriendlyName() {
- return this.friendlyName;
- }
-
- @Override
- public boolean hasBaseIdInternalProcessingRestriction() {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public boolean hasBaseIdTransferRestriction() {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public Set<String> getTargetsWithNoBaseIdInternalProcessingRestriction() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Set<String> getTargetsWithNoBaseIdTransferRestriction() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public List<String> getRequiredLoA() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public String getLoAMatchingMode() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public String getAreaSpecificTargetIdentifier() {
- return this.targetIdentifier;
- }
-
- @Override
- public boolean isTestCredentialEnabled() {
- return this.testCredentialEnabled;
- }
-
- @Override
- public List<String> getTestCredentialOids() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public List<Pair<String, String>> getRequiredAttributes() {
- return this.reqAttributes;
-
- }
-
- public void setUniqueAppId(final String uniqueAppId) {
- this.uniqueAppId = uniqueAppId;
- }
-
- @Override
- public String getCountryCode() {
- return cc;
- }
-
- @Override
- public void setCountryCode(final String cc) {
- this.cc = cc;
-
- }
-
- public void setTargetIdentifier(final String targetIdentifier) {
- this.targetIdentifier = BpkBuilder.normalizeBpkTargetIdentifierToCommonFormat(targetIdentifier);
-
- }
-
- public void setFriendlyName(final String friendlyName) {
- this.friendlyName = friendlyName;
- }
-
- public void putGenericConfigurationKey(final String key, final String value) {
- this.config.put(key, value);
-
- }
-
- public void addRequiredAttribute(final String attrUri) {
- this.reqAttributes.add(Pair.newInstance(attrUri, null));
-
- }
-
- public void removeRequiredAttribute(final String attrUri) {
- for (final Pair<String, String> el : reqAttributes) {
- if (el.getFirst().equals(attrUri)) {
- reqAttributes.remove(el);
- break;
-
- }
-
-
- }
- }
-
- public void addRequiredAttribute(final String attrUri, String param) {
- this.reqAttributes.add(Pair.newInstance(attrUri, param));
-
- }
-
- @Override
- public boolean isMandateEnabled() {
- return this.mandateEnabled;
- }
-
- @Override
- public boolean isOnlyMandateEnabled() {
- return this.onlyMandateEnabled;
-
- }
-
- @Override
- public List<String> getMandateProfiles() {
- return KeyValueUtils.getListOfCsvValues(mandateProfilesCsv);
- }
-
- @Override
- public List<String> getAdditionalBpkTargets() {
- return KeyValueUtils.getListOfCsvValues(additionalBpkTargetCsv);
-
- }
-
- @Override
- public List<Pair<String, String>> getAdditionalForeignBpkTargets() {
- if (additionalEncBpkTargets == null) {
- return Collections.emptyList();
-
- } else {
- return additionalEncBpkTargets;
-
- }
- }
-
- @Override
- public long lastVdaAuthenticationDelay() {
- return latestVdaAuthentication;
-
- }
-
- @Override
- public boolean isRestrictedServiceProvider() {
- return this.restricted;
- }
-
-
- public void setMandateEnabled(final boolean mandateEnabled) {
- this.mandateEnabled = mandateEnabled;
- }
-
- public void setOnlyMandateEnabled(final boolean onlyMandateEnabled) {
- this.onlyMandateEnabled = onlyMandateEnabled;
- }
-
- public void setMandateProfilesCsv(final String mandateProfilesCsv) {
- this.mandateProfilesCsv = mandateProfilesCsv;
- }
-
- public void setTestCredentialEnabled(final boolean testCredentialEnabled) {
- this.testCredentialEnabled = testCredentialEnabled;
- }
-
- public void setAdditionalBpkTargetCsv(String additionalBpkTargetCsv) {
- this.additionalBpkTargetCsv = additionalBpkTargetCsv;
- }
-
- public void setAdditionalEncBpkTargets(List<Pair<String, String>> additionalEncBpkTargets) {
- this.additionalEncBpkTargets = additionalEncBpkTargets;
- }
-
- @Override
- public boolean isEnabled() {
- return true;
- }
-
- @Override
- public boolean isEidasEnabled() {
- return this.eidasEnabled;
-
- }
-
- public void setEidasEnabled(boolean eidasEnabled) {
- this.eidasEnabled = eidasEnabled;
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/DummyPendingRequest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/DummyPendingRequest.java
deleted file mode 100644
index 9a91ecbd..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/DummyPendingRequest.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy;
-
-import at.gv.egiz.eaaf.core.impl.idp.controller.protocols.RequestImpl;
-
-public class DummyPendingRequest extends RequestImpl {
- private static final long serialVersionUID = 8136280395622411505L;
-}
-
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/DummySpecificCommunicationService.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/DummySpecificCommunicationService.java
deleted file mode 100644
index d2b0c1ae..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/DummySpecificCommunicationService.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy;
-
-import java.util.Collection;
-
-import eu.eidas.auth.commons.attribute.AttributeDefinition;
-import eu.eidas.auth.commons.light.ILightRequest;
-import eu.eidas.auth.commons.light.ILightResponse;
-import eu.eidas.auth.commons.tx.BinaryLightToken;
-import eu.eidas.specificcommunication.BinaryLightTokenHelper;
-import eu.eidas.specificcommunication.exception.SpecificCommunicationException;
-import eu.eidas.specificcommunication.protocol.SpecificCommunicationService;
-
-public class DummySpecificCommunicationService implements SpecificCommunicationService {
-
- private ILightRequest lightRequest;
- private ILightResponse lightResponse;
-
- @Override
- public BinaryLightToken putRequest(ILightRequest lightRequest) throws SpecificCommunicationException {
- this.lightRequest = lightRequest;
- return BinaryLightTokenHelper.createBinaryLightToken("Test", "TestSecret", "SHA-256");
- }
-
- @Override
- public ILightRequest getAndRemoveRequest(String tokenBase64, Collection<AttributeDefinition<?>> registry)
- throws SpecificCommunicationException {
- return lightRequest;
- }
-
- @Override
- public BinaryLightToken putResponse(ILightResponse lightResponse) throws SpecificCommunicationException {
- this.lightResponse = lightResponse;
- return BinaryLightTokenHelper.createBinaryLightToken("Test", "TestSecret", "SHA-256");
- }
-
- @Override
- public ILightResponse getAndRemoveResponse(String tokenBase64, Collection<AttributeDefinition<?>> registry)
- throws SpecificCommunicationException {
- return lightResponse;
- }
-
- public ILightRequest getiLightRequest() {
- return lightRequest;
- }
-
- public void setiLightRequest(ILightRequest lightReques) {
- this.lightRequest = lightReques;
- }
-
- public ILightResponse getiLightResponse() {
- return lightResponse;
- }
-
- public void setiLightResponse(ILightResponse lightResponse) {
- this.lightResponse = lightResponse;
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/IAhSpConfiguration.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/IAhSpConfiguration.java
deleted file mode 100644
index 13d61f15..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/IAhSpConfiguration.java
+++ /dev/null
@@ -1,152 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy;
-
-import java.util.List;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import at.gv.egiz.eaaf.core.api.idp.ISpConfiguration;
-import at.gv.egiz.eaaf.core.impl.data.Pair;
-
-public interface IAhSpConfiguration extends ISpConfiguration {
-
-
- /**
- * Flag if this Service Provider is enabled.
- *
- * @return true if the SP is enabled, otherwise false
- */
- boolean isEnabled();
-
- /**
- * Get unique identifier that is used in Application-Register from BM.I.
- *
- * <p>If no BM.I specific identifier is available then this method returns
- * the same identifier as <code>getUniqueIdentifier()</code></p>
- *
- * @return unique identifier from BM.I AppReg, or generic uniqueId of no specific exists
- */
- String getUniqueApplicationRegisterIdentifier();
-
- /**
- * Flag that marks this Service-Provider as <i>public</i> or <i>private</i>.
- *
- * <p><b>Default:</b> If it is not set or has an unknown value, its <i>private</i> by default</p>
- *
- * @return <code>true</code> if it is from <i>public</i>, otherwise <code>false</code>
- */
- boolean isPublicServiceProvider();
-
- /**
- * Enable test identities for this Service Provider.
- *
- * @return true if test identities are allowed, otherwise false
- */
- boolean isTestCredentialEnabled();
-
- /**
- * Get a List of OID's that refine the set of allowed test identities.
- *
- * @return @link {@link List} of test-identity OID's
- */
- @Nullable
- List<String> getTestCredentialOids();
-
-
- /**
- * Get a List of unique attribute URI's that are required by this SP.
- *
- * @return {@link List} of attribute URI's / parameter {@link Pair}s
- */
- List<Pair<String, String>> getRequiredAttributes();
-
-
- /**
- * Get the CountryCode for this service. <br>
- * <br>
- * <b>Default:</b> AT
- *
- * @return
- */
- String getCountryCode();
-
- /**
- * Set the CountryCode for this service. If not countryCode is set, AT is used as default.
- *
- * @param cc Service-Provider country-code
- */
- void setCountryCode(String cc);
-
- /**
- * Enable mandates for this service provider.
- *
- * @return <code>true</code> if mandates are enabled, otherwise <code>false</code>
- */
- boolean isMandateEnabled();
-
- /**
- * Enables multi-mandates for this service-provider.
- *
- * @return <code>true</code> if multi-mandates are enabled, otherwise <code>false</code>
- */
- boolean isMultiMandateEnabled();
-
- /**
- * Only mandates are allowed for this service provider.
- *
- * @return <code>true</code> if only mandates are allowed, otherwise <code>false</code>
- */
- boolean isOnlyMandateEnabled();
-
- /**
- * Get a {@link List} of mandate profiles that are supported by this Service provider.
- *
- * @return
- */
- @Nonnull List<String> getMandateProfiles();
-
-
- /**
- * eIDAS authentication allowed flag.
- *
- * @return <code>true</code> if eIDAS authentication is enabled, otherwise <code>false</code>
- */
- boolean isEidasEnabled();
-
- /**
- * Get a List of targets for additional bPKs that are required by this service provider.
- *
- * @return List of prefixed bPK targets
- */
- @Nonnull List<String> getAdditionalBpkTargets();
-
- /**
- * Get a list of foreign bPK targets that are required by this service provider.
- *
- * @return List of pairs with prefixed bPK targets as first element and VKZ as second element
- */
- @Nonnull List<Pair<String, String>> getAdditionalForeignBpkTargets();
-
- /**
- * Flag that indicates that service-provider as restricted or unrestricted.
- *
- * <p>A restricted service-provider can only used by test-identities that contains a
- * valid application-restriction in User-Certificate Pinning</p>
- *
- * <p><b>Default:</b> true</p>
- *
- * @return <code>true</code> if it is restricted, otherwise <code>false</code>
- */
- boolean isRestrictedServiceProvider();
-
-
-/**
- * Defines the time in minutes how long the last VDA registration h@Override
- ave passed as maximum.
- *
- * @return time in minutes
- */
-long lastVdaAuthenticationDelay();
-
-}
-
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/handler/DeSpecificDetailSearchProcessorTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/handler/DeSpecificDetailSearchProcessorTest.java
deleted file mode 100644
index 21c9fd80..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/handler/DeSpecificDetailSearchProcessorTest.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.handler;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.BlockJUnit4ClassRunner;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.DeSpecificDetailSearchProcessor;
-import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonSuchenRequest;
-
-@RunWith(BlockJUnit4ClassRunner.class)
-public class DeSpecificDetailSearchProcessorTest {
-
- private DeSpecificDetailSearchProcessor handler = new DeSpecificDetailSearchProcessor();
-
- @Test
- public void checkName() {
- assertEquals("wrong handler name", "DeSpecificDetailSearchProcessor", handler.getName());
-
- }
-
- @Test
- public void canHandlerCheck_1() {
- SimpleEidasData eidData = SimpleEidasData.builder()
- .birthName(RandomStringUtils.randomAlphabetic(5))
- .placeOfBirth(RandomStringUtils.randomAlphabetic(5))
- .build();
- assertFalse("wrong 'canHandle' flag", handler.canHandle("XX", eidData));
-
- }
-
- @Test
- public void canHandlerCheck_2() {
- SimpleEidasData eidData = SimpleEidasData.builder()
- .birthName(RandomStringUtils.randomAlphabetic(5))
- .placeOfBirth(RandomStringUtils.randomAlphabetic(5))
- .build();
- assertTrue("wrong 'canHandle' flag", handler.canHandle("DE", eidData));
-
- }
-
- @Test
- public void canHandlerCheck_3() {
- SimpleEidasData eidData = SimpleEidasData.builder()
- .birthName(RandomStringUtils.randomAlphabetic(5))
- .placeOfBirth(RandomStringUtils.randomAlphabetic(5))
- .build();
- assertTrue("wrong 'canHandle' flag", handler.canHandle("de", eidData));
-
- }
-
- @Test
- public void canHandlerCheck_4() {
- SimpleEidasData eidData = SimpleEidasData.builder()
- .birthName(null)
- .placeOfBirth(RandomStringUtils.randomAlphabetic(5))
- .build();
- assertFalse("wrong 'canHandle' flag", handler.canHandle("DE", eidData));
-
- }
-
- @Test
- public void canHandlerCheck_5() {
- SimpleEidasData eidData = SimpleEidasData.builder()
- .birthName(RandomStringUtils.randomAlphabetic(5))
- .placeOfBirth(null)
- .build();
- assertFalse("wrong 'canHandle' flag", handler.canHandle("DE", eidData));
-
- }
-
- @Test
- public void generateZmrSearchRequest() {
- SimpleEidasData eidData = SimpleEidasData.builder()
- .citizenCountryCode("DE")
- .givenName(RandomStringUtils.randomAlphabetic(5))
- .familyName(RandomStringUtils.randomAlphabetic(5))
- .dateOfBirth(RandomStringUtils.randomAlphabetic(5))
- .birthName(RandomStringUtils.randomAlphabetic(5))
- .placeOfBirth(RandomStringUtils.randomAlphabetic(5))
- .build();
-
- // perform operation
- PersonSuchenRequest req = handler.generateSearchRequest(eidData);
-
- //validate response
- assertNotNull("no search request", req);
- assertNotNull("no MDS", req.getNatuerlichePerson());
- assertNotNull("no MDS PersonName", req.getNatuerlichePerson().getPersonenName());
- assertEquals("familyName", eidData.getFamilyName(), req.getNatuerlichePerson().getPersonenName().getFamilienname());
- assertEquals("givenName", eidData.getGivenName(), req.getNatuerlichePerson().getPersonenName().getVorname());
- assertEquals("birthday", eidData.getDateOfBirth(), req.getNatuerlichePerson().getGeburtsdatum());
-
- assertNotNull("no eIDAS documenst", req.getEidasSuchdaten());
- //TODO: add validation if we can add more than one eIDAS document
-
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/handler/ItSpecificDetailSearchProcessorTes.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/handler/ItSpecificDetailSearchProcessorTes.java
deleted file mode 100644
index 9b638ee5..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/handler/ItSpecificDetailSearchProcessorTes.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.handler;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.BlockJUnit4ClassRunner;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.ItSpecificDetailSearchProcessor;
-import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonSuchenRequest;
-
-@RunWith(BlockJUnit4ClassRunner.class)
-public class ItSpecificDetailSearchProcessorTes {
-
- private ItSpecificDetailSearchProcessor handler = new ItSpecificDetailSearchProcessor();
-
- @Test
- public void checkName() {
- assertEquals("wrong handler name", "ItSpecificDetailSearchProcessor", handler.getName());
-
- }
-
- @Test
- public void canHandlerCheck_1() {
- SimpleEidasData eidData = SimpleEidasData.builder()
- .taxNumber(RandomStringUtils.randomAlphabetic(5))
- .build();
- assertFalse("wrong 'canHandle' flag", handler.canHandle("XX", eidData));
-
- }
-
- @Test
- public void canHandlerCheck_2() {
- SimpleEidasData eidData = SimpleEidasData.builder()
- .taxNumber(RandomStringUtils.randomAlphabetic(5))
- .build();
- assertTrue("wrong 'canHandle' flag", handler.canHandle("IT", eidData));
-
- }
-
- @Test
- public void canHandlerCheck_3() {
- SimpleEidasData eidData = SimpleEidasData.builder()
- .taxNumber(RandomStringUtils.randomAlphabetic(5))
- .build();
- assertTrue("wrong 'canHandle' flag", handler.canHandle("it", eidData));
-
- }
-
- @Test
- public void canHandlerCheck_4() {
- SimpleEidasData eidData = SimpleEidasData.builder()
- .taxNumber("")
- .build();
- assertFalse("wrong 'canHandle' flag", handler.canHandle("IT", eidData));
-
- }
-
- @Test
- public void generateZmrSearchRequest() {
- SimpleEidasData eidData = SimpleEidasData.builder()
- .citizenCountryCode("IT")
- .givenName(RandomStringUtils.randomAlphabetic(5))
- .familyName(RandomStringUtils.randomAlphabetic(5))
- .dateOfBirth(RandomStringUtils.randomAlphabetic(5))
- .taxNumber(RandomStringUtils.randomAlphabetic(5))
- .build();
-
- // perform operation
- PersonSuchenRequest req = handler.generateSearchRequest(eidData);
-
- //validate response
- assertNotNull("no search request", req);
-
- //TODO: add validation if we can add more information about taxNumber from Italy
-
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaAuthSignalControllerTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaAuthSignalControllerTest.java
deleted file mode 100644
index cddcd11c..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaAuthSignalControllerTest.java
+++ /dev/null
@@ -1,197 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.idaustriaclient;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.util.SerializationUtils;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.controller.IdAustriaClientAuthSignalController;
-import at.gv.egiz.eaaf.core.api.IRequestStorage;
-import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants;
-import at.gv.egiz.eaaf.core.api.data.ExceptionContainer;
-import at.gv.egiz.eaaf.core.api.idp.IConfiguration;
-import at.gv.egiz.eaaf.core.api.storage.ITransactionStorage;
-import at.gv.egiz.eaaf.core.api.utils.IPendingRequestIdGenerationStrategy;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.DummyProtocolAuthService;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import at.gv.egiz.eaaf.core.impl.idp.process.spring.test.DummyTransactionStorage.DummyDbEntry;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"
-})
-public class IdAustriaAuthSignalControllerTest {
-
- @Autowired(required = true)
- private IdAustriaClientAuthSignalController controller;
- @Autowired(required = true)
- private ITransactionStorage cache;
- @Autowired(required = true)
- private IPendingRequestIdGenerationStrategy pendingReqGeneration;
- @Autowired(required = true)
- private IRequestStorage reqStorage;
- @Autowired(required = true)
- private IConfiguration basicConfig;
- @Autowired private ITransactionStorage transactionStorage;
-
- @Autowired private DummyProtocolAuthService protAuthService;
-
- @Test
- public void noRelayState() throws IOException, EaafException {
- final MockHttpServletRequest httpReq =
- new MockHttpServletRequest("POST", "https://localhost/authhandler");
- final MockHttpServletResponse httpResp = new MockHttpServletResponse();
-
- controller.performAuthentication(httpReq, httpResp);
- Assert.assertEquals("httpStausCode", 200, httpResp.getStatus());
-
- final String errorId = protAuthService.getErrorKey();
- final Object error = cache.get(errorId);
- Assert.assertNotNull("Error is null", error);
- org.springframework.util.Assert.isInstanceOf(byte[].class,
- ((DummyDbEntry) error).getObj());
- final Object errorObj = SerializationUtils.deserialize((byte[]) ((DummyDbEntry) error).getObj());
- org.springframework.util.Assert.isInstanceOf(ExceptionContainer.class, errorObj);
- org.springframework.util.Assert.isInstanceOf(EaafException.class,
- ((ExceptionContainer) errorObj).getExceptionThrown());
-
- }
-
- @Test
- public void validRelayStateNoPendingReqId() throws EaafException, IOException {
- final String pendingReqId = pendingReqGeneration.generateExternalPendingRequestId();
- final MockHttpServletRequest httpReq =
- new MockHttpServletRequest("POST", "https://localhost/authhandler");
- httpReq.addParameter(IdAustriaClientAuthSignalController.HTTP_PARAM_RELAYSTATE, pendingReqId);
- final MockHttpServletResponse httpResp = new MockHttpServletResponse();
-
- controller.performAuthentication(httpReq, httpResp);
- Assert.assertEquals("httpStausCode", 200, httpResp.getStatus());
-
- final String errorId = protAuthService.getErrorKey();
- final Object error = cache.get(errorId);
- Assert.assertNotNull("Error is null", error);
- org.springframework.util.Assert.isInstanceOf(byte[].class,
- ((DummyDbEntry) error).getObj());
- final Object errorObj = SerializationUtils.deserialize((byte[]) ((DummyDbEntry) error).getObj());
- org.springframework.util.Assert.isInstanceOf(ExceptionContainer.class, errorObj);
- org.springframework.util.Assert.isInstanceOf(EaafException.class,
- ((ExceptionContainer) errorObj).getExceptionThrown());
- //TODO:
- Assert.assertEquals("ErrorCode not match", "auth.26",
- ((EaafException) ((ExceptionContainer) errorObj).getExceptionThrown()).getErrorId());
-
- }
-
- @Test
- public void validRelayStateSuspectPendingReqId() throws EaafException, IOException {
- String relayState = RandomStringUtils.randomAlphanumeric(10);
- transactionStorage.put(relayState, false, -1);
-
- final MockHttpServletRequest httpReq =
- new MockHttpServletRequest("POST", "https://localhost/authhandler");
- httpReq.addParameter(IdAustriaClientAuthSignalController.HTTP_PARAM_RELAYSTATE, relayState);
- final MockHttpServletResponse httpResp = new MockHttpServletResponse();
-
- controller.performAuthentication(httpReq, httpResp);
- Assert.assertEquals("httpStausCode", 200, httpResp.getStatus());
-
- final String errorId = protAuthService.getErrorKey();
- final Object error = cache.get(errorId);
- Assert.assertNotNull("Error is null", error);
- org.springframework.util.Assert.isInstanceOf(byte[].class,
- ((DummyDbEntry) error).getObj());
- final Object errorObj = SerializationUtils.deserialize((byte[]) ((DummyDbEntry) error).getObj());
- org.springframework.util.Assert.isInstanceOf(ExceptionContainer.class, errorObj);
- org.springframework.util.Assert.isInstanceOf(EaafException.class,
- ((ExceptionContainer) errorObj).getExceptionThrown());
- //TODO:
- Assert.assertEquals("ErrorCode not match", "auth.26",
- ((EaafException) ((ExceptionContainer) errorObj).getExceptionThrown()).getErrorId());
-
- Assert.assertNull("RelayState was not removed", transactionStorage.get(relayState));
-
- }
-
- @Test
- public void validRelayStateNoPendingReq() throws EaafException, IOException {
- final String pendingReqId = pendingReqGeneration.generateExternalPendingRequestId();
- String relayState = RandomStringUtils.randomAlphanumeric(10);
- transactionStorage.put(relayState, pendingReqId, -1);
-
- final MockHttpServletRequest httpReq =
- new MockHttpServletRequest("POST", "https://localhost/authhandler");
- httpReq.addParameter(IdAustriaClientAuthSignalController.HTTP_PARAM_RELAYSTATE, relayState);
- final MockHttpServletResponse httpResp = new MockHttpServletResponse();
-
- controller.performAuthentication(httpReq, httpResp);
- Assert.assertEquals("httpStausCode", 200, httpResp.getStatus());
-
- final String errorId = protAuthService.getErrorKey();
- final Object error = cache.get(errorId);
- Assert.assertNotNull("Error is null", error);
- org.springframework.util.Assert.isInstanceOf(byte[].class,
- ((DummyDbEntry) error).getObj());
- final Object errorObj = SerializationUtils.deserialize((byte[]) ((DummyDbEntry) error).getObj());
- org.springframework.util.Assert.isInstanceOf(ExceptionContainer.class, errorObj);
- org.springframework.util.Assert.isInstanceOf(EaafException.class,
- ((ExceptionContainer) errorObj).getExceptionThrown());
- Assert.assertEquals("ErrorCode not match", "auth.28",
- ((EaafException) ((ExceptionContainer) errorObj).getExceptionThrown()).getErrorId());
-
- Assert.assertNull("RelayState was not removed", transactionStorage.get(relayState));
-
- }
-
- @Test
- public void validRelayStateWithPendingReq() throws EaafException, IOException {
- final String pendingReqId = pendingReqGeneration.generateExternalPendingRequestId();
-
- String relayState = RandomStringUtils.randomAlphanumeric(10);
- transactionStorage.put(relayState, pendingReqId, -1);
-
- final TestRequestImpl pendingReq = new TestRequestImpl();
- pendingReq.setPendingReqId(pendingReqId);
- pendingReq.setAuthUrl("http://localhost/idp");
- final Map<String, String> spConfigMap = new HashMap<>();
- spConfigMap.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "http://test.sp");
- final DummySpConfiguration spConfig = new DummySpConfiguration(spConfigMap, basicConfig);
- pendingReq.setSpConfig(spConfig);
- reqStorage.storePendingRequest(pendingReq);
-
- final MockHttpServletRequest httpReq =
- new MockHttpServletRequest("POST", "https://localhost/authhandler");
- httpReq.addParameter(IdAustriaClientAuthSignalController.HTTP_PARAM_RELAYSTATE, relayState);
- final MockHttpServletResponse httpResp = new MockHttpServletResponse();
-
- controller.performAuthentication(httpReq, httpResp);
-
- Assert.assertEquals("httpStausCode", 200, httpResp.getStatus());
-
- final String errorId = protAuthService.getErrorKey();
- final Object error = cache.get(errorId);
- Assert.assertNotNull("Error is null", error);
- org.springframework.util.Assert.isInstanceOf(byte[].class,
- ((DummyDbEntry) error).getObj());
- final Object errorObj = SerializationUtils.deserialize((byte[]) ((DummyDbEntry) error).getObj());
- org.springframework.util.Assert.isInstanceOf(ExceptionContainer.class, errorObj);
- org.springframework.util.Assert.isInstanceOf(EaafException.class,
- ((ExceptionContainer) errorObj).getExceptionThrown());
- Assert.assertEquals("ErrorCode not match",
- "PendingRequest object is not of type 'RequestImpl.class'",
- ((EaafException) ((ExceptionContainer) errorObj).getExceptionThrown()).getErrorId());
- }
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientAuthHealthCheckTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientAuthHealthCheckTest.java
deleted file mode 100644
index 90e1b169..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientAuthHealthCheckTest.java
+++ /dev/null
@@ -1,130 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.idaustriaclient;
-
-import java.time.Instant;
-import java.time.temporal.ChronoUnit;
-
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
-import org.opensaml.core.xml.io.MarshallingException;
-import org.opensaml.core.xml.io.UnmarshallingException;
-import org.opensaml.core.xml.util.XMLObjectSupport;
-import org.opensaml.saml.saml2.metadata.EntityDescriptor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.actuate.health.Health;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.w3c.dom.Element;
-
-import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.IdAustriaClientAuthConstants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.provider.IdAustriaClientAuthHealthCheck;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.provider.IdAustriaClientAuthMetadataProvider;
-import at.gv.egiz.eaaf.modules.pvp2.api.utils.IPvp2CredentialProvider;
-import at.gv.egiz.eaaf.modules.pvp2.exception.CredentialsNotAvailableException;
-import at.gv.egiz.eaaf.modules.pvp2.exception.SamlSigningException;
-import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xInitializer;
-import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
-import net.shibboleth.utilities.java.support.xml.SerializeSupport;
-import net.shibboleth.utilities.java.support.xml.XMLParserException;
-import okhttp3.HttpUrl;
-import okhttp3.mockwebserver.MockResponse;
-import okhttp3.mockwebserver.MockWebServer;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"
-})
-public class IdAustriaClientAuthHealthCheckTest {
-
- @Autowired private IdAustriaClientAuthHealthCheck toCheck;
- @Autowired protected MsConnectorDummyConfigMap config;
- @Autowired private IPvp2CredentialProvider credentialProvider;
- @Autowired IdAustriaClientAuthMetadataProvider provider;
-
- private static MockWebServer mockWebServer;
- private static HttpUrl mockServerUrl;
-
- /**
- * JUnit class initializer.
- *
- * @throws Exception In case of an OpenSAML3 initialization error
- */
- @BeforeClass
- public static void classInitializer() throws Exception {
- EaafOpenSaml3xInitializer.eaafInitialize();
-
- mockWebServer = new MockWebServer();
- mockServerUrl = mockWebServer.url("/sp/metadata");
-
- }
-
- @Test
- public void notActive() {
- //set-up test
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_ID_AUSTRIA_ENTITYID,
- null);
-
- //perform check
- Health status = toCheck.health();
-
- //evaluate status
- Assert.assertEquals("wrong status", Health.unknown().build().getStatus(), status.getStatus());
-
- }
-
- @Test
- public void success() throws SamlSigningException, CredentialsNotAvailableException,
- XMLParserException, UnmarshallingException, MarshallingException {
-
- //set-up test
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_ID_AUSTRIA_ENTITYID,
- mockServerUrl.url().toString());
- injectValidHttpMetadata(mockServerUrl.url().toString());
-
- //perform check
- Health status = toCheck.health();
-
- //evaluate status
- Assert.assertEquals("wrong status", Health.up().build().getStatus(), status.getStatus());
-
- }
-
- @Test
- public void invalid() throws SamlSigningException, CredentialsNotAvailableException,
- XMLParserException, UnmarshallingException, MarshallingException, ResolverException {
- //set-up test
- provider.clear();
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_ID_AUSTRIA_ENTITYID,
- "http://localhost:1234/junit/metadata");
-
- //perform check
- Health status = toCheck.health();
-
- //evaluate status
- Assert.assertEquals("wrong status", Health.outOfService().build().getStatus(), status.getStatus());
-
- }
-
- private String injectValidHttpMetadata(String dynEntityId) throws XMLParserException,
- UnmarshallingException, MarshallingException, SamlSigningException, CredentialsNotAvailableException {
- final EntityDescriptor metadata = (EntityDescriptor) XMLObjectSupport.unmarshallFromInputStream(
- XMLObjectProviderRegistrySupport.getParserPool(),
- IdAustriaClientAuthHealthCheckTest.class.getResourceAsStream("/data/idp_metadata_no_sig.xml"));
- metadata.setValidUntil(Instant.now().plus(1, ChronoUnit.DAYS));
- metadata.setSignature(null);
- metadata.setEntityID(dynEntityId);
- Saml2Utils.signSamlObject(metadata, credentialProvider.getMetaDataSigningCredential(), true);
- final Element metadataElement = XMLObjectSupport.marshall(metadata);
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(SerializeSupport.nodeToString(metadataElement))
- .setHeader("Content-Type", "text/html;charset=utf-8"));
- return dynEntityId;
-
-}
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientAuthMetadataControllerTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientAuthMetadataControllerTest.java
deleted file mode 100644
index 095a020a..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientAuthMetadataControllerTest.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.idaustriaclient;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
-import org.opensaml.core.xml.io.UnmarshallingException;
-import org.opensaml.core.xml.util.XMLObjectSupport;
-import org.opensaml.saml.common.xml.SAMLConstants;
-import org.opensaml.saml.metadata.resolver.filter.FilterException;
-import org.opensaml.saml.metadata.resolver.filter.MetadataFilterContext;
-import org.opensaml.saml.saml2.metadata.EntityDescriptor;
-import org.opensaml.saml.saml2.metadata.SPSSODescriptor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.IdAustriaClientAuthConstants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.controller.IdAustriaClientAuthMetadataController;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.provider.IdAustriaClientAuthCredentialProvider;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-import at.gv.egiz.eaaf.modules.pvp2.exception.CredentialsNotAvailableException;
-import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xInitializer;
-import at.gv.egiz.eaaf.modules.pvp2.impl.validation.metadata.SchemaValidationFilter;
-import at.gv.egiz.eaaf.modules.pvp2.impl.validation.metadata.SimpleMetadataSignatureVerificationFilter;
-import net.shibboleth.utilities.java.support.xml.XMLParserException;
-
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"
-})
-@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
-public class IdAustriaClientAuthMetadataControllerTest {
-
- private MockHttpServletRequest httpReq;
- private MockHttpServletResponse httpResp;
-
- @Autowired private IdAustriaClientAuthMetadataController controller;
- @Autowired private IdAustriaClientAuthCredentialProvider credProvider;
-
- /**
- * JUnit class initializer.
- *
- * @throws Exception In case of an OpenSAML3 initialization error
- */
- @BeforeClass
- public static void initialize() throws Exception {
- EaafOpenSaml3xInitializer.eaafInitialize();
-
- }
-
- /**
- * Single jUnit-test set-up.
- */
- @Before
- public void testSetup() {
- httpReq = new MockHttpServletRequest("GET", "http://localhost/authhandler");
- httpReq.setContextPath("/authhandler");
- httpResp = new MockHttpServletResponse();
-
- }
-
- @Test
- public void buildMetadataValidInEidMode() throws IOException, EaafException,
- XMLParserException, UnmarshallingException, FilterException {
-
- //build metdata
- controller.getSpMetadata(httpReq, httpResp);
-
- //check result
- validateResponse(7);
-
- }
-
- private void validateResponse(int numberOfRequestedAttributes) throws UnsupportedEncodingException,
- XMLParserException, UnmarshallingException, FilterException, CredentialsNotAvailableException {
- Assert.assertEquals("HTTP Statuscode", 200, httpResp.getStatus());
- Assert.assertEquals("ContentType", "text/xml; charset=utf-8", httpResp.getContentType());
- Assert.assertEquals("ContentEncoding", "UTF-8", httpResp.getCharacterEncoding());
-
- final String metadataXml = httpResp.getContentAsString();
- Assert.assertNotNull("XML Metadata", metadataXml);
-
- final EntityDescriptor metadata = (EntityDescriptor) XMLObjectSupport.unmarshallFromInputStream(
- XMLObjectProviderRegistrySupport.getParserPool(), new ByteArrayInputStream(metadataXml.getBytes("UTF-8")));
-
- Assert.assertEquals("EntityId",
- "http://localhost/authhandler" + IdAustriaClientAuthConstants.ENDPOINT_METADATA,
- metadata.getEntityID());
-
- MetadataFilterContext filterContext = new MetadataFilterContext();
-
- //check XML scheme
- final SchemaValidationFilter schemaFilter = new SchemaValidationFilter();
- schemaFilter.filter(metadata, filterContext);
-
- //check signature
- final SimpleMetadataSignatureVerificationFilter sigFilter =
- new SimpleMetadataSignatureVerificationFilter(credProvider.getKeyStore().getFirst(),
- metadata.getEntityID());
- sigFilter.filter(metadata, filterContext);
-
- //check content
- final SPSSODescriptor spSsoDesc = metadata.getSPSSODescriptor(SAMLConstants.SAML20P_NS);
- Assert.assertNotNull("SPSSODescr.", spSsoDesc);
-
- Assert.assertFalse("AssertionConsumerServices",
- spSsoDesc.getAssertionConsumerServices().isEmpty());
-
- Assert.assertFalse("KeyDescriptors",
- spSsoDesc.getKeyDescriptors().isEmpty());
- Assert.assertEquals("#KeyDescriptors", 2, spSsoDesc.getKeyDescriptors().size());
-
- Assert.assertFalse("NameIDFormats",
- spSsoDesc.getNameIDFormats().isEmpty());
- Assert.assertEquals("wrong NameIDFormats", "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
- spSsoDesc.getNameIDFormats().get(0).getURI());
-
- Assert.assertFalse("AttributeConsumingServices",
- spSsoDesc.getAttributeConsumingServices().isEmpty());
- Assert.assertEquals("#RequestAttributes", numberOfRequestedAttributes,
- spSsoDesc.getAttributeConsumingServices().get(0).getRequestedAttributes().size());
-
- }
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientAuthMetadataProviderFirstTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientAuthMetadataProviderFirstTest.java
deleted file mode 100644
index c4dd5d2e..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientAuthMetadataProviderFirstTest.java
+++ /dev/null
@@ -1,239 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.idaustriaclient;
-
-import java.io.IOException;
-import java.time.Instant;
-import java.time.temporal.ChronoUnit;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.opensaml.core.criterion.EntityIdCriterion;
-import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
-import org.opensaml.core.xml.io.MarshallingException;
-import org.opensaml.core.xml.io.UnmarshallingException;
-import org.opensaml.core.xml.util.XMLObjectSupport;
-import org.opensaml.saml.saml2.metadata.EntityDescriptor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.w3c.dom.Element;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.provider.IdAustriaClientAuthMetadataProvider;
-import at.gv.egiz.eaaf.modules.pvp2.api.metadata.IPvp2MetadataProvider;
-import at.gv.egiz.eaaf.modules.pvp2.api.utils.IPvp2CredentialProvider;
-import at.gv.egiz.eaaf.modules.pvp2.exception.CredentialsNotAvailableException;
-import at.gv.egiz.eaaf.modules.pvp2.exception.Pvp2MetadataException;
-import at.gv.egiz.eaaf.modules.pvp2.exception.SamlSigningException;
-import at.gv.egiz.eaaf.modules.pvp2.impl.metadata.PvpMetadataResolverFactory;
-import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xInitializer;
-import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils;
-import at.gv.egiz.eaaf.modules.pvp2.test.metadata.MetadataResolverTest;
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
-import net.shibboleth.utilities.java.support.xml.SerializeSupport;
-import net.shibboleth.utilities.java.support.xml.XMLParserException;
-import okhttp3.HttpUrl;
-import okhttp3.mockwebserver.MockResponse;
-import okhttp3.mockwebserver.MockWebServer;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"
-})
-public class IdAustriaClientAuthMetadataProviderFirstTest {
-
- @Autowired
- IPvp2CredentialProvider credentialProvider;
- @Autowired
- IdAustriaClientAuthMetadataProvider provider;
- @Autowired
- PvpMetadataResolverFactory resolverFactory;
-
- private static MockWebServer mockWebServer;
- private static HttpUrl mockServerUrl;
-
- /**
- * JUnit class initializer.
- *
- * @throws Exception In case of an OpenSAML3 initialization error
- */
- @BeforeClass
- public static void classInitializer() throws Exception {
- EaafOpenSaml3xInitializer.eaafInitialize();
-
- mockWebServer = new MockWebServer();
- mockServerUrl = mockWebServer.url("/sp/metadata");
-
- }
-
- /**
- * jUnit test set-up.
- *
- * @throws ResolverException
- *
- */
- @Before
- public void testSetup() {
- provider.fullyDestroy();
-
- }
-
- @Test
- public void simpleManuelAddingTest() throws Pvp2MetadataException, ResolverException {
- final IPvp2MetadataProvider resolver1 = resolverFactory.createMetadataProvider(
- "classpath:/data/idp_metadata_sig_notvalid.xml",
- null, "junit", null);
- Assert.assertNotNull("Resolver 1 is null", resolver1);
- provider.addMetadataResolverIntoChain(resolver1);
-
- final IPvp2MetadataProvider resolver2 = resolverFactory.createMetadataProvider(
- "classpath:/data/idp_metadata_sig_valid_wrong_alg.xml",
- null, "junit", null);
- Assert.assertNotNull("Resolver 2 is null", resolver2);
- provider.addMetadataResolverIntoChain(resolver2);
-
- final EntityDescriptor entity1 = provider.getEntityDescriptor("https://localEntity");
- Assert.assertNotNull("Entity 1 not found", entity1);
-
- final EntityDescriptor entity2 = provider.getEntityDescriptor(
- "https://vidp.gv.at/ms_connector/pvp/metadata");
- Assert.assertNotNull("Entity 2 not found", entity2);
-
- final EntityDescriptor entity3 = provider.getEntityDescriptor("https://egiz.gv.at/abababa");
- Assert.assertNull("Entity 3 found", entity3);
-
- }
-
- @Test
- public void dynamicLoadingNoValidSignature() throws ResolverException {
- final EntityDescriptor entity = provider.getEntityDescriptor("classpath:/data/idp_metadata_no_sig2.xml");
- Assert.assertNull("Entity found", entity);
-
- }
-
- @Test
- public void dynamicLoadingValidSignature() throws XMLParserException, UnmarshallingException,
- SamlSigningException, CredentialsNotAvailableException, MarshallingException, ResolverException {
-
- final String entityId = injectValidHttpMetadata();
- final EntityDescriptor entity = provider.getEntityDescriptor(entityId);
- Assert.assertNotNull("Entity not found", entity);
-
- }
-
- @Test
- public void reloadNotPossible() throws XMLParserException, UnmarshallingException,
- SamlSigningException, CredentialsNotAvailableException, MarshallingException, ResolverException {
-
- final String entityId = injectValidHttpMetadata();
- final EntityDescriptor entity = provider.getEntityDescriptor(entityId);
- Assert.assertNotNull("Entity not found", entity);
- Assert.assertNotNull("Entity not found",
- provider.resolveSingle(generateEntityIdCreteria(entityId)));
-
- Assert.assertFalse("Refresh should not be possible",
- provider.refreshMetadataProvider(entityId));
-
- final EntityDescriptor entity2 = provider.getEntityDescriptor(entityId);
- Assert.assertNull("Entity not found", entity2);
- Assert.assertNull("Entity not found",
- provider.resolveSingle(generateEntityIdCreteria(entityId)));
-
- Assert.assertFalse("Last refresh", provider.wasLastRefreshSuccess());
-
- }
-
- @Test
- public void refeshTest() throws Pvp2MetadataException, ResolverException {
- Assert.assertFalse("Last refresh", provider.wasLastRefreshSuccess());
- Assert.assertNull("LastRefresh", provider.getLastRefresh());
- Assert.assertNull("LastSuccessfulRefresh", provider.getLastSuccessfulRefresh());
- Assert.assertNull("LastUpdate", provider.getLastUpdate());
-
- final IPvp2MetadataProvider resolver1 = resolverFactory.createMetadataProvider(
- "classpath:/data/idp_metadata_sig_notvalid.xml",
- null, "junit", null);
- Assert.assertNotNull("Resolver 1 is null", resolver1);
- provider.addMetadataResolverIntoChain(resolver1);
-
- final IPvp2MetadataProvider resolver2 = resolverFactory.createMetadataProvider(
- "classpath:/data/idp_metadata_sig_valid_wrong_alg.xml",
- null, "junit", null);
- Assert.assertNotNull("Resolver 2 is null", resolver2);
- provider.addMetadataResolverIntoChain(resolver2);
-
- provider.refresh();
-
- Assert.assertTrue("Last refresh", provider.wasLastRefreshSuccess());
- Assert.assertNotNull("LastRefresh", provider.getLastRefresh());
- Assert.assertNotNull("LastSuccessfulRefresh", provider.getLastSuccessfulRefresh());
- Assert.assertNotNull("LastUpdate", provider.getLastUpdate());
-
- }
-
- @Test
- public void reloadPossible() throws XMLParserException, UnmarshallingException,
- SamlSigningException, CredentialsNotAvailableException, MarshallingException, ResolverException,
- IOException {
-
- mockWebServer.shutdown();
- mockWebServer = new MockWebServer();
- mockServerUrl = mockWebServer.url("/sp/metadata");
-
- final String entityId = injectValidHttpMetadata();
- final EntityDescriptor entity = provider.getEntityDescriptor(entityId);
- Assert.assertNotNull("Entity not found", entity);
- Assert.assertNotNull("Entity not found",
- provider.resolveSingle(generateEntityIdCreteria(entityId)));
-
- Assert.assertFalse("Last refresh", provider.wasLastRefreshSuccess());
-
- injectValidHttpMetadata(entityId);
- Assert.assertTrue("Refresh should not be possible",
- provider.refreshMetadataProvider(entityId));
-
- final EntityDescriptor entity2 = provider.getEntityDescriptor(entityId);
- Assert.assertNotNull("Entity not found", entity2);
- Assert.assertNotNull("Entity not found",
- provider.resolveSingle(generateEntityIdCreteria(entityId)));
-
- Assert.assertFalse("Last refresh", provider.wasLastRefreshSuccess());
-
- }
-
- private String injectValidHttpMetadata() throws SamlSigningException, CredentialsNotAvailableException,
- XMLParserException, UnmarshallingException, MarshallingException {
- return injectValidHttpMetadata(mockServerUrl.url().toString()
- + "/" + RandomStringUtils.randomAlphabetic(5));
- }
-
- private String injectValidHttpMetadata(String dynEntityId) throws XMLParserException,
- UnmarshallingException,
- MarshallingException, SamlSigningException, CredentialsNotAvailableException {
- final EntityDescriptor metadata = (EntityDescriptor) XMLObjectSupport.unmarshallFromInputStream(
- XMLObjectProviderRegistrySupport.getParserPool(),
- MetadataResolverTest.class.getResourceAsStream("/data/idp_metadata_no_sig.xml"));
- metadata.setValidUntil(Instant.now().plus(1, ChronoUnit.DAYS));
- metadata.setSignature(null);
- metadata.setEntityID(dynEntityId);
- Saml2Utils.signSamlObject(metadata, credentialProvider.getMetaDataSigningCredential(), true);
- final Element metadataElement = XMLObjectSupport.marshall(metadata);
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(SerializeSupport.nodeToString(metadataElement))
- .setHeader("Content-Type", "text/html;charset=utf-8"));
-
- return dynEntityId;
-
- }
-
- private CriteriaSet generateEntityIdCreteria(String entityId) {
- final CriteriaSet result = new CriteriaSet();
- result.add(new EntityIdCriterion(entityId));
- return result;
-
- }
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientAuthMetadataProviderSecondTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientAuthMetadataProviderSecondTest.java
deleted file mode 100644
index 3ee6ddcd..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientAuthMetadataProviderSecondTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.idaustriaclient;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.opensaml.saml.saml2.metadata.EntityDescriptor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.provider.IdAustriaClientAuthMetadataProvider;
-import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xInitializer;
-import net.shibboleth.utilities.java.support.resolver.ResolverException;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"
-})
-public class IdAustriaClientAuthMetadataProviderSecondTest {
-
- @Autowired
- IdAustriaClientAuthMetadataProvider provider;
-
- /**
- * JUnit class initializer.
- *
- * @throws Exception In case of an OpenSAML3 initialization error
- */
- @BeforeClass
- public static void classInitializer() throws Exception {
- EaafOpenSaml3xInitializer.eaafInitialize();
-
- }
-
- /**
- * jUnit test set-up.
- *
- * @throws ResolverException
- *
- */
- @Before
- public void testSetup() {
- provider.fullyDestroy();
-
- }
-
- @Test
- public void notTrustedX509CertsInTrustStore() throws ResolverException {
- final EntityDescriptor entity = provider.getEntityDescriptor("classpath:/data/idp_metadata_no_sig2.xml");
- Assert.assertNull("Entity found", entity);
-
- }
-
- @Test
- public void readStaticInfos() {
- Assert.assertEquals("wrong providerId",
- IdAustriaClientAuthMetadataProvider.PROVIDER_ID, provider.getId());
-
- provider.runGarbageCollector();
-
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientCredentialProviderTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientCredentialProviderTest.java
deleted file mode 100644
index 3e37e1a6..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/idaustriaclient/IdAustriaClientCredentialProviderTest.java
+++ /dev/null
@@ -1,414 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.idaustriaclient;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import com.google.common.base.Optional;
-import com.google.common.base.Predicates;
-import com.google.common.base.Throwables;
-import com.google.common.collect.FluentIterable;
-
-import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.IdAustriaClientAuthConstants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.provider.IdAustriaClientAuthCredentialProvider;
-import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-import at.gv.egiz.eaaf.core.exceptions.EaafFactoryException;
-import at.gv.egiz.eaaf.modules.pvp2.api.credential.EaafX509Credential;
-import at.gv.egiz.eaaf.modules.pvp2.exception.CredentialsNotAvailableException;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_basic_lazy.xml",
- "/SpringTest-context_basic_mapConfig.xml"
-})
-@DirtiesContext
-public class IdAustriaClientCredentialProviderTest {
-
- private static final String PATH_JKS = "../keystore/junit_test.jks";
- private static final String ALIAS_METADATA = "meta";
- private static final String ALIAS_SIGN = "sig";
- private static final String ALIAS_ENC = "enc";
- private static final String PASSWORD = "password";
-
- @Autowired
- private ApplicationContext context;
- @Autowired(required = true)
- protected MsConnectorDummyConfigMap config;
-
- /**
- * jUnit test initializer.
- */
- @Before
- public void initialize() {
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_KEYSTORE_PATH, PATH_JKS);
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_KEYSTORE_PASSWORD, PASSWORD);
-
- config.removeConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_METADATA_ALIAS);
- config.removeConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_METADATA_KEY_PASSWORD);
-
- config.removeConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_SIGNING_ALIAS);
- config.removeConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_SIGNING_KEY_PASSWORD);
-
- config.removeConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_ENCRYPTION_ALIAS);
- config.removeConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_ENCRYPTION_KEY_PASSWORD);
-
- }
-
- @Test
- @DirtiesContext
- public void noKeyStoreUrl() {
- config.removeConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_KEYSTORE_PATH);
- try {
- context.getBean(IdAustriaClientAuthCredentialProvider.class);
- Assert.fail("No KeyStore not detected");
-
- } catch (final BeansException e) {
- org.springframework.util.Assert.isInstanceOf(EaafConfigurationException.class,
- e.getCause(), "Wrong exception");
- }
-
- }
-
- @Test
- @DirtiesContext
- public void noKeyStore() {
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_KEYSTORE_PATH,
- "src/test/resources/config/notExist.p12");
- try {
- context.getBean(IdAustriaClientAuthCredentialProvider.class);
- Assert.fail("No KeyStore not detected");
-
- } catch (final BeansException e) {
- final Optional<Throwable> eaafException = FluentIterable.from(
- Throwables.getCausalChain(e)).filter(
- Predicates.instanceOf(EaafConfigurationException.class)).first();
- Assert.assertTrue("Wrong exception", eaafException.isPresent());
- Assert.assertEquals("Wrong errorId", "internal.keystore.06",
- ((EaafException) eaafException.get()).getErrorId());
-
- }
-
- }
-
- @Test
- @DirtiesContext
- public void noWrongKeyStorePassword() {
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_KEYSTORE_PASSWORD, "test");
- try {
- context.getBean(IdAustriaClientAuthCredentialProvider.class);
- Assert.fail("No KeyStore not detected");
-
- } catch (final BeansException e) {
- final Optional<Throwable> eaafException = FluentIterable.from(
- Throwables.getCausalChain(e)).filter(
- Predicates.instanceOf(EaafFactoryException.class)).first();
- Assert.assertTrue("Wrong exception", eaafException.isPresent());
- Assert.assertEquals("Wrong errorId", "internal.keystore.06",
- ((EaafException) eaafException.get()).getErrorId());
-
- }
-
- }
-
- @Test
- @DirtiesContext
- public void notKeyConfigurationWrongAlias() {
- final IdAustriaClientAuthCredentialProvider credential = context.getBean(
- IdAustriaClientAuthCredentialProvider.class);
-
- Assert.assertNotNull("Credetialprovider", credential);
- Assert.assertNotNull("Friendlyname", credential.getFriendlyName());
-
- try {
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_METADATA_ALIAS,
- RandomStringUtils.randomAlphabetic(5));
- credential.getMetaDataSigningCredential();
- Assert.fail("No Metadata signing credentials not detected");
-
- } catch (final CredentialsNotAvailableException e) {
- Assert.assertTrue("Wrong errorCode", e.getMessage().contains("internal.pvp.01"));
-
- }
-
- try {
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_SIGNING_ALIAS,
- RandomStringUtils.randomAlphabetic(5));
- credential.getMessageSigningCredential();
- Assert.fail("No Metadata signing credentials not detected");
-
- } catch (final CredentialsNotAvailableException e) {
- Assert.assertTrue("Wrong errorCode", e.getMessage().contains("internal.pvp.01"));
-
- }
-
- try {
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_ENCRYPTION_ALIAS,
- RandomStringUtils.randomAlphabetic(5));
- credential.getMessageEncryptionCredential();
- Assert.fail("No Metadata signing credentials not detected");
-
- } catch (final CredentialsNotAvailableException e) {
- Assert.assertTrue("Wrong errorCode", e.getMessage().contains("internal.pvp.01"));
-
- }
-
- }
-
- @Test
- @DirtiesContext
- public void notKeyConfigurationWrongPassword() {
- final IdAustriaClientAuthCredentialProvider credential = context.getBean(
- IdAustriaClientAuthCredentialProvider.class);
-
- Assert.assertNotNull("Credetialprovider", credential);
- Assert.assertNotNull("Friendlyname", credential.getFriendlyName());
-
- try {
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_METADATA_KEY_PASSWORD,
- RandomStringUtils.randomAlphabetic(5));
- credential.getMetaDataSigningCredential();
- Assert.fail("No Metadata signing credentials not detected");
-
- } catch (final CredentialsNotAvailableException e) {
- Assert.assertTrue("Wrong errorCode", e.getMessage().contains("internal.pvp.01"));
-
- }
-
- try {
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_SIGNING_KEY_PASSWORD,
- RandomStringUtils.randomAlphabetic(5));
- credential.getMessageSigningCredential();
- Assert.fail("No message signing credentials not detected");
-
- } catch (final CredentialsNotAvailableException e) {
- Assert.assertTrue("Wrong errorCode", e.getMessage().contains("internal.pvp.01"));
-
- }
-
- try {
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_ENCRYPTION_KEY_PASSWORD,
- RandomStringUtils.randomAlphabetic(5));
- final EaafX509Credential encCred = credential.getMessageEncryptionCredential();
- Assert.assertNull("No encryption signing credentials not detected", encCred);
-
- } catch (final CredentialsNotAvailableException e) {
- Assert.assertTrue("Wrong errorCode", e.getMessage().contains("internal.pvp.01"));
-
- }
-
- }
-
- @Test
- @DirtiesContext
- public void notKeyConfigurationValidAliasWrongPassword() {
- final IdAustriaClientAuthCredentialProvider credential = context.getBean(
- IdAustriaClientAuthCredentialProvider.class);
-
- Assert.assertNotNull("Credetialprovider", credential);
- Assert.assertNotNull("Friendlyname", credential.getFriendlyName());
-
- try {
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_METADATA_ALIAS,
- ALIAS_METADATA);
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_METADATA_KEY_PASSWORD,
- RandomStringUtils.randomAlphabetic(5));
- credential.getMetaDataSigningCredential();
- Assert.fail("No Metadata signing credentials not detected");
-
- } catch (final CredentialsNotAvailableException e) {
- Assert.assertTrue("Wrong errorCode", e.getMessage().contains("internal.pvp.01"));
-
- }
-
- try {
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_SIGNING_ALIAS,
- ALIAS_SIGN);
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_SIGNING_KEY_PASSWORD,
- RandomStringUtils.randomAlphabetic(5));
- credential.getMessageSigningCredential();
- Assert.fail("No Metadata signing credentials not detected");
-
- } catch (final CredentialsNotAvailableException e) {
- Assert.assertTrue("Wrong errorCode", e.getMessage().contains("internal.pvp.01"));
-
- }
-
- try {
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_ENCRYPTION_ALIAS,
- ALIAS_ENC);
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_ENCRYPTION_KEY_PASSWORD,
- RandomStringUtils.randomAlphabetic(5));
- credential.getMessageEncryptionCredential();
- Assert.fail("No Metadata signing credentials not detected");
-
- } catch (final CredentialsNotAvailableException e) {
- Assert.assertTrue("Wrong errorCode", e.getMessage().contains("internal.pvp.01"));
-
- }
- }
-
- @Test
- @DirtiesContext
- public void notKeyConfigurationWrongAliasValidPassword() {
- final IdAustriaClientAuthCredentialProvider credential = context.getBean(
- IdAustriaClientAuthCredentialProvider.class);
-
- Assert.assertNotNull("Credetialprovider", credential);
- Assert.assertNotNull("Friendlyname", credential.getFriendlyName());
-
- try {
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_METADATA_ALIAS,
- RandomStringUtils.randomAlphabetic(5));
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_METADATA_KEY_PASSWORD,
- PASSWORD);
- credential.getMetaDataSigningCredential();
- Assert.fail("No Metadata signing credentials not detected");
-
- } catch (final CredentialsNotAvailableException e) {
- Assert.assertTrue("Wrong errorCode", e.getMessage().contains("internal.pvp.01"));
-
- }
-
- try {
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_SIGNING_ALIAS,
- RandomStringUtils.randomAlphabetic(5));
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_SIGNING_KEY_PASSWORD,
- PASSWORD);
- credential.getMessageSigningCredential();
- Assert.fail("No Metadata signing credentials not detected");
-
- } catch (final CredentialsNotAvailableException e) {
- Assert.assertTrue("Wrong errorCode", e.getMessage().contains("internal.pvp.01"));
-
- }
-
- try {
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_ENCRYPTION_ALIAS,
- RandomStringUtils.randomAlphabetic(5));
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_ENCRYPTION_KEY_PASSWORD,
- PASSWORD);
- credential.getMessageEncryptionCredential();
- Assert.fail("No Metadata signing credentials not detected");
-
- } catch (final CredentialsNotAvailableException e) {
- Assert.assertTrue("Wrong errorCode", e.getMessage().contains("internal.pvp.01"));
-
- }
- }
-
- @Test
- @DirtiesContext
- public void validonfiguration() throws CredentialsNotAvailableException {
- final IdAustriaClientAuthCredentialProvider credential = context.getBean(
- IdAustriaClientAuthCredentialProvider.class);
-
- Assert.assertNotNull("Credetialprovider", credential);
- Assert.assertNotNull("Friendlyname", credential.getFriendlyName());
-
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_METADATA_ALIAS,
- ALIAS_METADATA);
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_METADATA_KEY_PASSWORD,
- PASSWORD);
- credential.getMetaDataSigningCredential();
-
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_SIGNING_ALIAS,
- ALIAS_SIGN);
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_SIGNING_KEY_PASSWORD,
- PASSWORD);
- credential.getMessageSigningCredential();
-
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_ENCRYPTION_ALIAS,
- ALIAS_ENC);
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_ENCRYPTION_KEY_PASSWORD,
- PASSWORD);
- credential.getMessageEncryptionCredential();
-
- }
-
- @Test
- @DirtiesContext
- public void notKeyConfiguration() {
- final IdAustriaClientAuthCredentialProvider credential = context.getBean(
- IdAustriaClientAuthCredentialProvider.class);
-
- Assert.assertNotNull("Credetialprovider", credential);
- Assert.assertNotNull("Friendlyname", credential.getFriendlyName());
-
- try {
- credential.getMetaDataSigningCredential();
- Assert.fail("No Metadata signing credentials not detected");
-
- } catch (final CredentialsNotAvailableException e) {
- Assert.assertTrue("Wrong errorCode", e.getMessage().contains("internal.pvp.01"));
-
- }
-
- try {
- credential.getMessageSigningCredential();
- Assert.fail("No message signing credentials not detected");
-
- } catch (final CredentialsNotAvailableException e) {
- Assert.assertTrue("Wrong errorCode", e.getMessage().contains("internal.pvp.01"));
-
- }
-
- try {
- final EaafX509Credential encCred = credential.getMessageEncryptionCredential();
- Assert.assertNull("No encryption signing credentials not detected", encCred);
-
- } catch (final CredentialsNotAvailableException e) {
- Assert.assertTrue("Wrong errorCode", e.getMessage().contains("internal.pvp.01"));
-
- }
-
- }
-
- @Test
- @DirtiesContext
- public void notKeyConfigurationPkcs12() {
- config.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_KEYSTORE_PATH,
- "../keystore/pvp.p12");
- final IdAustriaClientAuthCredentialProvider credential = context.getBean(
- IdAustriaClientAuthCredentialProvider.class);
-
- Assert.assertNotNull("Credetialprovider", credential);
- Assert.assertNotNull("Friendlyname", credential.getFriendlyName());
-
- try {
- credential.getMetaDataSigningCredential();
- Assert.fail("No Metadata signing credentials not detected");
-
- } catch (final CredentialsNotAvailableException e) {
- Assert.assertTrue("Wrong errorCode", e.getMessage().contains("internal.pvp.01"));
-
- }
-
- try {
- credential.getMessageSigningCredential();
- Assert.fail("No message signing credentials not detected");
-
- } catch (final CredentialsNotAvailableException e) {
- Assert.assertTrue("Wrong errorCode", e.getMessage().contains("internal.pvp.01"));
-
- }
-
- try {
- final EaafX509Credential encCred = credential.getMessageEncryptionCredential();
- Assert.assertNull("No encryption signing credentials not detected", encCred);
-
- } catch (final CredentialsNotAvailableException e) {
- Assert.assertTrue("Wrong errorCode", e.getMessage().contains("internal.pvp.01"));
-
- }
- }
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/AlternativeSearchTaskWithRegisterTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/AlternativeSearchTaskWithRegisterTest.java
deleted file mode 100644
index 3814c632..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/AlternativeSearchTaskWithRegisterTest.java
+++ /dev/null
@@ -1,1042 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks;
-
-import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThrows;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.when;
-
-import java.math.BigInteger;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.namespace.QName;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.jetbrains.annotations.NotNull;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import com.github.skjolber.mockito.soap.SoapServiceRule;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.ernp.ErnpRestClient.ErnpRegisterResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.ernp.IErnpClient;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.IZmrClient;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.ZmrSoapClient.ZmrRegisterResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.MatchedPersonResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.RegisterResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidPostProcessingException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasAttributeException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.WorkflowException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.CountrySpecificDetailSearchProcessor;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.GenericEidProcessor;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.ICcSpecificEidProcessingService;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterOperationStatus;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterStatusResults;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.AlternativeSearchTask;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.clients.ZmrClientTest;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils;
-import at.gv.bmi.namespace.zmr_su.base._20040201.RequestType;
-import at.gv.bmi.namespace.zmr_su.base._20040201.ResponseType;
-import at.gv.bmi.namespace.zmr_su.base._20040201_.ServicePort;
-import at.gv.bmi.namespace.zmr_su.zmr._20040201.EidasIdentitaetAnlageType;
-import at.gv.bmi.namespace.zmr_su.zmr._20040201.EidasSuchdatenType;
-import at.gv.egiz.eaaf.core.api.IRequest;
-import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;
-import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;
-import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl;
-import eu.eidas.auth.commons.attribute.AttributeDefinition;
-import eu.eidas.auth.commons.attribute.ImmutableAttributeMap;
-import eu.eidas.auth.commons.attribute.PersonType;
-import eu.eidas.auth.commons.light.impl.LightRequest;
-import eu.eidas.auth.commons.protocol.impl.AuthenticationResponse;
-import lombok.SneakyThrows;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml",
- "/SpringTest-context_ccSearchProcessor_test.xml"
-})
-@DirtiesContext(classMode = ClassMode.BEFORE_CLASS)
-public class AlternativeSearchTaskWithRegisterTest {
-
- @Rule
- public SoapServiceRule soap = SoapServiceRule.newInstance();
-
- @Mock private IErnpClient ernpClient;
-
- @Autowired private IZmrClient zmrClient;
- @Autowired private List<CountrySpecificDetailSearchProcessor> handlers;
- private RegisterSearchService registerSearchService;
-
- private ServicePort zmrMock = null;
-
- private final ICcSpecificEidProcessingService eidPostProcessor = createEidPostProcessor();
- private AlternativeSearchTask task;
-
- final ExecutionContext executionContext = new ExecutionContextImpl();
- private TestRequestImpl pendingReq;
- private static JAXBContext jaxbContext;
-
-
- /**
- * Initialize jUnit class.
- */
- @BeforeClass
- @SneakyThrows
- public static void classInitializer() {
- jaxbContext = JAXBContext.newInstance(
- at.gv.bmi.namespace.zmr_su.zmr._20040201.ObjectFactory.class,
- at.gv.bmi.namespace.zmr_su.gis._20070725.ObjectFactory.class,
- at.gv.bmi.namespace.zmr_su.base._20040201.ObjectFactory.class);
- }
-
-
- /**
- * jUnit test set-up.
- */
- @Before
- public void setUp() throws URISyntaxException, EaafStorageException {
- if (zmrMock == null) {
- zmrMock = soap.mock(ServicePort.class, "http://localhost:1234/demozmr");
-
- }
-
- registerSearchService = new RegisterSearchService(handlers, zmrClient, ernpClient);
- task = new AlternativeSearchTask(registerSearchService, eidPostProcessor);
-
- MockHttpServletRequest httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler");
- MockHttpServletResponse httpResp = new MockHttpServletResponse();
- RequestContextHolder.resetRequestAttributes();
- RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));
-
- pendingReq = new TestRequestImpl();
-
- }
-
-
- @Test
- @SneakyThrows
- public void missingStateInfoFirstEidasData() {
- // inject matching intermediate state
- RegisterStatusResults matchingState = new RegisterStatusResults(null,
- Arrays.asList(RegisterResult.builder()
- .bpk("")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .pseudonym(Arrays.asList("7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit"))
- .build()),
- Collections.emptyList());
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, matchingState );
-
- //inject alternative eIDAS data
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(
- Constants.DATA_FULL_EIDAS_RESPONSE_ALTERNATIVE,
- buildDummyAuthResponse("XXXKlaus - Maria", "XXXvon Brandenburg",
- "DE/AT/7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit", "1994-12-31"));
-
-
- // execute task
- TaskExecutionException exception = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- // validate state
- assertTrue("Wrong exception", (exception.getOriginalException() instanceof WorkflowException));
- assertEquals("wrong errorparam 1", "step11", ((EaafException) exception.getOriginalException()).getParams()[0]);
- assertTrue("Wrong flag 'step11'",
- ((WorkflowException) exception.getOriginalException()).isRequiresManualFix());
- assertEquals("wrong errorparam 1", "No initial eIDAS authn data",
- ((EaafException) exception.getOriginalException()).getParams()[1]);
-
-
- }
-
- @Test
- @SneakyThrows
- public void missingStateInfoIntermediateMatchingState() {
- //inject initial eIDAS data
- MatchingTaskUtils.storeInitialEidasData(pendingReq, SimpleEidasData.builder()
- .personalIdentifier("DE/AT/7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .pseudonym("cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .build());
-
- //inject alternative eIDAS data
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(
- Constants.DATA_FULL_EIDAS_RESPONSE_ALTERNATIVE,
- buildDummyAuthResponse("XXXKlaus - Maria", "XXXvon Brandenburg",
- "DE/AT/7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit", "1994-12-31"));
-
-
- // execute task
- TaskExecutionException exception = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- // validate state
- assertTrue("Wrong exception", (exception.getOriginalException() instanceof WorkflowException));
- assertEquals("wrong errorparam 1", "step11", ((EaafException) exception.getOriginalException()).getParams()[0]);
- assertTrue("Wrong flag 'step11'",
- ((WorkflowException) exception.getOriginalException()).isRequiresManualFix());
- assertEquals("wrong errorparam 1", "No intermediate matching-state",
- ((EaafException) exception.getOriginalException()).getParams()[1]);
-
- }
-
- @Test
- @SneakyThrows
- public void countryCodeNotMatch() {
- //inject initial eIDAS data
- MatchingTaskUtils.storeInitialEidasData(pendingReq, SimpleEidasData.builder()
- .personalIdentifier("DE/AT/7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .pseudonym("cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .citizenCountryCode("DE")
- .build());
-
- // inject matching intermediate state
- RegisterStatusResults matchingState = new RegisterStatusResults(null,
- Arrays.asList(RegisterResult.builder()
- .bpk("")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .pseudonym(Arrays.asList("7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit"))
- .build()),
- Collections.emptyList());
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, matchingState );
-
- //inject alternative eIDAS data
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(
- Constants.DATA_FULL_EIDAS_RESPONSE_ALTERNATIVE,
- buildDummyAuthResponse("XXXKlaus - Maria", "XXXvon Brandenburg",
- "EE/AT/7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit", "1994-12-31"));
-
-
- // execute task
- TaskExecutionException exception = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- // validate state
- assertTrue("Wrong exception", (exception.getOriginalException() instanceof WorkflowException));
- assertEquals("wrong errorparam 1", "step11", ((EaafException) exception.getOriginalException()).getParams()[0]);
- assertTrue("Wrong flag 'step11'",
- ((WorkflowException) exception.getOriginalException()).isRequiresManualFix());
- assertEquals("wrong errorparam 1", "Country Code of alternative eIDAS authn not matching",
- ((EaafException) exception.getOriginalException()).getParams()[1]);
-
- }
-
- @Test
- @SneakyThrows
- public void mdsNoMatch() {
- //inject initial eIDAS data
- MatchingTaskUtils.storeInitialEidasData(pendingReq, SimpleEidasData.builder()
- .personalIdentifier("DE/AT/7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .pseudonym("cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .citizenCountryCode("DE")
- .build());
-
- // inject matching intermediate state
- RegisterStatusResults matchingState = new RegisterStatusResults(null,
- Arrays.asList(RegisterResult.builder()
- .bpk("")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .pseudonym(Arrays.asList("7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit"))
- .build()),
- Collections.emptyList());
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, matchingState );
-
- //inject alternative eIDAS data
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(
- Constants.DATA_FULL_EIDAS_RESPONSE_ALTERNATIVE,
- buildDummyAuthResponse("XXXClaus - Maria", "XXXvon Brandenburg",
- "DE/AT/7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit", "1995-12-31"));
-
-
- // execute task
- TaskExecutionException exception = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- // validate state
- assertTrue("Wrong exception", (exception.getOriginalException() instanceof WorkflowException));
- assertEquals("wrong errorparam 1", "step11", ((EaafException) exception.getOriginalException()).getParams()[0]);
- assertTrue("Wrong flag 'step11'",
- ((WorkflowException) exception.getOriginalException()).isRequiresManualFix());
- assertEquals("wrong errorparam 1", "MDS of alternative eIDAS authn does not match initial authn",
- ((EaafException) exception.getOriginalException()).getParams()[1]);
-
- }
-
- @Test
- @SneakyThrows
- public void seachPersonalIdMoreThanOneResult() {
- //inject initial eIDAS data
- MatchingTaskUtils.storeInitialEidasData(pendingReq, SimpleEidasData.builder()
- .personalIdentifier("DE/AT/7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .pseudonym("cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .citizenCountryCode("DE")
- .build());
-
- // inject matching intermediate state
- RegisterStatusResults matchingState = new RegisterStatusResults(
- new RegisterOperationStatus(new BigInteger(RandomStringUtils.randomNumeric(5))),
- Arrays.asList(RegisterResult.builder()
- .bpk("")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .pseudonym(Arrays.asList("7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit"))
- .build()),
- Collections.emptyList());
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, matchingState);
-
- //inject alternative eIDAS data
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(
- Constants.DATA_FULL_EIDAS_RESPONSE_ALTERNATIVE,
- buildDummyAuthResponse("XXXKlaus - Maria", "XXXvon Brandenburg",
- "DE/AT/7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit", "1994-12-31"));
-
- // inject response
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
- when(zmrMock.service(zmrReq.capture(), any()))
- .thenReturn(loadResponseFromFile("/data/zmr/search_with_personalId_only_resp_moreThanOne.xml"))
- .thenThrow(new RuntimeException("This request is not needed any more"));
-
- // execute task
- TaskExecutionException exception = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- // validate state
- assertTrue("Wrong exception", (exception.getOriginalException() instanceof WorkflowException));
- assertEquals("wrong errorparam 1", "searchWithPersonalIdentifier", ((EaafException) exception.getOriginalException()).getParams()[0]);
- assertTrue("Wrong flag 'step11'",
- ((WorkflowException) exception.getOriginalException()).isRequiresManualFix());
-
- // validate request
- assertEquals("wrong number of req.", 1, zmrReq.getAllValues().size());
- checkBasicRequestParameters(zmrReq.getValue(), ZmrClientTest.PROCESS_TASK_SEARCH,
- matchingState.getOperationStatus().getZmrProcessId(), "jUnit123456");
- assertNotNull("Personensuche req.", zmrReq.getValue().getPersonSuchenRequest());
- checkEidasDocumentResult(zmrReq.getValue().getPersonSuchenRequest().getEidasSuchdaten(),
- "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier",
- "DE", "7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit");
-
- }
-
- @Test
- @SneakyThrows
- public void seachPersonalIdNoBpkMatchWithIntermediateResults() {
- //inject initial eIDAS data
- MatchingTaskUtils.storeInitialEidasData(pendingReq, SimpleEidasData.builder()
- .personalIdentifier("DE/AT/7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .pseudonym("cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .citizenCountryCode("DE")
- .build());
-
- // inject matching intermediate state
- RegisterStatusResults matchingState = new RegisterStatusResults(null,
- Arrays.asList(RegisterResult.builder()
- .bpk("notExists")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .pseudonym(Arrays.asList("7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit"))
- .build()),
- Collections.emptyList());
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, matchingState );
-
- //inject alternative eIDAS data
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(
- Constants.DATA_FULL_EIDAS_RESPONSE_ALTERNATIVE,
- buildDummyAuthResponse("XXXKlaus - Maria", "XXXvon Brandenburg",
- "DE/AT/7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit", "1994-12-31"));
-
- // inject response
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
- when(zmrMock.service(zmrReq.capture(), any()))
- .thenReturn(loadResponseFromFile("/data/zmr/seq_1-8_search_with_personalId_only_resp.xml"))
- .thenThrow(new RuntimeException("This request is not needed any more"));
-
- Mockito.when(ernpClient.searchWithPersonIdentifier(any(), any()))
- .thenReturn(emptyErnpRegisterResult());
-
- // execute task
- TaskExecutionException exception = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- // validate state
- assertTrue("Wrong exception", (exception.getOriginalException() instanceof WorkflowException));
- assertEquals("wrong errorparam 1", "step7bKittProcess", ((EaafException) exception.getOriginalException()).getParams()[0]);
- assertFalse("Wrong flag 'step11'",
- ((WorkflowException) exception.getOriginalException()).isRequiresManualFix());
- assertEquals("wrong errorparam 1", "Register result from alternativ authentication does not fit into intermediate state",
- ((EaafException) exception.getOriginalException()).getParams()[1]);
-
- // validate request
- assertEquals("wrong number of req.", 1, zmrReq.getAllValues().size());
- assertNotNull("Personensuche req.", zmrReq.getValue().getPersonSuchenRequest());
- checkEidasDocumentResult(zmrReq.getValue().getPersonSuchenRequest().getEidasSuchdaten(),
- "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier",
- "DE", "7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit");
-
- }
-
- @Test
- @SneakyThrows
- public void seachPersonalIdSuccess() {
- //inject initial eIDAS data
- MatchingTaskUtils.storeInitialEidasData(pendingReq, SimpleEidasData.builder()
- .personalIdentifier("DE/AT/7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .pseudonym("cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .citizenCountryCode("DE")
- .build());
-
- // inject matching intermediate state
- RegisterStatusResults matchingState = new RegisterStatusResults(
- new RegisterOperationStatus(new BigInteger(RandomStringUtils.randomNumeric(5))),
- Arrays.asList(RegisterResult.builder()
- .bpk("UgeknNsc26lVuB7U/uYGVmWtnnA=")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .pseudonym(Arrays.asList("7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit"))
- .build()),
- Collections.emptyList());
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, matchingState );
-
- //inject alternative eIDAS data
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(
- Constants.DATA_FULL_EIDAS_RESPONSE_ALTERNATIVE,
- buildDummyAuthResponse("XXXKlaus - Maria", "XXXvon Brandenburg",
- "DE/AT/7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit", "1994-12-31"));
-
- // inject response
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
- when(zmrMock.service(zmrReq.capture(), any()))
- .thenReturn(loadResponseFromFile("/data/zmr/seq_1-8_search_with_personalId_only_resp.xml"))
- .thenReturn(loadResponseFromFile("/data/zmr/seq_3-4_kitt_get_latest_version_resp.xml"))
- .thenReturn(loadResponseFromFile("/data/zmr/seq_3-6_kitt_update_resp.xml"))
- .thenReturn(loadResponseFromFile("/data/zmr/seq_3-8_kitt_get_latest_version_resp.xml"))
- .thenThrow(new RuntimeException("This request is not needed any more"));
-
- Mockito.when(ernpClient.searchWithPersonIdentifier(any(), any()))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.searchWithMds(any(), any(), any(), any()))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.update(any(), any()))
- .thenThrow(new IllegalStateException("ERnP update should not be neccessary"));
-
- // execute task
- task.execute(pendingReq, executionContext);
-
- // validate state
- //INFO: has to be the old givenName because ZMR allows no update of MDS information
- checkMatchingSuccessState(pendingReq, "UgeknNsc26lVuB7U/uYGVmWtnnA=", "XXXvon Brandenburg",
- "XXXClaus - Maria", "1994-12-31", "DE");
- assertNull("wrong executionContextFlag 'alternative eIDAS result'",
- executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK));
-
-
- // validate request
- assertEquals("wrong number of req.", 4, zmrReq.getAllValues().size());
- assertNotNull("Personensuche req.", zmrReq.getAllValues().get(0).getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getAllValues().get(0), ZmrClientTest.PROCESS_TASK_SEARCH,
- matchingState.getOperationStatus().getZmrProcessId(), "jUnit123456");
- checkEidasDocumentResult(zmrReq.getAllValues().get(0).getPersonSuchenRequest().getEidasSuchdaten(),
- "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier",
- "DE", "7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit");
-
-
- assertNotNull("Personensuche KITT req.", zmrReq.getAllValues().get(1).getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getAllValues().get(1), ZmrClientTest.PROCESS_TASK_SEARCH,
- new BigInteger("367100000000079"), "jUnit123456");
-
- assertNotNull("PersonAender KITT req.", zmrReq.getAllValues().get(2).getPersonAendernRequest());
- checkBasicRequestParameters(zmrReq.getAllValues().get(2), ZmrClientTest.PROCESS_TASK_UPDATE,
- new BigInteger("367100000000079"), "jUnit123456");
-
- assertEquals("wrong number of eIDAS Docs to Add", 4,
- zmrReq.getAllValues().get(2).getPersonAendernRequest().getEidasIdentitaetAnlage().size());
- checkEidasDocumentAdd(zmrReq.getAllValues().get(2).getPersonAendernRequest().getEidasIdentitaetAnlage(),
- "http://eidas.europa.eu/attributes/naturalperson/DateOfBirth", "DE", "1994-12-31");
- checkEidasDocumentAdd(zmrReq.getAllValues().get(2).getPersonAendernRequest().getEidasIdentitaetAnlage(),
- "http://eidas.europa.eu/attributes/naturalperson/CurrentGivenName", "DE", "XXXKlaus - Maria");
- checkEidasDocumentAdd(zmrReq.getAllValues().get(2).getPersonAendernRequest().getEidasIdentitaetAnlage(),
- "http://eidas.europa.eu/attributes/naturalperson/CurrentFamilyName", "DE", "XXXvon Brandenburg");
-
- assertNotNull("Personensuche KITT req.", zmrReq.getAllValues().get(3).getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getAllValues().get(3), ZmrClientTest.PROCESS_TASK_SEARCH,
- new BigInteger("367100000000079"), "jUnit123456");
-
- }
-
- @Test
- @SneakyThrows
- public void seachCcSpecificSuccess() {
- //inject initial eIDAS data
- MatchingTaskUtils.storeInitialEidasData(pendingReq, SimpleEidasData.builder()
- .personalIdentifier("DE/AT/7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .pseudonym("cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .citizenCountryCode("DE")
- .build());
-
- // inject matching intermediate state
- RegisterStatusResults matchingState = new RegisterStatusResults(
- new RegisterOperationStatus(new BigInteger(RandomStringUtils.randomNumeric(5))),
- Arrays.asList(RegisterResult.builder()
- .bpk("UgeknNsc26lVuB7U/uYGVmWtnnA=")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .pseudonym(Arrays.asList("7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit"))
- .build()),
- Collections.emptyList());
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, matchingState );
-
- //inject alternative eIDAS data
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(
- Constants.DATA_FULL_EIDAS_RESPONSE_ALTERNATIVE,
- buildDummyAuthResponse("XXXKlaus - Maria", "XXXvon Brandenburg",
- "DE/AT/7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit", "1994-12-31",
- null, "Hintergigritzpotschn", "XXXvon Heuburg"));
-
- // inject response
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
- when(zmrMock.service(zmrReq.capture(), any()))
- .thenReturn(loadResponseFromFile("/data/zmr/empty_zmr_result.xml"))
- .thenReturn(loadResponseFromFile("/data/zmr/seq_1-8_search_with_personalId_only_resp.xml"))
- .thenReturn(loadResponseFromFile("/data/zmr/seq_3-4_kitt_get_latest_version_resp.xml"))
- .thenReturn(loadResponseFromFile("/data/zmr/seq_3-6_kitt_update_resp.xml"))
- .thenReturn(loadResponseFromFile("/data/zmr/seq_3-8_kitt_get_latest_version_resp.xml"))
- .thenReturn(loadResponseFromFile("/data/zmr/seq_3-10_kitt_update_resp.xml"))
- .thenThrow(new RuntimeException("This request is not needed any more"));
-
- Mockito.when(ernpClient.searchWithPersonIdentifier(any(), any()))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.searchCountrySpecific(any(), any()))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.searchWithMds(any(), any(), any(), any()))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.update(any(), any()))
- .thenThrow(new IllegalStateException("ERnP update should not be neccessary"));
-
- // execute task
- task.execute(pendingReq, executionContext);
-
- // validate state
- //INFO: has to be the old givenName because ZMR allows no update of MDS information
- checkMatchingSuccessState(pendingReq, "UgeknNsc26lVuB7U/uYGVmWtnnA=", "XXXvon Brandenburg",
- "XXXClaus - Maria", "1994-12-31", "DE");
- assertNull("wrong executionContextFlag 'alternative eIDAS result'",
- executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK));
-
-
- // validate request
- assertEquals("wrong number of req.", 6, zmrReq.getAllValues().size());
- assertNotNull("Personensuche req.", zmrReq.getAllValues().get(0).getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getAllValues().get(0), ZmrClientTest.PROCESS_TASK_SEARCH,
- matchingState.getOperationStatus().getZmrProcessId(), "jUnit123456");
- checkEidasDocumentResult(zmrReq.getAllValues().get(0).getPersonSuchenRequest().getEidasSuchdaten(),
- "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier",
- "DE", "7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit");
-
- assertNotNull("Personensuche CC-specific req.", zmrReq.getAllValues().get(0).getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getAllValues().get(1), ZmrClientTest.PROCESS_TASK_SEARCH,
- new BigInteger("367100000000079"), "jUnit123456");
- checkEidasDocumentResult(zmrReq.getAllValues().get(1).getPersonSuchenRequest().getEidasSuchdaten(),
- "http://eidas.europa.eu/attributes/naturalperson/PlaceOfBirth",
- "DE", "Hintergigritzpotschn");
- checkEidasDocumentResult(zmrReq.getAllValues().get(1).getPersonSuchenRequest().getEidasSuchdaten(),
- "http://eidas.europa.eu/attributes/naturalperson/BirthName",
- "DE", "XXXvon Heuburg");
-
-
- assertNotNull("Personensuche KITT req.", zmrReq.getAllValues().get(2).getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getAllValues().get(2), ZmrClientTest.PROCESS_TASK_SEARCH,
- new BigInteger("367100000000079"), "jUnit123456");
-
- assertNotNull("PersonAender KITT req.", zmrReq.getAllValues().get(3).getPersonAendernRequest());
- checkBasicRequestParameters(zmrReq.getAllValues().get(3), ZmrClientTest.PROCESS_TASK_UPDATE,
- new BigInteger("367100000000079"), "jUnit123456");
-
- assertNotNull("Personensuche KITT req.", zmrReq.getAllValues().get(4).getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getAllValues().get(4), ZmrClientTest.PROCESS_TASK_SEARCH,
- new BigInteger("367100000000079"), "jUnit123456");
-
- assertNotNull("PersonAender KITT req.", zmrReq.getAllValues().get(5).getPersonAendernRequest());
- checkBasicRequestParameters(zmrReq.getAllValues().get(5), ZmrClientTest.PROCESS_TASK_UPDATE,
- new BigInteger("367100000000079"), "jUnit123456");
- }
-
- @Test
- @SneakyThrows
- public void seachCcSpecificNotPossible() {
- //inject initial eIDAS data
- MatchingTaskUtils.storeInitialEidasData(pendingReq, SimpleEidasData.builder()
- .personalIdentifier("DE/AT/7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .pseudonym("cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .citizenCountryCode("EE")
- .build());
-
- // inject matching intermediate state
- RegisterStatusResults matchingState = new RegisterStatusResults(
- new RegisterOperationStatus(new BigInteger(RandomStringUtils.randomNumeric(5))),
- Arrays.asList(RegisterResult.builder()
- .bpk("UgeknNsc26lVuB7U/uYGVmWtnnA=")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .pseudonym(Arrays.asList("7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit"))
- .build()),
- Collections.emptyList());
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, matchingState );
-
- //inject alternative eIDAS data
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(
- Constants.DATA_FULL_EIDAS_RESPONSE_ALTERNATIVE,
- buildDummyAuthResponse("XXXKlaus - Maria", "XXXvon Brandenburg",
- "EE/AT/7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit", "1994-12-31",
- null, "Hintergigritzpotschn", "XXXvon Heuburg"));
-
- // inject response
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
- when(zmrMock.service(zmrReq.capture(), any()))
- .thenReturn(loadResponseFromFile("/data/zmr/empty_zmr_result.xml"))
- .thenThrow(new RuntimeException("This request is not needed any more"));
-
- Mockito.when(ernpClient.searchWithPersonIdentifier(any(), any()))
- .thenReturn(emptyErnpRegisterResult());
-
- // execute task
- task.execute(pendingReq, executionContext);
-
- // validate state
- assertNotNull("find no eIDAS inbut data", MatchingTaskUtils.getInitialEidasData(pendingReq));
- assertNull("final matching result", MatchingTaskUtils.getFinalMatchingResult(pendingReq));
- assertEquals("wrong executionContextFlag 'alternative eIDAS result'", true,
- executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK));
-
-
- // validate request
- assertEquals("wrong number of req.", 1, zmrReq.getAllValues().size());
- assertNotNull("Personensuche req.", zmrReq.getAllValues().get(0).getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getAllValues().get(0), ZmrClientTest.PROCESS_TASK_SEARCH,
- matchingState.getOperationStatus().getZmrProcessId(), "jUnit123456");
- checkEidasDocumentResult(zmrReq.getAllValues().get(0).getPersonSuchenRequest().getEidasSuchdaten(),
- "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier",
- "EE", "7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit");
-
- }
-
- @Test
- @SneakyThrows
- public void seachCcSpecificMoreThanOneResult() {
- //inject initial eIDAS data
- MatchingTaskUtils.storeInitialEidasData(pendingReq, SimpleEidasData.builder()
- .personalIdentifier("DE/AT/7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .pseudonym("cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .citizenCountryCode("DE")
- .build());
-
- // inject matching intermediate state
- RegisterStatusResults matchingState = new RegisterStatusResults(
- new RegisterOperationStatus(new BigInteger(RandomStringUtils.randomNumeric(5))),
- Arrays.asList(RegisterResult.builder()
- .bpk("UgeknNsc26lVuB7U/uYGVmWtnnA=")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .pseudonym(Arrays.asList("7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit"))
- .build()),
- Collections.emptyList());
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, matchingState );
-
- //inject alternative eIDAS data
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(
- Constants.DATA_FULL_EIDAS_RESPONSE_ALTERNATIVE,
- buildDummyAuthResponse("XXXKlaus - Maria", "XXXvon Brandenburg",
- "DE/AT/7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit", "1994-12-31",
- null, "Hintergigritzpotschn", "XXXvon Heuburg"));
-
- // inject response
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
- when(zmrMock.service(zmrReq.capture(), any()))
- .thenReturn(loadResponseFromFile("/data/zmr/empty_zmr_result.xml"))
- .thenReturn(loadResponseFromFile("/data/zmr/search_with_personalId_only_resp_moreThanOne.xml"))
- .thenThrow(new RuntimeException("This request is not needed any more"));
-
- Mockito.when(ernpClient.searchWithPersonIdentifier(any(), any()))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.searchWithMds(any(), any(), any(), any()))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.update(any(), any()))
- .thenThrow(new IllegalStateException("ERnP update should not be neccessary"));
-
- // execute task
- TaskExecutionException exception = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- // validate state
- assertTrue("Wrong exception", (exception.getOriginalException() instanceof WorkflowException));
- assertEquals("wrong errorparam 1", "searchWithCountrySpecifics", ((EaafException) exception.getOriginalException()).getParams()[0]);
- assertTrue("Wrong flag 'step11'",
- ((WorkflowException) exception.getOriginalException()).isRequiresManualFix());
-
-
- // validate request
- assertEquals("wrong number of req.", 2, zmrReq.getAllValues().size());
- assertNotNull("Personensuche req.", zmrReq.getAllValues().get(0).getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getAllValues().get(0), ZmrClientTest.PROCESS_TASK_SEARCH,
- matchingState.getOperationStatus().getZmrProcessId(), "jUnit123456");
- checkEidasDocumentResult(zmrReq.getAllValues().get(0).getPersonSuchenRequest().getEidasSuchdaten(),
- "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier",
- "DE", "7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit");
-
- assertNotNull("Personensuche CC-specific req.", zmrReq.getAllValues().get(0).getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getAllValues().get(1), ZmrClientTest.PROCESS_TASK_SEARCH,
- new BigInteger("367100000000079"), "jUnit123456");
- checkEidasDocumentResult(zmrReq.getAllValues().get(1).getPersonSuchenRequest().getEidasSuchdaten(),
- "http://eidas.europa.eu/attributes/naturalperson/PlaceOfBirth",
- "DE", "Hintergigritzpotschn");
- checkEidasDocumentResult(zmrReq.getAllValues().get(1).getPersonSuchenRequest().getEidasSuchdaten(),
- "http://eidas.europa.eu/attributes/naturalperson/BirthName",
- "DE", "XXXvon Heuburg");
-
- }
-
- @Test
- @SneakyThrows
- public void seachCcSpecificEmptyResult() {
- //inject initial eIDAS data
- MatchingTaskUtils.storeInitialEidasData(pendingReq, SimpleEidasData.builder()
- .personalIdentifier("DE/AT/7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .pseudonym("cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .citizenCountryCode("DE")
- .build());
-
- // inject matching intermediate state
- RegisterStatusResults matchingState = new RegisterStatusResults(
- new RegisterOperationStatus(new BigInteger(RandomStringUtils.randomNumeric(5))),
- Arrays.asList(RegisterResult.builder()
- .bpk("UgeknNsc26lVuB7U/uYGVmWtnnA=")
- .givenName("XXXKlaus - Maria")
- .familyName("XXXvon Brandenburg")
- .dateOfBirth("1994-12-31")
- .pseudonym(Arrays.asList("7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit"))
- .build()),
- Collections.emptyList());
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, matchingState );
-
- //inject alternative eIDAS data
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(
- Constants.DATA_FULL_EIDAS_RESPONSE_ALTERNATIVE,
- buildDummyAuthResponse("XXXKlaus - Maria", "XXXvon Brandenburg",
- "DE/AT/7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit", "1994-12-31",
- null, "Hintergigritzpotschn", "XXXvon Heuburg"));
-
- // inject response
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
- when(zmrMock.service(zmrReq.capture(), any()))
- .thenReturn(loadResponseFromFile("/data/zmr/empty_zmr_result.xml"))
- .thenReturn(loadResponseFromFile("/data/zmr/empty_zmr_result.xml"))
- .thenThrow(new RuntimeException("This request is not needed any more"));
-
- Mockito.when(ernpClient.searchWithPersonIdentifier("7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit", "DE"))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.searchCountrySpecific(any(), any()))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.update(any(), any()))
- .thenThrow(new IllegalStateException("ERnP update should not be neccessary"));
-
-
- // execute task
- task.execute(pendingReq, executionContext);
-
- // validate state
- assertNotNull("find no eIDAS inbut data", MatchingTaskUtils.getInitialEidasData(pendingReq));
- assertNull("final matching result", MatchingTaskUtils.getFinalMatchingResult(pendingReq));
- assertEquals("wrong executionContextFlag 'alternative eIDAS result'", true,
- executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK));
- assertEquals("matching failed flag", true, executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED));
- assertEquals("failed reason", "module.eidasauth.matching.25", executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED_REASON));
-
-
-
- // validate request
- assertEquals("wrong number of req.", 2, zmrReq.getAllValues().size());
- assertNotNull("Personensuche req.", zmrReq.getAllValues().get(0).getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getAllValues().get(0), ZmrClientTest.PROCESS_TASK_SEARCH,
- matchingState.getOperationStatus().getZmrProcessId(), "jUnit123456");
- checkEidasDocumentResult(zmrReq.getAllValues().get(0).getPersonSuchenRequest().getEidasSuchdaten(),
- "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier",
- "DE", "7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit");
-
- assertNotNull("Personensuche CC-specific req.", zmrReq.getAllValues().get(0).getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getAllValues().get(1), ZmrClientTest.PROCESS_TASK_SEARCH,
- new BigInteger("367100000000079"), "jUnit123456");
- checkEidasDocumentResult(zmrReq.getAllValues().get(1).getPersonSuchenRequest().getEidasSuchdaten(),
- "http://eidas.europa.eu/attributes/naturalperson/PlaceOfBirth",
- "DE", "Hintergigritzpotschn");
- checkEidasDocumentResult(zmrReq.getAllValues().get(1).getPersonSuchenRequest().getEidasSuchdaten(),
- "http://eidas.europa.eu/attributes/naturalperson/BirthName",
- "DE", "XXXvon Heuburg");
-
- }
-
- @NotNull
- private ICcSpecificEidProcessingService createEidPostProcessor() {
- return new ICcSpecificEidProcessingService() {
-
- private final GenericEidProcessor genericEidProcessor = new GenericEidProcessor();
-
- @Override
- public SimpleEidasData postProcess(Map<String, Object> eidasAttrMap) throws EidPostProcessingException, EidasAttributeException {
- return genericEidProcessor.postProcess(eidasAttrMap);
- }
-
- @Override
- public void preProcess(String selectedCC, IRequest pendingReq, LightRequest.Builder authnRequestBuilder) {
- genericEidProcessor.preProcess(pendingReq, authnRequestBuilder);
- }
- };
- }
-
- @NotNull
- private ZmrRegisterResult zmrRegisterResult(RegisterResult registerResult, BigInteger processId) {
- return new ZmrRegisterResult(Collections.singletonList(registerResult), processId);
- }
-
- @NotNull
- private ZmrRegisterResult zmrRegisterResult(RegisterResult registerResult) {
- return zmrRegisterResult(registerResult, generateRandomProcessId());
- }
-
-
- private BigInteger generateRandomProcessId() {
- return new BigInteger(RandomStringUtils.randomNumeric(10));
-
- }
-
- private void checkMatchingSuccessState(IRequest pendingReq, String bpk, String familyName, String givenName,
- String birhday, String countryCode) {
- assertNull("Find intermediate matching data but matching should be finished",
- MatchingTaskUtils.getIntermediateMatchingResult(pendingReq));
- assertNotNull("find no eIDAS inbut data", MatchingTaskUtils.getInitialEidasData(pendingReq));
-
- MatchedPersonResult personInfo = MatchingTaskUtils.getFinalMatchingResult(pendingReq);
- assertNotNull("no final matching result", personInfo);
- assertEquals("wrong bpk", bpk, personInfo.getBpk());
- assertEquals("wrong givenName", givenName, personInfo.getGivenName());
- assertEquals("wrong familyName", familyName, personInfo.getFamilyName());
- assertEquals("wrong dateOfBirth", birhday, personInfo.getDateOfBirth());
- assertEquals("wrong countryCode", countryCode, personInfo.getCountryCode());
-
- }
-
- private void checkIntermediateResult(int resultSize) {
- Boolean transitionGUI = (Boolean) executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK);
- Assert.assertTrue("Wrong transition", transitionGUI);
- Boolean transitionErnb = (Boolean) executionContext.get(Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK);
- Assert.assertNull("Wrong transition", transitionErnb);
-
- assertNotNull("find no eIDAS inbut data", MatchingTaskUtils.getInitialEidasData(pendingReq));
- assertNull("Find final matching data but no match sould be found",
- MatchingTaskUtils.getFinalMatchingResult(pendingReq));
-
- RegisterStatusResults result = MatchingTaskUtils.getIntermediateMatchingResult(pendingReq);
- assertNotNull("Find no intermediate matching data", result);
- assertEquals("wrong intermediate result size", resultSize, result.getResultCount());
-
- }
-
- @NotNull
- private AuthenticationResponse buildDummyAuthResponse(String givenName, String familyName, String identifier,
- String dateOfBirth) throws URISyntaxException {
- return buildDummyAuthResponse(givenName, familyName, identifier, dateOfBirth, null, null, null);
- }
-
- @NotNull
- private AuthenticationResponse buildDummyAuthResponseDE(String givenName, String familyName, String identifier,
- String dateOfBirth, String placeOfBirth,
- String birthName) throws URISyntaxException {
- return buildDummyAuthResponse(givenName, familyName, identifier, dateOfBirth, null, placeOfBirth, birthName);
- }
-
- @NotNull
- private AuthenticationResponse buildDummyAuthResponse(String givenName, String familyName, String identifier,
- String dateOfBirth, String taxNumber, String placeOfBirth,
- String birthName) throws URISyntaxException {
- ImmutableAttributeMap.Builder builder = ImmutableAttributeMap.builder()
- .put(generateStringAttribute(Constants.eIDAS_ATTR_PERSONALIDENTIFIER,
- randomAlphabetic(2), randomAlphabetic(2)), identifier)
- .put(generateStringAttribute(Constants.eIDAS_ATTR_CURRENTFAMILYNAME,
- randomAlphabetic(3), randomAlphabetic(3)), familyName)
- .put(generateStringAttribute(Constants.eIDAS_ATTR_CURRENTGIVENNAME,
- randomAlphabetic(4), randomAlphabetic(4)), givenName)
- .put(generateDateTimeAttribute(Constants.eIDAS_ATTR_DATEOFBIRTH,
- randomAlphabetic(5), randomAlphabetic(5)), dateOfBirth);
- if (taxNumber != null) {
- builder.put(generateStringAttribute(Constants.eIDAS_ATTR_TAXREFERENCE,
- randomAlphabetic(6), randomAlphabetic(6)), taxNumber);
- }
- if (birthName != null) {
- builder.put(generateStringAttribute(Constants.eIDAS_ATTR_BIRTHNAME,
- randomAlphabetic(7), randomAlphabetic(7)), birthName);
- }
- if (placeOfBirth != null) {
- builder.put(generateStringAttribute(Constants.eIDAS_ATTR_PLACEOFBIRTH,
- randomAlphabetic(8), randomAlphabetic(8)), placeOfBirth);
- }
- final ImmutableAttributeMap attributeMap = builder.build();
-
- return new AuthenticationResponse.Builder().id(randomAlphabetic(5))
- .issuer(randomAlphabetic(5)).subject(randomAlphabetic(5)).statusCode("200")
- .inResponseTo(randomAlphabetic(5)).subjectNameIdFormat(randomAlphabetic(5))
- .attributes(attributeMap).build();
- }
-
- private AttributeDefinition<Object> generateStringAttribute(String friendlyName, String fragment, String prefix)
- throws URISyntaxException {
- return generateAttribute(friendlyName, fragment, prefix, "eu.eidas.auth.commons.attribute.impl" +
- ".LiteralStringAttributeValueMarshaller");
- }
-
- @SuppressWarnings("SameParameterValue")
- private AttributeDefinition<Object> generateDateTimeAttribute(String friendlyName, String fragment, String prefix)
- throws URISyntaxException {
- return generateAttribute(friendlyName, fragment, prefix, "eu.eidas.auth.commons.attribute.impl" +
- ".DateTimeAttributeValueMarshaller");
- }
-
- private AttributeDefinition<Object> generateAttribute(String friendlyName, String fragment, String prefix,
- String marshaller) throws URISyntaxException {
- return AttributeDefinition.builder()
- .friendlyName(friendlyName).nameUri(new URI("ad", "sd", fragment))
- .personType(PersonType.LEGAL_PERSON).xmlType(new QName("http://saf", "as", prefix))
- .attributeValueMarshaller(marshaller).build();
- }
-
- private ResponseType loadResponseFromFile(String filepath) throws JAXBException {
- final Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
- JAXBElement<?> resp = (JAXBElement<?>) unmarshaller.unmarshal(ZmrClientTest.class.getResourceAsStream(
- filepath));
- return (ResponseType) resp.getValue();
-
- }
-
- private void checkBasicRequestParameters(RequestType requestType, String vorgangName, BigInteger processId,
- String behoerdennummer) {
- assertNotNull("no workflow infos", requestType.getWorkflowInfoClient());
- assertEquals("processName", ZmrClientTest.PROCESS_GENERAL, requestType.getWorkflowInfoClient().getProzessName());
- assertEquals("vorgangsName", vorgangName, requestType.getWorkflowInfoClient().getVorgangName());
-
- if (processId != null) {
- assertEquals("processId", processId, requestType.getWorkflowInfoClient().getProzessInstanzID());
- } else {
- assertNull("processId", requestType.getWorkflowInfoClient().getProzessInstanzID());
- }
-
- assertNotNull("no client infos", requestType.getClientInfo());
- assertEquals("behoerdennummer", behoerdennummer, requestType.getClientInfo().getOrganisation()
- .getBehoerdenNr());
- }
-
- private void checkEidasDocumentResult(List<EidasSuchdatenType> list, String type, String cc, String value) {
- Optional<EidasSuchdatenType> eidasDoc = list.stream()
- .filter(el -> type.equals(el.getEidasArt()))
- .findFirst();
-
- assertTrue("eidas doc: " + type, eidasDoc.isPresent());
- assertEquals("eIDAS docType", type, eidasDoc.get().getEidasArt());
- assertEquals("eIDAS docValue", value, eidasDoc.get().getEidasWert());
- assertEquals("eIDAS docCC", cc, eidasDoc.get().getStaatscode2());
-
- }
-
-
- private void checkEidasDocumentAdd(List<EidasIdentitaetAnlageType> list, String type, String cc, String value) {
- Optional<EidasIdentitaetAnlageType> eidasDoc = list.stream()
- .filter(el -> type.equals(el.getEidasArt()))
- .findFirst();
-
- assertTrue("eidas doc: " + type, eidasDoc.isPresent());
- assertEquals("eIDAS docType", type, eidasDoc.get().getEidasArt());
- assertEquals("eIDAS docValue", value, eidasDoc.get().getEidasWert());
- assertEquals("eIDAS docCC", cc, eidasDoc.get().getStaatscode2());
- }
-
- @NotNull
- private ErnpRegisterResult emptyErnpRegisterResult() {
- return new ErnpRegisterResult(Collections.emptyList());
- }
-
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskEidNewTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskEidNewTest.java
deleted file mode 100644
index dbcc62dc..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskEidNewTest.java
+++ /dev/null
@@ -1,623 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks;
-
-import static at.asitplus.eidas.specific.connector.MsEidasNodeConstants.PROP_CONFIG_SP_NEW_EID_MODE;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.net.URISyntaxException;
-import java.security.KeyStore;
-import java.security.Provider;
-import java.security.cert.X509Certificate;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.jetbrains.annotations.NotNull;
-import org.joda.time.DateTime;
-import org.jose4j.jwa.AlgorithmConstraints;
-import org.jose4j.jwa.AlgorithmConstraints.ConstraintType;
-import org.jose4j.jws.AlgorithmIdentifiers;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.github.skjolber.mockito.soap.SoapServiceRule;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
-import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.MatchedPersonResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidPostProcessingException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasAttributeException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.SzrCommunicationException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.ICcSpecificEidProcessingService;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.CreateIdentityLinkTask;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.EidasResponseUtils;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.JoseUtils;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.JoseUtils.JwsResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils;
-import at.gv.egiz.eaaf.core.api.IRequest;
-import at.gv.egiz.eaaf.core.api.IRequestStorage;
-import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants;
-import at.gv.egiz.eaaf.core.api.data.EaafConstants;
-import at.gv.egiz.eaaf.core.api.data.PvpAttributeDefinitions;
-import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;
-import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;
-import at.gv.egiz.eaaf.core.impl.credential.EaafKeyStoreFactory;
-import at.gv.egiz.eaaf.core.impl.credential.EaafKeyStoreUtils;
-import at.gv.egiz.eaaf.core.impl.credential.KeyStoreConfiguration;
-import at.gv.egiz.eaaf.core.impl.data.Pair;
-import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl;
-import at.gv.egiz.eaaf.core.impl.utils.Random;
-import eu.eidas.auth.commons.attribute.AttributeDefinition;
-import eu.eidas.auth.commons.attribute.AttributeValue;
-import eu.eidas.auth.commons.attribute.ImmutableAttributeMap;
-import eu.eidas.auth.commons.attribute.ImmutableAttributeMap.Builder;
-import eu.eidas.auth.commons.protocol.eidas.impl.PostalAddress;
-import eu.eidas.auth.commons.protocol.impl.AuthenticationResponse;
-import lombok.val;
-import szrservices.JwsHeaderParam;
-import szrservices.PersonInfoType;
-import szrservices.SZR;
-import szrservices.SignContentEntry;
-import szrservices.SignContentResponseType;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"})
-public class CreateIdentityLinkTaskEidNewTest {
-
- @Autowired(required = true)
- private CreateIdentityLinkTask task;
-
- @Autowired(required = true)
- private MsConnectorDummyConfigMap basicConfig;
- @Autowired
- protected EidasAttributeRegistry attrRegistry;
-
- @Autowired
- EaafKeyStoreFactory keyStoreFactory;
-
- @Autowired
- ICcSpecificEidProcessingService eidPostProcessor;
-
- @Autowired
- private IRequestStorage requestStorage;
-
- final ExecutionContext executionContext = new ExecutionContextImpl();
- private MockHttpServletRequest httpReq;
- private MockHttpServletResponse httpResp;
- private TestRequestImpl pendingReq;
- private DummySpConfiguration oaParam;
- private SZR szrMock;
-
- private static final String PW = "f/+saJBc3a}*/T^s";
- private static final String ALIAS = "connectorkeypair";
-
- private static final List<String> BINDING_AUTH_ALGORITHM_WHITELIST_SIGNING = Collections.unmodifiableList(Arrays
- .asList(AlgorithmIdentifiers.ECDSA_USING_P256_CURVE_AND_SHA256,
- AlgorithmIdentifiers.ECDSA_USING_P521_CURVE_AND_SHA512, AlgorithmIdentifiers.RSA_PSS_USING_SHA256,
- AlgorithmIdentifiers.RSA_PSS_USING_SHA512));
-
- private static ObjectMapper mapper = new ObjectMapper();
-
- private AuthenticationResponse response;
- private MatchedPersonResult matchingInfos;
-
- @Rule
- public final SoapServiceRule soap = SoapServiceRule.newInstance();
-
- /**
- * jUnit test set-up.
- * @throws EidasAttributeException
- * @throws EidPostProcessingException
- */
- @Before
- public void setUp() throws EaafStorageException, URISyntaxException, EidPostProcessingException, EidasAttributeException {
-
- httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler");
- httpResp = new MockHttpServletResponse();
- RequestContextHolder.resetRequestAttributes();
- RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));
-
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false");
-
- final Map<String, String> spConfig = new HashMap<>();
- spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp");
- spConfig.put("target", "urn:publicid:gv.at:cdid+XX");
- spConfig.put(PROP_CONFIG_SP_NEW_EID_MODE, "true");
- oaParam = new DummySpConfiguration(spConfig, basicConfig);
- pendingReq = new TestRequestImpl();
-
- response = buildDummyAuthResponse(false);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, response);
-
- final Map<String, Object> eidasAttributes = convertEidasAttrToSimpleMap(
- response.getAttributes().getAttributeMap());
- final SimpleEidasData eidData = eidPostProcessor.postProcess(eidasAttributes);
- MatchingTaskUtils.storeInitialEidasData(pendingReq, eidData);
-
- matchingInfos = MatchedPersonResult.builder()
- .bpk(RandomStringUtils.randomAlphabetic(5))
- .givenName(eidData.getGivenName())
- .familyName(eidData.getFamilyName())
- .dateOfBirth(eidData.getDateOfBirth())
- .countryCode(eidData.getCitizenCountryCode())
- .build();
- MatchingTaskUtils.storeFinalMatchingResult(pendingReq, matchingInfos);
-
- pendingReq.setSpConfig(oaParam);
- pendingReq.setPendingReqId(at.gv.egiz.eaaf.core.impl.utils.Random.nextProcessReferenceValue());
- pendingReq.setAuthUrl("http://test.com/");
- pendingReq.setTransactionId("avaasbav");
- pendingReq.setPiiTransactionId(RandomStringUtils.randomAlphanumeric(10));
-
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "XX");
- executionContext.put(EaafConstants.PROCESS_ENGINE_REQUIRES_NO_POSTAUTH_REDIRECT, true);
-
- szrMock = soap.mock(SZR.class, "http://localhost:1234/demoszr");
- }
-
- @Test
- public void successfulProcessWithDeInfos() throws Exception {
- //initialize test
- response = buildDummyAuthResponse(true);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, response);
- SimpleEidasData eidData = eidPostProcessor.postProcess(
- convertEidasAttrToSimpleMap(response.getAttributes().getAttributeMap()));
- MatchingTaskUtils.storeInitialEidasData(pendingReq, eidData);
-
- matchingInfos = MatchedPersonResult.builder()
- .bpk(RandomStringUtils.randomAlphabetic(5))
- .givenName(eidData.getGivenName())
- .familyName(eidData.getFamilyName())
- .dateOfBirth(eidData.getDateOfBirth())
- .countryCode(eidData.getCitizenCountryCode())
- .build();
- MatchingTaskUtils.storeFinalMatchingResult(pendingReq, matchingInfos);
-
- String vsz = RandomStringUtils.randomNumeric(10);
- when(szrMock.getStammzahlEncrypted(any(), any())).thenReturn(vsz);
- SignContentResponseType signContentResp = new SignContentResponseType();
- final SignContentEntry signContentEntry = new SignContentEntry();
- signContentEntry.setValue(RandomStringUtils.randomAlphanumeric(10));
- signContentResp.getOut().add(signContentEntry);
- when(szrMock.signContent(any(), any(), any())).thenReturn(signContentResp);
-
- String randomTestSp = RandomStringUtils.randomAlphabetic(10);
- pendingReq.setRawDataToTransaction(MsEidasNodeConstants.DATA_REQUESTERID, randomTestSp);
-
- //perform test
- task.execute(pendingReq, executionContext);
-
- //validate state
- // check if pendingRequest was stored
- IRequest storedPendingReq = requestStorage.getPendingRequest(pendingReq.getPendingRequestId());
- Assert.assertNotNull("pendingReq not stored", storedPendingReq);
-
- //check data in session
- final AuthProcessDataWrapper authProcessData = storedPendingReq.getSessionData(AuthProcessDataWrapper.class);
- Assert.assertNotNull("AuthProcessData", authProcessData);
- Assert.assertNotNull("eidasBind", authProcessData.getGenericDataFromSession(Constants.EIDAS_BIND, String.class));
-
- String authBlock = authProcessData.getGenericDataFromSession(Constants.SZR_AUTHBLOCK, String.class);
- Assert.assertNotNull("AuthBlock", authBlock);
-
- Assert.assertTrue("EID process", authProcessData.isEidProcess());
- Assert.assertTrue("foreigner process", authProcessData.isForeigner());
- Assert.assertEquals("EID-ISSUING_NATION", "LU",
- authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class));
-
- // check authblock signature
- final AlgorithmConstraints constraints = new AlgorithmConstraints(ConstraintType.PERMIT,
- BINDING_AUTH_ALGORITHM_WHITELIST_SIGNING.toArray(new String[BINDING_AUTH_ALGORITHM_WHITELIST_SIGNING.size()]));
- Pair<KeyStore, Provider> keyStore = getKeyStore();
- X509Certificate[] trustedCerts = EaafKeyStoreUtils
- .getPrivateKeyAndCertificates(keyStore.getFirst(), ALIAS, PW.toCharArray(), true, "junit").getSecond();
- JwsResult result = JoseUtils.validateSignature(authBlock, Arrays.asList(trustedCerts), constraints);
- Assert.assertTrue("AuthBlock not valid", result.isValid());
- JsonNode authBlockJson = mapper.readTree(result.getPayLoad());
- Assert.assertNotNull("deserialized AuthBlock", authBlockJson);
-
- Assert.assertNotNull("no piiTransactionId in pendingRequesdt",
- storedPendingReq.getUniquePiiTransactionIdentifier());
- Assert.assertEquals("piiTransactionId", storedPendingReq.getUniquePiiTransactionIdentifier(),
- authBlockJson.get("piiTransactionId").asText());
- Assert.assertEquals("appId", randomTestSp, authBlockJson.get("appId").asText());
- Assert.assertFalse("'challenge' is null", authBlockJson.get("challenge").asText().isEmpty());
- Assert.assertFalse("'timestamp' is null", authBlockJson.get("timestamp").asText().isEmpty());
- Assert.assertFalse("binding pubKey", authBlockJson.has("bindingPublicKey"));
-
-
-
- // check vsz request
- ArgumentCaptor<PersonInfoType> argument4 = ArgumentCaptor.forClass(PersonInfoType.class);
- ArgumentCaptor<Boolean> argument5 = ArgumentCaptor.forClass(Boolean.class);
- verify(szrMock, times(1)).getStammzahlEncrypted(argument4.capture(), argument5.capture());
-
- Boolean param5 = argument5.getValue();
- Assert.assertFalse("insertERnP flag", param5);
- PersonInfoType person = argument4.getValue();
- Assert.assertEquals("FamilyName",
- response.getAttributes().getAttributeValuesByFriendlyName("FamilyName").getFirstValue(
- response.getAttributes().getDefinitionsByFriendlyName("FamilyName").iterator().next()),
- person.getPerson().getName().getFamilyName());
- Assert.assertEquals("GivenName",
- response.getAttributes().getAttributeValuesByFriendlyName("FirstName").getFirstValue(
- response.getAttributes().getDefinitionsByFriendlyName("FirstName").iterator().next()),
- person.getPerson().getName().getGivenName());
- Assert.assertEquals("DateOfBirth",
- response.getAttributes().getAttributeValuesByFriendlyName("DateOfBirth").getFirstValue(
- response.getAttributes().getDefinitionsByFriendlyName("DateOfBirth").iterator().next())
- .toString().split("T")[0],
- person.getPerson().getDateOfBirth());
-
- Assert.assertNull("PlaceOfBirth", person.getPerson().getPlaceOfBirth());
- Assert.assertNull("BirthName", person.getPerson().getAlternativeName());
- Assert.assertNull("TravelDocument", person.getTravelDocument());
-
- // check bcBind singing request
- ArgumentCaptor<Boolean> argument1 = ArgumentCaptor.forClass(Boolean.class);
- ArgumentCaptor<List<JwsHeaderParam>> argument2 = ArgumentCaptor.forClass(List.class);
- ArgumentCaptor<List<SignContentEntry>> argument3 = ArgumentCaptor.forClass(List.class);
- verify(szrMock, times(1)).signContent(argument1.capture(), argument2.capture(), argument3.capture());
- Boolean param1 = argument1.getValue();
- Assert.assertFalse("addCert flag", param1);
-
- List<JwsHeaderParam> param2 = argument2.getValue();
- Assert.assertNotNull("JWS Headers", param2);
- Assert.assertFalse("JWS Headers empty", param2.isEmpty());
- Assert.assertEquals("Wrong JWS header size", 1, param2.size());
- Assert.assertEquals("Missing JWS header key", "urn:at.gv.eid:bindtype", param2.get(0).getKey());
- Assert.assertEquals("Missing JWS header value", "urn:at.gv.eid:eidasBind", param2.get(0).getValue());
-
- List<SignContentEntry> param3 = argument3.getValue();
- Assert.assertNotNull("sign Payload", param3);
- Assert.assertEquals("wrong sign-payload size", 1, param3.size());
- Assert.assertNotNull("payload", param3.get(0).getValue().getBytes());
- JsonNode bcBind = mapper.readTree(param3.get(0).getValue().getBytes());
- Assert.assertNotNull("bcbind req", bcBind);
-
- Assert.assertEquals("vsz", vsz, bcBind.get("urn:eidgvat:attributes.vsz.value").asText());
- Assert.assertEquals("eid status", "urn:eidgvat:eid.status.eidas",
- bcBind.get("urn:eidgvat:attributes.eid.status").asText());
- Assert.assertTrue("pubKeys", bcBind.has("urn:eidgvat:attributes.user.pubkeys"));
- Assert.assertTrue("pubKeys", bcBind.get("urn:eidgvat:attributes.user.pubkeys").isArray());
- Iterator<JsonNode> pubKeys = bcBind.get("urn:eidgvat:attributes.user.pubkeys").elements();
- Assert.assertTrue("No PubKey", pubKeys.hasNext());
- Assert.assertEquals("Wrong pubKey",
- "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmxcB5jnrAwGn7xjgVFv1UBUv1pluwDRFQx7x5O6rSn7pblYfwaWeKa8y"
- + "jS5BDDaZ00mhhnSlm2XByNrkg5yBGetTgBGtQVAxV5apfuAWN8TS3uSXgdZol7Khd6kraUITtnulvLe8tNaboom5P0zN6UxbJN"
- + "NVLishVp80HiRXiDbplCTUk8b5cYtmivdb0+5JBTa7L5N/anRVnHHoJCXgNPTouO8daUHZbG1mPk0HgqD8rhZ+OBzE+APKH9No"
- + "agedSrGRDLdIgZxkrg0mxmfsZQIi2wdJSi3y0PAjEps/s4j0nmw9bPRgCMNLBqqjxtN5JKC8E1yyLm7YefXv/nPaMwIDAQAB",
- pubKeys.next().asText());
- Assert.assertFalse("More than one PubKey", pubKeys.hasNext());
-
- }
-
- @Test
- public void successfulProcessWithDataFromMatching() throws Exception {
- //initialize test
- String vsz = RandomStringUtils.randomNumeric(10);
- when(szrMock.getStammzahlEncrypted(any(), any())).thenReturn(vsz);
- SignContentResponseType signContentResp = new SignContentResponseType();
- final SignContentEntry signContentEntry = new SignContentEntry();
- signContentEntry.setValue(RandomStringUtils.randomAlphanumeric(10));
- signContentResp.getOut().add(signContentEntry);
-
- when(szrMock.signContent(any(), any(), any())).thenReturn(signContentResp);
-
- String randomTestSp = RandomStringUtils.randomAlphabetic(10);
- String bindingPubKey = RandomStringUtils.randomAlphabetic(10);
- pendingReq.setRawDataToTransaction(MsEidasNodeConstants.DATA_REQUESTERID, randomTestSp);
- pendingReq.setRawDataToTransaction(MsEidasNodeConstants.EID_BINDING_PUBLIC_KEY_NAME, bindingPubKey);
-
-
- //perform test
- task.execute(pendingReq, executionContext);
-
-
- //validate state
- // check if pendingRequest was stored
- IRequest storedPendingReq = requestStorage.getPendingRequest(pendingReq.getPendingRequestId());
- Assert.assertNotNull("pendingReq not stored", storedPendingReq);
-
- //check data in session
- final AuthProcessDataWrapper authProcessData = storedPendingReq.getSessionData(AuthProcessDataWrapper.class);
- Assert.assertNotNull("AuthProcessData", authProcessData);
- Assert.assertNotNull("eidasBind", authProcessData.getGenericDataFromSession(Constants.EIDAS_BIND, String.class));
-
- // check authblock signature
- String authBlock = authProcessData.getGenericDataFromSession(Constants.SZR_AUTHBLOCK, String.class);
- Assert.assertNotNull("AuthBlock", authBlock);
-
- final AlgorithmConstraints constraints = new AlgorithmConstraints(ConstraintType.PERMIT,
- BINDING_AUTH_ALGORITHM_WHITELIST_SIGNING.toArray(new String[BINDING_AUTH_ALGORITHM_WHITELIST_SIGNING.size()]));
- Pair<KeyStore, Provider> keyStore = getKeyStore();
- X509Certificate[] trustedCerts = EaafKeyStoreUtils
- .getPrivateKeyAndCertificates(keyStore.getFirst(), ALIAS, PW.toCharArray(), true, "junit").getSecond();
- JwsResult result = JoseUtils.validateSignature(authBlock, Arrays.asList(trustedCerts), constraints);
- Assert.assertTrue("AuthBlock not valid", result.isValid());
- JsonNode authBlockJson = mapper.readTree(result.getPayLoad());
- Assert.assertNotNull("deserialized AuthBlock", authBlockJson);
-
- Assert.assertNotNull("no piiTransactionId in pendingRequesdt",
- storedPendingReq.getUniquePiiTransactionIdentifier());
- Assert.assertEquals("piiTransactionId", storedPendingReq.getUniquePiiTransactionIdentifier(),
- authBlockJson.get("piiTransactionId").asText());
- Assert.assertEquals("appId", randomTestSp, authBlockJson.get("appId").asText());
- Assert.assertFalse("'challenge' is null", authBlockJson.get("challenge").asText().isEmpty());
- Assert.assertFalse("'timestamp' is null", authBlockJson.get("timestamp").asText().isEmpty());
- Assert.assertTrue("binding pubKey", authBlockJson.has("bindingPublicKey"));
- Assert.assertEquals("binding PubKey", bindingPubKey, authBlockJson.get("bindingPublicKey").asText());
-
- Assert.assertTrue("EID process", authProcessData.isEidProcess());
- Assert.assertTrue("foreigner process", authProcessData.isForeigner());
- Assert.assertEquals("EID-ISSUING_NATION", "LU",
- authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class));
-
- // check vsz request
- ArgumentCaptor<PersonInfoType> argument4 = ArgumentCaptor.forClass(PersonInfoType.class);
- ArgumentCaptor<Boolean> argument5 = ArgumentCaptor.forClass(Boolean.class);
- verify(szrMock, times(1)).getStammzahlEncrypted(argument4.capture(), argument5.capture());
-
- Boolean param5 = argument5.getValue();
- Assert.assertFalse("insertERnP flag", param5);
- PersonInfoType person = argument4.getValue();
- Assert.assertEquals("FamilyName",
- matchingInfos.getFamilyName(),
- person.getPerson().getName().getFamilyName());
- Assert.assertEquals("GivenName",
- matchingInfos.getGivenName(),
- person.getPerson().getName().getGivenName());
- Assert.assertEquals("DateOfBirth",
- matchingInfos.getDateOfBirth(),
- person.getPerson().getDateOfBirth());
- Assert.assertEquals("bPK",
- matchingInfos.getBpk(),
- person.getPerson().getIdentification().getValue());
- Assert.assertEquals("bPKType",
- EaafConstants.URN_PREFIX_CDID + "ZP",
- person.getPerson().getIdentification().getType());
-
-
- Assert.assertNull("PlaceOfBirth", person.getPerson().getPlaceOfBirth());
- Assert.assertNull("BirthName", person.getPerson().getAlternativeName());
-
- }
-
- @Test
- public void successfulProcessWithStandardInfos() throws Exception {
- //initialize test
- String vsz = RandomStringUtils.randomNumeric(10);
- when(szrMock.getStammzahlEncrypted(any(), any())).thenReturn(vsz);
- val signContentResp = new SignContentResponseType();
- final SignContentEntry signContentEntry = new SignContentEntry();
- signContentEntry.setValue(RandomStringUtils.randomAlphanumeric(10));
- signContentResp.getOut().add(signContentEntry);
- when(szrMock.signContent(any(), any(), any())).thenReturn(signContentResp);
-
- String randomTestSp = RandomStringUtils.randomAlphabetic(10);
- pendingReq.setRawDataToTransaction(MsEidasNodeConstants.DATA_REQUESTERID, randomTestSp);
-
- //perform test
- task.execute(pendingReq, executionContext);
-
- //validate state
- // check if pendingRequest was stored
- IRequest storedPendingReq = requestStorage.getPendingRequest(pendingReq.getPendingRequestId());
- Assert.assertNotNull("pendingReq not stored", storedPendingReq);
-
- //check data in session
- final AuthProcessDataWrapper authProcessData = storedPendingReq.getSessionData(AuthProcessDataWrapper.class);
- Assert.assertNotNull("AuthProcessData", authProcessData);
- Assert.assertNotNull("eidasBind", authProcessData.getGenericDataFromSession(Constants.EIDAS_BIND, String.class));
-
- String authBlock = authProcessData.getGenericDataFromSession(Constants.SZR_AUTHBLOCK, String.class);
- Assert.assertNotNull("AuthBlock", authBlock);
-
- Assert.assertTrue("EID process", authProcessData.isEidProcess());
- Assert.assertTrue("foreigner process", authProcessData.isForeigner());
- Assert.assertEquals("EID-ISSUING_NATION", "LU",
- authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class));
-
- // check vsz request
- ArgumentCaptor<PersonInfoType> argument4 = ArgumentCaptor.forClass(PersonInfoType.class);
- ArgumentCaptor<Boolean> argument5 = ArgumentCaptor.forClass(Boolean.class);
- verify(szrMock, times(1)).getStammzahlEncrypted(argument4.capture(), argument5.capture());
-
- Boolean param5 = argument5.getValue();
- Assert.assertFalse("insertERnP flag", param5);
- PersonInfoType person = argument4.getValue();
- Assert.assertEquals("FamilyName",
- response.getAttributes().getAttributeValuesByFriendlyName("FamilyName").getFirstValue(
- response.getAttributes().getDefinitionsByFriendlyName("FamilyName").iterator().next()),
- person.getPerson().getName().getFamilyName());
- Assert.assertEquals("GivenName",
- response.getAttributes().getAttributeValuesByFriendlyName("FirstName").getFirstValue(
- response.getAttributes().getDefinitionsByFriendlyName("FirstName").iterator().next()),
- person.getPerson().getName().getGivenName());
- Assert.assertEquals("DateOfBirth",
- response.getAttributes().getAttributeValuesByFriendlyName("DateOfBirth").getFirstValue(
- response.getAttributes().getDefinitionsByFriendlyName("DateOfBirth").iterator().next())
- .toString().split("T")[0],
- person.getPerson().getDateOfBirth());
-
- Assert.assertNull("PlaceOfBirth", person.getPerson().getPlaceOfBirth());
- Assert.assertNull("BirthName", person.getPerson().getAlternativeName());
- Assert.assertNull("TravelDocument", person.getTravelDocument());
-
-
- }
-
- @Test
- public void getStammzahlEncryptedExceptionTest() throws Exception {
- try {
- when(szrMock.getStammzahlEncrypted(any(), any())).thenReturn(null);
- task.execute(pendingReq, executionContext);
- } catch (TaskExecutionException e) {
- Assert.assertEquals("Incorrect exception thrown", e.getMessage(),
- "IdentityLink generation for foreign person " + "FAILED.");
- Assert.assertEquals("Incorrect exception thrown", ((SzrCommunicationException) e.getCause()).getErrorId(),
- "ernb.01");
- Assert.assertTrue("Incorrect exception thrown", e.getCause().getMessage().contains("Stammzahl response empty"));
- }
- }
-
- @Test
- public void signContentExceptionTest() throws Exception {
- try {
- when(szrMock.getStammzahlEncrypted(any(), any())).thenReturn(RandomStringUtils.randomNumeric(10));
- when(szrMock.signContent(any(), any(), any())).thenReturn(null);
- task.execute(pendingReq, executionContext);
- } catch (TaskExecutionException e) {
- Assert.assertEquals("Incorrect exception thrown", e.getMessage(),
- "IdentityLink generation for foreign person " + "FAILED.");
- Assert.assertEquals("Incorrect exception thrown", ((SzrCommunicationException) e.getCause()).getErrorId(),
- "ernb.01");
- Assert.assertTrue("Incorrect exception thrown", e.getCause().getMessage().contains("BcBind response empty"));
- }
- }
-
- private Pair<KeyStore, Provider> getKeyStore() throws EaafException {
- // read Connector wide config data TODO connector wide!
- String keyStoreName = basicConfig.getBasicConfiguration(MsEidasNodeConstants.PROP_CONFIG_AUTHBLOCK_KEYSTORE_NAME);
- String keyStorePw = basicConfig.getBasicConfiguration(MsEidasNodeConstants.PROP_CONFIG_AUTHBLOCK_KEYSTORE_PASSWORD);
- String keyStorePath = basicConfig.getBasicConfiguration(MsEidasNodeConstants.PROP_CONFIG_AUTHBLOCK_KEYSTORE_PATH);
- String keyStoreType = basicConfig.getBasicConfiguration(MsEidasNodeConstants.PROP_CONFIG_AUTHBLOCK_KEYSTORE_TYPE);
-
-
- //build new KeyStore configuration
- KeyStoreConfiguration keyStoreConfiguration = new KeyStoreConfiguration();
- keyStoreConfiguration.setFriendlyName("jUnit test");
-
- keyStoreConfiguration.setSoftKeyStoreFilePath(keyStorePath);
- keyStoreConfiguration.setSoftKeyStorePassword(keyStorePw);
- keyStoreConfiguration.setKeyStoreType(KeyStoreConfiguration.KeyStoreType.fromString(keyStoreType));
- keyStoreConfiguration.setKeyStoreName(keyStoreName);
-
- //build new KeyStore based on configuration
- return keyStoreFactory.buildNewKeyStore(keyStoreConfiguration);
-
- }
-
- @NotNull
- private AuthenticationResponse buildDummyAuthResponse(boolean withAll) throws URISyntaxException {
- final AttributeDefinition attributeDef = attrRegistry.getCoreAttributeRegistry().getByFriendlyName(
- Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first();
- final AttributeDefinition attributeDef2 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName(
- Constants.eIDAS_ATTR_CURRENTFAMILYNAME).first();
- final AttributeDefinition attributeDef3 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName(
- Constants.eIDAS_ATTR_CURRENTGIVENNAME).first();
- final AttributeDefinition attributeDef4 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName(
- Constants.eIDAS_ATTR_DATEOFBIRTH).first();
- final AttributeDefinition attributeDef5 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName(
- Constants.eIDAS_ATTR_PLACEOFBIRTH).first();
- final AttributeDefinition attributeDef6 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName(
- Constants.eIDAS_ATTR_BIRTHNAME).first();
-
- final Builder attributeMap = ImmutableAttributeMap.builder();
- attributeMap.put(attributeDef, "LU/AT/" + RandomStringUtils.randomNumeric(64));
- attributeMap.put(attributeDef2, RandomStringUtils.randomAlphabetic(10));
- attributeMap.put(attributeDef3, RandomStringUtils.randomAlphabetic(10));
- attributeMap.put(attributeDef4, "2001-01-01");
- if (withAll) {
- attributeMap.put(attributeDef5, RandomStringUtils.randomAlphabetic(10));
- attributeMap.put(attributeDef6, RandomStringUtils.randomAlphabetic(10));
-
- }
-
- val b = new AuthenticationResponse.Builder();
- return b.id("_".concat(Random.nextHexRandom16()))
- .issuer(RandomStringUtils.randomAlphabetic(10))
- .subject(RandomStringUtils.randomAlphabetic(10))
- .statusCode(Constants.SUCCESS_URI)
- .inResponseTo("_".concat(Random.nextHexRandom16()))
- .subjectNameIdFormat("afaf")
- .levelOfAssurance(EaafConstants.EIDAS_LOA_PREFIX + RandomStringUtils.randomAlphabetic(5))
- .attributes(attributeMap.build())
- .build();
- }
-
- private Map<String, Object> convertEidasAttrToSimpleMap(
- ImmutableMap<AttributeDefinition<?>, ImmutableSet<? extends AttributeValue<?>>> attributeMap) {
- final Map<String, Object> result = new HashMap<>();
- for (final AttributeDefinition<?> el : attributeMap.keySet()) {
- final Class<?> parameterizedType = el.getParameterizedType();
- if (DateTime.class.equals(parameterizedType)) {
- convertDateTime(attributeMap, result, el);
- } else if (PostalAddress.class.equals(parameterizedType)) {
- convertPostalAddress(attributeMap, result, el);
- } else {
- convertString(attributeMap, result, el);
- }
- }
- return result;
- }
-
- private void convertString(ImmutableMap<AttributeDefinition<?>,
- ImmutableSet<? extends AttributeValue<?>>> attributeMap,
- Map<String, Object> result, AttributeDefinition<?> el) {
- final List<String> natPersonIdObj = EidasResponseUtils
- .translateStringListAttribute(el, attributeMap.get(el));
- final String stringAttr = natPersonIdObj.get(0);
- if (StringUtils.isNotEmpty(stringAttr)) {
- result.put(el.getFriendlyName(), stringAttr);
-
- }
- }
-
- private void convertPostalAddress(ImmutableMap<AttributeDefinition<?>,
- ImmutableSet<? extends AttributeValue<?>>> attributeMap,
- Map<String, Object> result, AttributeDefinition<?> el) {
- final PostalAddress addressAttribute = EidasResponseUtils
- .translateAddressAttribute(el, attributeMap.get(el).asList());
- if (addressAttribute != null) {
- result.put(el.getFriendlyName(), addressAttribute);
-
- }
- }
-
- private void convertDateTime(ImmutableMap<AttributeDefinition<?>,
- ImmutableSet<? extends AttributeValue<?>>> attributeMap,
- Map<String, Object> result, AttributeDefinition<?> el) {
- final DateTime attribute = EidasResponseUtils.translateDateAttribute(el, attributeMap.get(el).asList());
- if (attribute != null) {
- result.put(el.getFriendlyName(), attribute);
-
- }
- }
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskTest.java
deleted file mode 100644
index 4986d5a7..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskTest.java
+++ /dev/null
@@ -1,552 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks;
-
-import static at.asitplus.eidas.specific.connector.MsEidasNodeConstants.PROP_CONFIG_SP_NEW_EID_MODE;
-import static org.mockito.ArgumentMatchers.any;
-
-import java.net.URISyntaxException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.jetbrains.annotations.NotNull;
-import org.joda.time.DateTime;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import com.github.skjolber.mockito.soap.SoapServiceRule;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
-import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.MatchedPersonResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidPostProcessingException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasAttributeException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.ICcSpecificEidProcessingService;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.CreateIdentityLinkTask;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.EidasResponseUtils;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils;
-import at.gv.egiz.eaaf.core.api.IRequest;
-import at.gv.egiz.eaaf.core.api.IRequestStorage;
-import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants;
-import at.gv.egiz.eaaf.core.api.data.EaafConstants;
-import at.gv.egiz.eaaf.core.api.data.PvpAttributeDefinitions;
-import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;
-import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;
-import at.gv.egiz.eaaf.core.impl.credential.EaafKeyStoreFactory;
-import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl;
-import at.gv.egiz.eaaf.core.impl.utils.Random;
-import eu.eidas.auth.commons.attribute.AttributeDefinition;
-import eu.eidas.auth.commons.attribute.AttributeValue;
-import eu.eidas.auth.commons.attribute.ImmutableAttributeMap;
-import eu.eidas.auth.commons.protocol.eidas.impl.PostalAddress;
-import eu.eidas.auth.commons.protocol.impl.AuthenticationResponse;
-import lombok.val;
-import szrservices.GetBPK;
-import szrservices.GetBPKResponse;
-import szrservices.GetIdentityLinkEidasResponse;
-import szrservices.PersonInfoType;
-import szrservices.SZR;
-import szrservices.SZRException_Exception;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"})
-public class CreateIdentityLinkTaskTest {
-
- @Autowired(required = true)
- private CreateIdentityLinkTask task;
-
- @Autowired(required = true)
- private MsConnectorDummyConfigMap basicConfig;
- @Autowired
- protected EidasAttributeRegistry attrRegistry;
-
- @Autowired
- EaafKeyStoreFactory keyStoreFactory;
-
- @Autowired
- ICcSpecificEidProcessingService eidPostProcessor;
-
- @Autowired
- IRequestStorage requestStorage;
-
- final ExecutionContext executionContext = new ExecutionContextImpl();
- private MockHttpServletRequest httpReq;
- private MockHttpServletResponse httpResp;
- private TestRequestImpl pendingReq;
- private DummySpConfiguration oaParam;
- private SZR szrMock;
-
- private MatchedPersonResult matchingInfos;
- private AuthenticationResponse response;
- private Map<String, String> spConfig;
-
- @Rule
- public final SoapServiceRule soap = SoapServiceRule.newInstance();
-
- /**
- * jUnit test set-up.
- * @throws EidasAttributeException
- * @throws EidPostProcessingException
- */
- @Before
- public void setUp() throws EaafStorageException, URISyntaxException, EidPostProcessingException, EidasAttributeException {
-
- httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler");
- httpResp = new MockHttpServletResponse();
- RequestContextHolder.resetRequestAttributes();
- RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));
-
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false");
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.revisionlog.eidmapping.active", "false");
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.params.useSZRForbPKCalculation", "false");
-
- spConfig = new HashMap<>();
- spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp");
- spConfig.put("target", "urn:publicid:gv.at:cdid+XX");
- spConfig.put(PROP_CONFIG_SP_NEW_EID_MODE, "false");
- oaParam = new DummySpConfiguration(spConfig, basicConfig);
- pendingReq = new TestRequestImpl();
-
- response = buildDummyAuthResponse();
- final Map<String, Object> eidasAttributes = convertEidasAttrToSimpleMap(
- response.getAttributes().getAttributeMap());
- final SimpleEidasData eidData = eidPostProcessor.postProcess(eidasAttributes);
- MatchingTaskUtils.storeInitialEidasData(pendingReq, eidData);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, response);
-
- matchingInfos = MatchedPersonResult.builder()
- .bpk(RandomStringUtils.randomAlphabetic(5))
- .givenName(eidData.getGivenName())
- .familyName(eidData.getFamilyName())
- .dateOfBirth(eidData.getDateOfBirth())
- .countryCode(eidData.getCitizenCountryCode())
- .build();
- MatchingTaskUtils.storeFinalMatchingResult(pendingReq, matchingInfos);
-
- pendingReq.setSpConfig(oaParam);
- pendingReq.setPendingReqId(at.gv.egiz.eaaf.core.impl.utils.Random.nextProcessReferenceValue());
- pendingReq.setAuthUrl("http://test.com/");
- pendingReq.setTransactionId("avaasbav");
- pendingReq.setPiiTransactionId(RandomStringUtils.randomAlphanumeric(10));
-
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "XX");
- executionContext.put(EaafConstants.PROCESS_ENGINE_REQUIRES_NO_POSTAUTH_REDIRECT, true);
-
- szrMock = soap.mock(SZR.class, "http://localhost:1234/demoszr");
- }
-
-
- @Test
- public void buildIdentityLink() throws Exception {
- //initialize test
- setSzrResponseIdentityLink("/data/szr/szr_resp_valid_1.xml");
-
- String randomTestSp = RandomStringUtils.randomAlphabetic(10);
- pendingReq.setRawDataToTransaction(MsEidasNodeConstants.DATA_REQUESTERID, randomTestSp);
-
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false");
-
-
- //perform test
- task.execute(pendingReq, executionContext);
-
-
- //validate state
- // check if pendingRequest was stored
- IRequest storedPendingReq = requestStorage.getPendingRequest(pendingReq.getPendingRequestId());
- Assert.assertNotNull("pendingReq not stored", storedPendingReq);
-
- //check data in session
- final AuthProcessDataWrapper authProcessData = storedPendingReq.getSessionData(AuthProcessDataWrapper.class);
- Assert.assertNotNull("AuthProcessData", authProcessData);
- Assert.assertNull("eidasBind", authProcessData.getGenericDataFromSession(Constants.EIDAS_BIND, String.class));
-
- String authBlock = authProcessData.getGenericDataFromSession(Constants.SZR_AUTHBLOCK, String.class);
- Assert.assertNull("AuthBlock", authBlock);
-
- Assert.assertFalse("EID process", authProcessData.isEidProcess());
- Assert.assertTrue("foreigner process", authProcessData.isForeigner());
- Assert.assertEquals("EID-ISSUING_NATION", "LU",
- authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class));
-
- Assert.assertNotNull("IDL", authProcessData.getIdentityLink());
- checkElement("Mustermann", authProcessData.getIdentityLink().getFamilyName());
- checkElement("Hans", authProcessData.getIdentityLink().getGivenName());
- checkElement("1989-05-05", authProcessData.getIdentityLink().getDateOfBirth());
- checkElement("urn:publicid:gv.at:baseid", authProcessData.getIdentityLink().getIdentificationType());
- checkElement("k+zDM1BVpN1WJO4x7ZQ3ng==", authProcessData.getIdentityLink().getIdentificationValue());
- Assert.assertNotNull(authProcessData.getIdentityLink().getSerializedSamlAssertion());
- Assert.assertNotNull(authProcessData.getIdentityLink().getSamlAssertion());
-
- Assert.assertNotNull("no bPK", authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.BPK_NAME));
- Assert.assertEquals("wrong bPK", "XX:FkXtOaSSeR3elyL9KLLvijIYDMU=",
- authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.BPK_NAME));
-
- }
-
- @Test
- public void successfulProcessWithDataFromMatching() throws Exception {
- //initialize test
- setSzrResponseIdentityLink("/data/szr/szr_resp_valid_1.xml");
-
- String randomTestSp = RandomStringUtils.randomAlphabetic(10);
- pendingReq.setRawDataToTransaction(MsEidasNodeConstants.DATA_REQUESTERID, randomTestSp);
-
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false");
-
- MatchedPersonResult matchingInfos = MatchedPersonResult.builder()
- .bpk(RandomStringUtils.randomAlphabetic(5))
- .givenName(RandomStringUtils.randomAlphabetic(5))
- .familyName(RandomStringUtils.randomAlphabetic(5))
- .dateOfBirth(RandomStringUtils.randomAlphabetic(5))
- .countryCode(RandomStringUtils.randomAlphabetic(2).toUpperCase())
- .build();
-
- MatchingTaskUtils.storeFinalMatchingResult(pendingReq, matchingInfos);
-
- //perform test
- task.execute(pendingReq, executionContext);
-
-
- //validate state
- // check if pendingRequest was stored
- IRequest storedPendingReq = requestStorage.getPendingRequest(pendingReq.getPendingRequestId());
- Assert.assertNotNull("pendingReq not stored", storedPendingReq);
-
- //check data in session
- final AuthProcessDataWrapper authProcessData = storedPendingReq.getSessionData(AuthProcessDataWrapper.class);
- Assert.assertNotNull("AuthProcessData", authProcessData);
- Assert.assertNull("eidasBind", authProcessData.getGenericDataFromSession(Constants.EIDAS_BIND, String.class));
-
- String authBlock = authProcessData.getGenericDataFromSession(Constants.SZR_AUTHBLOCK, String.class);
- Assert.assertNull("AuthBlock", authBlock);
-
- Assert.assertFalse("EID process", authProcessData.isEidProcess());
- Assert.assertTrue("foreigner process", authProcessData.isForeigner());
- Assert.assertEquals("EID-ISSUING_NATION", "LU",
- authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class));
-
- Assert.assertNotNull("IDL", authProcessData.getIdentityLink());
- checkElement("Mustermann", authProcessData.getIdentityLink().getFamilyName());
- checkElement("Hans", authProcessData.getIdentityLink().getGivenName());
- checkElement("1989-05-05", authProcessData.getIdentityLink().getDateOfBirth());
- checkElement("urn:publicid:gv.at:baseid", authProcessData.getIdentityLink().getIdentificationType());
- checkElement("k+zDM1BVpN1WJO4x7ZQ3ng==", authProcessData.getIdentityLink().getIdentificationValue());
- Assert.assertNotNull(authProcessData.getIdentityLink().getSerializedSamlAssertion());
- Assert.assertNotNull(authProcessData.getIdentityLink().getSamlAssertion());
-
- Assert.assertNotNull("no bPK", authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.BPK_NAME));
- Assert.assertEquals("wrong bPK", "XX:FkXtOaSSeR3elyL9KLLvijIYDMU=",
- authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.BPK_NAME));
-
- }
-
- @Test
- public void buildIdentityLinkWithWbpk() throws Exception {
- //initialize test
- setSzrResponseIdentityLink("/data/szr/szr_resp_valid_1.xml");
- spConfig.put("target", EaafConstants.URN_PREFIX_WBPK + "FN+123456i");
-
- String randomTestSp = RandomStringUtils.randomAlphabetic(10);
- pendingReq.setRawDataToTransaction(MsEidasNodeConstants.DATA_REQUESTERID, randomTestSp);
-
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false");
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.revisionlog.eidmapping.active", "true");
-
- //perform test
- task.execute(pendingReq, executionContext);
-
-
- //validate state
- // check if pendingRequest was stored
- IRequest storedPendingReq = requestStorage.getPendingRequest(pendingReq.getPendingRequestId());
- Assert.assertNotNull("pendingReq not stored", storedPendingReq);
-
- //check data in session
- final AuthProcessDataWrapper authProcessData = storedPendingReq.getSessionData(AuthProcessDataWrapper.class);
- Assert.assertNotNull("AuthProcessData", authProcessData);
- Assert.assertNull("eidasBind", authProcessData.getGenericDataFromSession(Constants.EIDAS_BIND, String.class));
-
- String authBlock = authProcessData.getGenericDataFromSession(Constants.SZR_AUTHBLOCK, String.class);
- Assert.assertNull("AuthBlock", authBlock);
-
- Assert.assertFalse("EID process", authProcessData.isEidProcess());
- Assert.assertTrue("foreigner process", authProcessData.isForeigner());
- Assert.assertEquals("EID-ISSUING_NATION", "LU",
- authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class));
-
- Assert.assertNotNull("no bPK", authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.BPK_NAME));
- Assert.assertEquals("wrong bPK", "FN+123456i:D26vJncPS2W790RH/LP04V+vNOQ=",
- authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.BPK_NAME));
-
- }
-
- @Test
- public void buildIdentityLinkWithEidasBpk() throws Exception {
- //initialize test
- setSzrResponseIdentityLink("/data/szr/szr_resp_valid_2.xml");
- spConfig.put("target", EaafConstants.URN_PREFIX_EIDAS + "AT+EU");
-
- String randomTestSp = RandomStringUtils.randomAlphabetic(10);
- pendingReq.setRawDataToTransaction(MsEidasNodeConstants.DATA_REQUESTERID, randomTestSp);
-
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false");
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.revisionlog.eidmapping.active", "true");
-
- //perform test
- task.execute(pendingReq, executionContext);
-
-
- //validate state
- // check if pendingRequest was stored
- IRequest storedPendingReq = requestStorage.getPendingRequest(pendingReq.getPendingRequestId());
- Assert.assertNotNull("pendingReq not stored", storedPendingReq);
-
- //check data in session
- final AuthProcessDataWrapper authProcessData = storedPendingReq.getSessionData(AuthProcessDataWrapper.class);
- Assert.assertNotNull("AuthProcessData", authProcessData);
- Assert.assertNull("eidasBind", authProcessData.getGenericDataFromSession(Constants.EIDAS_BIND, String.class));
-
- String authBlock = authProcessData.getGenericDataFromSession(Constants.SZR_AUTHBLOCK, String.class);
- Assert.assertNull("AuthBlock", authBlock);
-
- Assert.assertFalse("EID process", authProcessData.isEidProcess());
- Assert.assertTrue("foreigner process", authProcessData.isForeigner());
- Assert.assertEquals("EID-ISSUING_NATION", "LU",
- authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class));
-
- Assert.assertNotNull("IDL", authProcessData.getIdentityLink());
- checkElement("Musterfrau", authProcessData.getIdentityLink().getFamilyName());
- checkElement("Martina", authProcessData.getIdentityLink().getGivenName());
- checkElement("1991-04-15", authProcessData.getIdentityLink().getDateOfBirth());
- checkElement("urn:publicid:gv.at:baseid", authProcessData.getIdentityLink().getIdentificationType());
- checkElement("k+zDM1BV1312312332x7ZQ3ng==", authProcessData.getIdentityLink().getIdentificationValue());
-
- Assert.assertNotNull("no bPK", authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.BPK_NAME));
- Assert.assertEquals("wrong bPK", "AT+EU:AT/EU/1+wqDl059/02Ptny0g+LyuLDJV0=",
- authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.BPK_NAME));
-
- }
-
- @Test
- public void buildIdentityLinkWithUnknownBpk() throws Exception {
- //initialize test
- setSzrResponseIdentityLink("/data/szr/szr_resp_valid_1.xml");
- spConfig.put("target", "urn:notextis:1234");
-
- String randomTestSp = RandomStringUtils.randomAlphabetic(10);
- pendingReq.setRawDataToTransaction(MsEidasNodeConstants.DATA_REQUESTERID, randomTestSp);
-
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false");
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.revisionlog.eidmapping.active", "true");
-
- try {
- task.execute(pendingReq, executionContext);
- Assert.fail("unknown bPKType not detected");
-
- } catch (TaskExecutionException e) {
- Assert.assertEquals("ErrorId", "builder.33",
- ((EaafException) e.getOriginalException()).getErrorId());
- Assert.assertEquals("wrong parameter size", 1, ((EaafException) e.getOriginalException())
- .getParams().length);
-
- }
- }
-
- @Test
- public void noBpkResult() throws Exception {
- //initialize test
- setSzrResponseIdentityLink("/data/szr/szr_resp_valid_1.xml");
- GetBPKResponse getBpkResp = new GetBPKResponse();
- org.mockito.Mockito.when(szrMock.getBPK(any(GetBPK.class))).thenReturn(getBpkResp );
-
- spConfig.put("target", "urn:notextis:1234");
-
- String randomTestSp = RandomStringUtils.randomAlphabetic(10);
- pendingReq.setRawDataToTransaction(MsEidasNodeConstants.DATA_REQUESTERID, randomTestSp);
-
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false");
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.revisionlog.eidmapping.active", "true");
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.params.useSZRForbPKCalculation", "true");
-
- try {
- task.execute(pendingReq, executionContext);
- Assert.fail("unknown bPKType not detected");
-
- } catch (TaskExecutionException e) {
- Assert.assertEquals("ErrorId", "ernb.01",
- ((EaafException) e.getOriginalException()).getErrorId());
-
- }
- }
-
- @Test
- public void bPKFromSzr() throws Exception {
- //initialize test
- setSzrResponseIdentityLink("/data/szr/szr_resp_valid_1.xml");
- String bpk = RandomStringUtils.randomAlphanumeric(10);
- GetBPKResponse getBpkResp = new GetBPKResponse();
- getBpkResp.getGetBPKReturn().add(bpk);
- org.mockito.Mockito.when(szrMock.getBPK(any(GetBPK.class))).thenReturn(getBpkResp );
-
- spConfig.put("target", "urn:notextis:1234");
-
- String randomTestSp = RandomStringUtils.randomAlphabetic(10);
- pendingReq.setRawDataToTransaction(MsEidasNodeConstants.DATA_REQUESTERID, randomTestSp);
-
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false");
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.revisionlog.eidmapping.active", "true");
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.params.useSZRForbPKCalculation", "true");
-
- //execute test
- task.execute(pendingReq, executionContext);
-
-
- //validate state
- // check if pendingRequest was stored
- IRequest storedPendingReq = requestStorage.getPendingRequest(pendingReq.getPendingRequestId());
- Assert.assertNotNull("pendingReq not stored", storedPendingReq);
-
- //check data in session
- final AuthProcessDataWrapper authProcessData = storedPendingReq.getSessionData(AuthProcessDataWrapper.class);
- Assert.assertNotNull("AuthProcessData", authProcessData);
- Assert.assertNull("eidasBind", authProcessData.getGenericDataFromSession(Constants.EIDAS_BIND, String.class));
-
- String authBlock = authProcessData.getGenericDataFromSession(Constants.SZR_AUTHBLOCK, String.class);
- Assert.assertNull("AuthBlock", authBlock);
-
- Assert.assertFalse("EID process", authProcessData.isEidProcess());
- Assert.assertTrue("foreigner process", authProcessData.isForeigner());
- Assert.assertEquals("EID-ISSUING_NATION", "LU",
- authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class));
-
- Assert.assertNotNull("no bPK", authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.BPK_NAME));
- Assert.assertEquals("wrong bPK", bpk,
- authProcessData.getGenericDataFromSession(PvpAttributeDefinitions.BPK_NAME));
- }
-
- private void setSzrResponseIdentityLink(String responseXmlPath) throws JAXBException, SZRException_Exception {
- final JAXBContext jaxbContext = JAXBContext
- .newInstance(szrservices.ObjectFactory.class, org.w3._2001._04.xmldsig_more.ObjectFactory.class,
- org.w3._2000._09.xmldsig.ObjectFactory.class,
- at.gv.e_government.reference.namespace.persondata._20020228.ObjectFactory.class);
- final Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
- final GetIdentityLinkEidasResponse szrResponse = (GetIdentityLinkEidasResponse) jaxbUnmarshaller
- .unmarshal(this.getClass().getResourceAsStream(responseXmlPath));
- org.mockito.Mockito.when(szrMock.getIdentityLinkEidas(any(PersonInfoType.class))).thenReturn(szrResponse.getGetIdentityLinkReturn());
-
- }
- private void checkElement(String expected, String value) {
- Assert.assertNotNull(value);
- Assert.assertEquals(expected, value);
-
- }
-
- @NotNull
- private AuthenticationResponse buildDummyAuthResponse() throws URISyntaxException {
- final AttributeDefinition attributeDef = attrRegistry.getCoreAttributeRegistry().getByFriendlyName(
- Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first();
- final AttributeDefinition attributeDef2 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName(
- Constants.eIDAS_ATTR_CURRENTFAMILYNAME).first();
- final AttributeDefinition attributeDef3 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName(
- Constants.eIDAS_ATTR_CURRENTGIVENNAME).first();
- final AttributeDefinition attributeDef4 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName(
- Constants.eIDAS_ATTR_DATEOFBIRTH).first();
-
- final ImmutableAttributeMap attributeMap = ImmutableAttributeMap.builder()
- .put(attributeDef, "LU/AT/" + RandomStringUtils.randomNumeric(64))
- .put(attributeDef2, RandomStringUtils.randomAlphabetic(10))
- .put(attributeDef3, RandomStringUtils.randomAlphabetic(10)).put(attributeDef4, "2001-01-01").build();
-
- val b = new AuthenticationResponse.Builder();
- return b.id("_".concat(Random.nextHexRandom16()))
- .issuer(RandomStringUtils.randomAlphabetic(10))
- .subject(RandomStringUtils.randomAlphabetic(10))
- .statusCode("200")
- .inResponseTo("_".concat(Random.nextHexRandom16()))
- .subjectNameIdFormat("afaf")
- .levelOfAssurance(EaafConstants.EIDAS_LOA_PREFIX + RandomStringUtils.randomAlphabetic(5))
- .attributes(attributeMap)
- .build();
- }
-
- private Map<String, Object> convertEidasAttrToSimpleMap(
- ImmutableMap<AttributeDefinition<?>, ImmutableSet<? extends AttributeValue<?>>> attributeMap) {
- final Map<String, Object> result = new HashMap<>();
- for (final AttributeDefinition<?> el : attributeMap.keySet()) {
- final Class<?> parameterizedType = el.getParameterizedType();
- if (DateTime.class.equals(parameterizedType)) {
- convertDateTime(attributeMap, result, el);
- } else if (PostalAddress.class.equals(parameterizedType)) {
- convertPostalAddress(attributeMap, result, el);
- } else {
- convertString(attributeMap, result, el);
- }
- }
- return result;
- }
-
- private void convertString(ImmutableMap<AttributeDefinition<?>,
- ImmutableSet<? extends AttributeValue<?>>> attributeMap,
- Map<String, Object> result, AttributeDefinition<?> el) {
- final List<String> natPersonIdObj = EidasResponseUtils
- .translateStringListAttribute(el, attributeMap.get(el));
- final String stringAttr = natPersonIdObj.get(0);
- if (StringUtils.isNotEmpty(stringAttr)) {
- result.put(el.getFriendlyName(), stringAttr);
-
- }
- }
-
- private void convertPostalAddress(ImmutableMap<AttributeDefinition<?>,
- ImmutableSet<? extends AttributeValue<?>>> attributeMap,
- Map<String, Object> result, AttributeDefinition<?> el) {
- final PostalAddress addressAttribute = EidasResponseUtils
- .translateAddressAttribute(el, attributeMap.get(el).asList());
- if (addressAttribute != null) {
- result.put(el.getFriendlyName(), addressAttribute);
-
- }
- }
-
- private void convertDateTime(ImmutableMap<AttributeDefinition<?>,
- ImmutableSet<? extends AttributeValue<?>>> attributeMap,
- Map<String, Object> result, AttributeDefinition<?> el) {
- final DateTime attribute = EidasResponseUtils.translateDateAttribute(el, attributeMap.get(el).asList());
- if (attribute != null) {
- result.put(el.getFriendlyName(), attribute);
-
- }
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateNewErnpEntryTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateNewErnpEntryTaskTest.java
deleted file mode 100644
index 985a5e14..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateNewErnpEntryTaskTest.java
+++ /dev/null
@@ -1,198 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThrows;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
-
-import java.net.URISyntaxException;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.jetbrains.annotations.NotNull;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.ernp.ErnpRestClient;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.ernp.ErnpRestClient.ErnpRegisterResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.MatchedPersonResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.RegisterResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.WorkflowException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.CreateNewErnpEntryTask;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils;
-import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;
-import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;
-import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl;
-import lombok.SneakyThrows;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"
-})
-@DirtiesContext(classMode = ClassMode.BEFORE_CLASS)
-public class CreateNewErnpEntryTaskTest {
-
- CreateNewErnpEntryTask task;
-
- @Mock ErnpRestClient ernpClient;
-
- final ExecutionContext executionContext = new ExecutionContextImpl();
- private TestRequestImpl pendingReq;
-
- /**
- * jUnit test set-up.
- */
- @Before
- public void setUp() throws URISyntaxException, EaafStorageException {
- task = new CreateNewErnpEntryTask(ernpClient);
-
- MockHttpServletRequest httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler");
- MockHttpServletResponse httpResp = new MockHttpServletResponse();
- RequestContextHolder.resetRequestAttributes();
- RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));
-
- pendingReq = new TestRequestImpl();
- pendingReq.setPendingReqId(RandomStringUtils.randomAlphanumeric(10));
-
- }
-
-
- @Test
- @SneakyThrows
- public void missingEidasData() {
- Mockito.when(ernpClient.add(any()))
- .thenThrow(new IllegalStateException("add ERnP entry should not be neccessary"));
-
- TaskExecutionException error = assertThrows("wrong exception", TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- assertEquals("wrong pendingRequestId", pendingReq.getPendingRequestId(), error.getPendingRequestID());
- assertTrue("Wrong exception", (error.getOriginalException() instanceof WorkflowException));
- assertTrue("Wrong flag 'manualFixNeeded'",
- ((WorkflowException) error.getOriginalException()).isRequiresManualFix());
-
- }
-
- @Test
- @SneakyThrows
- public void noErnpResponse() {
- SimpleEidasData input = buildInputData();
- Mockito.when(ernpClient.add(input))
- .thenReturn(ernpRegisterResult(Arrays.asList()));
-
- TaskExecutionException error = assertThrows("wrong exception", TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- assertEquals("wrong pendingRequestId", pendingReq.getPendingRequestId(), error.getPendingRequestID());
- assertTrue("Wrong exception", (error.getOriginalException() instanceof WorkflowException));
- assertTrue("Wrong flag 'manualFixNeeded'",
- ((WorkflowException) error.getOriginalException()).isRequiresManualFix());
-
- }
-
- @Test
- @SneakyThrows
- public void moreThanOneErnpResponse() {
- String bpk = RandomStringUtils.randomAlphabetic(5);
- SimpleEidasData input = buildInputData();
- Mockito.when(ernpClient.add(input))
- .thenReturn(ernpRegisterResult(Arrays.asList(buildErnpResultEntry(input, bpk), buildRandomResultEntry())));
-
- TaskExecutionException error = assertThrows("wrong exception", TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- assertEquals("wrong pendingRequestId", pendingReq.getPendingRequestId(), error.getPendingRequestID());
- assertTrue("Wrong exception", (error.getOriginalException() instanceof WorkflowException));
- assertTrue("Wrong flag 'manualFixNeeded'",
- ((WorkflowException) error.getOriginalException()).isRequiresManualFix());
-
- }
-
- @Test
- @SneakyThrows
- public void insertErnpSuccess() {
- String bpk = RandomStringUtils.randomAlphabetic(5);
- SimpleEidasData input = buildInputData();
- Mockito.when(ernpClient.add(input))
- .thenReturn(ernpRegisterResult(Arrays.asList(buildErnpResultEntry(input, bpk))));
-
- // perform test
- task.execute(pendingReq, executionContext);
-
- // validate state
- MatchedPersonResult result = MatchingTaskUtils.getFinalMatchingResult(pendingReq);
- assertNotNull("no matching result", result);
- assertEquals("familyname", input.getFamilyName(), result.getFamilyName());
- assertEquals("givenyname", input.getGivenName(), result.getGivenName());
- assertEquals("dateOfBirth", input.getDateOfBirth(), result.getDateOfBirth());
- assertEquals("bpk", bpk, result.getBpk());
- assertEquals("countryCode", input.getCitizenCountryCode(), result.getCountryCode());
-
- }
-
-
- @NotNull
- private ErnpRegisterResult ernpRegisterResult(List<RegisterResult> registerResult) {
- return new ErnpRegisterResult(registerResult);
-
- }
-
- private RegisterResult buildErnpResultEntry(SimpleEidasData input, String bpk) {
- return buildErnpResultEntry(input.getFamilyName(), input.getGivenName(), input.getDateOfBirth(), bpk);
-
- }
-
- private RegisterResult buildRandomResultEntry() {
- return buildErnpResultEntry(RandomStringUtils.randomAlphabetic(5), RandomStringUtils.randomAlphabetic(5),
- RandomStringUtils.randomAlphabetic(5), RandomStringUtils.randomAlphabetic(5));
-
- }
-
- private RegisterResult buildErnpResultEntry(String familyName, String givenName, String birthday, String bpk) {
- return RegisterResult.builder()
- .bpk(bpk)
- .dateOfBirth(birthday)
- .givenName(givenName)
- .familyName(familyName)
- .build();
-
- }
-
- private SimpleEidasData buildInputData() throws EaafStorageException {
- String cc = RandomStringUtils.randomAlphabetic(5).toUpperCase();
- String pseudonym = RandomStringUtils.randomAlphabetic(5);
- String familyName = RandomStringUtils.randomAlphabetic(5);
- String givenName = RandomStringUtils.randomAlphabetic(5);
- String birthday = RandomStringUtils.randomNumeric(4) + "-"
- + RandomStringUtils.randomNumeric(2) + "-" + RandomStringUtils.randomNumeric(2);
-
- SimpleEidasData input = SimpleEidasData.builder()
- .familyName(familyName)
- .givenName(givenName)
- .dateOfBirth(birthday)
- .personalIdentifier(cc + "/AT/" + pseudonym)
- .pseudonym(pseudonym)
- .citizenCountryCode(cc)
- .build();
- MatchingTaskUtils.storeInitialEidasData(pendingReq, input);
- return input;
-
- }
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskTest.java
deleted file mode 100644
index 4edfe32d..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskTest.java
+++ /dev/null
@@ -1,637 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks;
-
-import static org.junit.Assert.assertNull;
-
-import java.io.UnsupportedEncodingException;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
-import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.GenerateAuthnRequestTask;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy.DummySpecificCommunicationService;
-import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants;
-import at.gv.egiz.eaaf.core.api.data.EaafConstants;
-import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;
-import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;
-import at.gv.egiz.eaaf.core.exceptions.GuiBuildException;
-import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl;
-import eu.eidas.auth.commons.light.ILightRequest;
-import eu.eidas.specificcommunication.exception.SpecificCommunicationException;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"})
-@DirtiesContext(classMode = ClassMode.BEFORE_CLASS)
-public class GenerateAuthnRequestTaskTest {
-
- @Autowired(required = true)
- private GenerateAuthnRequestTask task;
- @Autowired(required = true)
- private DummySpecificCommunicationService commService;
- @Autowired(required = true)
- private MsConnectorDummyConfigMap basicConfig;
-
- final ExecutionContext executionContext = new ExecutionContextImpl();
- private MockHttpServletRequest httpReq;
- private MockHttpServletResponse httpResp;
- private TestRequestImpl pendingReq;
- private DummySpConfiguration oaParam;
- private Map<String, String> spConfig;
-
-
- /**
- * jUnit test set-up.
- *
- */
- @Before
- public void setUp() {
-
- httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler");
- httpResp = new MockHttpServletResponse();
- RequestContextHolder.resetRequestAttributes();
- RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));
-
- spConfig = new HashMap<>();
- spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp");
- spConfig.put("target", "urn:publicid:gv.at:cdid+XX");
- oaParam = new DummySpConfiguration(spConfig, basicConfig);
-
- pendingReq = new TestRequestImpl();
- pendingReq.setSpConfig(oaParam);
- pendingReq.setPendingReqId(at.gv.egiz.eaaf.core.impl.utils.Random.nextProcessReferenceValue());
- pendingReq.setAuthUrl("http://test.com/");
-
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.node_v2.requesterId.useHashedForm", "true");
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.node_v2.entityId",
- RandomStringUtils.randomAlphabetic(10));
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.endpoint",
- "http://test/" + RandomStringUtils.randomAlphabetic(5));
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.method", "GET");
- basicConfig.removeConfigValue("eidas.ms.auth.eIDAS.node_v2.requested.nameIdFormat");
-
- }
-
- @Test
- public void missingIssuer() {
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC");
- basicConfig.removeConfigValue("eidas.ms.auth.eIDAS.node_v2.entityId");
-
- //execute test
- try {
- task.execute(pendingReq, executionContext);
- Assert.fail("Missing Issuer not detected");
-
- } catch (final TaskExecutionException e) {
- // forward URL is not set in example config
- org.springframework.util.Assert.isInstanceOf(EaafConfigurationException.class, e.getOriginalException(),
- "Wrong exception");
- Assert.assertEquals("wrong errorCode", "config.27", ((EaafException) e.getOriginalException())
- .getErrorId());
- Assert.assertEquals("wrong parameter size", 1, ((EaafException) e.getOriginalException())
- .getParams().length);
-
- }
- }
-
- @Test
- public void missingForwardUrl() {
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC");
- basicConfig.removeConfigValue("eidas.ms.auth.eIDAS.node_v2.forward.endpoint");
-
- //execute test
- try {
- task.execute(pendingReq, executionContext);
- Assert.fail("Missing Forward-URL not detected");
-
- } catch (final TaskExecutionException e) {
- // forward URL is not set in example config
- org.springframework.util.Assert.isInstanceOf(EaafConfigurationException.class, e.getOriginalException(),
- "Wrong exception");
- Assert.assertEquals("wrong errorCode", "config.08", ((EaafException) e.getOriginalException())
- .getErrorId());
- Assert.assertEquals("wrong parameter size", 1, ((EaafException) e.getOriginalException())
- .getParams().length);
- Assert.assertEquals("wrong errorMsg", Constants.CONIG_PROPS_EIDAS_NODE_FORWARD_URL, ((EaafException) e
- .getOriginalException()).getParams()[0]);
-
- }
- }
-
- @Test
- public void selectUnknownStage() {
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC");
- String stage = RandomStringUtils.randomAlphabetic(5);
- executionContext.put("selectedEnvironment", stage);
-
- //execute test
- try {
- task.execute(pendingReq, executionContext);
- Assert.fail("Missing Forward-URL not detected");
-
- } catch (final TaskExecutionException e) {
- // forward URL is not set in example config
- org.springframework.util.Assert.isInstanceOf(EaafConfigurationException.class, e.getOriginalException(),
- "Wrong exception");
- Assert.assertEquals("wrong errorCode", "config.08", ((EaafException) e.getOriginalException())
- .getErrorId());
- Assert.assertEquals("wrong parameter size", 1, ((EaafException) e.getOriginalException())
- .getParams().length);
- Assert.assertEquals("wrong errorMsg", Constants.CONIG_PROPS_EIDAS_NODE_FORWARD_URL + "." + stage, ((EaafException) e
- .getOriginalException()).getParams()[0]);
-
- }
- }
-
- @Test
- public void selectQsEndpoint() throws TaskExecutionException,
- SpecificCommunicationException, EaafStorageException {
- //set-up test
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC");
- executionContext.put("selectedEnvironment", "qs");
-
- String dynEndPoint = "http://test/" + RandomStringUtils.randomAlphabetic(5);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.endpoint.qs", dynEndPoint);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.method", "GET");
-
-
- //perform test
- task.execute(pendingReq, executionContext);
-
- //validate state
- Assert.assertEquals("Wrong http statusCode", 302, httpResp.getStatus());
- Assert.assertNotNull("No redirect header", httpResp.getHeaderValue("Location"));
- Assert.assertTrue("Wrong redirect endpoint",
- ((String) httpResp.getHeaderValue("Location")).startsWith(dynEndPoint));
-
- }
-
- @Test
- public void selectTestEndpoint() throws TaskExecutionException,
- SpecificCommunicationException, EaafStorageException {
- //set-up test
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC");
- executionContext.put("selectedEnvironment", "test");
-
- String dynEndPoint = "http://test/" + RandomStringUtils.randomAlphabetic(5);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.endpoint.test", dynEndPoint);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.method", "GET");
-
-
- //perform test
- task.execute(pendingReq, executionContext);
-
- //validate state
- Assert.assertEquals("Wrong http statusCode", 302, httpResp.getStatus());
- Assert.assertNotNull("No redirect header", httpResp.getHeaderValue("Location"));
- Assert.assertTrue("Wrong redirect endpoint",
- ((String) httpResp.getHeaderValue("Location")).startsWith(dynEndPoint));
-
- }
-
- @Test
- public void selectDevEndpoint() throws TaskExecutionException,
- SpecificCommunicationException, EaafStorageException {
- //set-up test
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC");
- executionContext.put("selectedEnvironment", "dev");
-
- String dynEndPoint = "http://test/" + RandomStringUtils.randomAlphabetic(5);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.endpoint.dev", dynEndPoint);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.method", "GET");
-
-
- //perform test
- task.execute(pendingReq, executionContext);
-
- //validate state
- Assert.assertEquals("Wrong http statusCode", 302, httpResp.getStatus());
- Assert.assertNotNull("No redirect header", httpResp.getHeaderValue("Location"));
- Assert.assertTrue("Wrong redirect endpoint",
- ((String) httpResp.getHeaderValue("Location")).startsWith(dynEndPoint));
-
- }
-
- @Test
- public void noCountryCode() {
- try {
- task.execute(pendingReq, executionContext);
- Assert.fail("No countryCode not detected");
-
- } catch (final TaskExecutionException e) {
- Assert.assertEquals("wrong pendingReqId", pendingReq.getPendingRequestId(), e.getPendingRequestID());
- org.springframework.util.Assert.isInstanceOf(EidasSAuthenticationException.class, e
- .getOriginalException(), "Wrong exception");
- Assert.assertEquals("wrong errorCode", "eidas.03", ((EaafException) e.getOriginalException())
- .getErrorId());
-
- }
- }
-
- @Test
- public void withStaticProviderNameForPublicSPs() throws TaskExecutionException,
- SpecificCommunicationException {
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC");
-
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.publicSectorTargets", ".*");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName", "true");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier", "true");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs", "true");
- basicConfig.removeConfigValue("eidas.ms.auth.eIDAS.node_v2.staticProviderNameForPublicSPs");
-
-
- //execute test
- task.execute(pendingReq, executionContext);
-
- //validate state
- final ILightRequest eidasReq = commService.getAndRemoveRequest(null, null);
-
- Assert.assertEquals("ProviderName is not Static",
- Constants.DEFAULT_PROPS_EIDAS_NODE_STATIC_PROVIDERNAME_FOR_PUBLIC_SP, eidasReq.getProviderName());
- Assert.assertEquals("no PublicSP", "public", eidasReq.getSpType());
- Assert.assertEquals("wrong LoA", "http://eidas.europa.eu/LoA/high", eidasReq.getLevelOfAssurance());
-
- }
-
- @Test
- public void withCustomStaticProviderNameForPublicSPs() throws TaskExecutionException,
- SpecificCommunicationException {
- String cc = RandomStringUtils.randomAlphabetic(2);
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, cc);
-
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.publicSectorTargets", ".*");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName", "true");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier", "true");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderNames", "true");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.staticProviderNameForPublicSPs", "myNode");
-
- //execute test
- task.execute(pendingReq, executionContext);
-
- //validate state
- final ILightRequest eidasReq = commService.getAndRemoveRequest(null, null);
-
- Assert.assertEquals("wrong issuer",
- basicConfig.getBasicConfiguration("eidas.ms.auth.eIDAS.node_v2.entityId"), eidasReq.getIssuer());
- Assert.assertEquals("ProviderName is not Static", "myNode", eidasReq.getProviderName());
- Assert.assertEquals("no PublicSP", "public", eidasReq.getSpType());
- Assert.assertEquals("wrong LoA", "http://eidas.europa.eu/LoA/high", eidasReq.getLevelOfAssurance());
- Assert.assertEquals("wrong CC", cc, eidasReq.getCitizenCountryCode());
- assertNull("NameIdPolicy not null", eidasReq.getNameIdFormat());
-
- }
-
- @Test
- public void withDynamicProviderNameForPublicSPs() throws TaskExecutionException,
- SpecificCommunicationException, EaafStorageException, UnsupportedEncodingException {
- //set-up test
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC");
- executionContext.put("selectedEnvironment", "prod");
-
- String providerName = RandomStringUtils.randomAlphanumeric(10);
- pendingReq.setRawDataToTransaction(Constants.DATA_PROVIDERNAME, providerName);
-
- basicConfig.removeConfigValue("eidas.ms.auth.eIDAS.node_v2.publicSectorTargets");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName", "true");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier", "true");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs", "false");
-
- String nameIdFormat = RandomStringUtils.randomAlphabetic(10);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.requested.nameIdFormat", nameIdFormat);
-
- String dynEndPoint = "http://test/" + RandomStringUtils.randomAlphabetic(5);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.endpoint", dynEndPoint);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.method", "GET");
-
- //execute test
- task.execute(pendingReq, executionContext);
-
- //validate state
- Assert.assertEquals("Wrong http statusCode", 302, httpResp.getStatus());
- Assert.assertNotNull("No redirect header", httpResp.getHeaderValue("Location"));
- Assert.assertTrue("Wrong redirect endpoint",
- ((String) httpResp.getHeaderValue("Location")).startsWith(dynEndPoint));
-
-
- final ILightRequest eidasReq = commService.getAndRemoveRequest(null, null);
-
- Assert.assertNotNull("ProviderName found", eidasReq.getProviderName());
- Assert.assertEquals("PrividerName", providerName, eidasReq.getProviderName());
- Assert.assertNull("RequesterId found", eidasReq.getRequesterId());
- Assert.assertEquals("no PublicSP", "public", eidasReq.getSpType());
- Assert.assertEquals("wrong LoA", EaafConstants.EIDAS_LOA_HIGH,
- eidasReq.getLevelOfAssurance());
-
- Assert.assertEquals("Wrong req. attr. size", 4, eidasReq.getRequestedAttributes().size());
- Assert.assertEquals("NameIdFormat", nameIdFormat, eidasReq.getNameIdFormat());
-
- }
-
- @Test
- public void publicSpWithCountryLu() throws TaskExecutionException,
- SpecificCommunicationException, EaafStorageException, UnsupportedEncodingException {
- //set-up test
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "LU");
- executionContext.put("selectedEnvironment", "prod");
-
- String providerName = RandomStringUtils.randomAlphanumeric(10);
- pendingReq.setRawDataToTransaction(Constants.DATA_PROVIDERNAME, providerName);
-
- basicConfig.removeConfigValue("eidas.ms.auth.eIDAS.node_v2.publicSectorTargets");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName", "true");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier", "true");
-
- String dynEndPoint = "http://test/" + RandomStringUtils.randomAlphabetic(5);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.endpoint", dynEndPoint);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.method", "GET");
-
- //execute test
- task.execute(pendingReq, executionContext);
-
- //validate state
- Assert.assertEquals("Wrong http statusCode", 302, httpResp.getStatus());
- Assert.assertNotNull("No redirect header", httpResp.getHeaderValue("Location"));
- Assert.assertTrue("Wrong redirect endpoint",
- ((String) httpResp.getHeaderValue("Location")).startsWith(dynEndPoint));
-
-
- final ILightRequest eidasReq = commService.getAndRemoveRequest(null, null);
-
- Assert.assertEquals("PrividerName", "myNode", eidasReq.getProviderName());
- Assert.assertEquals("RequesterId found", "myNode", eidasReq.getRequesterId());
- Assert.assertEquals("no PublicSP", "public", eidasReq.getSpType());
- Assert.assertEquals("wrong LoA", EaafConstants.EIDAS_LOA_HIGH,
- eidasReq.getLevelOfAssurance());
-
- Assert.assertEquals("Wrong req. attr. size", 4, eidasReq.getRequestedAttributes().size());
-
- }
-
- @Test
- public void privateSpWithCountryLu() throws TaskExecutionException,
- SpecificCommunicationException, EaafStorageException, UnsupportedEncodingException {
- //set-up test
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "LU");
- executionContext.put("selectedEnvironment", "prod");
-
- String providerName = RandomStringUtils.randomAlphanumeric(10);
- String requesterId = RandomStringUtils.randomAlphanumeric(10);
- pendingReq.setRawDataToTransaction(Constants.DATA_PROVIDERNAME, providerName);
- pendingReq.setRawDataToTransaction(Constants.DATA_REQUESTERID, requesterId);
-
- spConfig.put("target",
- EaafConstants.URN_PREFIX_WBPK_TARGET_WITH_X + "FN+" + RandomStringUtils.randomNumeric(6));
-
- basicConfig.removeConfigValue("eidas.ms.auth.eIDAS.node_v2.publicSectorTargets");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName", "true");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier", "true");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs", "true");
-
- String dynEndPoint = "http://test/" + RandomStringUtils.randomAlphabetic(5);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.endpoint", dynEndPoint);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.method", "GET");
-
- //execute test
- task.execute(pendingReq, executionContext);
-
- //validate state
- Assert.assertEquals("Wrong http statusCode", 302, httpResp.getStatus());
- Assert.assertNotNull("No redirect header", httpResp.getHeaderValue("Location"));
- Assert.assertTrue("Wrong redirect endpoint",
- ((String) httpResp.getHeaderValue("Location")).startsWith(dynEndPoint));
-
-
- final ILightRequest eidasReq = commService.getAndRemoveRequest(null, null);
-
- Assert.assertEquals("PrividerName", "myNode", eidasReq.getProviderName());
- Assert.assertEquals("RequesterId", "myNode", eidasReq.getRequesterId());
- Assert.assertEquals("no PublicSP", "private", eidasReq.getSpType());
- Assert.assertEquals("wrong LoA", EaafConstants.EIDAS_LOA_HIGH,
- eidasReq.getLevelOfAssurance());
-
- Assert.assertEquals("Wrong req. attr. size", 4, eidasReq.getRequestedAttributes().size());
-
- }
-
- @Test
- public void withEidasNodePostReqNotValidTemplate() throws TaskExecutionException,
- SpecificCommunicationException, EaafStorageException, UnsupportedEncodingException {
- //set-up test
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC");
- String providerName = RandomStringUtils.randomAlphanumeric(10);
- pendingReq.setRawDataToTransaction(Constants.DATA_PROVIDERNAME, providerName);
-
- basicConfig.removeConfigValue("eidas.ms.auth.eIDAS.node_v2.publicSectorTargets");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName", "true");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier", "true");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs", "false");
-
-
- String dynEndPoint = "http://test/" + RandomStringUtils.randomAlphabetic(5);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.endpoint", dynEndPoint);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.method", "POST");
-
- //execute test
- try {
- task.execute(pendingReq, executionContext);
- Assert.fail("Missing template not detected");
-
- } catch (TaskExecutionException e) {
- Assert.assertEquals("ErrorCode", "Could not resolve view with name 'eidas_node_forward.html' ",
- ((GuiBuildException) e.getOriginalException()).getMessage());
-
- }
- }
-
- @Test
- public void withDynamicProviderNameForPrivateSPs() throws TaskExecutionException,
- SpecificCommunicationException, EaafStorageException {
- //set-up test
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC");
- spConfig.put("target",
- EaafConstants.URN_PREFIX_WBPK_TARGET_WITH_X + "FN+" + RandomStringUtils.randomNumeric(6));
- String providerName = RandomStringUtils.randomAlphanumeric(10);
- pendingReq.setRawDataToTransaction(Constants.DATA_PROVIDERNAME, providerName);
- pendingReq.setRawDataToTransaction(Constants.DATA_REQUESTERID, "http://junit.sp");
-
- basicConfig.removeConfigValue("eidas.ms.auth.eIDAS.node_v2.publicSectorTargets");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName", "true");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier", "true");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs", "false");
-
- String dynEndPoint = "http://test/" + RandomStringUtils.randomAlphabetic(5);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.endpoint", dynEndPoint);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.method", "GET");
-
-
- //perform test
- task.execute(pendingReq, executionContext);
-
- //validate state
- Assert.assertEquals("Wrong http statusCode", 302, httpResp.getStatus());
- Assert.assertNotNull("No redirect header", httpResp.getHeaderValue("Location"));
- Assert.assertTrue("Wrong redirect endpoint",
- ((String) httpResp.getHeaderValue("Location")).startsWith(dynEndPoint));
-
-
- final ILightRequest eidasReq = commService.getAndRemoveRequest(null, null);
-
- Assert.assertEquals("PrividerName", providerName, eidasReq.getProviderName());
- Assert.assertEquals("RequesterId", "Wr8LrrVf5SYneblOlZdZNaLQQCCgzklfKQvyeZjBx10=", eidasReq.getRequesterId());
- Assert.assertEquals("no PublicSP", "private", eidasReq.getSpType());
- Assert.assertEquals("wrong LoA", "http://eidas.europa.eu/LoA/high", eidasReq.getLevelOfAssurance());
-
- }
-
- @Test
- public void privateSPWithoutRequestIdHashing() throws TaskExecutionException,
- SpecificCommunicationException, EaafStorageException {
- //set-up test
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC");
- spConfig.put("target",
- EaafConstants.URN_PREFIX_WBPK_TARGET_WITH_X + "FN+" + RandomStringUtils.randomNumeric(6));
- String providerName = RandomStringUtils.randomAlphanumeric(10);
- String requesterId = RandomStringUtils.randomAlphanumeric(10);
- pendingReq.setRawDataToTransaction(Constants.DATA_PROVIDERNAME, providerName);
- pendingReq.setRawDataToTransaction(Constants.DATA_REQUESTERID, requesterId);
-
- basicConfig.removeConfigValue("eidas.ms.auth.eIDAS.node_v2.publicSectorTargets");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName", "true");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier", "true");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs", "false");
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.node_v2.requesterId.useHashedForm", "false");
-
- String dynEndPoint = "http://test/" + RandomStringUtils.randomAlphabetic(5);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.endpoint", dynEndPoint);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.method", "GET");
-
-
- //perform test
- task.execute(pendingReq, executionContext);
-
- //validate state
- Assert.assertEquals("Wrong http statusCode", 302, httpResp.getStatus());
- Assert.assertNotNull("No redirect header", httpResp.getHeaderValue("Location"));
- Assert.assertTrue("Wrong redirect endpoint",
- ((String) httpResp.getHeaderValue("Location")).startsWith(dynEndPoint));
-
-
- final ILightRequest eidasReq = commService.getAndRemoveRequest(null, null);
-
- Assert.assertEquals("PrividerName", providerName, eidasReq.getProviderName());
- Assert.assertEquals("RequesterId", requesterId, eidasReq.getRequesterId());
- Assert.assertEquals("no PublicSP", "private", eidasReq.getSpType());
- Assert.assertEquals("wrong LoA", "http://eidas.europa.eu/LoA/high", eidasReq.getLevelOfAssurance());
-
- }
-
- @Test
- public void withoutProviderNameForPublicSPs() throws TaskExecutionException,
- SpecificCommunicationException, EaafStorageException {
- //set-up test
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "CC");
- String providerName = RandomStringUtils.randomAlphanumeric(10);
- pendingReq.setRawDataToTransaction(Constants.DATA_PROVIDERNAME, providerName);
-
- basicConfig.removeConfigValue("eidas.ms.auth.eIDAS.node_v2.publicSectorTargets");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName", "false");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier", "false");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs", "false");
-
-
- String dynEndPoint = "http://test/" + RandomStringUtils.randomAlphabetic(5);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.endpoint", dynEndPoint);
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.forward.method", "GET");
-
-
- //execute test
- task.execute(pendingReq, executionContext);
-
- //validate state
- Assert.assertEquals("Wrong http statusCode", 302, httpResp.getStatus());
-
- final ILightRequest eidasReq = commService.getAndRemoveRequest(null, null);
-
- Assert.assertNull("ProviderName found", eidasReq.getProviderName());
- Assert.assertNull("RequesterId found", eidasReq.getRequesterId());
- Assert.assertEquals("no PublicSP", "public", eidasReq.getSpType());
- Assert.assertEquals("wrong LoA", "http://eidas.europa.eu/LoA/high", eidasReq.getLevelOfAssurance());
-
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateMobilePhoneSignatureRequestTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateMobilePhoneSignatureRequestTaskTest.java
deleted file mode 100644
index dccbfda6..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateMobilePhoneSignatureRequestTaskTest.java
+++ /dev/null
@@ -1,286 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThrows;
-import static org.junit.Assert.assertTrue;
-import static org.springframework.util.Assert.isInstanceOf;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.util.Base64;
-import java.util.Map;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
-import org.opensaml.core.xml.util.XMLObjectSupport;
-import org.opensaml.saml.common.xml.SAMLConstants;
-import org.opensaml.saml.saml2.core.AuthnRequest;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.IdAustriaClientAuthConstants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.provider.IdAustriaClientAuthMetadataProvider;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.GenerateMobilePhoneSignatureRequestTask;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy.DummyOA;
-import at.gv.egiz.eaaf.core.api.data.EaafConstants;
-import at.gv.egiz.eaaf.core.api.gui.IVelocityGuiBuilderConfiguration;
-import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;
-import at.gv.egiz.eaaf.core.api.storage.ITransactionStorage;
-import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException;
-import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;
-import at.gv.egiz.eaaf.core.impl.idp.module.gui.DummyGuiBuilderConfigurationFactory;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl;
-import at.gv.egiz.eaaf.modules.pvp2.exception.CredentialsNotAvailableException;
-import at.gv.egiz.eaaf.modules.pvp2.exception.Pvp2MetadataException;
-import at.gv.egiz.eaaf.modules.pvp2.impl.message.PvpSProfileRequest;
-import at.gv.egiz.eaaf.modules.pvp2.impl.metadata.PvpMetadataResolverFactory;
-import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xInitializer;
-import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils;
-import at.gv.egiz.eaaf.modules.pvp2.impl.validation.TrustEngineFactory;
-import at.gv.egiz.eaaf.modules.pvp2.impl.verification.SamlVerificationEngine;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml",
- "classpath:/eaaf_pvp_sp.beans.xml"
-})
-
-public class GenerateMobilePhoneSignatureRequestTaskTest {
-
- private static final String METADATA_PATH = "classpath:/data/idp_metadata_classpath_entity.xml";
- private static final String METADATA_SP_PATH = "classpath:/data/sp_metadata_junit.xml";
-
- @Autowired(required = true)
- private ApplicationContext context;
- @Autowired(required = true)
- protected MsConnectorDummyConfigMap authConfig;
- @Autowired
- private IdAustriaClientAuthMetadataProvider metadataProvider;
- @Autowired
- private PvpMetadataResolverFactory metadataFactory;
- @Autowired
- private DummyGuiBuilderConfigurationFactory guiBuilderConfigFactory;
- @Autowired
- private SamlVerificationEngine samlVerifyEngine;
- @Autowired
- private ITransactionStorage transactionStorage;
-
- final ExecutionContext executionContext = new ExecutionContextImpl();
- private MockHttpServletRequest httpReq;
- private MockHttpServletResponse httpResp;
- private TestRequestImpl pendingReq;
- private DummyOA oaParam;
-
- private GenerateMobilePhoneSignatureRequestTask task;
-
- /**
- * JUnit class initializer.
- *
- * @throws Exception In case of an OpenSAML3 initialization error
- */
- @BeforeClass
- public static void initialize() throws Exception {
- EaafOpenSaml3xInitializer.eaafInitialize();
-
- }
-
- /**
- * jUnit test set-up.
- *
- * @throws Exception In case of an set-up error
- */
- @Before
- public void setUp() throws Exception {
- task = (GenerateMobilePhoneSignatureRequestTask) context.getBean(
- "GenerateMobilePhoneSignatureRequestTask");
-
- httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler");
- httpResp = new MockHttpServletResponse();
- RequestContextHolder.resetRequestAttributes();
- RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));
-
- authConfig.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_ID_AUSTRIA_ENTITYID,
- METADATA_PATH);
- authConfig.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_SIGNING_ALIAS,
- "sig");
-
- oaParam = new DummyOA();
- oaParam.setUniqueAppId("http://test.com/test");
- oaParam.setBmiUniqueIdentifier(oaParam.getUniqueIdentifier() + "#" + RandomStringUtils.randomAlphanumeric(
- 5));
- oaParam.setTargetIdentifier(
- EaafConstants.URN_PREFIX_CDID + RandomStringUtils.randomAlphabetic(2));
- oaParam.setEidasEnabled(true);
-
- pendingReq = new TestRequestImpl();
- pendingReq.setPendingReqId(RandomStringUtils.randomAlphanumeric(10));
- pendingReq.setSpConfig(oaParam);
- pendingReq.setAuthUrl("https://localhost/authhandler");
-
- metadataProvider.fullyDestroy();
- guiBuilderConfigFactory.setVelocityBuilderConfig(createDummyGuiConfig());
-
- }
-
- @Test
- public void noMetadataAvailableOnGlobalConfig() {
- authConfig.removeConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_ID_AUSTRIA_ENTITYID);
-
- final TaskExecutionException e = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- assertEquals(pendingReq.getPendingRequestId(), e.getPendingRequestID());
- assertNotNull(e.getOriginalException());
- isInstanceOf(EaafConfigurationException.class, e.getOriginalException());
- assertEquals("module.eidasauth.00", ((EaafConfigurationException) e.getOriginalException()).getErrorId());
- }
-
- @Test
- public void wrongMetadataAvailableOnGlobalConfig() {
- authConfig.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_ID_AUSTRIA_ENTITYID,
- "http://wrong.path/" + RandomStringUtils.randomAlphabetic(5));
-
- final TaskExecutionException e = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
- assertNotNull(e.getPendingRequestID());
- assertEquals(pendingReq.getPendingRequestId(), e.getPendingRequestID());
- assertNotNull(e.getOriginalException());
- isInstanceOf(EaafConfigurationException.class, e.getOriginalException());
- assertEquals("module.eidasauth.idaustria.02",
- ((EaafConfigurationException) e.getOriginalException()).getErrorId());
- }
-
- @Test
- public void noMetadataSigningKeyStore() throws Pvp2MetadataException {
- authConfig.removeConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_SIGN_SIGNING_ALIAS);
-
- metadataProvider.addMetadataResolverIntoChain(
- metadataFactory.createMetadataProvider(METADATA_PATH, null, "jUnitTest", null));
-
- final TaskExecutionException e = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
- assertNotNull(e.getPendingRequestID());
- assertEquals(pendingReq.getPendingRequestId(), e.getPendingRequestID());
- assertNotNull(e.getOriginalException());
- isInstanceOf(CredentialsNotAvailableException.class, e.getOriginalException());
- assertEquals("internal.pvp.01",
- ((CredentialsNotAvailableException) e.getOriginalException()).getErrorId());
- }
-
- @Test
- public void success() throws Exception {
- metadataProvider.addMetadataResolverIntoChain(
- metadataFactory.createMetadataProvider(METADATA_PATH, null, "jUnitTest", null));
- pendingReq.setTransactionId(RandomStringUtils.randomAlphanumeric(10));
-
- task.execute(pendingReq, executionContext);
-
- validate();
-
- }
-
- private void validate() throws Exception {
- assertEquals("HTTP Statuscode", 200, httpResp.getStatus());
- assertEquals("ContentType", "text/html;charset=UTF-8", httpResp.getContentType());
- assertEquals("ContentEncoding", "UTF-8", httpResp.getCharacterEncoding());
-
- final String html = httpResp.getContentAsString();
- assertNotNull("XML Metadata", html);
-
- final int startIndex = html.indexOf("SAMLRequest=");
- assertTrue("No SAMLRequest in html", startIndex >= 0);
- final String authnXml = html.substring(startIndex + "SAMLRequest=".length());
-
- // check if relaystate was stored
- final int startIndexRelayState = html.indexOf("RelayState=");
- assertTrue("wrong RelayState in HTML",
- startIndexRelayState >= 0);
- final String relayState = html.substring(startIndexRelayState + "RelayState=".length(), startIndex);
- final String storedPendingReqId = transactionStorage.get(relayState, String.class);
- assertEquals("relayStore not map to pendingRequestId",
- pendingReq.getPendingRequestId(), storedPendingReqId);
-
- final AuthnRequest authnRequest = (AuthnRequest) XMLObjectSupport.unmarshallFromInputStream(
- XMLObjectProviderRegistrySupport.getParserPool(), new ByteArrayInputStream(
- Base64.getDecoder().decode(authnXml)));
-
- assertNotNull("AuthnReq", authnRequest);
- assertNotNull("Issuer", authnRequest.getIssuer());
- assertEquals("EntityId",
- "https://localhost/authhandler" + IdAustriaClientAuthConstants.ENDPOINT_METADATA,
- authnRequest.getIssuer().getValue());
-
- // check XML scheme
- Saml2Utils.schemeValidation(authnRequest);
-
- // check signature
- final PvpSProfileRequest msg = new PvpSProfileRequest(
- authnRequest,
- SAMLConstants.SAML2_POST_BINDING_URI);
- msg.setEntityID(authnRequest.getIssuer().getValue());
- metadataProvider.addMetadataResolverIntoChain(
- metadataFactory.createMetadataProvider(METADATA_SP_PATH, null, "jUnit SP", null));
- samlVerifyEngine.verify(msg, TrustEngineFactory.getSignatureKnownKeysTrustEngine(metadataProvider));
-
- assertNotNull("RequestedAuthnContext", authnRequest.getRequestedAuthnContext());
- assertNotNull("AuthnContextClassRef", authnRequest.getRequestedAuthnContext().getAuthnContextClassRefs());
- assertEquals("#AuthnContextClassRef", 1,
- authnRequest.getRequestedAuthnContext().getAuthnContextClassRefs().size());
- assertEquals("LoA", "http://eidas.europa.eu/LoA/high",
- authnRequest.getRequestedAuthnContext().getAuthnContextClassRefs().get(0).getAuthnContextClassRef());
-
- }
-
- private IVelocityGuiBuilderConfiguration createDummyGuiConfig() {
- return new IVelocityGuiBuilderConfiguration() {
-
- @Override
- public Map<String, Object> getViewParameters() {
- return null;
- }
-
- @Override
- public String getViewName() {
- return "SAML2 Post-Binding";
- }
-
- @Override
- public String getDefaultContentType() {
- return null;
- }
-
- @Override
- public InputStream getTemplate(String viewName) {
- return GenerateMobilePhoneSignatureRequestTaskTest.class.getResourceAsStream(
- "/data/pvp_postbinding_template.html");
- }
-
- @Override
- public String getClasspathTemplateDir() {
- return null;
-
- }
-
- @Override
- public boolean isWriteAsynch() {
- return false;
-
- }
- };
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateOtherLoginMethodGuiTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateOtherLoginMethodGuiTaskTest.java
deleted file mode 100644
index ff994061..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateOtherLoginMethodGuiTaskTest.java
+++ /dev/null
@@ -1,207 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.UnsupportedEncodingException;
-import java.text.MessageFormat;
-import java.util.Locale;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.i18n.LocaleContextHolder;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.context.web.WebAppConfiguration;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.json.JsonMapper;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SelectedLoginMethod;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.GenerateOtherLoginMethodGuiTask;
-import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl;
-import lombok.SneakyThrows;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml",
- "/common_gui.beans.xml"
-})
-@WebAppConfiguration
-public class GenerateOtherLoginMethodGuiTaskTest {
-
- private static final String TEST_PATTER_REQ_PARAM =
- "<input type=\"hidden\" name=\"loginSelection\" value=\"{0}\">";
-
- private static ObjectMapper mapper = new ObjectMapper();
-
- @Autowired
- GenerateOtherLoginMethodGuiTask task;
-
- private ExecutionContextImpl executionContext = new ExecutionContextImpl();
- private TestRequestImpl pendingReq;
- private MockHttpServletRequest httpReq;
- private MockHttpServletResponse httpResp;
-
- @BeforeClass
- public static void classInitializer() {
- Locale.setDefault(Locale.ENGLISH);
-
- }
-
- /**
- * jUnit test set-up.
- */
- @Before
- public void initialize() {
- httpReq = new MockHttpServletRequest("POST", "https://localhost/ms_connector");
- httpResp = new MockHttpServletResponse();
- RequestContextHolder.resetRequestAttributes();
- RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));
-
- pendingReq = new TestRequestImpl();
- pendingReq.setAuthUrl("https://localhost/ms_connector");
- pendingReq.setPendingReqId(RandomStringUtils.randomAlphanumeric(10));
-
- LocaleContextHolder.resetLocaleContext();
- }
-
-
- @Test
- @SneakyThrows
- public void jsonResponse() throws TaskExecutionException, UnsupportedEncodingException {
- String reason = RandomStringUtils.randomAlphabetic(5);
- executionContext.put(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED, true);
- executionContext.put(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED_REASON, reason);
- httpReq.addHeader("Accept", "application/json");
-
- task.execute(pendingReq, executionContext);
-
- //result validation
- Assert.assertEquals("httpStausCode", 200, httpResp.getStatus());
- Assert.assertEquals("http ContentType", "application/json;charset=UTF-8", httpResp.getContentType());
- final String content = httpResp.getContentAsString();
- assertNotNull("response body is null", content);
- Assert.assertFalse("response body is empty", content.isEmpty());
- final JsonNode json = new JsonMapper().readTree(content);
- assertNotNull("response body is null", json);
- assertNotNull("advancedMatchFailed", json.get(Constants.HTML_FORM_ADVANCED_MATCHING_FAILED));
- assertTrue("advancedMatchFailed", json.get(Constants.HTML_FORM_ADVANCED_MATCHING_FAILED).asBoolean());
- assertNotNull("advancedMatchingFailedReason", json.get(Constants.HTML_FORM_ADVANCED_MATCHING_FAILED_REASON));
- assertEquals("advancedMatchingFailedReason", reason,
- json.get(Constants.HTML_FORM_ADVANCED_MATCHING_FAILED_REASON).asText());
-
- }
-
- @Test
- public void advancedMatchingFailedMsg() throws TaskExecutionException, UnsupportedEncodingException {
- executionContext.put(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED, true);
-
- task.execute(pendingReq, executionContext);
-
- String html = doBasicValidation();
- Assert.assertTrue("Missing eIDAS infos",
- html.contains(MessageFormat.format(TEST_PATTER_REQ_PARAM, SelectedLoginMethod.ADD_ME_AS_NEW)));
- Assert.assertTrue("missing errorfield",
- html.contains("<div id=\"matchingError\""));
-
- }
-
- @Test
- public void advancedMatchingFailedMsgWithDetails() throws TaskExecutionException, UnsupportedEncodingException {
- String reason = RandomStringUtils.randomAlphabetic(5);
- executionContext.put(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED, true);
- executionContext.put(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED_REASON, reason);
-
- task.execute(pendingReq, executionContext);
-
- String html = doBasicValidation();
- Assert.assertTrue("Missing eIDAS infos",
- html.contains(MessageFormat.format(TEST_PATTER_REQ_PARAM, SelectedLoginMethod.ADD_ME_AS_NEW)));
- Assert.assertTrue("missing errorfield",
- html.contains("<div id=\"matchingError\""));
- Assert.assertTrue("missing errorfield",
- html.contains(reason));
-
- }
-
- @Test
- public void validHtmlResponseWithOutLocale() throws TaskExecutionException, UnsupportedEncodingException {
-
- task.execute(pendingReq, executionContext);
-
- doBasicValidation();
-
- }
-
- @Test
- public void validHtmlResponseWithDE() throws TaskExecutionException, UnsupportedEncodingException {
- LocaleContextHolder.setLocale(Locale.GERMAN);
- httpReq.addHeader("Accept-Language", "de");
-
- task.execute(pendingReq, executionContext);
-
- doBasicValidation();
-
- }
-
- @Test
- public void validHtmlResponseWithEN() throws TaskExecutionException, UnsupportedEncodingException {
- LocaleContextHolder.setLocale(Locale.ENGLISH);
-
- task.execute(pendingReq, executionContext);
-
- doBasicValidation();
-
- }
-
- @Test
- public void validHtmlResponseWithFR() throws TaskExecutionException, UnsupportedEncodingException {
- LocaleContextHolder.setLocale(Locale.FRANCE);
- httpReq.addHeader("Accept-Language", "fr");
-
- task.execute(pendingReq, executionContext);
-
- doBasicValidation();
-
- }
-
- private String doBasicValidation() throws UnsupportedEncodingException {
- Assert.assertEquals("Wrong http StatusCode", 200, httpResp.getStatus());
- Assert.assertEquals("Wrong http ContentType", "text/html;charset=UTF-8", httpResp.getContentType());
-
- String html = httpResp.getContentAsString();
- Assert.assertNotNull("html result is null", html);
- Assert.assertFalse("html result is empty", html.isEmpty());
-
- Assert.assertTrue("Missing IDA Login",
- html.contains(MessageFormat.format(TEST_PATTER_REQ_PARAM, SelectedLoginMethod.MOBILE_PHONE_SIGNATURE_LOGIN)));
- Assert.assertTrue("Missing residence infos",
- html.contains(MessageFormat.format(TEST_PATTER_REQ_PARAM, SelectedLoginMethod.NO_OTHER_LOGIN)));
- Assert.assertTrue("Missing eIDAS infos",
- html.contains(MessageFormat.format(TEST_PATTER_REQ_PARAM, SelectedLoginMethod.EIDAS_LOGIN)));
-
- Assert.assertTrue("No language selector with pendingRequestId",
- html.contains("/otherLoginMethod?pendingid=" + pendingReq.getPendingRequestId()));
- Assert.assertTrue("No country-selection form",
- html.contains("<form method=\"post\" action=\"/otherLoginMethod\">"));
-
- return html;
-
- }
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskTest.java
deleted file mode 100644
index 74ac065e..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskTest.java
+++ /dev/null
@@ -1,939 +0,0 @@
-/*
- * Copyright 2020 A-SIT Plus GmbH
- * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ,
- * A-SIT Plus GmbH, A-SIT, and Graz University of Technology.
- *
- * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "License");
- * You may not use this work except in compliance with the License.
- * You may obtain a copy of the License at:
- * https://joinup.ec.europa.eu/news/understanding-eupl-v12
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses.
- * The "NOTICE" text file is part of the distribution. Any derivative works
- * that you distribute must include a readable copy of the "NOTICE" text file.
- */
-
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks;
-
-import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThrows;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-
-import java.math.BigInteger;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-
-import javax.xml.namespace.QName;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.jetbrains.annotations.NotNull;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.Mockito;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.ernp.ErnpRestClient.ErnpRegisterResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.ernp.IErnpClient;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.IZmrClient;
-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.dao.MatchedPersonResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.RegisterResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidPostProcessingException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasAttributeException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.WorkflowException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.ZmrCommunicationException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.CountrySpecificDetailSearchProcessor;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.GenericEidProcessor;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.ICcSpecificEidProcessingService;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterStatusResults;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.InitialSearchTask;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils;
-import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonSuchenRequest;
-import at.gv.egiz.eaaf.core.api.IRequest;
-import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;
-import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;
-import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;
-import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl;
-import eu.eidas.auth.commons.attribute.AttributeDefinition;
-import eu.eidas.auth.commons.attribute.ImmutableAttributeMap;
-import eu.eidas.auth.commons.attribute.PersonType;
-import eu.eidas.auth.commons.light.impl.LightRequest;
-import eu.eidas.auth.commons.protocol.impl.AuthenticationResponse;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"
-})
-@DirtiesContext(classMode = ClassMode.BEFORE_CLASS)
-public class InitialSearchTaskTest {
-
-
- private static final String EE = "EE";
- private static final String DE = "DE";
-
- private static final String EE_ST = EE + "/ST/";
- private static final String DE_ST = DE + "/ST/";
-
- @Mock
- private IZmrClient zmrClient;
- @Mock
- private IErnpClient ernpClient;
-
- @Autowired
- private List<CountrySpecificDetailSearchProcessor> handlers;
- private RegisterSearchService registerSearchService;
-
- private final ICcSpecificEidProcessingService eidPostProcessor = createEidPostProcessor();
- private InitialSearchTask task;
-
- final ExecutionContext executionContext = new ExecutionContextImpl();
- private TestRequestImpl pendingReq;
- private final String randomBpk = RandomStringUtils.randomNumeric(6);
- private final String randomPseudonym = RandomStringUtils.randomNumeric(10);
- private final String randomPersonalIdentifier_DE = DE_ST + randomPseudonym;
- private final String randomPersonalIdentifier_EE = EE_ST + randomPseudonym;
- private final String randomFamilyName = randomAlphabetic(10);
- private final String randomGivenName = randomAlphabetic(10);
- private final String randomPlaceOfBirth = randomAlphabetic(10);
- private final String randomBirthName = randomAlphabetic(10);
- private final String randomBirthDate = "2011-01-" + (10 + new Random().nextInt(18));
-
- /**
- * jUnit test set-up.
- */
- @Before
- public void setUp() throws URISyntaxException, EaafStorageException {
- registerSearchService = new RegisterSearchService(handlers, zmrClient, ernpClient);
- task = new InitialSearchTask(registerSearchService, eidPostProcessor);
-
- MockHttpServletRequest httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler");
- MockHttpServletResponse httpResp = new MockHttpServletResponse();
- RequestContextHolder.resetRequestAttributes();
- RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));
-
- final AuthenticationResponse response = buildDummyAuthResponseRandomPerson();
- pendingReq = new TestRequestImpl();
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, response);
- }
-
- @NotNull
- private ICcSpecificEidProcessingService createEidPostProcessor() {
- return new ICcSpecificEidProcessingService() {
-
- private final GenericEidProcessor genericEidProcessor = new GenericEidProcessor();
-
- @Override
- public SimpleEidasData postProcess(Map<String, Object> eidasAttrMap) throws EidPostProcessingException, EidasAttributeException {
- return genericEidProcessor.postProcess(eidasAttrMap);
- }
-
- @Override
- public void preProcess(String selectedCC, IRequest pendingReq, LightRequest.Builder authnRequestBuilder) {
- genericEidProcessor.preProcess(pendingReq, authnRequestBuilder);
- }
- };
- }
-
- /**
- * One match, but register update needed
- */
- @Test
- @DirtiesContext
- public void singlePersonalIdMatchUpdateNecessary_Zmr() throws Exception {
- String oldGivenName = randomAlphabetic(10);
- String placeOfBirth = randomAlphabetic(10);
- RegisterResult firstZmrResult = randomRegisterResult(oldGivenName, randomBpk, placeOfBirth);
- Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPseudonym, DE))
- .thenReturn(zmrRegisterResult(firstZmrResult));
-
- Mockito.when(zmrClient.searchCountrySpecific(any(), any(), any()))
- .thenThrow(new IllegalStateException("CountrySpecific search search should not be neccessary"));
- Mockito.when(zmrClient.searchWithMds(any(), any(), any(), any(), any()))
- .thenThrow(new IllegalStateException("MDS search should not be neccessary"));
- Mockito.when(zmrClient.update(any(), any(), any()))
- .thenReturn(zmrRegisterResult(firstZmrResult));
-
- Mockito.when(ernpClient.searchWithPersonIdentifier(randomPseudonym, DE))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.searchWithMds(any(), any(), any(), any()))
- .thenThrow(new IllegalStateException("MDS search should not be neccessary"));
- Mockito.when(ernpClient.update(any(), any()))
- .thenThrow(new IllegalStateException("ERnP update should not be neccessary"));
-
- // execute test
- task.execute(pendingReq, executionContext);
-
- // validate state
- //INFO: has to be the old givenName because ZMR allows no update of MDS information
- checkMatchingSuccessState(pendingReq, randomBpk, randomFamilyName, oldGivenName, randomBirthDate, DE);
-
- }
-
- /**
- *
- * One match, but register update needed.
- *
- * @throws EidasSAuthenticationException
- */
- @Test
- @DirtiesContext
- public void singlePersonalIdMatchUpdateNecessary_Ernp() throws TaskExecutionException, EidasSAuthenticationException {
- Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPseudonym, DE))
- .thenReturn(emptyZmrRegisterResult());
- Mockito.when(zmrClient.searchCountrySpecific(any(), any(), any()))
- .thenThrow(new IllegalStateException("CountrySpecific search search should not be neccessary"));
- Mockito.when(zmrClient.searchWithMds(any(), any(), any(), any(), any()))
- .thenThrow(new IllegalStateException("MDS search should not be neccessary"));
- Mockito.when(zmrClient.update(any(), any(), any()))
- .thenThrow(new IllegalStateException("ZMR update should not be neccessary"));
-
- String oldRandomGivenName = randomAlphabetic(10);
- Mockito.when(ernpClient.searchWithPersonIdentifier(randomPseudonym, DE))
- .thenReturn(ernpRegisterResult(randomRegisterResult(oldRandomGivenName, randomBpk)));
- Mockito.when(ernpClient.searchCountrySpecific(any(), any()))
- .thenThrow(new IllegalStateException("CountrySpecific search search should not be neccessary"));
- Mockito.when(ernpClient.searchWithMds(any(), any(), any(), any()))
- .thenThrow(new IllegalStateException("MDS search should not be neccessary"));
- Mockito.when(ernpClient.update(any(), any()))
- .thenReturn(ernpRegisterResult(RegisterResult.builder()
- .bpk(randomBpk)
- .dateOfBirth(randomBirthDate)
- .givenName(randomGivenName)
- .familyName(randomFamilyName)
- .build()));
-
- // execute test
- task.execute(pendingReq, executionContext);
-
- // validate state
- checkMatchingSuccessState(pendingReq, randomBpk, randomFamilyName, randomGivenName, randomBirthDate, DE);
- }
-
-
-
- /**
- * Two matches by PersonalId found in ZMR
- *
- * @throws EidasSAuthenticationException
- */
- @Test
- @DirtiesContext
- public void multiPersonalIdMatch_Zmr() throws EidasSAuthenticationException {
- String newRandomGivenName = randomAlphabetic(10);
- Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPseudonym, DE))
- .thenReturn(new ZmrRegisterResult(Arrays.asList(randomRegisterResult(), randomRegisterResult(newRandomGivenName, randomBpk)), generateRandomProcessId()));
- Mockito.when(ernpClient.searchWithPersonIdentifier(randomPseudonym, DE))
- .thenReturn(emptyErnpRegisterResult());
-
- // execute task
- TaskExecutionException exception = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
-
- // validate state
- assertTrue("Wrong exception", (exception.getOriginalException() instanceof WorkflowException));
- assertTrue("Wrong flag 'manualFixNeeded'",
- ((WorkflowException) exception.getOriginalException()).isRequiresManualFix());
-
- }
-
- /**
- * Two matches by PersonalId found in ZMR
- *
- * @throws EidasSAuthenticationException
- */
- @Test
- @DirtiesContext
- public void withErrorFromZmr() throws EidasSAuthenticationException {
- Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPseudonym, DE))
- .thenThrow(new ZmrCommunicationException("jUnit ZMR error", null));
- Mockito.when(ernpClient.searchWithPersonIdentifier(randomPseudonym, DE))
- .thenReturn(emptyErnpRegisterResult());
-
- // execute task
- TaskExecutionException exception = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
-
- // validate state
- assertTrue("Wrong exception", (exception.getOriginalException() instanceof WorkflowException));
- assertFalse("Wrong flag 'manualFixNeeded'",
- ((WorkflowException) exception.getOriginalException()).isRequiresManualFix());
-
- }
-
- /**
- * Two matches by PersonalId found in ErnP
- *
- * @throws EidasSAuthenticationException
- */
- @Test
- @DirtiesContext
- public void multiPersonalIdMatch_Ernp() throws EidasSAuthenticationException {
- Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPseudonym, DE))
- .thenReturn(emptyZmrRegisterResult());
- String newRandomGivenName = randomAlphabetic(10);
- Mockito.when(ernpClient.searchWithPersonIdentifier(randomPseudonym, DE))
- .thenReturn(ernpRegisterResult(
- Arrays.asList(randomRegisterResult(), randomRegisterResult(newRandomGivenName, randomBpk))));
-
- // execute task
- TaskExecutionException exception = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- // validate state
- assertTrue("Wrong exception", (exception.getOriginalException() instanceof WorkflowException));
- assertTrue("Wrong flag 'manualFixNeeded'",
- ((WorkflowException) exception.getOriginalException()).isRequiresManualFix());
-
- }
-
- /**
- * Two matches by PersonalId
- *
- * @throws EidasSAuthenticationException
- */
- @Test
- @DirtiesContext
- public void multiPersonalIdMatch_ErnpAndZmr() throws EidasSAuthenticationException {
- Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPseudonym, DE))
- .thenReturn(zmrRegisterResult(randomRegisterResult()));
- Mockito.when(ernpClient.searchWithPersonIdentifier(randomPseudonym, DE))
- .thenReturn(ernpRegisterResult(randomRegisterResult()));
-
- // execute task
- TaskExecutionException exception = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- // validate state
- assertTrue("Wrong exception", (exception.getOriginalException() instanceof WorkflowException));
- assertTrue("Wrong flag 'manualFixNeeded'",
- ((WorkflowException) exception.getOriginalException()).isRequiresManualFix());
-
- }
-
- /**
- * One match by PersonalId, no register update needed
- */
- @Test
- @DirtiesContext
- public void singlePersonalIdMatchNoUpdate_Ernp() throws Exception {
- Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPseudonym, DE))
- .thenReturn(emptyZmrRegisterResult());
- Mockito.when(ernpClient.searchWithPersonIdentifier(randomPseudonym, DE))
- .thenReturn(ernpRegisterResult(randomRegisterResult()));
-
- Mockito.when(zmrClient.update(any(), any(), any()))
- .thenThrow(new IllegalStateException("ZMR update should not be neccessary"));
- Mockito.when(ernpClient.update(any(), any()))
- .thenThrow(new IllegalStateException("ERnP update should not be neccessary"));
-
- // execute test
- task.execute(pendingReq, executionContext);
-
- // validate state
- checkMatchingSuccessState(pendingReq, randomBpk, randomFamilyName, randomGivenName, randomBirthDate, DE);
- }
-
- /**
- * One match by PersonalId, no register update needed
- */
- @Test
- @DirtiesContext
- public void singlePersonalIdMatchNoUpdate_Zmr() throws Exception {
- Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPseudonym, DE))
- .thenReturn(zmrRegisterResult(randomRegisterResult()));
- Mockito.when(ernpClient.searchWithPersonIdentifier(randomPseudonym, DE))
- .thenReturn(emptyErnpRegisterResult());
-
- Mockito.when(zmrClient.update(any(), any(), any()))
- .thenThrow(new IllegalStateException("ZMR update should not be neccessary"));
- Mockito.when(ernpClient.update(any(), any()))
- .thenThrow(new IllegalStateException("ERnP update should not be neccessary"));
-
- // execute test
- task.execute(pendingReq, executionContext);
-
- // validate state
- checkMatchingSuccessState(pendingReq, randomBpk, randomFamilyName, randomGivenName, randomBirthDate, DE);
- }
-
- /**
- * Find single person in ZMR by country specifics.
- */
- @Test
- @DirtiesContext
- public void singlePersonFindWithCountySpecifics_Zmr() throws Exception {
- final AuthenticationResponse response = buildDummyAuthResponseDE(randomGivenName, randomFamilyName,
- randomPersonalIdentifier_DE, randomBirthDate, randomPlaceOfBirth, randomBirthName);
- TestRequestImpl pendingReq1 = new TestRequestImpl();
- pendingReq1.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, response);
-
- BigInteger zmrProcessId = generateRandomProcessId();
- RegisterResult zmrResult = RegisterResult.builder()
- .bpk(randomBpk)
- .pseudonym(Collections.singletonList(randomPseudonym))
- .givenName(randomGivenName)
- .familyName(randomFamilyName)
- .dateOfBirth(randomBirthDate)
- .placeOfBirth(randomPlaceOfBirth)
- .birthName(randomBirthName)
- .build();
- Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPseudonym, DE))
- .thenReturn(new ZmrRegisterResult(Collections.emptyList(), zmrProcessId));
- Mockito.when(zmrClient.searchCountrySpecific(eq(zmrProcessId), any(PersonSuchenRequest.class), eq(DE)))
- .thenReturn(zmrRegisterResult(zmrResult, zmrProcessId));
- RegisterResult randomRegisterResult = RegisterResult.builder()
- .bpk(randomBpk)
- .pseudonym(Arrays.asList(randomPseudonym, RandomStringUtils.randomAlphanumeric(10)))
- .givenName(randomGivenName)
- .familyName(randomFamilyName)
- .dateOfBirth(randomBirthDate)
- .placeOfBirth(randomPlaceOfBirth)
- .birthName(randomBirthName)
- .build();
- Mockito.when(zmrClient.update(eq(zmrProcessId), eq(zmrResult), any()))
- .thenReturn(zmrRegisterResult(randomRegisterResult, zmrProcessId));
- Mockito.when(zmrClient.searchWithMds(any(), any(), any(), any(), any()))
- .thenThrow(new IllegalStateException("MDS search should not be neccessary"));
-
- Mockito.when(ernpClient.searchWithPersonIdentifier(randomPseudonym, DE))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.searchCountrySpecific(any(), eq(DE)))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.searchWithMds(any(), any(), any(), eq(DE)))
- .thenThrow(new IllegalStateException("ERnP MDS search should not be neccessary"));
- Mockito.when(ernpClient.update(any(), any()))
- .thenThrow(new IllegalStateException("ERnP update should not be neccessary"));
- Mockito.when(ernpClient.add(any()))
- .thenThrow(new IllegalStateException("ERnP add-entity should not be neccessary"));
-
- // execute test
- task.execute(pendingReq1, executionContext);
-
- // validate state
- checkMatchingSuccessState(pendingReq1, randomBpk, randomFamilyName, randomGivenName, randomBirthDate, DE);
-
- }
-
- /**
- * Multiple matches found in ZMR by country specifics.
- */
- @Test
- @DirtiesContext
- public void multiplePersonFindWithCountySpecifics_Zmr() throws Exception {
- String newRandomPseudonym = randomPersonalIdentifier_DE + RandomStringUtils.randomNumeric(2);
- String newRandomBpk = randomBpk + RandomStringUtils.randomNumeric(6);
- final AuthenticationResponse response = buildDummyAuthResponseDE(randomGivenName, randomFamilyName,
- randomPersonalIdentifier_DE,
- randomBirthDate, randomPlaceOfBirth, randomBirthName);
- TestRequestImpl pendingReq1 = new TestRequestImpl();
- pendingReq1.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, response);
-
- BigInteger zmrProcessId = generateRandomProcessId();
- Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPseudonym, DE))
- .thenReturn(new ZmrRegisterResult(Collections.emptyList(), zmrProcessId));
- RegisterResult randomResult1 = RegisterResult.builder()
- .bpk(randomBpk)
- .pseudonym(Collections.singletonList(randomPseudonym))
- .givenName(randomGivenName)
- .familyName(randomFamilyName)
- .dateOfBirth(randomBirthDate)
- .placeOfBirth(randomPlaceOfBirth)
- .birthName(randomBirthName)
- .build();
- RegisterResult randomResult2 = RegisterResult.builder()
- .bpk(newRandomBpk)
- .pseudonym(Collections.singletonList(newRandomPseudonym))
- .givenName(randomGivenName)
- .familyName(randomFamilyName)
- .dateOfBirth(randomBirthDate)
- .placeOfBirth(randomPlaceOfBirth)
- .birthName(randomBirthName)
- .build();
- Mockito.when(zmrClient.searchCountrySpecific(eq(zmrProcessId), any(PersonSuchenRequest.class), eq(DE)))
- .thenReturn(new ZmrRegisterResult(Arrays.asList(randomResult1, randomResult2), zmrProcessId));
-
- Mockito.when(ernpClient.searchWithPersonIdentifier(randomPseudonym, DE))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.searchCountrySpecific(any(), eq(DE)))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.update(any(), any()))
- .thenThrow(new IllegalStateException("ERnP update should not be neccessary"));
-
- // execute task
- TaskExecutionException exception = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq1, executionContext));
-
- // validate state
- assertTrue("Wrong exception", (exception.getOriginalException() instanceof WorkflowException));
- assertTrue("Wrong flag 'manualFixNeeded'",
- ((WorkflowException) exception.getOriginalException()).isRequiresManualFix());
-
- }
-
- /**
- * Multiple matches found in ZMR and ERnP by country specifics.
- */
- @Test
- @DirtiesContext
- public void multiplePersonFindWithCountySpecifics_ZmrAndErnp() throws Exception {
- final AuthenticationResponse response = buildDummyAuthResponseDE(randomGivenName, randomFamilyName,
- randomPersonalIdentifier_DE,
- randomBirthDate, randomPlaceOfBirth, randomBirthName);
- TestRequestImpl pendingReq1 = new TestRequestImpl();
- pendingReq1.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, response);
-
- BigInteger zmrProcessId = generateRandomProcessId();
- Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPseudonym, DE))
- .thenReturn(new ZmrRegisterResult(Collections.emptyList(), zmrProcessId));
- RegisterResult randomResult1 = RegisterResult.builder()
- .bpk(randomBpk)
- .pseudonym(Collections.singletonList(randomPseudonym))
- .givenName(randomGivenName)
- .familyName(randomFamilyName)
- .dateOfBirth(randomBirthDate)
- .placeOfBirth(randomPlaceOfBirth)
- .birthName(randomBirthName)
- .build();
- Mockito.when(zmrClient.searchCountrySpecific(eq(zmrProcessId), any(PersonSuchenRequest.class), eq(DE)))
- .thenReturn(new ZmrRegisterResult(Arrays.asList(randomResult1), zmrProcessId));
-
- Mockito.when(ernpClient.searchWithPersonIdentifier(randomPseudonym, DE))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.searchCountrySpecific(any(), eq(DE)))
- .thenReturn(ernpRegisterResult(randomRegisterResult()));
- Mockito.when(ernpClient.update(any(), any()))
- .thenThrow(new IllegalStateException("ERnP update should not be neccessary"));
-
- // execute task
- TaskExecutionException exception = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq1, executionContext));
-
- // validate state
- assertTrue("Wrong exception", (exception.getOriginalException() instanceof WorkflowException));
- assertTrue("Wrong flag 'manualFixNeeded'",
- ((WorkflowException) exception.getOriginalException()).isRequiresManualFix());
-
- }
-
- /**
- * Multiple matches found in ERnP by country specifics.
- */
- @Test
- @DirtiesContext
- public void multiplePersonFindWithCountySpecifics_Ernp() throws Exception {
- final AuthenticationResponse response = buildDummyAuthResponseDE(randomGivenName, randomFamilyName,
- randomPersonalIdentifier_DE,
- randomBirthDate, randomPlaceOfBirth, randomBirthName);
- TestRequestImpl pendingReq1 = new TestRequestImpl();
- pendingReq1.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, response);
-
- BigInteger zmrProcessId = generateRandomProcessId();
- Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPseudonym, DE))
- .thenReturn(new ZmrRegisterResult(Collections.emptyList(), zmrProcessId));
- Mockito.when(zmrClient.searchCountrySpecific(eq(zmrProcessId), any(PersonSuchenRequest.class), eq(DE)))
- .thenReturn(new ZmrRegisterResult(Arrays.asList(), zmrProcessId));
-
- Mockito.when(ernpClient.searchWithPersonIdentifier(randomPseudonym, DE))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.searchCountrySpecific(any(), eq(DE)))
- .thenReturn(ernpRegisterResult(Arrays.asList(randomRegisterResult(), randomRegisterResult())));
- Mockito.when(ernpClient.update(any(), any()))
- .thenThrow(new IllegalStateException("ERnP update should not be neccessary"));
-
- // execute task
- TaskExecutionException exception = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq1, executionContext));
-
- // validate state
- assertTrue("Wrong exception", (exception.getOriginalException() instanceof WorkflowException));
- assertTrue("Wrong flag 'manualFixNeeded'",
- ((WorkflowException) exception.getOriginalException()).isRequiresManualFix());
-
- }
-
- /**
- * NO match found in ZMR and ErnP with Initial and MDS search
- *
- * @throws EidasSAuthenticationException
- * @throws URISyntaxException
- * @throws EaafStorageException
- */
- @Test
- @DirtiesContext
- public void noResultByAnySearch() throws TaskExecutionException, EidasSAuthenticationException, URISyntaxException, EaafStorageException {
- BigInteger zmrProcessId = generateRandomProcessId();
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE,
- buildDummyAuthResponse(randomGivenName, randomFamilyName, randomPersonalIdentifier_EE, randomBirthDate));
-
- Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPseudonym, EE))
- .thenReturn(new ZmrRegisterResult(Collections.emptyList(), zmrProcessId));
- Mockito.when(zmrClient.searchWithMds(zmrProcessId, randomGivenName, randomFamilyName, randomBirthDate, EE))
- .thenReturn(new ZmrRegisterResult(Collections.emptyList(), zmrProcessId));
- Mockito.when(zmrClient.update(any(), any(), any()))
- .thenThrow(new IllegalStateException("ZMR update should not be neccessary"));
-
- Mockito.when(ernpClient.searchWithPersonIdentifier(randomPseudonym, EE))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.searchWithMds(randomGivenName, randomFamilyName, randomBirthDate, EE))
- .thenReturn(new ErnpRegisterResult(Collections.emptyList()));
- Mockito.when(ernpClient.update(any(), any()))
- .thenThrow(new IllegalStateException("ZMR update should not be neccessary"));
-
- // execute task
- task.execute(pendingReq, executionContext);
-
-
- // validate state
- assertNotNull("find no eIDAS inbut data", MatchingTaskUtils.getInitialEidasData(pendingReq));
-
- assertNull("Find intermediate matching data but matching should be finished",
- MatchingTaskUtils.getIntermediateMatchingResult(pendingReq));
- assertNull("Find final matching data but no match sould be found",
- MatchingTaskUtils.getFinalMatchingResult(pendingReq));
-
- Boolean transitionGUI = (Boolean) executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK);
- Assert.assertNull("Wrong transition", transitionGUI);
- Boolean transitionErnb = (Boolean) executionContext.get(Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK);
- Assert.assertTrue("Wrong transition", transitionErnb);
-
- }
-
- /**
- * Find one match with MDS search in ERnP.
- */
- @Test
- @DirtiesContext
- public void resultByMdsSearch_Ernb() throws TaskExecutionException, EidasSAuthenticationException, URISyntaxException, EaafStorageException {
- BigInteger zmrProcessId = generateRandomProcessId();
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE,
- buildDummyAuthResponse(randomGivenName, randomFamilyName, randomPersonalIdentifier_EE, randomBirthDate));
-
- Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPseudonym, EE))
- .thenReturn(new ZmrRegisterResult(Collections.emptyList(), zmrProcessId));
- Mockito.when(zmrClient.searchWithMds(zmrProcessId, randomGivenName, randomFamilyName, randomBirthDate, EE))
- .thenReturn(new ZmrRegisterResult(Collections.emptyList(), zmrProcessId));
-
- Mockito.when(ernpClient.searchWithPersonIdentifier(randomPseudonym, EE))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.searchWithMds(randomGivenName, randomFamilyName, randomBirthDate, EE))
- .thenReturn(ernpRegisterResult(randomRegisterResult()));
-
- // execute test
- task.execute(pendingReq, executionContext);
-
- // validate state
- checkIntermediateResult(1);
-
- }
-
- /**
- * Find one match with MDS search in ZMR.
- */
- @Test
- @DirtiesContext
- public void resultByMdsSearch_Zmr() throws TaskExecutionException, EidasSAuthenticationException {
- BigInteger zmrProcessId = generateRandomProcessId();
- Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPseudonym, DE))
- .thenReturn(new ZmrRegisterResult(Collections.emptyList(), zmrProcessId));
- Mockito.when(zmrClient.searchWithMds(zmrProcessId, randomGivenName, randomFamilyName, randomBirthDate, DE))
- .thenReturn(zmrRegisterResult(randomRegisterResult(), zmrProcessId));
- Mockito.when(zmrClient.update(any(), any(), any()))
- .thenThrow(new IllegalStateException("ZMR update should not be neccessary"));
-
- Mockito.when(ernpClient.searchWithPersonIdentifier(randomPseudonym, DE)).thenReturn(
- emptyErnpRegisterResult());
- Mockito.when(ernpClient.searchWithMds(randomGivenName, randomFamilyName, randomBirthDate, DE))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.update(any(), any()))
- .thenThrow(new IllegalStateException("ERnP update should not be neccessary"));
-
-
-
- // execute test
- task.execute(pendingReq, executionContext);
-
- // validate state
- checkIntermediateResult(1);
-
- }
-
- /**
- * Find matches with MDS search in ZMR and ERnP.
- */
- @Test
- @DirtiesContext
- public void resultByMdsSearch_ZmrAndErnp() throws TaskExecutionException, EidasSAuthenticationException {
- BigInteger zmrProcessId = generateRandomProcessId();
- Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPseudonym, DE))
- .thenReturn(new ZmrRegisterResult(Collections.emptyList(), zmrProcessId));
- Mockito.when(zmrClient.searchWithMds(zmrProcessId, randomGivenName, randomFamilyName, randomBirthDate, DE))
- .thenReturn(zmrRegisterResult(randomRegisterResult(), zmrProcessId));
- Mockito.when(zmrClient.update(any(), any(), any()))
- .thenThrow(new IllegalStateException("ZMR update should not be neccessary"));
-
- Mockito.when(ernpClient.searchWithPersonIdentifier(randomPseudonym, DE)).thenReturn(
- emptyErnpRegisterResult());
- Mockito.when(ernpClient.searchWithMds(randomGivenName, randomFamilyName, randomBirthDate, DE))
- .thenReturn(ernpRegisterResult(randomRegisterResult()));
- Mockito.when(ernpClient.update(any(), any()))
- .thenThrow(new IllegalStateException("ERnP update should not be neccessary"));
-
-
-
- // execute test
- task.execute(pendingReq, executionContext);
-
- // validate state
- checkIntermediateResult(2);
-
- }
-
- /**
- * resultByMdsSearch
- */
- @Test
- @DirtiesContext
- public void multipleResultsByMdsSearch() throws TaskExecutionException, EidasSAuthenticationException {
- BigInteger zmrProcessId = generateRandomProcessId();
- Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPseudonym, DE))
- .thenReturn(new ZmrRegisterResult(Collections.emptyList(), zmrProcessId));
- Mockito.when(zmrClient.searchCountrySpecific(eq(zmrProcessId), any(PersonSuchenRequest.class), any(String.class)))
- .thenReturn(new ZmrRegisterResult(Collections.emptyList(), zmrProcessId));
- Mockito.when(zmrClient.searchWithMds(zmrProcessId, randomGivenName, randomFamilyName, randomBirthDate, DE))
- .thenReturn(zmrRegisterResult(randomRegisterResult(randomBpk + "2"), zmrProcessId));
- Mockito.when(zmrClient.update(any(), any(), any()))
- .thenThrow(new IllegalStateException("ZMR update should not be neccessary"));
-
- Mockito.when(ernpClient.searchWithPersonIdentifier(randomPseudonym, DE))
- .thenReturn(emptyErnpRegisterResult());
- Mockito.when(ernpClient.searchWithMds(randomGivenName, randomFamilyName, randomBirthDate, DE))
- .thenReturn(ernpRegisterResult(Arrays.asList(randomRegisterResult(), randomRegisterResult(randomBpk + "1"))));
-
- // execute test
- task.execute(pendingReq, executionContext);
-
- // validate state
- checkIntermediateResult(3);
-
- }
-
- @NotNull
- private ZmrSoapClient.ZmrRegisterResult emptyZmrRegisterResult() {
- return new ZmrRegisterResult(Collections.emptyList(), generateRandomProcessId());
- }
-
- @NotNull
- private ErnpRegisterResult emptyErnpRegisterResult() {
- return new ErnpRegisterResult(Collections.emptyList());
- }
-
- @NotNull
- private ZmrRegisterResult zmrRegisterResult(RegisterResult registerResult, BigInteger processId) {
- return new ZmrRegisterResult(Collections.singletonList(registerResult), processId);
- }
-
- @NotNull
- private ZmrRegisterResult zmrRegisterResult(RegisterResult registerResult) {
- return zmrRegisterResult(registerResult, generateRandomProcessId());
- }
-
- @NotNull
- private ErnpRegisterResult ernpRegisterResult(RegisterResult registerResult) {
- return new ErnpRegisterResult(Collections.singletonList(registerResult));
- }
-
- @NotNull
- private ErnpRegisterResult ernpRegisterResult(List<RegisterResult> registerResult) {
- return new ErnpRegisterResult(registerResult);
- }
-
- @NotNull
- private RegisterResult randomRegisterResult() {
- return randomRegisterResult(randomGivenName, randomBpk);
- }
-
- @NotNull
- private RegisterResult randomRegisterResult(String randomBpk) {
- return randomRegisterResult(randomGivenName, randomBpk);
- }
-
- @NotNull
- private RegisterResult randomRegisterResult(String randomGivenName, String randomBpk) {
- return RegisterResult.builder()
- .bpk(randomBpk)
- .pseudonym(Collections.singletonList(randomPseudonym))
- .givenName(randomGivenName)
- .familyName(randomFamilyName)
- .dateOfBirth(randomBirthDate)
- .build();
- }
-
- @NotNull
- private RegisterResult randomRegisterResult(String randomGivenName, String randomBpk, String placeOfBirth) {
- return RegisterResult.builder()
- .bpk(randomBpk)
- .pseudonym(Collections.singletonList(randomPseudonym))
- .givenName(randomGivenName)
- .familyName(randomFamilyName)
- .dateOfBirth(randomBirthDate)
- .placeOfBirth(placeOfBirth)
- .build();
- }
-
- @NotNull
- private AuthenticationResponse buildDummyAuthResponseRandomPerson() throws URISyntaxException {
- return buildDummyAuthResponse(randomGivenName, randomFamilyName, DE_ST + randomPseudonym, randomBirthDate);
- }
-
- private BigInteger generateRandomProcessId() {
- return new BigInteger(RandomStringUtils.randomNumeric(10));
-
- }
-
- private void checkMatchingSuccessState(IRequest pendingReq, String bpk, String familyName, String givenName,
- String birhday, String countryCode) {
- assertNull("Find intermediate matching data but matching should be finished",
- MatchingTaskUtils.getIntermediateMatchingResult(pendingReq));
- assertNotNull("find no eIDAS inbut data", MatchingTaskUtils.getInitialEidasData(pendingReq));
-
- MatchedPersonResult personInfo = MatchingTaskUtils.getFinalMatchingResult(pendingReq);
- assertNotNull("no final matching result", personInfo);
- assertEquals("wrong bpk", bpk, personInfo.getBpk());
- assertEquals("wrong givenName", givenName, personInfo.getGivenName());
- assertEquals("wrong familyName", familyName, personInfo.getFamilyName());
- assertEquals("wrong dateOfBirth", birhday, personInfo.getDateOfBirth());
- assertEquals("wrong countryCode", countryCode, personInfo.getCountryCode());
-
- }
-
- private void checkIntermediateResult(int resultSize) {
- Boolean transitionGUI = (Boolean) executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK);
- Assert.assertTrue("Wrong transition", transitionGUI);
- Boolean transitionErnb = (Boolean) executionContext.get(Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK);
- Assert.assertNull("Wrong transition", transitionErnb);
-
- assertNotNull("find no eIDAS inbut data", MatchingTaskUtils.getInitialEidasData(pendingReq));
- assertNull("Find final matching data but no match sould be found",
- MatchingTaskUtils.getFinalMatchingResult(pendingReq));
-
- RegisterStatusResults result = MatchingTaskUtils.getIntermediateMatchingResult(pendingReq);
- assertNotNull("Find no intermediate matching data", result);
- assertEquals("wrong intermediate result size", resultSize, result.getResultCount());
-
- }
-
- @NotNull
- private AuthenticationResponse buildDummyAuthResponse(String givenName, String familyName, String identifier,
- String dateOfBirth) throws URISyntaxException {
- return buildDummyAuthResponse(givenName, familyName, identifier, dateOfBirth, null, null, null);
- }
-
- @NotNull
- private AuthenticationResponse buildDummyAuthResponseDE(String givenName, String familyName, String identifier,
- String dateOfBirth, String placeOfBirth,
- String birthName) throws URISyntaxException {
- return buildDummyAuthResponse(givenName, familyName, identifier, dateOfBirth, null, placeOfBirth, birthName);
- }
-
- @NotNull
- private AuthenticationResponse buildDummyAuthResponse(String givenName, String familyName, String identifier,
- String dateOfBirth, String taxNumber, String placeOfBirth,
- String birthName) throws URISyntaxException {
- ImmutableAttributeMap.Builder builder = ImmutableAttributeMap.builder()
- .put(generateStringAttribute(Constants.eIDAS_ATTR_PERSONALIDENTIFIER,
- randomAlphabetic(2), randomAlphabetic(2)), identifier)
- .put(generateStringAttribute(Constants.eIDAS_ATTR_CURRENTFAMILYNAME,
- randomAlphabetic(3), randomAlphabetic(3)), familyName)
- .put(generateStringAttribute(Constants.eIDAS_ATTR_CURRENTGIVENNAME,
- randomAlphabetic(4), randomAlphabetic(4)), givenName)
- .put(generateDateTimeAttribute(Constants.eIDAS_ATTR_DATEOFBIRTH,
- randomAlphabetic(5), randomAlphabetic(5)), dateOfBirth);
- if (taxNumber != null) {
- builder.put(generateStringAttribute(Constants.eIDAS_ATTR_TAXREFERENCE,
- randomAlphabetic(6), randomAlphabetic(6)), taxNumber);
- }
- if (birthName != null) {
- builder.put(generateStringAttribute(Constants.eIDAS_ATTR_BIRTHNAME,
- randomAlphabetic(7), randomAlphabetic(7)), birthName);
- }
- if (placeOfBirth != null) {
- builder.put(generateStringAttribute(Constants.eIDAS_ATTR_PLACEOFBIRTH,
- randomAlphabetic(8), randomAlphabetic(8)), placeOfBirth);
- }
- final ImmutableAttributeMap attributeMap = builder.build();
-
- return new AuthenticationResponse.Builder().id(randomAlphabetic(5))
- .issuer(randomAlphabetic(5)).subject(randomAlphabetic(5)).statusCode("200")
- .inResponseTo(randomAlphabetic(5)).subjectNameIdFormat(randomAlphabetic(5))
- .attributes(attributeMap).build();
- }
-
- private AttributeDefinition<Object> generateStringAttribute(String friendlyName, String fragment, String prefix)
- throws URISyntaxException {
- return generateAttribute(friendlyName, fragment, prefix, "eu.eidas.auth.commons.attribute.impl" +
- ".LiteralStringAttributeValueMarshaller");
- }
-
- @SuppressWarnings("SameParameterValue")
- private AttributeDefinition<Object> generateDateTimeAttribute(String friendlyName, String fragment, String prefix)
- throws URISyntaxException {
- return generateAttribute(friendlyName, fragment, prefix, "eu.eidas.auth.commons.attribute.impl" +
- ".DateTimeAttributeValueMarshaller");
- }
-
- private AttributeDefinition<Object> generateAttribute(String friendlyName, String fragment, String prefix,
- String marshaller) throws URISyntaxException {
- return AttributeDefinition.builder()
- .friendlyName(friendlyName).nameUri(new URI("ad", "sd", fragment))
- .personType(PersonType.LEGAL_PERSON).xmlType(new QName("http://saf", "as", prefix))
- .attributeValueMarshaller(marshaller).build();
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskWithRegistersTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskWithRegistersTest.java
deleted file mode 100644
index 6d0e7c31..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskWithRegistersTest.java
+++ /dev/null
@@ -1,683 +0,0 @@
-/*
- * Copyright 2020 A-SIT Plus GmbH
- * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ,
- * A-SIT Plus GmbH, A-SIT, and Graz University of Technology.
- *
- * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "License");
- * You may not use this work except in compliance with the License.
- * You may obtain a copy of the License at:
- * https://joinup.ec.europa.eu/news/understanding-eupl-v12
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses.
- * The "NOTICE" text file is part of the distribution. Any derivative works
- * that you distribute must include a readable copy of the "NOTICE" text file.
- */
-
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks;
-
-import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThrows;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.when;
-
-import java.math.BigInteger;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.namespace.QName;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.RandomStringUtils;
-import org.jetbrains.annotations.NotNull;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import com.github.skjolber.mockito.soap.SoapServiceRule;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.ernp.IErnpClient;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.IZmrClient;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.ZmrSoapClient.ZmrRegisterResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.MatchedPersonResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.RegisterResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidPostProcessingException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasAttributeException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.WorkflowException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.CountrySpecificDetailSearchProcessor;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.GenericEidProcessor;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.ICcSpecificEidProcessingService;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterStatusResults;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.InitialSearchTask;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.clients.ErnpRestClientTest;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.clients.ZmrClientTest;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils;
-import at.gv.bmi.namespace.zmr_su.base._20040201.RequestType;
-import at.gv.bmi.namespace.zmr_su.base._20040201.ResponseType;
-import at.gv.bmi.namespace.zmr_su.base._20040201_.ServicePort;
-import at.gv.egiz.eaaf.core.api.IRequest;
-import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;
-import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;
-import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;
-import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl;
-import eu.eidas.auth.commons.attribute.AttributeDefinition;
-import eu.eidas.auth.commons.attribute.ImmutableAttributeMap;
-import eu.eidas.auth.commons.attribute.PersonType;
-import eu.eidas.auth.commons.light.impl.LightRequest;
-import eu.eidas.auth.commons.protocol.impl.AuthenticationResponse;
-import lombok.SneakyThrows;
-import okhttp3.mockwebserver.MockResponse;
-import okhttp3.mockwebserver.MockWebServer;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml",
- "/SpringTest-context_ccSearchProcessor_test.xml"
-})
-@DirtiesContext(classMode = ClassMode.BEFORE_CLASS)
-public class InitialSearchTaskWithRegistersTest {
-
- private static final String EE = "EE";
- private static final String DE = "DE";
-
- @Rule
- public SoapServiceRule soap = SoapServiceRule.newInstance();
-
- @Autowired IErnpClient ernpClient;
- @Autowired IZmrClient zmrClient;
- @Autowired List<CountrySpecificDetailSearchProcessor> handlers;
-
- private RegisterSearchService registerSearchService;
-
- private ServicePort zmrMock = null;
-
- private static MockWebServer mockWebServer;
-
- private final ICcSpecificEidProcessingService eidPostProcessor = createEidPostProcessor();
- private InitialSearchTask task;
-
- final ExecutionContext executionContext = new ExecutionContextImpl();
- private TestRequestImpl pendingReq;
- private static JAXBContext jaxbContext;
-
- /**
- * Initialize jUnit class.
- */
- @BeforeClass
- @SneakyThrows
- public static void classInitializer() {
- jaxbContext = JAXBContext.newInstance(
- at.gv.bmi.namespace.zmr_su.zmr._20040201.ObjectFactory.class,
- at.gv.bmi.namespace.zmr_su.gis._20070725.ObjectFactory.class,
- at.gv.bmi.namespace.zmr_su.base._20040201.ObjectFactory.class);
-
- mockWebServer = new MockWebServer();
- mockWebServer.start(1718);
-
- }
-
- @AfterClass
- @SneakyThrows
- public static void resetTestEnviroment() {
- mockWebServer.shutdown();
-
- }
-
- /**
- * jUnit test set-up.
- */
- @Before
- @SneakyThrows
- public void setUp() throws URISyntaxException, EaafStorageException {
- if (zmrMock == null) {
- zmrMock = soap.mock(ServicePort.class, "http://localhost:1234/demozmr");
-
- }
-
- registerSearchService = new RegisterSearchService(handlers, zmrClient, ernpClient);
- task = new InitialSearchTask(registerSearchService, eidPostProcessor);
-
- MockHttpServletRequest httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler");
- MockHttpServletResponse httpResp = new MockHttpServletResponse();
- RequestContextHolder.resetRequestAttributes();
- RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));
-
- pendingReq = new TestRequestImpl();
-
- }
-
- /**
- * One match, but register update needed
- * <p>
- * <b>Check if ZMR update request is NOT executed in case of MDS change!</b>
- * </p>
- */
- @Test
- @DirtiesContext
- public void singlePersonalIdMatchUpdateNecessary_ZmrNotDone() throws Exception {
-
- String oldGivenName = "XXXClaus - Maria";
-
- //inject eIDAS data
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(
- Constants.DATA_FULL_EIDAS_RESPONSE,
- buildDummyAuthResponse("XXXKlaus - Maria", "XXXvon Brandenburg",
- "DE/AT/7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit", "1994-12-31"));
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any()))
- .thenReturn(loadResponseFromFile("/data/zmr/seq_1-8_search_with_personalId_only_resp.xml"))
-
- //perform prepair-update request
- .thenReturn(loadResponseFromFile("/data/zmr/seq_1-8_search_with_personalId_only_resp.xml"))
-
- //do not make an update because, MDS update is not allowed and no other data has been changed
- .thenThrow(new RuntimeException("This request is not needed any more"));
-
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody("{}")
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
-
- // execute test
- task.execute(pendingReq, executionContext);
-
- // validate state
- //INFO: has to be the old givenName because ZMR allows no update of MDS information
- checkMatchingSuccessState(pendingReq, "UgeknNsc26lVuB7U/uYGVmWtnnA=", "XXXvon Brandenburg",
- oldGivenName, "1994-12-31", DE);
-
- // validate request
- assertEquals("wrong number of req.", 2, zmrReq.getAllValues().size());
- assertNotNull("Personensuche req.", zmrReq.getValue().getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getValue(), ZmrClientTest.PROCESS_TASK_SEARCH,
- new BigInteger("367100000000079"), "jUnit123456");
-
- }
-
- /**
- * One match, but register update needed
- * <p>
- * <b>Check if ZMR update request is executed in case of other data than MDS change!</b>
- * </p>
- */
- @Test
- @DirtiesContext
- public void singlePersonalIdMatchUpdateNecessary_ZmrDone() throws Exception {
-
- String oldGivenName = "XXXClaus - Maria";
- String placeOfBirth = RandomStringUtils.randomAlphabetic(5);
-
- //inject eIDAS data
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(
- Constants.DATA_FULL_EIDAS_RESPONSE,
- buildDummyAuthResponse(oldGivenName, "XXXvon Brandenburg",
- "DE/AT/7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit", "1994-12-31", null, placeOfBirth, null));
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any()))
- .thenReturn(loadResponseFromFile("/data/zmr/seq_1-8_search_with_personalId_only_resp_no_additional_attributes.xml"))
-
- //perform prepair-update request
- .thenReturn(loadResponseFromFile("/data/zmr/seq_1-8_search_with_personalId_only_resp_no_additional_attributes.xml"))
-
- //do make an update because, MDS DOES NOT change, but additional attribute was available
- .thenReturn(loadResponseFromFile("/data/zmr/seq_3-6_kitt_update_resp.xml"));
-
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody("{}")
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- // execute test
- task.execute(pendingReq, executionContext);
-
- // validate state
- //INFO: has to be the old givenName because ZMR allows no update of MDS information
- checkMatchingSuccessState(pendingReq, "UgeknNsc26lVuB7U/uYGVmWtnnA=", "XXXvon Brandenburg",
- oldGivenName, "1994-12-31", DE);
-
- // validate request
- assertEquals("wrong number of req.", 3, zmrReq.getAllValues().size());
- assertNotNull("Personensuche req.", zmrReq.getAllValues().get(0).getPersonSuchenRequest());
- checkBasicRequestParameters(zmrReq.getAllValues().get(0), ZmrClientTest.PROCESS_TASK_SEARCH, null, "jUnit123456");
-
- assertNotNull("Personenupdate req.", zmrReq.getAllValues().get(2).getPersonAendernRequest());
- checkBasicRequestParameters(zmrReq.getAllValues().get(2), ZmrClientTest.PROCESS_TASK_UPDATE,
- new BigInteger("367100000000079"), "jUnit123456");
- assertEquals("eIDAS attribute to add", 4,
- zmrReq.getAllValues().get(2).getPersonAendernRequest().getEidasIdentitaetAnlage().size());
- assertNull("ZMR update MDS", zmrReq.getAllValues().get(2).getPersonAendernRequest().getPersonAenderung());
-
- }
-
-
- /**
- * Two matches by PersonalId found in ZMR
- *
- * @throws EidasSAuthenticationException
- */
- @Test
- @DirtiesContext
- @SneakyThrows
- public void multiPersonalIdMatch_Zmr() throws EidasSAuthenticationException {
- //inject eIDAS data
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(
- Constants.DATA_FULL_EIDAS_RESPONSE,
- buildDummyAuthResponse("XXXKlaus - Maria", "XXXvon Brandenburg",
- "DE/AT/7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit", "1994-12-31"));
-
- // inject response
- when(zmrMock.service(any(), any()))
- .thenReturn(loadResponseFromFile("/data/zmr/search_with_personalId_only_resp_moreThanOne.xml"))
- .thenThrow(new RuntimeException("This request is not needed any more"));
-
- // execute task
- TaskExecutionException exception = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- // validate state
- assertTrue("Wrong exception", (exception.getOriginalException() instanceof WorkflowException));
- assertTrue("Wrong flag 'manualFixNeeded'",
- ((WorkflowException) exception.getOriginalException()).isRequiresManualFix());
-
- }
-
- /**
- * Find single person in ZMR by country specifics.
- */
- @Test
- @DirtiesContext
- public void singlePersonFindWithCountySpecifics_Ernp() throws Exception {
- //inject eIDAS data
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(
- Constants.DATA_FULL_EIDAS_RESPONSE,
- buildDummyAuthResponse("vdqZZIaA", "mRjMKAQc",
- "DE/AT/nj1m79jm9z", "1996-01-01",
- null, "VRNCAylF", "miEklFHC"));
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
- BigInteger processId = new BigInteger("367100000000079");
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any()))
- .thenReturn(loadResponseFromFile("/data/zmr/empty_zmr_result.xml")) //personalId search
- .thenReturn(loadResponseFromFile("/data/zmr/empty_zmr_result.xml")) //CC specific search
- .thenThrow(new RuntimeException("This request is not needed any more"));
-
- mockWebServer.enqueue(new MockResponse().setResponseCode(200) //personalId search
- .setBody("{}")
- .setHeader("Content-Type", "application/json;charset=utf-8"));
- mockWebServer.enqueue(new MockResponse().setResponseCode(200) //CC specific search
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/2_search_with_cc_specific_resp.json"), "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
- mockWebServer.enqueue(new MockResponse().setResponseCode(200) //KITT search
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/2_kitt_search_latest_resp.json"), "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
- mockWebServer.enqueue(new MockResponse().setResponseCode(200) //KITT update
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/2_kitt_update_resp.json"), "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- // execute test
- task.execute(pendingReq, executionContext);
-
- // validate state
- checkMatchingSuccessState(pendingReq, "TBGoMlirU881e2jMGETa9WLx1+A=", "mRjMKAQc",
- "vdqZZIaA", "1996-01-01", DE);
-
- // validate request
- assertEquals("wrong number of req.", 2, zmrReq.getAllValues().size());
- checkBasicRequestParameters(zmrReq.getAllValues().get(0), ZmrClientTest.PROCESS_TASK_SEARCH, null, "jUnit123456");
- checkBasicRequestParameters(zmrReq.getAllValues().get(1), ZmrClientTest.PROCESS_TASK_SEARCH, processId, "jUnit123456");
-
- }
-
-
- /**
- * Find single person in ZMR by country specifics.
- */
- @Test
- @DirtiesContext
- public void singlePersonFindWithCountySpecifics_Zmr() throws Exception {
- //inject eIDAS data
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(
- Constants.DATA_FULL_EIDAS_RESPONSE,
- buildDummyAuthResponse("XXXClaus - Maria", "XXXvon Brandenburg",
- "DE/AT/7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit_with_New_ID", "1994-12-31",
- null, "Hintergigritzpotschn", "XXXvon Heuburg"));
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
- BigInteger processId = new BigInteger("367100000000079");
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any()))
- .thenReturn(loadResponseFromFile("/data/zmr/empty_zmr_result.xml")) //personalId search
- .thenReturn(loadResponseFromFile("/data/zmr/seq_1-8_search_with_personalId_only_resp.xml")) //CC specific search
- .thenReturn(loadResponseFromFile("/data/zmr/seq_1-4_kitt_get_latest_version_resp.xml")) //KITT latest version
- .thenReturn(loadResponseFromFile("/data/zmr/seq_1-6_kitt_update_resp.xml")) //KITT update
- .thenThrow(new RuntimeException("This request is not needed any more"));
-
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody("{}")
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- mockWebServer.enqueue(new MockResponse().setResponseCode(200) //CC specific search
- .setBody("{}")
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
-
- // execute test
- task.execute(pendingReq, executionContext);
-
- // validate state
- checkMatchingSuccessState(pendingReq, "UgeknNsc26lVuB7U/uYGVmWtnnA=", "XXXvon Brandenburg",
- "XXXClaus - Maria", "1994-12-31", DE);
-
- // validate request
- assertEquals("wrong number of req.", 4, zmrReq.getAllValues().size());
- checkBasicRequestParameters(zmrReq.getAllValues().get(0), ZmrClientTest.PROCESS_TASK_SEARCH, null, "jUnit123456");
- checkBasicRequestParameters(zmrReq.getAllValues().get(1), ZmrClientTest.PROCESS_TASK_SEARCH, processId, "jUnit123456");
- checkBasicRequestParameters(zmrReq.getAllValues().get(2), ZmrClientTest.PROCESS_TASK_SEARCH, processId, "jUnit123456");
- checkBasicRequestParameters(zmrReq.getAllValues().get(3), ZmrClientTest.PROCESS_TASK_UPDATE, processId, "jUnit123456");
-
- }
-
- /**
- * Find one match with MDS search in ZMR.
- */
- @Test
- @DirtiesContext
- @SneakyThrows
- public void resultByMdsSearch_Zmr() throws TaskExecutionException, EidasSAuthenticationException {
- //inject eIDAS data
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(
- Constants.DATA_FULL_EIDAS_RESPONSE,
- buildDummyAuthResponse("XXXClaus - Maria", "XXXvon Brandenburg",
- "DE/AT/7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit_with_New_ID", "1994-12-31"));
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
- BigInteger processId = new BigInteger("367100000000079");
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any()))
- .thenReturn(loadResponseFromFile("/data/zmr/empty_zmr_result.xml")) //personalId search
- //CC-specific will be ignored because CC is DE but BirthName and PlaceOfBirth is 'null'
- .thenReturn(loadResponseFromFile("/data/zmr/seq_1-2_search_with_mds_resp.xml")) //MDS specific search
- .thenThrow(new RuntimeException("This request is not needed any more"));
-
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody("{}")
- .setHeader("Content-Type", "application/json;charset=utf-8"));
- mockWebServer.enqueue(new MockResponse().setResponseCode(200) //MDS specific search
- .setBody("{}")
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
- // execute test
- task.execute(pendingReq, executionContext);
-
- // validate state
- checkIntermediateResult(1);
-
- // validate request
- assertEquals("wrong number of req.", 2, zmrReq.getAllValues().size());
- checkBasicRequestParameters(zmrReq.getAllValues().get(0), ZmrClientTest.PROCESS_TASK_SEARCH, null, "jUnit123456");
- checkBasicRequestParameters(zmrReq.getAllValues().get(1), ZmrClientTest.PROCESS_TASK_SEARCH, processId, "jUnit123456");
-
- }
-
- /**
- * Find one match with MDS search in ZMR.
- */
- @Test
- @DirtiesContext
- @SneakyThrows
- public void resultByMdsSearch_Zmr_Second() throws TaskExecutionException, EidasSAuthenticationException {
- //inject eIDAS data
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(
- Constants.DATA_FULL_EIDAS_RESPONSE,
- buildDummyAuthResponse("XXXClaus - Maria", "XXXvon Brandenburg",
- "DE/AT/7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit_with_New_ID", "1994-12-31",
- null, "Hintergigritzpotschn", "XXXvon Heuburg"));
-
- final ArgumentCaptor<RequestType> zmrReq = ArgumentCaptor.forClass(RequestType.class);
- BigInteger processId = new BigInteger("367100000000079");
-
- // inject response
- when(zmrMock.service(zmrReq.capture(), any()))
- .thenReturn(loadResponseFromFile("/data/zmr/empty_zmr_result.xml")) //personalId search
- .thenReturn(loadResponseFromFile("/data/zmr/empty_zmr_result.xml")) //CC-specific search
- .thenReturn(loadResponseFromFile("/data/zmr/search_with_personalId_only_resp_moreThanOne.xml")) //MDS specific search
- .thenThrow(new RuntimeException("This request is not needed any more"));
-
-
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody("{}")
- .setHeader("Content-Type", "application/json;charset=utf-8"));
- mockWebServer.enqueue(new MockResponse().setResponseCode(200) //CC specific search
- .setBody("{}")
- .setHeader("Content-Type", "application/json;charset=utf-8"));
- mockWebServer.enqueue(new MockResponse().setResponseCode(200) //MDS specific search
- .setBody(IOUtils.toString(
- ErnpRestClientTest.class.getResourceAsStream("/data/ernp/3_search_with_mds_resp.json"), "UTF-8"))
- .setHeader("Content-Type", "application/json;charset=utf-8"));
-
-
- // execute test
- task.execute(pendingReq, executionContext);
-
- // validate state
- checkIntermediateResult(3);
-
- // validate request
- assertEquals("wrong number of req.", 3, zmrReq.getAllValues().size());
- checkBasicRequestParameters(zmrReq.getAllValues().get(0), ZmrClientTest.PROCESS_TASK_SEARCH, null, "jUnit123456");
- checkBasicRequestParameters(zmrReq.getAllValues().get(1), ZmrClientTest.PROCESS_TASK_SEARCH, processId, "jUnit123456");
- checkBasicRequestParameters(zmrReq.getAllValues().get(2), ZmrClientTest.PROCESS_TASK_SEARCH, processId, "jUnit123456");
-
- }
-
-
-
- @NotNull
- private ICcSpecificEidProcessingService createEidPostProcessor() {
- return new ICcSpecificEidProcessingService() {
-
- private final GenericEidProcessor genericEidProcessor = new GenericEidProcessor();
-
- @Override
- public SimpleEidasData postProcess(Map<String, Object> eidasAttrMap) throws EidPostProcessingException, EidasAttributeException {
- return genericEidProcessor.postProcess(eidasAttrMap);
- }
-
- @Override
- public void preProcess(String selectedCC, IRequest pendingReq, LightRequest.Builder authnRequestBuilder) {
- genericEidProcessor.preProcess(pendingReq, authnRequestBuilder);
- }
- };
- }
-
- @NotNull
- private ZmrRegisterResult zmrRegisterResult(RegisterResult registerResult, BigInteger processId) {
- return new ZmrRegisterResult(Collections.singletonList(registerResult), processId);
- }
-
- @NotNull
- private ZmrRegisterResult zmrRegisterResult(RegisterResult registerResult) {
- return zmrRegisterResult(registerResult, generateRandomProcessId());
- }
-
-
- private BigInteger generateRandomProcessId() {
- return new BigInteger(RandomStringUtils.randomNumeric(10));
-
- }
-
- private void checkMatchingSuccessState(IRequest pendingReq, String bpk, String familyName, String givenName,
- String birhday, String countryCode) {
- assertNull("Find intermediate matching data but matching should be finished",
- MatchingTaskUtils.getIntermediateMatchingResult(pendingReq));
- assertNotNull("find no eIDAS inbut data", MatchingTaskUtils.getInitialEidasData(pendingReq));
-
- MatchedPersonResult personInfo = MatchingTaskUtils.getFinalMatchingResult(pendingReq);
- assertNotNull("no final matching result", personInfo);
- assertEquals("wrong bpk", bpk, personInfo.getBpk());
- assertEquals("wrong givenName", givenName, personInfo.getGivenName());
- assertEquals("wrong familyName", familyName, personInfo.getFamilyName());
- assertEquals("wrong dateOfBirth", birhday, personInfo.getDateOfBirth());
- assertEquals("wrong countryCode", countryCode, personInfo.getCountryCode());
-
- }
-
- private void checkIntermediateResult(int resultSize) {
- Boolean transitionGUI = (Boolean) executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK);
- Assert.assertTrue("Wrong transition", transitionGUI);
- Boolean transitionErnb = (Boolean) executionContext.get(Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK);
- Assert.assertNull("Wrong transition", transitionErnb);
-
- assertNotNull("find no eIDAS inbut data", MatchingTaskUtils.getInitialEidasData(pendingReq));
- assertNull("Find final matching data but no match sould be found",
- MatchingTaskUtils.getFinalMatchingResult(pendingReq));
-
- RegisterStatusResults result = MatchingTaskUtils.getIntermediateMatchingResult(pendingReq);
- assertNotNull("Find no intermediate matching data", result);
- assertEquals("wrong intermediate result size", resultSize, result.getResultCount());
-
- }
-
- @NotNull
- private AuthenticationResponse buildDummyAuthResponse(String givenName, String familyName, String identifier,
- String dateOfBirth) throws URISyntaxException {
- return buildDummyAuthResponse(givenName, familyName, identifier, dateOfBirth, null, null, null);
- }
-
- @NotNull
- private AuthenticationResponse buildDummyAuthResponseDE(String givenName, String familyName, String identifier,
- String dateOfBirth, String placeOfBirth,
- String birthName) throws URISyntaxException {
- return buildDummyAuthResponse(givenName, familyName, identifier, dateOfBirth, null, placeOfBirth, birthName);
- }
-
- @NotNull
- private AuthenticationResponse buildDummyAuthResponse(String givenName, String familyName, String identifier,
- String dateOfBirth, String taxNumber, String placeOfBirth,
- String birthName) throws URISyntaxException {
- ImmutableAttributeMap.Builder builder = ImmutableAttributeMap.builder()
- .put(generateStringAttribute(Constants.eIDAS_ATTR_PERSONALIDENTIFIER,
- randomAlphabetic(2), randomAlphabetic(2)), identifier)
- .put(generateStringAttribute(Constants.eIDAS_ATTR_CURRENTFAMILYNAME,
- randomAlphabetic(3), randomAlphabetic(3)), familyName)
- .put(generateStringAttribute(Constants.eIDAS_ATTR_CURRENTGIVENNAME,
- randomAlphabetic(4), randomAlphabetic(4)), givenName)
- .put(generateDateTimeAttribute(Constants.eIDAS_ATTR_DATEOFBIRTH,
- randomAlphabetic(5), randomAlphabetic(5)), dateOfBirth);
- if (taxNumber != null) {
- builder.put(generateStringAttribute(Constants.eIDAS_ATTR_TAXREFERENCE,
- randomAlphabetic(6), randomAlphabetic(6)), taxNumber);
- }
- if (birthName != null) {
- builder.put(generateStringAttribute(Constants.eIDAS_ATTR_BIRTHNAME,
- randomAlphabetic(7), randomAlphabetic(7)), birthName);
- }
- if (placeOfBirth != null) {
- builder.put(generateStringAttribute(Constants.eIDAS_ATTR_PLACEOFBIRTH,
- randomAlphabetic(8), randomAlphabetic(8)), placeOfBirth);
- }
- final ImmutableAttributeMap attributeMap = builder.build();
-
- return new AuthenticationResponse.Builder().id(randomAlphabetic(5))
- .issuer(randomAlphabetic(5)).subject(randomAlphabetic(5)).statusCode("200")
- .inResponseTo(randomAlphabetic(5)).subjectNameIdFormat(randomAlphabetic(5))
- .attributes(attributeMap).build();
- }
-
- private AttributeDefinition<Object> generateStringAttribute(String friendlyName, String fragment, String prefix)
- throws URISyntaxException {
- return generateAttribute(friendlyName, fragment, prefix, "eu.eidas.auth.commons.attribute.impl" +
- ".LiteralStringAttributeValueMarshaller");
- }
-
- @SuppressWarnings("SameParameterValue")
- private AttributeDefinition<Object> generateDateTimeAttribute(String friendlyName, String fragment, String prefix)
- throws URISyntaxException {
- return generateAttribute(friendlyName, fragment, prefix, "eu.eidas.auth.commons.attribute.impl" +
- ".DateTimeAttributeValueMarshaller");
- }
-
- private AttributeDefinition<Object> generateAttribute(String friendlyName, String fragment, String prefix,
- String marshaller) throws URISyntaxException {
- return AttributeDefinition.builder()
- .friendlyName(friendlyName).nameUri(new URI("ad", "sd", fragment))
- .personType(PersonType.LEGAL_PERSON).xmlType(new QName("http://saf", "as", prefix))
- .attributeValueMarshaller(marshaller).build();
- }
-
- private ResponseType loadResponseFromFile(String filepath) throws JAXBException {
- final Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
- JAXBElement<?> resp = (JAXBElement<?>) unmarshaller.unmarshal(ZmrClientTest.class.getResourceAsStream(
- filepath));
- return (ResponseType) resp.getValue();
-
- }
-
- private void checkBasicRequestParameters(RequestType requestType, String vorgangName, BigInteger processId,
- String behoerdennummer) {
- assertNotNull("no workflow infos", requestType.getWorkflowInfoClient());
- assertEquals("processName", ZmrClientTest.PROCESS_GENERAL, requestType.getWorkflowInfoClient().getProzessName());
- assertEquals("vorgangsName", vorgangName, requestType.getWorkflowInfoClient().getVorgangName());
-
- if (processId != null) {
- assertEquals("processId", processId, requestType.getWorkflowInfoClient().getProzessInstanzID());
- } else {
- assertNull("processId", requestType.getWorkflowInfoClient().getProzessInstanzID());
- }
-
- assertNotNull("no client infos", requestType.getClientInfo());
- assertEquals("behoerdennummer", behoerdennummer, requestType.getClientInfo().getOrganisation()
- .getBehoerdenNr());
- }
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAustrianResidenceGuiResponseTaskRegisterTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAustrianResidenceGuiResponseTaskRegisterTest.java
deleted file mode 100644
index 4f1ff61b..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAustrianResidenceGuiResponseTaskRegisterTest.java
+++ /dev/null
@@ -1,337 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThrows;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.when;
-
-import java.math.BigInteger;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.jetbrains.annotations.NotNull;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.i18n.LocaleContextHolder;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import com.github.skjolber.mockito.soap.SoapServiceRule;
-import com.google.common.collect.Lists;
-
-import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.controller.AdresssucheController;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.controller.AdresssucheController.AdresssucheOutput;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.MatchedPersonResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.RegisterResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterOperationStatus;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterStatusResults;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveAustrianResidenceGuiResponseTask;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.clients.ZmrClientTest;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils;
-import at.gv.bmi.namespace.zmr_su.base._20040201.ResponseType;
-import at.gv.bmi.namespace.zmr_su.base._20040201_.ServicePort;
-import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;
-import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;
-import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl;
-import lombok.SneakyThrows;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"
-})
-public class ReceiveAustrianResidenceGuiResponseTaskRegisterTest {
-
- @Autowired
- protected MsConnectorDummyConfigMap authConfig;
-
- @Autowired
- private RegisterSearchService registerSearchService;
-
- @Rule
- public SoapServiceRule soap = SoapServiceRule.newInstance();
- private ServicePort zmrMock = null;
- private static JAXBContext jaxbContext;
-
- private ReceiveAustrianResidenceGuiResponseTask task;
- private ExecutionContext executionContext;
- private MockHttpServletRequest httpReq;
- private MockHttpServletResponse httpResp;
- private TestRequestImpl pendingReq;
-
-
- /**
- * Initialize jUnit class.
- */
- @BeforeClass
- @SneakyThrows
- public static void classInitializer() {
- jaxbContext = JAXBContext.newInstance(
- at.gv.bmi.namespace.zmr_su.zmr._20040201.ObjectFactory.class,
- at.gv.bmi.namespace.zmr_su.gis._20070725.ObjectFactory.class,
- at.gv.bmi.namespace.zmr_su.base._20040201.ObjectFactory.class);
-
- }
-
- /**
- * jUnit test set-up.
- *
- * @throws Exception In case of an set-up error
- */
- @Before
- public void setUp() throws Exception {
- if (zmrMock == null) {
- zmrMock = soap.mock(ServicePort.class, "http://localhost:1234/demozmr");
-
- }
-
- executionContext = new ExecutionContextImpl();
- task = new ReceiveAustrianResidenceGuiResponseTask(registerSearchService);
-
- httpReq = new MockHttpServletRequest("POST", "https://localhost/ms_connector");
- httpResp = new MockHttpServletResponse();
- RequestContextHolder.resetRequestAttributes();
- RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));
-
- pendingReq = new TestRequestImpl();
- pendingReq.setAuthUrl("https://localhost/ms_connector");
- pendingReq.setPendingReqId(RandomStringUtils.randomAlphanumeric(10));
-
- LocaleContextHolder.resetLocaleContext();
- }
-
- @Test
- public void canceledByUser() throws Exception {
- AdresssucheOutput userInput = setupUserInput();
- SimpleEidasData eidasData = setupEidasData();
- RegisterStatusResults registerSearchResult = buildEmptyResult();
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, registerSearchResult);
- httpReq.setParameter(ReceiveAustrianResidenceGuiResponseTask.HTTP_PARAM_NO_RESIDENCE, "true");
-
- task.execute(pendingReq, executionContext);
-
- assertEquals("Transition To S9", true, executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK));
- assertEquals("matching failed flag", true, executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED));
- assertEquals("failed reason", "module.eidasauth.matching.20", executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED_REASON));
- assertNull("no final matching result", MatchingTaskUtils.getFinalMatchingResult(pendingReq));
-
- }
-
- @Test
- public void noRegisterResult() throws Exception {
- setupUserInput();
- setupEidasData();
- RegisterStatusResults registerSearchResult = buildEmptyResult();
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, registerSearchResult);
-
- // inject ZMR response
- when(zmrMock.service(any(), any()))
- .thenReturn(loadResponseFromFile("/data/zmr/empty_zmr_result.xml"));
-
- // execute task
- task.execute(pendingReq, executionContext);
-
- // validate state
- assertEquals("Transition To S9", true, executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK));
- assertEquals("matching failed flag", true, executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED));
- assertEquals("failed reason", "module.eidasauth.matching.22", executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED_REASON));
- assertNull("no final matching result", MatchingTaskUtils.getFinalMatchingResult(pendingReq));
-
- }
-
- @Test
- public void exactlyOneRegisterResult_Update() throws Exception {
- setupUserInput();
- SimpleEidasData eidasData = setupEidasData();
- RegisterStatusResults registerSearchResult = buildResultWithOneMatch(buildMatchingRegisterResult(eidasData));
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, registerSearchResult);
-
- // inject ZMR response
- when(zmrMock.service(any(), any()))
- .thenReturn(loadResponseFromFile("/data/zmr/search_with_personalId_only_resp.xml"))
- .thenReturn(loadResponseFromFile("/data/zmr/seq_3-4_kitt_get_latest_version_resp.xml"))
- .thenReturn(loadResponseFromFile("/data/zmr/seq_3-6_kitt_update_resp.xml"));
-
- task.execute(pendingReq, executionContext);
-
- // validate state
- assertNull("Transition To S9", executionContext.get(Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK));
- MatchedPersonResult matchingResult = MatchingTaskUtils.getFinalMatchingResult(pendingReq);
- assertNotNull("no final matching result", matchingResult);
-
- }
-
- @Test
- public void exactlyOneRegisterResult_UpdateFailedByZmrError() throws Exception {
- setupUserInput();
- SimpleEidasData eidasData = setupEidasData();
- RegisterStatusResults registerSearchResult = buildResultWithOneMatch(buildMatchingRegisterResult(eidasData));
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, registerSearchResult);
-
- // inject ZMR response
- when(zmrMock.service(any(), any()))
- .thenReturn(loadResponseFromFile("/data/zmr/search_with_personalId_only_resp.xml"))
- .thenReturn(loadResponseFromFile("/data/zmr/seq_3-4_kitt_get_latest_version_resp.xml"))
- .thenThrow(new RuntimeException("ZMR update should fail for that test"));
-
- TaskExecutionException error = assertThrows("wrong exception", TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- assertEquals("wrong errorId", "module.eidasauth.matching.04", ((EaafException) error.getOriginalException()).getErrorId());
-
- }
-
- @Test
- public void zmrError() throws Exception {
- setupUserInput();
- setupEidasData();
- RegisterStatusResults registerSearchResult = buildResultWithTwoMatches();
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, registerSearchResult);
-
- TaskExecutionException error = assertThrows("wrong exception", TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- assertEquals("wrong errorId", "module.eidasauth.matching.03", ((EaafException) error.getOriginalException()).getErrorId());
-
- }
-
- @SneakyThrows
- private void validateMatchedPerson(MatchedPersonResult current,
- RegisterStatusResults registerUpdateResult) {
- RegisterResult expected = registerUpdateResult.getResult();
- assertEquals("familyName", expected.getFamilyName(), current.getFamilyName());
- assertEquals("givenName", expected.getGivenName(), current.getGivenName());
- assertEquals("birthday", expected.getDateOfBirth(), current.getDateOfBirth());
- assertEquals("bpk", expected.getBpk(), current.getBpk());
-
- }
-
- @NotNull
- private RegisterStatusResults buildEmptyResult() {
- return new RegisterStatusResults(new RegisterOperationStatus(generateRandomProcessId()),
- Collections.emptyList(), Collections.emptyList());
-
- }
-
- private BigInteger generateRandomProcessId() {
- return new BigInteger(RandomStringUtils.randomNumeric(10));
-
- }
-
- @NotNull
- private RegisterStatusResults buildResultWithOneMatch(RegisterResult registerResult) {
- return new RegisterStatusResults(new RegisterOperationStatus(generateRandomProcessId()),
- Collections.singletonList(registerResult), Collections.emptyList());
-
- }
-
- @NotNull
- private RegisterStatusResults buildResultWithTwoMatches() {
- List<RegisterResult> results = Lists.newArrayList(buildRandomRegisterResult(), buildRandomRegisterResult());
- return new RegisterStatusResults(new RegisterOperationStatus(generateRandomProcessId()),
- results, Collections.emptyList());
-
- }
-
- @NotNull
- private RegisterResult buildRandomRegisterResult() {
- return RegisterResult.builder()
- .pseudonym(Arrays.asList(RandomStringUtils.randomAlphabetic(8)))
- .givenName(RandomStringUtils.randomAlphabetic(8))
- .familyName(RandomStringUtils.randomAlphabetic(8))
- .dateOfBirth(RandomStringUtils.randomAlphabetic(8))
- .bpk(RandomStringUtils.randomAlphabetic(8))
- .build();
-
- }
-
- private RegisterResult buildMatchingRegisterResult(SimpleEidasData eidData) {
- return RegisterResult.builder()
- .pseudonym(Arrays.asList(eidData.getPseudonym()))
- .givenName(eidData.getGivenName())
- .familyName(eidData.getFamilyName())
- .dateOfBirth(eidData.getDateOfBirth())
- .bpk(RandomStringUtils.randomAlphabetic(8))
- .build();
-
- }
-
- private RegisterResult buildNotMatchingRegisterResult(SimpleEidasData eidData) {
- return RegisterResult.builder()
- .pseudonym(Arrays.asList(eidData.getPseudonym() + RandomStringUtils.randomAlphabetic(8)))
- .givenName(eidData.getGivenName())
- .familyName(eidData.getFamilyName())
- .dateOfBirth(eidData.getDateOfBirth())
- .bpk(RandomStringUtils.randomAlphabetic(8))
- .build();
-
- }
-
- private void setHttpParameters(AdresssucheOutput input) {
- httpReq.setParameter(AdresssucheController.PARAM_STREET, input.getStreet());
- httpReq.setParameter(AdresssucheController.PARAM_MUNIPICALITY, input.getMunicipality());
- httpReq.setParameter(AdresssucheController.PARAM_NUMBER, input.getNumber());
- httpReq.setParameter(AdresssucheController.PARAM_VILLAGE, input.getVillage());
- httpReq.setParameter(AdresssucheController.PARAM_POSTLEITZAHL, input.getPostleitzahl());
-
- }
-
- @NotNull
- private SimpleEidasData setupEidasData() throws EaafStorageException {
- SimpleEidasData result = SimpleEidasData.builder()
- .pseudonym(RandomStringUtils.randomAlphabetic(8))
- .familyName(RandomStringUtils.randomAlphabetic(8))
- .givenName(RandomStringUtils.randomAlphabetic(8))
- .dateOfBirth("1970-01-01")
- .build();
- AuthProcessDataWrapper authProcessDataWrapper = pendingReq.getSessionData(AuthProcessDataWrapper.class);
- authProcessDataWrapper.setGenericDataToSession(Constants.DATA_SIMPLE_EIDAS, result);
- return result;
- }
-
- @NotNull
- private AdresssucheOutput setupUserInput() {
- AdresssucheOutput result = new AdresssucheOutput(
- RandomStringUtils.randomAlphabetic(8),
- RandomStringUtils.randomAlphabetic(8),
- RandomStringUtils.randomAlphabetic(8),
- RandomStringUtils.randomAlphabetic(8),
- RandomStringUtils.randomAlphabetic(8));
- setHttpParameters(result);
- return result;
- }
-
- private ResponseType loadResponseFromFile(String filepath) throws JAXBException {
- final Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
- JAXBElement<?> resp = (JAXBElement<?>) unmarshaller.unmarshal(ZmrClientTest.class.getResourceAsStream(
- filepath));
- return (ResponseType) resp.getValue();
-
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAustrianResidenceGuiResponseTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAustrianResidenceGuiResponseTaskTest.java
deleted file mode 100644
index 7758e021..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAustrianResidenceGuiResponseTaskTest.java
+++ /dev/null
@@ -1,312 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.mockito.ArgumentMatchers.eq;
-
-import java.math.BigInteger;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.jetbrains.annotations.NotNull;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mockito;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.context.i18n.LocaleContextHolder;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import com.google.common.collect.Lists;
-
-import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.controller.AdresssucheController;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.controller.AdresssucheController.AdresssucheOutput;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.MatchedPersonResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.RegisterResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterOperationStatus;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterStatusResults;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveAustrianResidenceGuiResponseTask;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils;
-import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;
-import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;
-import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl;
-import lombok.SneakyThrows;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"
-})
-public class ReceiveAustrianResidenceGuiResponseTaskTest {
-
- @Autowired
- protected MsConnectorDummyConfigMap authConfig;
-
- @MockBean
- private RegisterSearchService registerSearchService;
-
- private ReceiveAustrianResidenceGuiResponseTask task;
-
- private ExecutionContext executionContext;
- private MockHttpServletRequest httpReq;
- private MockHttpServletResponse httpResp;
- private TestRequestImpl pendingReq;
-
- /**
- * jUnit test set-up.
- *
- * @throws Exception In case of an set-up error
- */
- @Before
- public void setUp() throws Exception {
- executionContext = new ExecutionContextImpl();
- task = new ReceiveAustrianResidenceGuiResponseTask(registerSearchService);
-
- httpReq = new MockHttpServletRequest("POST", "https://localhost/ms_connector");
- httpResp = new MockHttpServletResponse();
- RequestContextHolder.resetRequestAttributes();
- RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));
-
- pendingReq = new TestRequestImpl();
- pendingReq.setAuthUrl("https://localhost/ms_connector");
- pendingReq.setPendingReqId(RandomStringUtils.randomAlphanumeric(10));
-
- LocaleContextHolder.resetLocaleContext();
- }
-
- @Test
- public void canceledByUser() throws Exception {
- AdresssucheOutput userInput = setupUserInput();
- SimpleEidasData eidasData = setupEidasData();
- RegisterStatusResults registerSearchResult = buildEmptyResult();
- mockRegisterSearch(userInput, registerSearchResult, eidasData);
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, registerSearchResult);
- httpReq.setParameter(ReceiveAustrianResidenceGuiResponseTask.HTTP_PARAM_NO_RESIDENCE, "true");
-
- task.execute(pendingReq, executionContext);
-
- assertEquals("Transition To S9", true, executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK));
- assertEquals("matching failed flag", true, executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED));
- assertEquals("failed reason", "module.eidasauth.matching.20", executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED_REASON));
- assertNull("no final matching result", MatchingTaskUtils.getFinalMatchingResult(pendingReq));
-
- }
-
- @Test
- public void noInputData() throws Exception {
- RegisterStatusResults registerSearchResult = buildEmptyResult();
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, registerSearchResult);
-
- task.execute(pendingReq, executionContext);
-
- assertEquals("Transition To S9", true, executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK));
- assertEquals("matching failed flag", true, executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED));
- assertEquals("failed reason", "module.eidasauth.matching.21", executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED_REASON));
- assertNull("no final matching result", MatchingTaskUtils.getFinalMatchingResult(pendingReq));
-
- }
-
- @Test
- public void noRegisterResult() throws Exception {
- AdresssucheOutput userInput = setupUserInput();
- SimpleEidasData eidasData = setupEidasData();
- RegisterStatusResults registerSearchResult = buildEmptyResult();
- mockRegisterSearch(userInput, registerSearchResult, eidasData);
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, registerSearchResult);
-
- task.execute(pendingReq, executionContext);
-
- assertEquals("Transition To S9", true, executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK));
- assertEquals("matching failed flag", true, executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED));
- assertEquals("failed reason", "module.eidasauth.matching.22", executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED_REASON));
- assertNull("no final matching result", MatchingTaskUtils.getFinalMatchingResult(pendingReq));
-
- }
-
- @Test
- public void exactlyOneRegisterResult_NoUpdate() throws Exception {
- AdresssucheOutput userInput = setupUserInput();
- SimpleEidasData eidasData = setupEidasData();
- RegisterStatusResults registerSearchResult = buildResultWithOneMatch(buildMatchingRegisterResult(eidasData));
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, registerSearchResult);
- mockRegisterSearch(userInput, registerSearchResult, eidasData);
-
- task.execute(pendingReq, executionContext);
-
- // validate state
- assertNull("Transition To S9", executionContext.get(Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK));
- MatchedPersonResult matchingResult = MatchingTaskUtils.getFinalMatchingResult(pendingReq);
- assertNotNull("no final matching result", matchingResult);
- validateMatchedPerson(matchingResult, registerSearchResult);
-
- }
-
- @Test
- public void exactlyOneRegisterResult_UpdateRequired() throws Exception {
- AdresssucheOutput userInput = setupUserInput();
- SimpleEidasData eidasData = setupEidasData();
- RegisterStatusResults registerSearchResult = buildResultWithOneMatch(buildNotMatchingRegisterResult(eidasData));
- RegisterStatusResults registerUpdateResult = buildResultWithOneMatch(buildRandomRegisterResult());
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, registerSearchResult);
- mockRegisterSearch(userInput, registerSearchResult, eidasData);
- Mockito.when(registerSearchService.step7aKittProcess(eq(registerSearchResult), eq(eidasData)))
- .thenReturn(registerUpdateResult);
-
- // perform test
- task.execute(pendingReq, executionContext);
-
- // validate state
- assertNull("Transition To S9", executionContext.get(Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK));
-
- MatchedPersonResult matchingResult = MatchingTaskUtils.getFinalMatchingResult(pendingReq);
- assertNotNull("no final matching result", matchingResult);
- validateMatchedPerson(matchingResult, registerUpdateResult);
-
- }
-
- @Test
- public void moreThanOneRegisterResult() throws Exception {
- AdresssucheOutput userInput = setupUserInput();
- SimpleEidasData eidasData = setupEidasData();
- RegisterStatusResults registerSearchResult = buildResultWithTwoMatches();
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, registerSearchResult);
- mockRegisterSearch(userInput, registerSearchResult, eidasData);
-
- task.execute(pendingReq, executionContext);
-
- assertEquals("Transition To S9", true, executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK));
- assertEquals("matching failed flag", true, executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED));
- assertEquals("failed reason", "module.eidasauth.matching.22", executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED_REASON));
- assertNull("no final matching result", MatchingTaskUtils.getFinalMatchingResult(pendingReq));
-
- }
-
- @SneakyThrows
- private void validateMatchedPerson(MatchedPersonResult current,
- RegisterStatusResults registerUpdateResult) {
- RegisterResult expected = registerUpdateResult.getResult();
- assertEquals("familyName", expected.getFamilyName(), current.getFamilyName());
- assertEquals("givenName", expected.getGivenName(), current.getGivenName());
- assertEquals("birthday", expected.getDateOfBirth(), current.getDateOfBirth());
- assertEquals("bpk", expected.getBpk(), current.getBpk());
-
- }
-
- @SneakyThrows
- private void mockRegisterSearch(AdresssucheOutput userInput, RegisterStatusResults registerSearchResult, SimpleEidasData eidasData ) {
- Mockito.when(registerSearchService.searchWithResidence(eq(registerSearchResult.getOperationStatus()), eq(eidasData),
- eq(userInput))).thenReturn(registerSearchResult);
- }
-
- @NotNull
- private RegisterStatusResults buildEmptyResult() {
- return new RegisterStatusResults(new RegisterOperationStatus(generateRandomProcessId()),
- Collections.emptyList(), Collections.emptyList());
-
- }
-
- private BigInteger generateRandomProcessId() {
- return new BigInteger(RandomStringUtils.randomNumeric(10));
-
- }
-
- @NotNull
- private RegisterStatusResults buildResultWithOneMatch(RegisterResult registerResult) {
- return new RegisterStatusResults(new RegisterOperationStatus(generateRandomProcessId()),
- Collections.singletonList(registerResult), Collections.emptyList());
-
- }
-
- @NotNull
- private RegisterStatusResults buildResultWithTwoMatches() {
- List<RegisterResult> results = Lists.newArrayList(buildRandomRegisterResult(), buildRandomRegisterResult());
- return new RegisterStatusResults(new RegisterOperationStatus(generateRandomProcessId()),
- results, Collections.emptyList());
-
- }
-
- @NotNull
- private RegisterResult buildRandomRegisterResult() {
- return RegisterResult.builder()
- .pseudonym(Arrays.asList(RandomStringUtils.randomAlphabetic(8)))
- .givenName(RandomStringUtils.randomAlphabetic(8))
- .familyName(RandomStringUtils.randomAlphabetic(8))
- .dateOfBirth(RandomStringUtils.randomAlphabetic(8))
- .bpk(RandomStringUtils.randomAlphabetic(8))
- .build();
-
- }
-
- private RegisterResult buildMatchingRegisterResult(SimpleEidasData eidData) {
- return RegisterResult.builder()
- .pseudonym(Arrays.asList(eidData.getPseudonym()))
- .givenName(eidData.getGivenName())
- .familyName(eidData.getFamilyName())
- .dateOfBirth(eidData.getDateOfBirth())
- .bpk(RandomStringUtils.randomAlphabetic(8))
- .build();
-
- }
-
- private RegisterResult buildNotMatchingRegisterResult(SimpleEidasData eidData) {
- return RegisterResult.builder()
- .pseudonym(Arrays.asList(eidData.getPseudonym() + RandomStringUtils.randomAlphabetic(8)))
- .givenName(eidData.getGivenName())
- .familyName(eidData.getFamilyName())
- .dateOfBirth(eidData.getDateOfBirth())
- .bpk(RandomStringUtils.randomAlphabetic(8))
- .build();
-
- }
-
- private void setHttpParameters(AdresssucheOutput input) {
- httpReq.setParameter(AdresssucheController.PARAM_STREET, input.getStreet());
- httpReq.setParameter(AdresssucheController.PARAM_MUNIPICALITY, input.getMunicipality());
- httpReq.setParameter(AdresssucheController.PARAM_NUMBER, input.getNumber());
- httpReq.setParameter(AdresssucheController.PARAM_VILLAGE, input.getVillage());
- httpReq.setParameter(AdresssucheController.PARAM_POSTLEITZAHL, input.getPostleitzahl());
-
- }
-
- @NotNull
- private SimpleEidasData setupEidasData() throws EaafStorageException {
- SimpleEidasData result = SimpleEidasData.builder()
- .pseudonym(RandomStringUtils.randomAlphabetic(8))
- .familyName(RandomStringUtils.randomAlphabetic(8))
- .givenName(RandomStringUtils.randomAlphabetic(8))
- .dateOfBirth("1970-01-01")
- .build();
- AuthProcessDataWrapper authProcessDataWrapper = pendingReq.getSessionData(AuthProcessDataWrapper.class);
- authProcessDataWrapper.setGenericDataToSession(Constants.DATA_SIMPLE_EIDAS, result);
- return result;
- }
-
- @NotNull
- private AdresssucheOutput setupUserInput() {
- AdresssucheOutput result = new AdresssucheOutput(
- RandomStringUtils.randomAlphabetic(8),
- RandomStringUtils.randomAlphabetic(8),
- RandomStringUtils.randomAlphabetic(8),
- RandomStringUtils.randomAlphabetic(8),
- RandomStringUtils.randomAlphabetic(8));
- setHttpParameters(result);
- return result;
- }
-
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAuthnResponseTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAuthnResponseTaskTest.java
deleted file mode 100644
index ea2cda4b..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAuthnResponseTaskTest.java
+++ /dev/null
@@ -1,220 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks;
-
-import static at.asitplus.eidas.specific.connector.MsEidasNodeConstants.PROP_CONFIG_SP_NEW_EID_MODE;
-
-import java.net.URISyntaxException;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.jetbrains.annotations.NotNull;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
-import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap;
-import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummySpConfiguration;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveAuthnResponseTask;
-import at.gv.egiz.eaaf.core.api.IRequest;
-import at.gv.egiz.eaaf.core.api.IRequestStorage;
-import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants;
-import at.gv.egiz.eaaf.core.api.data.EaafConstants;
-import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;
-import at.gv.egiz.eaaf.core.exceptions.PendingReqIdValidationException;
-import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;
-import at.gv.egiz.eaaf.core.impl.idp.auth.data.EidAuthProcessDataWrapper;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl;
-import at.gv.egiz.eaaf.core.impl.utils.Random;
-import eu.eidas.auth.commons.attribute.AttributeDefinition;
-import eu.eidas.auth.commons.attribute.ImmutableAttributeMap;
-import eu.eidas.auth.commons.protocol.impl.AuthenticationResponse;
-import lombok.val;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"})
-public class ReceiveAuthnResponseTaskTest {
-
- @Autowired(required = true)
- private ReceiveAuthnResponseTask task;
-
- @Autowired(required = true)
- private MsConnectorDummyConfigMap basicConfig;
- @Autowired
- protected EidasAttributeRegistry attrRegistry;
-
- @Autowired private IRequestStorage storage;
-
- final ExecutionContext executionContext = new ExecutionContextImpl();
- private MockHttpServletRequest httpReq;
- private MockHttpServletResponse httpResp;
- private TestRequestImpl pendingReq;
- private MsConnectorDummySpConfiguration oaParam;
-
- /**
- * jUnit test set-up.
- */
- @Before
- public void setUp() throws EaafStorageException, URISyntaxException {
-
- httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler");
- httpResp = new MockHttpServletResponse();
- RequestContextHolder.resetRequestAttributes();
- RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));
-
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false");
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.eid.testidentity.default", "false");
-
- final Map<String, String> spConfig = new HashMap<>();
- spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp");
- spConfig.put("target", "urn:publicid:gv.at:cdid+XX");
- spConfig.put(PROP_CONFIG_SP_NEW_EID_MODE, "true");
- oaParam = new MsConnectorDummySpConfiguration(spConfig, basicConfig);
- oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH));
- pendingReq = new TestRequestImpl();
-
- pendingReq.setSpConfig(oaParam);
- pendingReq.setPendingReqId(at.gv.egiz.eaaf.core.impl.utils.Random.nextProcessReferenceValue());
- pendingReq.setAuthUrl("http://test.com/");
- pendingReq.setTransactionId("avaasbav");
- pendingReq.setPiiTransactionId(RandomStringUtils.randomAlphanumeric(10));
-
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "LU");
- executionContext.put(EaafConstants.PROCESS_ENGINE_REQUIRES_NO_POSTAUTH_REDIRECT, true);
-
- }
-
- @Test
- public void missingEidasResponse() {
- try {
- task.execute(pendingReq, executionContext);
- Assert.fail("No eIDAS response not detected");
-
- } catch (TaskExecutionException e) {
- Assert.assertEquals("ErrorId", "eidas.01",
- ((EaafException) e.getOriginalException()).getErrorId());
-
- }
- }
-
- @Test
- public void notSuccessEidasResponse() throws URISyntaxException {
- String statusCode = RandomStringUtils.randomAlphabetic(10);
- httpReq.setAttribute(Constants.DATA_FULL_EIDAS_RESPONSE,
- buildDummyAuthResponse(statusCode));
-
-
- try {
- task.execute(pendingReq, executionContext);
- Assert.fail("No eIDAS response not detected");
-
- } catch (TaskExecutionException e) {
- Assert.assertEquals("ErrorId", "eidas.02",
- ((EaafException) e.getOriginalException()).getErrorId());
- Assert.assertEquals("wrong parameter size", 2, ((EaafException) e.getOriginalException())
- .getParams().length);
- Assert.assertEquals("wrong errorMsg", statusCode, ((EaafException) e
- .getOriginalException()).getParams()[0]);
-
- }
- }
-
- @Test
- public void success() throws URISyntaxException, TaskExecutionException, PendingReqIdValidationException {
- @NotNull
- AuthenticationResponse eidasResponse = buildDummyAuthResponse(Constants.SUCCESS_URI);
- httpReq.setAttribute(Constants.DATA_FULL_EIDAS_RESPONSE, eidasResponse);
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "LU");
-
- //execute test
- task.execute(pendingReq, executionContext);
-
- //validate state
- IRequest storedReq = storage.getPendingRequest(pendingReq.getPendingRequestId());
- Assert.assertNotNull("pendingReq not stored", storedReq);
- final EidAuthProcessDataWrapper authProcessData = storedReq.getSessionData(EidAuthProcessDataWrapper.class);
- Assert.assertEquals("LoA", eidasResponse.getLevelOfAssurance(), authProcessData.getQaaLevel());
- Assert.assertNotNull("eIDAS response",
- authProcessData.getGenericDataFromSession(Constants.DATA_FULL_EIDAS_RESPONSE));
- Assert.assertEquals("eIDAS response", eidasResponse,
- authProcessData.getGenericDataFromSession(Constants.DATA_FULL_EIDAS_RESPONSE));
-
- Assert.assertFalse("testIdentity flag", authProcessData.isTestIdentity());
-
- }
-
- @Test
- public void successWithTestIdentity() throws URISyntaxException, TaskExecutionException, PendingReqIdValidationException {
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.eid.testidentity.default", "true");
-
- @NotNull
- AuthenticationResponse eidasResponse = buildDummyAuthResponse(Constants.SUCCESS_URI);
- httpReq.setAttribute(Constants.DATA_FULL_EIDAS_RESPONSE, eidasResponse);
- executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "LU");
-
- //execute test
- task.execute(pendingReq, executionContext);
-
- //validate state
- IRequest storedReq = storage.getPendingRequest(pendingReq.getPendingRequestId());
- Assert.assertNotNull("pendingReq not stored", storedReq);
-
- final EidAuthProcessDataWrapper authProcessData = storedReq.getSessionData(EidAuthProcessDataWrapper.class);
- Assert.assertEquals("LoA", eidasResponse.getLevelOfAssurance(), authProcessData.getQaaLevel());
- Assert.assertNotNull("eIDAS response",
- authProcessData.getGenericDataFromSession(Constants.DATA_FULL_EIDAS_RESPONSE));
- Assert.assertEquals("eIDAS response", eidasResponse,
- authProcessData.getGenericDataFromSession(Constants.DATA_FULL_EIDAS_RESPONSE));
- Assert.assertTrue("testIdentity flag", authProcessData.isTestIdentity());
-
- }
-
-
-
- @NotNull
- private AuthenticationResponse buildDummyAuthResponse(String statusCode) throws URISyntaxException {
- final AttributeDefinition attributeDef = attrRegistry.getCoreAttributeRegistry().getByFriendlyName(
- Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first();
- final AttributeDefinition attributeDef2 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName(
- Constants.eIDAS_ATTR_CURRENTFAMILYNAME).first();
- final AttributeDefinition attributeDef3 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName(
- Constants.eIDAS_ATTR_CURRENTGIVENNAME).first();
- final AttributeDefinition attributeDef4 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName(
- Constants.eIDAS_ATTR_DATEOFBIRTH).first();
-
- final ImmutableAttributeMap attributeMap = ImmutableAttributeMap.builder()
- .put(attributeDef, "LU/AT/" + RandomStringUtils.randomNumeric(64))
- .put(attributeDef2, RandomStringUtils.randomAlphabetic(10))
- .put(attributeDef3, RandomStringUtils.randomAlphabetic(10)).put(attributeDef4, "2001-01-01").build();
-
- val b = new AuthenticationResponse.Builder();
- return b.id("_".concat(Random.nextHexRandom16()))
- .issuer(RandomStringUtils.randomAlphabetic(10))
- .subject(RandomStringUtils.randomAlphabetic(10))
- .statusCode(statusCode)
- .inResponseTo("_".concat(Random.nextHexRandom16()))
- .subjectNameIdFormat("afaf")
- .levelOfAssurance(EaafConstants.EIDAS_LOA_HIGH)
- .attributes(attributeMap)
- .build();
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveMobilePhoneSignatureResponseTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveMobilePhoneSignatureResponseTaskTest.java
deleted file mode 100644
index b9133392..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveMobilePhoneSignatureResponseTaskTest.java
+++ /dev/null
@@ -1,479 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThrows;
-import static org.springframework.util.Assert.isInstanceOf;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.math.BigInteger;
-import java.nio.charset.StandardCharsets;
-import java.time.Instant;
-import java.util.Arrays;
-import java.util.Base64;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-
-import javax.xml.transform.TransformerException;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.RandomStringUtils;
-import org.jetbrains.annotations.NotNull;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
-import org.opensaml.core.xml.io.MarshallingException;
-import org.opensaml.core.xml.util.XMLObjectSupport;
-import org.opensaml.saml.saml2.core.Issuer;
-import org.opensaml.saml.saml2.core.Response;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import com.google.common.collect.Lists;
-
-import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.RegisterResult;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.ManualFixNecessaryException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.IdAustriaClientAuthConstants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.provider.IdAustriaClientAuthCredentialProvider;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.provider.IdAustriaClientAuthMetadataProvider;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterOperationStatus;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterStatusResults;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveMobilePhoneSignatureResponseTask;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy.DummyOA;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy.DummyPendingRequest;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils;
-import at.gv.egiz.eaaf.core.api.data.EaafConstants;
-import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;
-import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper;
-import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl;
-import at.gv.egiz.eaaf.core.impl.utils.DomUtils;
-import at.gv.egiz.eaaf.modules.pvp2.exception.Pvp2MetadataException;
-import at.gv.egiz.eaaf.modules.pvp2.impl.metadata.PvpMetadataResolverFactory;
-import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xInitializer;
-import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils;
-import at.gv.egiz.eaaf.modules.pvp2.sp.exception.AuthnResponseValidationException;
-import net.shibboleth.utilities.java.support.xml.ParserPool;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"
-})
-public class ReceiveMobilePhoneSignatureResponseTaskTest {
-
- private static final String METADATA_PATH = "classpath:/data/idp_metadata_classpath_entity.xml";
- private static final String BPK_FROM_ID_AUSTRIA = "BF:QVGm48cqcM4UcyhDTNGYmVdrIoY=";
-
- @Autowired
- protected MsConnectorDummyConfigMap authConfig;
- @Autowired
- private IdAustriaClientAuthMetadataProvider metadataProvider;
- @Autowired
- private IdAustriaClientAuthCredentialProvider credentialProvider;
- @Autowired
- private PvpMetadataResolverFactory metadataFactory;
- @Autowired
- private ReceiveMobilePhoneSignatureResponseTask task;
- @MockBean
- private RegisterSearchService registerSearchService;
-
- private final ExecutionContext executionContext = new ExecutionContextImpl();
- private MockHttpServletRequest httpReq;
- private MockHttpServletResponse httpResp;
- private DummyPendingRequest pendingReq;
-
- /**
- * JUnit class initializer.
- *
- * @throws Exception In case of an OpenSAML3 initialization error
- */
- @BeforeClass
- public static void initialize() throws Exception {
- EaafOpenSaml3xInitializer.eaafInitialize();
- }
-
- /**
- * jUnit test set-up.
- *
- * @throws Exception In case of an set-up error
- */
- @Before
- public void setUp() throws Exception {
- httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler");
- httpReq.setScheme("https");
- httpReq.setServerPort(443);
- httpReq.setContextPath("/authhandler");
- httpResp = new MockHttpServletResponse();
- RequestContextHolder.resetRequestAttributes();
- RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));
-
- authConfig.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_ID_AUSTRIA_ENTITYID, METADATA_PATH);
-
- DummyOA oaParam = new DummyOA();
- oaParam.setUniqueAppId("http://test.com/test");
- oaParam.setTargetIdentifier(EaafConstants.URN_PREFIX_CDID + RandomStringUtils.randomAlphabetic(2));
-
- pendingReq = new DummyPendingRequest();
- pendingReq.initialize(httpReq, authConfig);
- pendingReq.setPendingRequestId(RandomStringUtils.randomAlphanumeric(10));
- pendingReq.setOnlineApplicationConfiguration(oaParam);
-
- metadataProvider.fullyDestroy();
- }
-
- @Test
- public void unsupportedHttpMethod() {
- httpReq = new MockHttpServletRequest("PUT", "https://localhost/authhandler");
- RequestContextHolder.resetRequestAttributes();
- RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));
-
- TaskExecutionException e = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- assertEquals(pendingReq.getPendingRequestId(), e.getPendingRequestID());
- isInstanceOf(AuthnResponseValidationException.class, e.getOriginalException());
- assertEquals("sp.pvp2.03", ((AuthnResponseValidationException) e.getOriginalException()).getErrorId());
- }
-
- @Test
- public void httpGetNoMessage() {
- httpReq = new MockHttpServletRequest("GET", "https://localhost/authhandler");
- RequestContextHolder.resetRequestAttributes();
- RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));
-
- TaskExecutionException e = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- assertEquals(pendingReq.getPendingRequestId(), e.getPendingRequestID());
- isInstanceOf(AuthnResponseValidationException.class, e.getOriginalException());
- assertEquals("sp.pvp2.12", ((AuthnResponseValidationException) e.getOriginalException()).getErrorId());
-
- }
-
- @Test
- public void httpPostNoMessage() {
- httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler");
- RequestContextHolder.resetRequestAttributes();
- RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));
-
- TaskExecutionException e = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- assertEquals(pendingReq.getPendingRequestId(), e.getPendingRequestID());
- isInstanceOf(AuthnResponseValidationException.class, e.getOriginalException());
- assertEquals("sp.pvp2.12", ((AuthnResponseValidationException) e.getOriginalException()).getErrorId());
- }
-
- @Test
- public void httpPostMessageNotSigned() throws IOException {
- byte[] bytes = IOUtils.toByteArray(ReceiveMobilePhoneSignatureResponseTask.class
- .getResourceAsStream("/data/Response_without_sig_classpath_entityid.xml"));
- httpReq.addParameter("SAMLResponse", Base64.getEncoder().encodeToString(bytes));
-
- TaskExecutionException e = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- assertEquals(pendingReq.getPendingRequestId(), e.getPendingRequestID());
- isInstanceOf(AuthnResponseValidationException.class, e.getOriginalException());
- assertEquals("sp.pvp2.12", ((AuthnResponseValidationException) e.getOriginalException()).getErrorId());
-
- }
-
- @Test
- public void httpPostMessageWrongDestinationEndpoint() throws Exception {
- initResponse("/data/Response_with_wrong_destination_endpoint.xml", true);
-
- TaskExecutionException e = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- assertEquals(pendingReq.getPendingRequestId(), e.getPendingRequestID());
- isInstanceOf(AuthnResponseValidationException.class, e.getOriginalException());
- assertEquals("sp.pvp2.12", ((AuthnResponseValidationException) e.getOriginalException()).getErrorId());
-
- }
-
- @Test
- public void httpPostValidSignedNoMetadata() throws Exception {
- initResponse("/data/Response_without_sig_classpath_entityid.xml", true);
-
- TaskExecutionException e = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- assertEquals(pendingReq.getPendingRequestId(), e.getPendingRequestID());
- isInstanceOf(AuthnResponseValidationException.class, e.getOriginalException());
- assertEquals("sp.pvp2.11", ((EaafException) e.getOriginalException()).getErrorId());
- }
-
- @Test
- public void httpPostValidSignedAssertionOutDated() throws Exception {
- setupMetadataResolver();
- initResponse("/data/Response_without_sig_classpath_entityid.xml", false);
-
- TaskExecutionException e = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- assertEquals(pendingReq.getPendingRequestId(), e.getPendingRequestID());
- isInstanceOf(AuthnResponseValidationException.class, e.getOriginalException());
- assertEquals("sp.pvp2.12", ((EaafException) e.getOriginalException()).getErrorId());
- }
-
- @Test
- public void httpPostValidSignedAssertionFromWrongIdp() throws Exception {
- authConfig.putConfigValue(IdAustriaClientAuthConstants.CONFIG_PROPS_ID_AUSTRIA_ENTITYID,
- "http://wrong.idp/" + RandomStringUtils.randomAlphabetic(5));
- setupMetadataResolver();
- initResponse("/data/Response_without_sig_classpath_entityid.xml", true);
-
- TaskExecutionException e = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- assertEquals(pendingReq.getPendingRequestId(), e.getPendingRequestID());
- isInstanceOf(AuthnResponseValidationException.class, e.getOriginalException());
- assertEquals("sp.pvp2.08", ((EaafException) e.getOriginalException()).getErrorId());
- }
-
- @Test
- public void httpPostValidSignedAssertionMissingAttributes() throws Exception {
- setupMetadataResolver();
- initResponse("/data/Response_without_sig_classpath_entityid.xml", true);
-
- TaskExecutionException e = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- assertEquals(pendingReq.getPendingRequestId(), e.getPendingRequestID());
- isInstanceOf(AuthnResponseValidationException.class, e.getOriginalException());
- assertEquals("sp.pvp2.12", ((EaafException) e.getOriginalException()).getErrorId());
- }
-
- @Test
- public void httpPostValidSignedWithError() throws Exception {
- setupMetadataResolver();
- initResponse("/data/Response_without_sig_with_error.xml", true);
-
- TaskExecutionException e = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- assertEquals(pendingReq.getPendingRequestId(), e.getPendingRequestID());
- isInstanceOf(AuthnResponseValidationException.class, e.getOriginalException());
- assertEquals("sp.pvp2.05", ((EaafException) e.getOriginalException()).getErrorId());
- }
-
- @Test
- public void httpPostValidSignedWitUserStopErrorCode() throws Exception {
- setupMetadataResolver();
- initResponse("/data/Response_without_sig_with_error_userstop.xml", true);
-
- task.execute(pendingReq, executionContext);
-
- assertEquals("Transition To S16", true, executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK));
- assertEquals("matching failed flag", true, executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED));
- assertEquals("failed reason", "module.eidasauth.matching.23", executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED_REASON));
- assertNull("no final matching result", MatchingTaskUtils.getFinalMatchingResult(pendingReq));
-
- }
-
- @Test
- public void httpPostValidSignedWithErrorAndNoSubCode() throws Exception {
- setupMetadataResolver();
- initResponse("/data/Response_without_sig_with_error_without_subcode.xml", true);
-
- TaskExecutionException e = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- assertEquals(pendingReq.getPendingRequestId(), e.getPendingRequestID());
- isInstanceOf(AuthnResponseValidationException.class, e.getOriginalException());
- assertEquals("sp.pvp2.05", ((EaafException) e.getOriginalException()).getErrorId());
- }
-
- @Test
- public void httpPostValidSignedWithErrorAndEmptySubCode() throws Exception {
- setupMetadataResolver();
- initResponse("/data/Response_without_sig_with_error_empty_subcode.xml", true);
-
- TaskExecutionException e = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
- assertEquals(pendingReq.getPendingRequestId(), e.getPendingRequestID());
- isInstanceOf(AuthnResponseValidationException.class, e.getOriginalException());
- assertEquals("sp.pvp2.05", ((EaafException) e.getOriginalException()).getErrorId());
- }
-
- @Test
- public void httpPostValidSignedAssertionEidValidButNameMismatch() throws Exception {
- setupMetadataResolver();
- initResponse("/data/Response_with_EID.xml", true);
- AuthProcessDataWrapper authProcessData = pendingReq.getSessionData(AuthProcessDataWrapper.class);
- SimpleEidasData eidData = createEidasDataMatchingToSamlResponse()
- .familyName("notmatching")
- .build();
- authProcessData.setGenericDataToSession(Constants.DATA_SIMPLE_EIDAS, eidData);
-
-
- task.execute(pendingReq, executionContext);
-
- assertEquals("Next task", true, executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK));
- assertEquals("matching failed flag", true, executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED));
- assertEquals("failed reason", "module.eidasauth.matching.24", executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED_REASON));
- assertNull("no final matching result", MatchingTaskUtils.getFinalMatchingResult(pendingReq));
-
- }
-
- //TODO: implement new test that this test makes no sense any more
- @Ignore
- @Test
- public void httpPostValidSignedAssertionEidValid_NoRegisterResult() throws Exception {
- setupMetadataResolver();
- initResponse("/data/Response_with_EID.xml", true);
- AuthProcessDataWrapper authProcessData = pendingReq.getSessionData(AuthProcessDataWrapper.class);
- SimpleEidasData eidData = createEidasDataMatchingToSamlResponse().build();
- authProcessData.setGenericDataToSession(Constants.DATA_SIMPLE_EIDAS, eidData);
- RegisterStatusResults registerSearchResult = new RegisterStatusResults(new RegisterOperationStatus(generateRandomProcessId()),
- Collections.emptyList(), Collections.emptyList());
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, registerSearchResult);
-
- task.execute(pendingReq, executionContext);
-
- AuthProcessDataWrapper session = pendingReq.getSessionData(AuthProcessDataWrapper.class);
- assertEquals("LoA", "http://eidas.europa.eu/LoA/low", session.getQaaLevel());
- assertEquals("IssueInstant", "2014-03-05T06:39:51Z", session.getIssueInstantString());
- assertEquals("Transition To S16", true, executionContext.get(Constants.TRANSITION_TO_GENERATE_GUI_QUERY_AUSTRIAN_RESIDENCE_TASK));
- }
-
- @Test
- public void httpPostValidSignedAssertionEidValid_ExactlyOneRegisterResult() throws Exception {
- setupMetadataResolver();
- initResponse("/data/Response_with_EID.xml", true);
- AuthProcessDataWrapper authProcessData = pendingReq.getSessionData(AuthProcessDataWrapper.class);
- SimpleEidasData eidData = createEidasDataMatchingToSamlResponse().build();
- authProcessData.setGenericDataToSession(Constants.DATA_SIMPLE_EIDAS, eidData);
- RegisterStatusResults registerSearchResult = buildResultWithOneMatch();
- MatchingTaskUtils.storeIntermediateMatchingResult(pendingReq, registerSearchResult);
-
- task.execute(pendingReq, executionContext);
-
- AuthProcessDataWrapper session = pendingReq.getSessionData(AuthProcessDataWrapper.class);
- assertEquals("LoA", "http://eidas.europa.eu/LoA/low", session.getQaaLevel());
- assertEquals("IssueInstant", "2014-03-05T06:39:51Z", session.getIssueInstantString());
- assertNull("Transition To S16", executionContext.get(Constants.TRANSITION_TO_GENERATE_GUI_QUERY_AUSTRIAN_RESIDENCE_TASK));
-
- //TODO: update this check because this task selects one result from MDS search result before and creates a new element
- //Mockito.verify(registerSearchService).step7aKittProcess(eq(registerSearchResult), eq(eidData));
- }
-
- //TODO: implement new test that this test makes no sense any more
- @Ignore
- @Test
- public void httpPostValidSignedAssertionEidValid_MoreThanOneRegisterResult() throws Exception {
- setupMetadataResolver();
- initResponse("/data/Response_with_EID.xml", true);
- AuthProcessDataWrapper authProcessData = pendingReq.getSessionData(AuthProcessDataWrapper.class);
- SimpleEidasData eidData = createEidasDataMatchingToSamlResponse().build();
- authProcessData.setGenericDataToSession(Constants.DATA_SIMPLE_EIDAS, eidData);
-
- TaskExecutionException e = assertThrows(TaskExecutionException.class,
- () -> task.execute(pendingReq, executionContext));
-
-
- assertEquals(pendingReq.getPendingRequestId(), e.getPendingRequestID());
- isInstanceOf(AuthnResponseValidationException.class, e.getOriginalException());
- isInstanceOf(ManualFixNecessaryException.class, e.getOriginalException().getCause());
- assertEquals("sp.pvp2.12", ((AuthnResponseValidationException) e.getOriginalException()).getErrorId());
-
-
- AuthProcessDataWrapper session = pendingReq.getSessionData(AuthProcessDataWrapper.class);
- assertNull("Transition To S16", executionContext.get(Constants.TRANSITION_TO_GENERATE_GUI_QUERY_AUSTRIAN_RESIDENCE_TASK));
- }
-
- @NotNull
- private RegisterStatusResults buildResultWithOneMatch() {
- return new RegisterStatusResults(new RegisterOperationStatus(generateRandomProcessId()),
- Collections.singletonList(RegisterResult.builder()
- .bpk(BPK_FROM_ID_AUSTRIA)
- .pseudonym(Arrays.asList("bar"))
- .givenName("foo")
- .familyName("foo")
- .dateOfBirth("bar")
- .build()),
- Collections.emptyList());
-
- }
-
- @NotNull
- private RegisterStatusResults buildResultWithTwoMatches() {
- List<RegisterResult> results = Lists.newArrayList(
- RegisterResult.builder()
- .bpk(BPK_FROM_ID_AUSTRIA)
- .pseudonym(Arrays.asList("bar"))
- .givenName("foo")
- .familyName("foo")
- .dateOfBirth("bar")
- .build(),
- RegisterResult.builder()
- .bpk("bpk")
- .pseudonym(Arrays.asList("pseudonym"))
- .givenName("givenName")
- .familyName("familyName")
- .dateOfBirth("dateOfBirth")
- .build());
-
- return new RegisterStatusResults(new RegisterOperationStatus(generateRandomProcessId()),
- results, Collections.emptyList());
- }
-
- private BigInteger generateRandomProcessId() {
- return new BigInteger(RandomStringUtils.randomNumeric(10));
-
- }
-
- private SimpleEidasData.SimpleEidasDataBuilder createEidasDataMatchingToSamlResponse() {
- // data from "/data/Response_with_EID.xml"
- return SimpleEidasData.builder()
- .familyName("Mustermann")
- .givenName("Max")
- .dateOfBirth("1940-01-01");
- }
-
- private void addSamlResponseToHttpReq(Response response) throws TransformerException, IOException, MarshallingException {
- String node = DomUtils.serializeNode(XMLObjectSupport.getMarshaller(response).marshall(response));
- String base64encoded = Base64.getEncoder().encodeToString(node.getBytes(StandardCharsets.UTF_8));
- httpReq.addParameter("SAMLResponse", base64encoded);
- }
-
- private void initResponse(String responsePath, boolean validConditions) throws Exception {
- InputStream inputStream = ReceiveMobilePhoneSignatureResponseTaskTest.class.getResourceAsStream(responsePath);
- ParserPool parserPool = Objects.requireNonNull(XMLObjectProviderRegistrySupport.getParserPool());
- Response response = (Response) XMLObjectSupport.unmarshallFromInputStream(parserPool, inputStream);
- response.setIssueInstant(Instant.now());
- Issuer issuer = Saml2Utils.createSamlObject(Issuer.class);
- issuer.setValue("classpath:/data/idp_metadata_classpath_entity.xml");
- response.setIssuer(issuer);
- if (validConditions) {
- response.getAssertions().get(0).getConditions().setNotOnOrAfter(Instant.now().plusSeconds(5*60));
- }
- Response signedResponse = Saml2Utils.signSamlObject(response, credentialProvider.getMessageSigningCredential(), true);
- addSamlResponseToHttpReq(signedResponse);
- }
-
- private void setupMetadataResolver() throws Pvp2MetadataException {
- metadataProvider.addMetadataResolverIntoChain(metadataFactory.createMetadataProvider(
- METADATA_PATH, null, "jUnit IDP", null));
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveOtherLoginMethodGuiResponseTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveOtherLoginMethodGuiResponseTaskTest.java
deleted file mode 100644
index da8a7497..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveOtherLoginMethodGuiResponseTaskTest.java
+++ /dev/null
@@ -1,148 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThrows;
-import static org.springframework.util.Assert.isInstanceOf;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.i18n.LocaleContextHolder;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.context.web.WebAppConfiguration;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SelectedLoginMethod;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveOtherLoginMethodGuiResponseTask;
-import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"
-})
-@ActiveProfiles(profiles = {"deprecatedConfig"})
-@WebAppConfiguration
-public class ReceiveOtherLoginMethodGuiResponseTaskTest {
-
- @Autowired
- private ReceiveOtherLoginMethodGuiResponseTask task;
-
- private final ExecutionContextImpl executionContext = new ExecutionContextImpl();
- private TestRequestImpl pendingReq;
- private MockHttpServletRequest httpReq;
- private MockHttpServletResponse httpResp;
-
- /**
- * jUnit class initializer.
- */
- @BeforeClass
- public static void classInitializer() {
- final String current = new java.io.File(".").toURI().toString();
- System.setProperty("eidas.ms.configuration", current + "src/test/resources/config/junit_config_1.properties");
- }
-
- /**
- * jUnit test set-up.
- */
- @Before
- public void initialize() {
- httpReq = new MockHttpServletRequest("POST", "https://localhost/ms_connector");
- httpResp = new MockHttpServletResponse();
- RequestContextHolder.resetRequestAttributes();
- RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));
-
- pendingReq = new TestRequestImpl();
- pendingReq.setAuthUrl("https://localhost/ms_connector");
- pendingReq.setPendingReqId(RandomStringUtils.randomAlphanumeric(10));
-
- LocaleContextHolder.resetLocaleContext();
- }
-
- @Test
- public void withMobileSignatureSelection() throws TaskExecutionException {
- testTransition(SelectedLoginMethod.MOBILE_PHONE_SIGNATURE_LOGIN, Constants.TRANSITION_TO_GENERATE_MOBILE_PHONE_SIGNATURE_REQUEST_TASK);
- }
-
- @Test
- public void withEidasSelection() throws TaskExecutionException {
- testTransition(SelectedLoginMethod.EIDAS_LOGIN, Constants.TRANSITION_TO_GENERATE_EIDAS_LOGIN);
- }
-
- @Test
- public void withNoOtherLoginSelection() throws TaskExecutionException {
- testTransition(SelectedLoginMethod.NO_OTHER_LOGIN, Constants.TRANSITION_TO_GENERATE_GUI_QUERY_AUSTRIAN_RESIDENCE_TASK);
- }
-
- @Test
- public void withAddMeAsNewSelection() throws TaskExecutionException {
- testTransition(SelectedLoginMethod.ADD_ME_AS_NEW, Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK);
- }
-
- public void testTransition(SelectedLoginMethod loginMethod, String expectedTransition) throws TaskExecutionException {
- httpReq.setParameter(Constants.REQ_SELECTED_LOGIN_METHOD_PARAMETER, loginMethod.name());
- executionContext.put(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED, true);
-
- task.execute(pendingReq, executionContext);
-
- assertFalse("wrong pendingReq auth flag", pendingReq.isAuthenticated());
- assertFalse("wrong process-cancelled flag", executionContext.isProcessCancelled());
- assertNotNull("no login-selection found", executionContext.get(Constants.REQ_SELECTED_LOGIN_METHOD_PARAMETER));
- assertEquals("Wrong login-selection found", loginMethod, executionContext.get(Constants.REQ_SELECTED_LOGIN_METHOD_PARAMETER));
- assertEquals("Next task", true, executionContext.get(expectedTransition));
- assertNull("find advancedMatchingError flag", executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED));
-
- }
-
- public void withInvalidSelection() throws TaskExecutionException {
- httpReq.setParameter(Constants.REQ_SELECTED_LOGIN_METHOD_PARAMETER, RandomStringUtils.randomAlphabetic(2));
-
- task.execute(pendingReq, executionContext);
-
- assertEquals("Next task", true, executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK));
- assertEquals("advancedMatchingError flag", true, executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED));
- }
-
- @Test
- public void withNullSelection() throws TaskExecutionException {
- httpReq.setParameter(Constants.REQ_SELECTED_LOGIN_METHOD_PARAMETER, "null");
-
- task.execute(pendingReq, executionContext);
-
- assertEquals("Next task", true, executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK));
- assertEquals("advancedMatchingError flag", true, executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED));
- }
-
- @Test
- public void withEmptySelection() throws TaskExecutionException {
- httpReq.setParameter(Constants.REQ_SELECTED_LOGIN_METHOD_PARAMETER, "");
-
- task.execute(pendingReq, executionContext);
-
- assertEquals("Next task", true, executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK));
- assertEquals("advancedMatchingError flag", true, executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED));
- }
-
- @Test
- public void withoutLoginMethodSelection() throws TaskExecutionException {
-
- task.execute(pendingReq, executionContext);
-
- assertEquals("Next task", true, executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK));
- assertEquals("advancedMatchingError flag", true, executionContext.get(Constants.CONTEXT_FLAG_ADVANCED_MATCHING_FAILED));
- }
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/utils/JoseUtilsTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/utils/JoseUtilsTest.java
deleted file mode 100644
index 4da03622..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/utils/JoseUtilsTest.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.utils;
-
-import java.io.IOException;
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.Provider;
-import java.security.cert.X509Certificate;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.jose4j.jwa.AlgorithmConstraints;
-import org.jose4j.jwa.AlgorithmConstraints.ConstraintType;
-import org.jose4j.jws.AlgorithmIdentifiers;
-import org.jose4j.lang.JoseException;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.JoseUtils;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.JoseUtils.JwsResult;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-import at.gv.egiz.eaaf.core.impl.credential.EaafKeyStoreFactory;
-import at.gv.egiz.eaaf.core.impl.credential.EaafKeyStoreUtils;
-import at.gv.egiz.eaaf.core.impl.credential.KeyStoreConfiguration;
-import at.gv.egiz.eaaf.core.impl.credential.KeyStoreConfiguration.KeyStoreType;
-import at.gv.egiz.eaaf.core.impl.data.Pair;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"})
-public class JoseUtilsTest {
-
- @Autowired private EaafKeyStoreFactory keyStoreFactory;
-
- private static final List<String> AUTH_ALGORITHM_WHITELIST_SIGNING = Collections.unmodifiableList(
- Arrays.asList(
- AlgorithmIdentifiers.ECDSA_USING_P256_CURVE_AND_SHA256,
- AlgorithmIdentifiers.ECDSA_USING_P521_CURVE_AND_SHA512,
- AlgorithmIdentifiers.RSA_PSS_USING_SHA256,
- AlgorithmIdentifiers.RSA_PSS_USING_SHA512));
-
-
- @Test
- public void missingKey() throws EaafException, JoseException, KeyStoreException, IOException {
-
- KeyStoreConfiguration config = new KeyStoreConfiguration();
- config.setFriendlyName("jUnittest");
- config.setKeyStoreType(KeyStoreType.JKS);
- config.setSoftKeyStoreFilePath("../data/junit.jks");
- config.setSoftKeyStorePassword("password");
-
- Pair<KeyStore, Provider> keyStore = keyStoreFactory.buildNewKeyStore(config);
- String payLoad = RandomStringUtils.randomAlphanumeric(100);
-
- //check signing
- try {
- JoseUtils.createSignature(keyStore, "notExist", "password".toCharArray(), payLoad , true, "jUnitTest");
- Assert.fail("missing Key not detected");
-
- } catch (EaafException e) {
- Assert.assertEquals("ErrorId", "internal.keystore.09", e.getErrorId());
-
- }
- }
-
- @Test
- public void createRsaSignature() throws EaafException, JoseException, KeyStoreException, IOException {
-
- KeyStoreConfiguration config = new KeyStoreConfiguration();
- config.setFriendlyName("jUnittest");
- config.setKeyStoreType(KeyStoreType.JKS);
- config.setSoftKeyStoreFilePath("../data/junit.jks");
- config.setSoftKeyStorePassword("password");
-
- Pair<KeyStore, Provider> keyStore = keyStoreFactory.buildNewKeyStore(config);
- String payLoad = RandomStringUtils.randomAlphanumeric(100);
-
- //check signing
- String result = JoseUtils.createSignature(keyStore, "meta", "password".toCharArray(), payLoad , true, "jUnitTest");
-
- Assert.assertNotNull("signed message", result);
- Assert.assertFalse("signed msg empty", result.isEmpty());
-
-
- //validate
- List<X509Certificate> trustedCerts = EaafKeyStoreUtils.readCertsFromKeyStore(keyStore.getFirst());
- final AlgorithmConstraints constraints = new AlgorithmConstraints(ConstraintType.PERMIT,
- AUTH_ALGORITHM_WHITELIST_SIGNING
- .toArray(new String[AUTH_ALGORITHM_WHITELIST_SIGNING.size()]));
- JwsResult verify = JoseUtils.validateSignature(result, trustedCerts, constraints);
-
- Assert.assertTrue("sig. verify", verify.isValid());
- Assert.assertEquals("payload", payLoad, verify.getPayLoad());
-
- }
-
- @Test
- public void createEccSignature() throws EaafException, JoseException, KeyStoreException, IOException {
-
- KeyStoreConfiguration config = new KeyStoreConfiguration();
- config.setFriendlyName("jUnittest");
- config.setKeyStoreType(KeyStoreType.JKS);
- config.setSoftKeyStoreFilePath("../data/junit.jks");
- config.setSoftKeyStorePassword("password");
-
- Pair<KeyStore, Provider> keyStore = keyStoreFactory.buildNewKeyStore(config);
- String payLoad = RandomStringUtils.randomAlphanumeric(100);
-
- //check signing
- String result = JoseUtils.createSignature(keyStore, "sig", "password".toCharArray(), payLoad , true, "jUnitTest");
-
- Assert.assertNotNull("signed message", result);
- Assert.assertFalse("signed msg empty", result.isEmpty());
-
-
- //validate
- List<X509Certificate> trustedCerts = EaafKeyStoreUtils.readCertsFromKeyStore(keyStore.getFirst());
- final AlgorithmConstraints constraints = new AlgorithmConstraints(ConstraintType.PERMIT,
- AUTH_ALGORITHM_WHITELIST_SIGNING
- .toArray(new String[AUTH_ALGORITHM_WHITELIST_SIGNING.size()]));
- JwsResult verify = JoseUtils.validateSignature(result, trustedCerts, constraints);
-
- Assert.assertTrue("sig. verify", verify.isValid());
- Assert.assertEquals("payload", payLoad, verify.getPayLoad());
-
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasAttributePostProcessingTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasAttributePostProcessingTest.java
deleted file mode 100644
index 0a4ab851..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasAttributePostProcessingTest.java
+++ /dev/null
@@ -1,453 +0,0 @@
-/*
- * Copyright 2018 A-SIT Plus GmbH
- * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ,
- * A-SIT Plus GmbH, A-SIT, and Graz University of Technology.
- *
- * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "License");
- * You may not use this work except in compliance with the License.
- * You may obtain a copy of the License at:
- * https://joinup.ec.europa.eu/news/understanding-eupl-v12
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses.
- * The "NOTICE" text file is part of the distribution. Any derivative works
- * that you distribute must include a readable copy of the "NOTICE" text file.
-*/
-
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.validation;
-
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.HashMap;
-import java.util.Map;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.CcSpecificEidProcessingService;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"})
-@DirtiesContext(classMode = ClassMode.AFTER_CLASS)
-public class EidasAttributePostProcessingTest {
-
- @Autowired
- private CcSpecificEidProcessingService postProcessor;
-
- // lower case
- private static final String P1_eIDASID =
- "DE/AT/532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25";
- private static final String P1_GIVENNAME = "Max";
- private static final String P1_FAMILYNAME = "Mustermann";
- private static final String P1_DATEOFBIRTH = "2020-01-04";
- private static final String P1_PLACEOFBIRTH = "Nirgendwo";
- private static final String P1_BIRTHNAME = "Musterkind";
-
- // mixed
- private static final String P3_eIDASID =
- "DE/AT/532eaabd9574880dbf76b9b8cc00832c20A6ec113d682299550d7a6e0f345e25";
- private static final String P3_GIVENNAME = "Max";
- private static final String P3_FAMILYNAME = "Mustermann";
- private static final String P3_DATEOFBIRTH = "2020-01-03";
- private static final String P3_PLACEOFBIRTH = "Nirgendwo";
- private static final String P3_BIRTHNAME = "Musterkind";
-
- // upper case
- private static final String P4_eIDASID =
- "DE/AT/532EAABD9574880DBF76B9B8CC00832C20A6EC113D682299550D7A6E0F345E25";
- private static final String P4_GIVENNAME = "Max";
- private static final String P4_FAMILYNAME = "Mustermann";
- private static final String P4_DATEOFBIRTH = "2020-01-05";
- private static final String P4_PLACEOFBIRTH = "Nirgendwo";
- private static final String P4_BIRTHNAME = "Musterkind";
-
- // To long identifier
- private static final String P5_eIDASID =
- "DE/AT/532EAABD9574880DBF76B9B8CC00832C20A6EC113D682299550D7A6E0F345E251";
- private static final String P5_GIVENNAME = "Max";
- private static final String P5_FAMILYNAME = "Mustermann";
- private static final String P5_DATEOFBIRTH = "2020-01-06";
- private static final String P5_PLACEOFBIRTH = "Nirgendwo";
- private static final String P5_BIRTHNAME = "Musterkind";
-
- // to short identifier
- private static final String P6_eIDASID = "DE/AT/532EAABD9574880DBF76B9B8CC00832C20A6EC113D682299550D7A6E0F";
- private static final String P6_GIVENNAME = "Max";
- private static final String P6_FAMILYNAME = "Mustermann";
- private static final String P6_DATEOFBIRTH = "2020-01-08";
- private static final String P6_PLACEOFBIRTH = "Nirgendwo";
- private static final String P6_BIRTHNAME = "Musterkind";
-
- // no hex encoded identifier
- private static final String P7_eIDASID = "DE/AT/532EAABD9574880DBF76B9B8CC00832C20A6EC113D682299550D7A6E0F";
- private static final String P7_GIVENNAME = "Max";
- private static final String P7_FAMILYNAME = "Mustermann";
- private static final String P7_DATEOFBIRTH = "2020-01-09";
- private static final String P7_PLACEOFBIRTH = "Nirgendwo";
- private static final String P7_BIRTHNAME = "Musterkind";
-
- private static final String P2_eIDASID =
- "EE/AT/asfasfasdfasdfasdfasdfasdfasvafasdfasdfasdfasdfasdfasvascasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasd";
- private static final String P2_GIVENNAME = "Max";
- private static final String P2_FAMILYNAME = "Mustermann";
- private static final String P2_DATEOFBIRTH = "2020-01-10";
- private static final String P2_PLACEOFBIRTH = "Nirgendwo";
- private static final String P2_BIRTHNAME = "Musterkind";
-
- /**
- * jUnit class initializer.
- *
- * @throws IOException In case of an error
- */
- @BeforeClass
- public static void classInitializer() throws IOException {
- final String current = new java.io.File(".").toURI().toString();
- System.setProperty("eidas.ms.configuration", current + "../../basicConfig/default_config.properties");
-
- }
-
- @Test
- public void deWithHexLowerCase() throws Exception {
- try {
- final SimpleEidasData result = postProcessor.postProcess(
- generateInputData(
- P1_eIDASID,
- P1_FAMILYNAME,
- P1_GIVENNAME,
- P1_DATEOFBIRTH,
- P1_PLACEOFBIRTH,
- P1_BIRTHNAME));
-
- validate(result,
- "Uy6qvZV0iA2/drm4zACDLCCm7BE9aCKZVQ16bg80XiU=",
- P1_FAMILYNAME,
- P1_GIVENNAME,
- P1_DATEOFBIRTH,
- P1_PLACEOFBIRTH,
- P1_BIRTHNAME);
-
- } catch (final Exception e) {
- e.printStackTrace();
- fail(e.getMessage());
-
- }
- }
-
- @Test
- public void deWithHexMixedCase() throws Exception {
- try {
- final SimpleEidasData result = postProcessor.postProcess(
- generateInputData(
- P3_eIDASID,
- P3_FAMILYNAME,
- P3_GIVENNAME,
- P3_DATEOFBIRTH,
- P3_PLACEOFBIRTH,
- P3_BIRTHNAME));
-
- validate(result,
- "Uy6qvZV0iA2/drm4zACDLCCm7BE9aCKZVQ16bg80XiU=",
- P3_FAMILYNAME,
- P3_GIVENNAME,
- P3_DATEOFBIRTH,
- P3_PLACEOFBIRTH,
- P3_BIRTHNAME);
-
- } catch (final Exception e) {
- e.printStackTrace();
- fail(e.getMessage());
-
- }
- }
-
- @Test
- public void deWithHexUpperCase() throws Exception {
- try {
- final SimpleEidasData result = postProcessor.postProcess(
- generateInputData(
- P4_eIDASID,
- P4_FAMILYNAME,
- P4_GIVENNAME,
- P4_DATEOFBIRTH,
- P4_PLACEOFBIRTH,
- P4_BIRTHNAME));
-
- validate(result,
- "Uy6qvZV0iA2/drm4zACDLCCm7BE9aCKZVQ16bg80XiU=",
- P4_FAMILYNAME,
- P4_GIVENNAME,
- P4_DATEOFBIRTH,
- P4_PLACEOFBIRTH,
- P4_BIRTHNAME);
-
- } catch (final Exception e) {
- e.printStackTrace();
- fail(e.getMessage());
-
- }
- }
-
- @Test
- public void deWithHexTooLongCase() throws Exception {
- try {
- postProcessor.postProcess(
- generateInputData(
- P5_eIDASID,
- P5_FAMILYNAME,
- P5_GIVENNAME,
- P5_DATEOFBIRTH,
- P5_PLACEOFBIRTH,
- P5_BIRTHNAME));
-
- } catch (final Exception e) {
- return;
-
- }
-
- fail("Too long input accepted");
- }
-
- @Test
- public void deWithHexTooShortCase() throws Exception {
- try {
- postProcessor.postProcess(
- generateInputData(
- P6_eIDASID,
- P6_FAMILYNAME,
- P6_GIVENNAME,
- P6_DATEOFBIRTH,
- P6_PLACEOFBIRTH,
- P6_BIRTHNAME));
-
- } catch (final Exception e) {
- return;
-
- }
-
- fail("Too short input accepted");
- }
-
- @Test
- public void deWithNoHexCase() throws Exception {
- try {
- postProcessor.postProcess(
- generateInputData(
- P7_eIDASID,
- P7_FAMILYNAME,
- P7_GIVENNAME,
- P7_DATEOFBIRTH,
- P7_PLACEOFBIRTH,
- P7_BIRTHNAME));
-
- } catch (final Exception e) {
- return;
-
- }
-
- fail("Not hex encoded input accepted");
- }
-
- @Test
- public void eeTestCase() throws Exception {
- try {
- final SimpleEidasData result = postProcessor.postProcess(
- generateInputData(
- P2_eIDASID,
- P2_FAMILYNAME,
- P2_GIVENNAME,
- P2_DATEOFBIRTH,
- P2_PLACEOFBIRTH,
- P2_BIRTHNAME));
-
- validate(result,
- "asfasfasdfasdfasdfasdfasdfasvafasdfasdfasdfasdfasdfasvascasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasd",
- P2_FAMILYNAME,
- P2_GIVENNAME,
- P2_DATEOFBIRTH,
- P2_PLACEOFBIRTH,
- P2_BIRTHNAME);
-
- } catch (final Exception e) {
- e.printStackTrace();
- fail(e.getMessage());
-
- }
- }
-
- @Test
- public void eeTestFamilyNameMissingCase() throws Exception {
- try {
- final SimpleEidasData result = postProcessor.postProcess(
- generateInputData(
- P2_eIDASID,
- null,
- P2_GIVENNAME,
- P2_DATEOFBIRTH,
- P2_PLACEOFBIRTH,
- P2_BIRTHNAME));
-
- validate(result,
- "asfasfasdfasdfasdfasdfasdfasvafasdfasdfasdfasdfasdfasvascasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasd",
- P2_FAMILYNAME,
- P2_GIVENNAME,
- P2_DATEOFBIRTH,
- P2_PLACEOFBIRTH,
- P2_BIRTHNAME);
-
- } catch (final Exception e) {
- return;
-
- }
-
- fail("FamilyName missing input accepted");
-
- }
-
- @Test
- public void eeTestGivenNameMissingCase() throws Exception {
- try {
- final SimpleEidasData result = postProcessor.postProcess(
- generateInputData(
- P2_eIDASID,
- P2_FAMILYNAME,
- null,
- P2_DATEOFBIRTH,
- P2_PLACEOFBIRTH,
- P2_BIRTHNAME));
-
- validate(result,
- "asfasfasdfasdfasdfasdfasdfasvafasdfasdfasdfasdfasdfasvascasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasd",
- P2_FAMILYNAME,
- P2_GIVENNAME,
- P2_DATEOFBIRTH,
- P2_PLACEOFBIRTH,
- P2_BIRTHNAME);
-
- } catch (final Exception e) {
- return;
-
- }
-
- fail("GivenName missing input accepted");
-
- }
-
- @Test
- public void eeTestDateOfBirthMissingCase() throws Exception {
- try {
- final SimpleEidasData result = postProcessor.postProcess(
- generateInputData(
- P2_eIDASID,
- P2_FAMILYNAME,
- P2_GIVENNAME,
- null,
- P2_PLACEOFBIRTH,
- P2_BIRTHNAME));
-
- validate(result,
- "asfasfasdfasdfasdfasdfasdfasvafasdfasdfasdfasdfasdfasvascasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasd",
- P2_FAMILYNAME,
- P2_GIVENNAME,
- P2_DATEOFBIRTH,
- P2_PLACEOFBIRTH,
- P2_BIRTHNAME);
-
- } catch (final Exception e) {
- return;
-
- }
-
- fail("DateOfBirth missing input accepted");
-
- }
-
- @Test
- public void eeTestIdMissingCase() throws Exception {
- try {
- final SimpleEidasData result = postProcessor.postProcess(
- generateInputData(
- null,
- P2_FAMILYNAME,
- P2_GIVENNAME,
- P2_DATEOFBIRTH,
- P2_PLACEOFBIRTH,
- P2_BIRTHNAME));
-
- validate(result,
- "asfasfasdfasdfasdfasdfasdfasvafasdfasdfasdfasdfasdfasvascasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasd",
- P2_FAMILYNAME,
- P2_GIVENNAME,
- P2_DATEOFBIRTH,
- P2_PLACEOFBIRTH,
- P2_BIRTHNAME);
-
- } catch (final Exception e) {
- return;
-
- }
-
- fail("eIDAS-Id missing input accepted");
-
- }
-
- private Map<String, Object> generateInputData(String id, String familyName, String givenName,
- String dateOfBirth, String placeOfBirth, String birthName) {
- final Map<String, Object> result = new HashMap<>();
- result.put(Constants.eIDAS_ATTR_PERSONALIDENTIFIER, id);
- result.put(Constants.eIDAS_ATTR_CURRENTGIVENNAME, givenName);
- result.put(Constants.eIDAS_ATTR_CURRENTFAMILYNAME, familyName);
- result.put(Constants.eIDAS_ATTR_DATEOFBIRTH, dateOfBirth);
- result.put(Constants.eIDAS_ATTR_PLACEOFBIRTH, placeOfBirth);
- result.put(Constants.eIDAS_ATTR_BIRTHNAME, birthName);
- return result;
-
- }
-
- private void validate(SimpleEidasData result, String id, String familyName, String givenName,
- String dateOfBirth, String placeOfBirth, String birthName) {
- if (!result.getPseudonym().equals(id)) {
- fail(result.getPseudonym() + "is not equal to " + id);
- }
-
- if (!result.getFamilyName().equals(familyName)) {
- fail(result.getFamilyName() + "is not equal to " + familyName);
- }
-
- if (!result.getGivenName().equals(givenName)) {
- fail(result.getGivenName() + "is not equal to " + givenName);
- }
-
- if (!result.getDateOfBirth().equals(dateOfBirth)) {
- fail(result.getDateOfBirth() + "is not equal to " + dateOfBirth);
- }
-
- if (!result.getPlaceOfBirth().equals(placeOfBirth)) {
- fail(result.getPlaceOfBirth() + "is not equal to " + placeOfBirth);
- }
-
- if (!result.getBirthName().equals(birthName)) {
- fail(result.getBirthName() + "is not equal to " + birthName);
- }
-
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasRequestPreProcessingFirstTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasRequestPreProcessingFirstTest.java
deleted file mode 100644
index 84da2344..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasRequestPreProcessingFirstTest.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright 2018 A-SIT Plus GmbH
- * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ,
- * A-SIT Plus GmbH, A-SIT, and Graz University of Technology.
- *
- * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "License");
- * You may not use this work except in compliance with the License.
- * You may obtain a copy of the License at:
- * https://joinup.ec.europa.eu/news/understanding-eupl-v12
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses.
- * The "NOTICE" text file is part of the distribution. Any derivative works
- * that you distribute must include a readable copy of the "NOTICE" text file.
-*/
-
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.validation;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidPostProcessingException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.CcSpecificEidProcessingService;
-import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants;
-import at.gv.egiz.eaaf.core.api.data.EaafConstants;
-import at.gv.egiz.eaaf.core.api.idp.IConfigurationWithSP;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import eu.eidas.auth.commons.light.impl.LightRequest;
-import eu.eidas.auth.commons.light.impl.LightRequest.Builder;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_realConfig.xml",
- //"/SpringTest-context_basic_mapConfig.xml"
- })
-@TestPropertySource(locations = {"classpath:/config/junit_config_de_attributes.properties", "classpath:/config" +
- "/junit_config_1_springboot.properties"})
-@DirtiesContext(classMode = ClassMode.AFTER_CLASS)
-public class EidasRequestPreProcessingFirstTest {
-
- @Autowired
- private IConfigurationWithSP basicConfig;
- @Autowired
- private CcSpecificEidProcessingService preProcessor;
-
- private TestRequestImpl pendingReq;
- private DummySpConfiguration oaParam;
- private Builder authnRequestBuilder;
-
- /**
- * jUnit class initializer.
- *
- * @throws IOException In case of an error
- */
- @BeforeClass
- public static void classInitializer() throws IOException {
-// final String current = new java.io.File(".").toURI().toString();
-// System.setProperty("eidas.ms.configuration",
-// current + "src/test/resources/config/junit_config_de_attributes.properties");
-
- }
-
- /**
- * jUnit test set-up.
- *
- */
- @Before
- public void setUp() {
-
- final Map<String, String> spConfig = new HashMap<>();
- spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp");
- spConfig.put("target", "urn:publicid:gv.at:cdid+XX");
- oaParam = new DummySpConfiguration(spConfig, basicConfig);
-
- pendingReq = new TestRequestImpl();
- pendingReq.setSpConfig(oaParam);
- pendingReq.setPendingReqId(at.gv.egiz.eaaf.core.impl.utils.Random.nextProcessReferenceValue());
- pendingReq.setAuthUrl("http://test.com/");
-
- authnRequestBuilder = LightRequest.builder();
- authnRequestBuilder.id(UUID.randomUUID().toString());
- authnRequestBuilder.issuer("Test");
- authnRequestBuilder.levelOfAssurance(EaafConstants.EIDAS_LOA_HIGH);
-
- }
-
- @Test
- public void prePreProcessGeneric() throws EidPostProcessingException {
- final String testCountry = "XX";
- authnRequestBuilder.citizenCountryCode(testCountry);
- preProcessor.preProcess(testCountry, pendingReq, authnRequestBuilder);
-
- final LightRequest lightReq = authnRequestBuilder.build();
-
- Assert.assertEquals("ProviderName is not Static",
- Constants.DEFAULT_PROPS_EIDAS_NODE_STATIC_PROVIDERNAME_FOR_PUBLIC_SP, lightReq.getProviderName());
- Assert.assertEquals("no PublicSP", "public", lightReq.getSpType());
- Assert.assertEquals("Requested attribute size not match", 4, lightReq.getRequestedAttributes().size());
-
- }
-
- @Test
- public void prePreProcessGenericNoCountryCode() throws EidPostProcessingException {
- final String testCountry = "XX";
- authnRequestBuilder.citizenCountryCode(testCountry);
- preProcessor.preProcess(null, pendingReq, authnRequestBuilder);
-
- final LightRequest lightReq = authnRequestBuilder.build();
-
- Assert.assertEquals("ProviderName is not Static",
- Constants.DEFAULT_PROPS_EIDAS_NODE_STATIC_PROVIDERNAME_FOR_PUBLIC_SP, lightReq.getProviderName());
- Assert.assertEquals("no PublicSP", "public", lightReq.getSpType());
- Assert.assertEquals("Requested attribute size not match", 4, lightReq.getRequestedAttributes().size());
-
- }
-
- @Test
- public void prePreProcessDE() throws EidPostProcessingException {
-
- final String testCountry = "DE";
- authnRequestBuilder.citizenCountryCode(testCountry);
- preProcessor.preProcess(testCountry, pendingReq, authnRequestBuilder);
-
- final LightRequest lightReq = authnRequestBuilder.build();
-
- Assert.assertEquals("ProviderName is not Static",
- Constants.DEFAULT_PROPS_EIDAS_NODE_STATIC_PROVIDERNAME_FOR_PUBLIC_SP, lightReq.getProviderName());
- Assert.assertNotSame("RequesterId was set", lightReq.getRequesterId());
- Assert.assertEquals("no PublicSP", "public", lightReq.getSpType());
- Assert.assertEquals("Requested attribute size not match", 8, lightReq.getRequestedAttributes().size());
-
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasRequestPreProcessingSecondTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasRequestPreProcessingSecondTest.java
deleted file mode 100644
index 6fd4f8a5..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasRequestPreProcessingSecondTest.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright 2018 A-SIT Plus GmbH
- * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ,
- * A-SIT Plus GmbH, A-SIT, and Graz University of Technology.
- *
- * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by
- * the European Commission - subsequent versions of the EUPL (the "License");
- * You may not use this work except in compliance with the License.
- * You may obtain a copy of the License at:
- * https://joinup.ec.europa.eu/news/understanding-eupl-v12
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * This product combines work with different licenses. See the "NOTICE" text
- * file for details on the various modules and licenses.
- * The "NOTICE" text file is part of the distribution. Any derivative works
- * that you distribute must include a readable copy of the "NOTICE" text file.
-*/
-
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.validation;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidPostProcessingException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.CcSpecificEidProcessingService;
-import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants;
-import at.gv.egiz.eaaf.core.api.data.EaafConstants;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import eu.eidas.auth.commons.light.impl.LightRequest;
-import eu.eidas.auth.commons.light.impl.LightRequest.Builder;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"})
-@DirtiesContext(classMode = ClassMode.AFTER_CLASS)
-public class EidasRequestPreProcessingSecondTest {
-
- @Autowired
- private MsConnectorDummyConfigMap basicConfig;
- @Autowired
- private CcSpecificEidProcessingService preProcessor;
-
- private TestRequestImpl pendingReq;
- private DummySpConfiguration oaParam;
- private Builder authnRequestBuilder;
-
-
- /**
- * jUnit test set-up.
- *
- */
- @Before
- public void setUp() {
-
- final Map<String, String> spConfig = new HashMap<>();
- spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp");
- spConfig.put("target", "urn:publicid:gv.at:cdid+XX");
- oaParam = new DummySpConfiguration(spConfig, basicConfig);
-
- pendingReq = new TestRequestImpl();
- pendingReq.setSpConfig(oaParam);
- pendingReq.setPendingReqId(at.gv.egiz.eaaf.core.impl.utils.Random.nextProcessReferenceValue());
- pendingReq.setAuthUrl("http://test.com/");
-
- authnRequestBuilder = LightRequest.builder();
- authnRequestBuilder.id(UUID.randomUUID().toString());
- authnRequestBuilder.issuer("Test");
- authnRequestBuilder.levelOfAssurance(EaafConstants.EIDAS_LOA_HIGH);
-
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.requesterId.lu.useStaticRequesterForAll", "true");
-
- }
-
- @Test
- public void prePreProcessDeUnknownAttribute() throws EidPostProcessingException {
- basicConfig.putConfigValue("eidas.ms.auth.eIDAS.node_v2.staticProviderNameForPublicSPs", "myNode");
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs", "true");
-
- final String testCountry = "DE";
- authnRequestBuilder.citizenCountryCode(testCountry);
- preProcessor.preProcess(testCountry, pendingReq, authnRequestBuilder);
-
- final LightRequest lightReq = authnRequestBuilder.build();
-
- Assert.assertEquals("ProviderName is not Static", "myNode", lightReq.getProviderName());//Fixme "myNode"
- Assert.assertEquals("no PublicSP", "public", lightReq.getSpType());
- Assert.assertEquals("Requested attribute size not match", 8, lightReq.getRequestedAttributes().size());
-
- }
-
-
- /*
- * Set ProviderName according to general configuration
- */
- @Test
- public void prePreProcessLuPublicSpWithoutRequestId() throws EidPostProcessingException {
-
- basicConfig.putConfigValue(
- "eidas.ms.auth.eIDAS.node_v2.requesterId.lu.useStaticRequesterForAll", "false");
-
- final String testCountry = "LU";
- authnRequestBuilder.citizenCountryCode(testCountry);
- preProcessor.preProcess(testCountry, pendingReq, authnRequestBuilder);
-
- final LightRequest lightReq = authnRequestBuilder.build();
-
- Assert.assertEquals("ProviderName is not Static", "myNode", lightReq.getProviderName());
- Assert.assertNull("RequesterId", lightReq.getRequesterId());
- Assert.assertEquals("no PublicSP", "public", lightReq.getSpType());
- Assert.assertEquals("Requested attribute size not match", 4, lightReq.getRequestedAttributes().size());
-
- }
-
- /*
- * Always set requesterId and providername in case of country LU
- */
- @Test
- public void prePreProcessLuPublicSpWithStaticRequesterId() throws EidPostProcessingException {
-
-
- final String testCountry = "LU";
- authnRequestBuilder.citizenCountryCode(testCountry);
- preProcessor.preProcess(testCountry, pendingReq, authnRequestBuilder);
-
- final LightRequest lightReq = authnRequestBuilder.build();
-
- Assert.assertEquals("ProviderName is not Static",
- "myNode", lightReq.getProviderName());
- Assert.assertEquals("RequesterId is not Static",
- "myNode", lightReq.getRequesterId());
- Assert.assertEquals("no PublicSP", "public", lightReq.getSpType());
- Assert.assertEquals("Requested attribute size not match", 4, lightReq.getRequestedAttributes().size());
-
- }
-
-}
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasResponseValidatorTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasResponseValidatorTest.java
deleted file mode 100644
index 0b18815b..00000000
--- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasResponseValidatorTest.java
+++ /dev/null
@@ -1,330 +0,0 @@
-package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.validation;
-
-import static at.asitplus.eidas.specific.connector.MsEidasNodeConstants.PROP_CONFIG_SP_NEW_EID_MODE;
-
-import java.net.URISyntaxException;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import com.google.common.collect.ImmutableSet;
-
-import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap;
-import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummySpConfiguration;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasValidationException;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.validator.EidasResponseValidator;
-import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants;
-import at.gv.egiz.eaaf.core.api.data.EaafConstants;
-import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import at.gv.egiz.eaaf.core.impl.utils.Random;
-import eu.eidas.auth.commons.attribute.AttributeDefinition;
-import eu.eidas.auth.commons.attribute.ImmutableAttributeMap;
-import eu.eidas.auth.commons.attribute.ImmutableAttributeMap.Builder;
-import eu.eidas.auth.commons.attribute.impl.StringAttributeValue;
-import eu.eidas.auth.commons.light.ILightResponse;
-import eu.eidas.auth.commons.protocol.impl.AuthenticationResponse;
-import lombok.val;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
-@ContextConfiguration(locations = {
- "/SpringTest-context_tasks_test.xml",
- "/SpringTest-context_basic_mapConfig.xml"})
-public class EidasResponseValidatorTest {
-
- @Autowired private MsConnectorDummyConfigMap basicConfig;
- @Autowired protected EidasAttributeRegistry attrRegistry;
-
- private TestRequestImpl pendingReq;
- private MsConnectorDummySpConfiguration oaParam;
-
-
- /**
- * jUnit test set-up.
- */
- @Before
- public void setUp() throws EaafStorageException, URISyntaxException {
-
- final Map<String, String> spConfig = new HashMap<>();
- spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp");
- spConfig.put("target", "urn:publicid:gv.at:cdid+XX");
- spConfig.put(PROP_CONFIG_SP_NEW_EID_MODE, "true");
- oaParam = new MsConnectorDummySpConfiguration(spConfig, basicConfig);
- oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH));
- pendingReq = new TestRequestImpl();
-
- pendingReq.setSpConfig(oaParam);
- pendingReq.setPendingReqId(at.gv.egiz.eaaf.core.impl.utils.Random.nextProcessReferenceValue());
- pendingReq.setAuthUrl("http://test.com/");
- pendingReq.setTransactionId("avaasbav");
- pendingReq.setPiiTransactionId(RandomStringUtils.randomAlphanumeric(10));
-
- }
-
-
- @Test
- public void loaFromResponseToLow() throws URISyntaxException {
- //set-up
- ILightResponse eidasResponse = buildDummyAuthResponse(
- "LU/AT/" + RandomStringUtils.randomNumeric(10),
- EaafConstants.EIDAS_LOA_LOW,
- false);
- String spCountry = "AT";
- String citizenCountryCode = "XX";
-
- //execute test
- try {
- EidasResponseValidator.validateResponse(pendingReq, eidasResponse, spCountry, citizenCountryCode, attrRegistry);
- Assert.fail("Wrong eIDAS response not detected");
-
- } catch (EidasValidationException e) {
- Assert.assertEquals("ErrorId", "eidas.06", e.getErrorId());
- Assert.assertEquals("wrong parameter size", 1, e.getParams().length);
- Assert.assertEquals("wrong errorMsg", "http://eidas.europa.eu/LoA/low",
- e.getParams()[0]);
-
- }
- }
-
- @Test
- public void noEidasSpCountry() throws URISyntaxException {
- //set-up
- ILightResponse eidasResponse = buildDummyAuthResponse(
- "LU/AT/" + RandomStringUtils.randomNumeric(10),
- EaafConstants.EIDAS_LOA_SUBSTANTIAL,
- false);
- String spCountry = null;
- String citizenCountryCode = "LU";
-
- oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH, EaafConstants.EIDAS_LOA_SUBSTANTIAL));
-
-
- //execute test
- try {
- EidasResponseValidator.validateResponse(pendingReq, eidasResponse, spCountry, citizenCountryCode, attrRegistry);
- Assert.fail("Wrong eIDAS response not detected");
-
- } catch (EidasValidationException e) {
- Assert.assertEquals("ErrorId", "eidas.07", e.getErrorId());
- Assert.assertEquals("wrong parameter size", 2, e.getParams().length);
- Assert.assertEquals("wrong errorMsg", "PersonIdentifier",
- e.getParams()[0]);
- Assert.assertEquals("wrong errorMsg",
- "Destination country does not match to SP country",
- e.getParams()[1]);
-
- }
- }
-
- @Test
- public void noEidasResponseCountry() throws URISyntaxException {
- //set-up
- ILightResponse eidasResponse = buildDummyAuthResponse(
- "LU/AT/" + RandomStringUtils.randomNumeric(10),
- EaafConstants.EIDAS_LOA_SUBSTANTIAL,
- false);
- String spCountry = "AT";
- String citizenCountryCode = null;
-
- oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH, EaafConstants.EIDAS_LOA_SUBSTANTIAL));
-
-
- //execute test
- try {
- EidasResponseValidator.validateResponse(pendingReq, eidasResponse, spCountry, citizenCountryCode, attrRegistry);
- Assert.fail("Wrong eIDAS response not detected");
-
- } catch (EidasValidationException e) {
- Assert.assertEquals("ErrorId", "eidas.07", e.getErrorId());
- Assert.assertEquals("wrong parameter size", 2, e.getParams().length);
- Assert.assertEquals("wrong errorMsg", "PersonIdentifier",
- e.getParams()[0]);
- Assert.assertEquals("wrong errorMsg",
- "Citizen country does not match to eIDAS-node country that generates the response",
- e.getParams()[1]);
-
- }
- }
-
- @Test
- public void wrongEidasResponseCountry() throws URISyntaxException {
- //set-up
- ILightResponse eidasResponse = buildDummyAuthResponse(
- "LU/AT/" + RandomStringUtils.randomNumeric(10),
- EaafConstants.EIDAS_LOA_SUBSTANTIAL,
- false);
- String spCountry = "AT";
- String citizenCountryCode = "XX";
-
- oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH, EaafConstants.EIDAS_LOA_SUBSTANTIAL));
-
-
- //execute test
- try {
- EidasResponseValidator.validateResponse(pendingReq, eidasResponse, spCountry, citizenCountryCode, attrRegistry);
- Assert.fail("Wrong eIDAS response not detected");
-
- } catch (EidasValidationException e) {
- Assert.assertEquals("ErrorId", "eidas.07", e.getErrorId());
- Assert.assertEquals("wrong parameter size", 2, e.getParams().length);
- Assert.assertEquals("wrong errorMsg", "PersonIdentifier",
- e.getParams()[0]);
- Assert.assertEquals("wrong errorMsg",
- "Citizen country does not match to eIDAS-node country that generates the response",
- e.getParams()[1]);
-
- }
- }
-
- @Test
- public void missingPersonalIdentifier() throws URISyntaxException {
- //set-up
- ILightResponse eidasResponse = buildDummyAuthResponse(
- null,
- EaafConstants.EIDAS_LOA_SUBSTANTIAL,
- false);
- String spCountry = "AT";
- String citizenCountryCode = "LU";
-
- oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH, EaafConstants.EIDAS_LOA_SUBSTANTIAL));
-
-
- //execute test
- try {
- EidasResponseValidator.validateResponse(pendingReq, eidasResponse, spCountry, citizenCountryCode, attrRegistry);
- Assert.fail("Wrong eIDAS response not detected");
-
- } catch (EidasValidationException e) {
- Assert.assertEquals("ErrorId", "eidas.05", e.getErrorId());
- Assert.assertEquals("wrong parameter size", 1, e.getParams().length);
- Assert.assertEquals("wrong errorMsg", "NO 'PersonalIdentifier' attriubte",
- e.getParams()[0]);
-
- }
- }
-
- @Test
- public void moreThanOnePersonalIdentifier() throws URISyntaxException {
- //set-up
- ILightResponse eidasResponse = buildDummyAuthResponse(
- null,
- EaafConstants.EIDAS_LOA_SUBSTANTIAL,
- true);
- String spCountry = "AT";
- String citizenCountryCode = "LU";
-
- oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH, EaafConstants.EIDAS_LOA_SUBSTANTIAL));
-
-
- //execute test
- try {
- EidasResponseValidator.validateResponse(pendingReq, eidasResponse, spCountry, citizenCountryCode, attrRegistry);
- Assert.fail("Wrong eIDAS response not detected");
-
- } catch (EidasValidationException e) {
- Assert.assertEquals("ErrorId", "eidas.05", e.getErrorId());
- Assert.assertEquals("wrong parameter size", 1, e.getParams().length);
- Assert.assertEquals("wrong errorMsg", "NO 'PersonalIdentifier' attriubte",
- e.getParams()[0]);
-
- }
- }
-
- @Test
- public void emptyPersonalIdentifier() throws URISyntaxException {
- //set-up
- ILightResponse eidasResponse = buildDummyAuthResponse(
- "",
- EaafConstants.EIDAS_LOA_SUBSTANTIAL,
- false);
- String spCountry = "AT";
- String citizenCountryCode = "LU";
-
- oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH, EaafConstants.EIDAS_LOA_SUBSTANTIAL));
-
-
- //execute test
- try {
- EidasResponseValidator.validateResponse(pendingReq, eidasResponse, spCountry, citizenCountryCode, attrRegistry);
- Assert.fail("Wrong eIDAS response not detected");
-
- } catch (EidasValidationException e) {
- Assert.assertEquals("ErrorId", "eidas.07", e.getErrorId());
- Assert.assertEquals("wrong parameter size", 2, e.getParams().length);
- Assert.assertEquals("wrong errorMsg", "PersonIdentifier",
- e.getParams()[0]);
- Assert.assertEquals("wrong errorMsg",
- "Wrong identifier format",
- e.getParams()[1]);
-
- }
- }
-
- @Test
- public void validResponse() throws URISyntaxException, EidasValidationException {
- //set-up
-
- String spCountry = RandomStringUtils.randomAlphabetic(2).toUpperCase();
- String cCountry = RandomStringUtils.randomAlphabetic(2).toUpperCase();
-
- ILightResponse eidasResponse = buildDummyAuthResponse(
- cCountry + "/" + spCountry + "/" + RandomStringUtils.randomAlphanumeric(20),
- EaafConstants.EIDAS_LOA_SUBSTANTIAL,
- false);
-
- oaParam.setLoa(Arrays.asList(EaafConstants.EIDAS_LOA_HIGH, EaafConstants.EIDAS_LOA_SUBSTANTIAL));
-
-
- //execute test
-
- EidasResponseValidator.validateResponse(pendingReq, eidasResponse, spCountry, cCountry, attrRegistry);
-
- }
-
-
- private AuthenticationResponse buildDummyAuthResponse(String personalId, String loa, boolean moreThanOnePersonalId)
- throws URISyntaxException {
-
-
- final AttributeDefinition personIdattributeDef = attrRegistry.getCoreAttributeRegistry().getByFriendlyName(
- Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first();
-
- final Builder attributeMap = ImmutableAttributeMap.builder();
- if (personalId != null) {
- if (moreThanOnePersonalId) {
- ImmutableSet values = ImmutableSet.of(new StringAttributeValue(personalId),
- new StringAttributeValue("XX/YY/" + RandomStringUtils.randomAlphanumeric(10)));
- attributeMap.put(personIdattributeDef, values);
-
- } else {
- attributeMap.put(personIdattributeDef, personalId);
-
- }
- }
-
- val b = new AuthenticationResponse.Builder();
- return b.id("_".concat(Random.nextHexRandom16()))
- .issuer(RandomStringUtils.randomAlphabetic(10))
- .subject(RandomStringUtils.randomAlphabetic(10))
- .statusCode(Constants.SUCCESS_URI)
- .inResponseTo("_".concat(Random.nextHexRandom16()))
- .subjectNameIdFormat("afaf")
- .levelOfAssurance(loa)
- .attributes(attributeMap.build())
- .build();
- }
-}
-