diff options
| author | Alexander Marsalek <amarsalek@iaik.tugraz.at> | 2021-01-07 18:16:45 +0100 | 
|---|---|---|
| committer | Alexander Marsalek <amarsalek@iaik.tugraz.at> | 2021-01-11 10:10:36 +0100 | 
| commit | 55d809e4b4df5c7ca9ba2bdf371f7f9376302ea8 (patch) | |
| tree | e03165aa7283f049a3e099af3558d7547cb29a0d /eidas_modules/authmodule-eIDAS-v2/src/test | |
| parent | 41398d8a2aa153915e1c264fcb4f946f36e3368d (diff) | |
| download | National_eIDAS_Gateway-55d809e4b4df5c7ca9ba2bdf371f7f9376302ea8.tar.gz National_eIDAS_Gateway-55d809e4b4df5c7ca9ba2bdf371f7f9376302ea8.tar.bz2 National_eIDAS_Gateway-55d809e4b4df5c7ca9ba2bdf371f7f9376302ea8.zip | |
Resolve merge comments
Diffstat (limited to 'eidas_modules/authmodule-eIDAS-v2/src/test')
2 files changed, 198 insertions, 242 deletions
| diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskFirstTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskFirstTest.java index f7fc6b06..a1dce0f2 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskFirstTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskFirstTest.java @@ -1,11 +1,34 @@ +/* + * 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 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.ernb.IErnbClient; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.ernp.IErnpClient;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.ManualFixNecessaryException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.DeSpecificDetailSearchProcessor; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.ICountrySpecificDetailSearchProcessor; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.CountrySpecificDetailSearchProcessor;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.ItSpecificDetailSearchProcessor;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.InitialSearchTask;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.zmr.IZmrClient; @@ -27,10 +50,7 @@ import org.junit.Before;  import org.junit.BeforeClass;  import org.junit.Test;  import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -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; @@ -46,6 +66,7 @@ import java.net.URI;  import java.net.URISyntaxException;  import java.util.ArrayList;  import java.util.List; +import java.util.Random;  @RunWith(SpringJUnit4ClassRunner.class) @@ -53,13 +74,9 @@ import java.util.List;  @DirtiesContext(classMode = ClassMode.BEFORE_CLASS)  public class InitialSearchTaskFirstTest { -  @Autowired(required = true) -  @Mock -  @InjectMocks    private InitialSearchTask task; -    private IZmrClient zmrClient; -  private IErnbClient ernbClient; +  private IErnpClient ernpClient;    final ExecutionContext executionContext = new ExecutionContextImpl();    private MockHttpServletRequest httpReq; @@ -68,6 +85,12 @@ public class InitialSearchTaskFirstTest {    private String randomIdentifier = RandomStringUtils.randomNumeric(10);    private String randomFamilyName = RandomStringUtils.randomNumeric(11);    private String randomGivenName = RandomStringUtils.randomNumeric(12); +  private String randomPlaceOfBirth = RandomStringUtils.randomNumeric(12); +  private String randomBirthName = RandomStringUtils.randomNumeric(12); +  private String randomDate = "2011-01-"+ (10 + new Random().nextInt(18)); +  private String DE_ST = "de/st/"; +  private String IT_ST = "it/st/"; +    /**     * jUnit class initializer.     * @@ -101,68 +124,52 @@ public class InitialSearchTaskFirstTest {    /**     * One match, but register update needed     */ -  // NOTE: Why is the method named "testNode100a"? -  public void testNode100a() throws Exception { +  public void testNode100_UserIdentifiedUpdateNecessary_a() throws Exception { -    //Mock ZMR      ArrayList<RegisterResult> zmrResult = new ArrayList<>();      String randomBpk = RandomStringUtils.randomNumeric(6); -    zmrResult.add(new RegisterResult(randomBpk, "de/st/"+randomIdentifier, "Max_new", randomFamilyName, "2011-01-01")); +    String newFirstName = RandomStringUtils.randomAlphabetic(5); +    zmrResult.add(new RegisterResult(randomBpk, DE_ST+randomIdentifier, newFirstName, randomFamilyName, randomDate));      zmrClient = Mockito.mock(IZmrClient.class); -    Mockito.when(zmrClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(zmrResult); - -    //Mock ernb -    ArrayList<RegisterResult> ernbResult = new ArrayList<>(); +    Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(zmrResult); -    ernbClient = Mockito.mock(IErnbClient.class); -    Mockito.when(ernbClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(ernbResult); - -    task = new InitialSearchTask(emptyHandlers(), ernbClient, zmrClient); -    try { -      task.execute(pendingReq, executionContext); -      String bPk = (String) -          pendingReq.getSessionData(AuthProcessDataWrapper.class).getGenericDataFromSession(Constants.DATA_RESULT_MATCHING_BPK); -      Assert.assertTrue("Wrong bpk", bPk.equals(randomBpk)); +    ArrayList<RegisterResult> ernpResult = new ArrayList<>(); +    ernpClient = Mockito.mock(IErnpClient.class); +    Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(ernpResult); -    } catch (final TaskExecutionException e) { -      // NOTE: assertTrue is probably the wrong method to use ... why catch the exception anyway? -      Assert.assertTrue("Wrong workflow, should not reach this point", false); -    } +    task = new InitialSearchTask(emptyHandlers(), ernpClient, zmrClient); +    task.execute(pendingReq, executionContext); +    String bPk = (String) +        pendingReq.getSessionData(AuthProcessDataWrapper.class).getGenericDataFromSession(Constants.DATA_RESULT_MATCHING_BPK); +    Assert.assertTrue("Wrong bpk", bPk.equals(randomBpk));    }    @Test -  // NOTE: Why is @DirtiesContext after each test necessary? What is changed in the context and why?    @DirtiesContext    /**     * One match, but register update needed     */ -  public void testNode100b() throws Exception { +  public void testNode100_UserIdentifiedUpdateNecessary_b() throws TaskExecutionException { -    //Mock ZMR      ArrayList<RegisterResult> zmrResult = new ArrayList<>();      zmrClient = Mockito.mock(IZmrClient.class); -    Mockito.when(zmrClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(zmrResult);//"de/st/max123"??? +    Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(zmrResult); -    //Mock ernb -    ArrayList<RegisterResult> ernbResult = new ArrayList<>(); +    ArrayList<RegisterResult> ernpResult = new ArrayList<>();      String randomBpk = RandomStringUtils.randomNumeric(6); -    ernbResult.add(new RegisterResult(randomBpk, "de/st/"+randomIdentifier, "Max_new", randomFamilyName, "2011-01-01")); +    ernpResult.add(new RegisterResult(randomBpk, DE_ST+randomIdentifier, "Max_new", randomFamilyName, randomDate)); -    ernbClient = Mockito.mock(IErnbClient.class); -    Mockito.when(ernbClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(ernbResult); +    ernpClient = Mockito.mock(IErnpClient.class); +    Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(ernpResult); -    task = new InitialSearchTask(emptyHandlers(), ernbClient, zmrClient); -    try { -      task.execute(pendingReq, executionContext); -      String bPk = (String) -          pendingReq.getSessionData(AuthProcessDataWrapper.class).getGenericDataFromSession(Constants.DATA_RESULT_MATCHING_BPK); -      Assert.assertTrue("Wrong bpk", bPk.equals(randomBpk)); +    task = new InitialSearchTask(emptyHandlers(), ernpClient, zmrClient); +    task.execute(pendingReq, executionContext); +    String bPk = (String) +        pendingReq.getSessionData(AuthProcessDataWrapper.class).getGenericDataFromSession(Constants.DATA_RESULT_MATCHING_BPK); +    Assert.assertTrue("Wrong bpk", bPk.equals(randomBpk)); -    } catch (final TaskExecutionException e) { -      Assert.assertTrue("Wrong workflow, should not reach this point", false); -    }    } @@ -171,21 +178,19 @@ public class InitialSearchTaskFirstTest {    /**     * Two matches found in ZMR     */ -  public void testNode101a() throws Exception { +  public void testNode101_ManualFixNecessary_a() throws Exception { -    //Mock ZMR      ArrayList<RegisterResult> zmrResult = new ArrayList<>(); -    zmrResult.add(new RegisterResult("bpkMax", "de/st/"+randomIdentifier, randomGivenName, randomFamilyName, "2011-01-01")); -    zmrResult.add(new RegisterResult("bpkMax", "de/st/"+randomIdentifier, "Maximilian", randomFamilyName, "2011-01-01")); +    zmrResult.add(new RegisterResult("bpkMax", DE_ST+randomIdentifier, randomGivenName, randomFamilyName, randomDate)); +    zmrResult.add(new RegisterResult("bpkMax", DE_ST+randomIdentifier, "Maximilian", randomFamilyName, randomDate));      zmrClient = Mockito.mock(IZmrClient.class); -    Mockito.when(zmrClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(zmrResult); +    Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(zmrResult); -    //Mock ernb -    ArrayList<RegisterResult> ernbResult = new ArrayList<>(); -    ernbClient = Mockito.mock(IErnbClient.class); -    Mockito.when(ernbClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(ernbResult); +    ArrayList<RegisterResult> ernpResult = new ArrayList<>(); +    ernpClient = Mockito.mock(IErnpClient.class); +    Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(ernpResult); -    task = new InitialSearchTask(emptyHandlers(), ernbClient, zmrClient); +    task = new InitialSearchTask(emptyHandlers(), ernpClient, zmrClient);      try {        task.execute(pendingReq, executionContext);        Assert.assertTrue("Wrong workflow, should not reach this point/ get a bpk", false); @@ -199,24 +204,24 @@ public class InitialSearchTaskFirstTest {    @Test    @DirtiesContext    /** -   * Two matches found in ErnB +   * Two matches found in ErnP     */ -  public void testNode101b() throws Exception { - -    //Mock ZMR +  public void testNode101_ManualFixNecessary_b() throws Exception { +    String randombpk = RandomStringUtils.random(5);      ArrayList<RegisterResult> zmrResult = new ArrayList<>();      zmrClient = Mockito.mock(IZmrClient.class); -    Mockito.when(zmrClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(zmrResult); +    Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(zmrResult); -    //Mock ernb -    ArrayList<RegisterResult> ernbResult = new ArrayList<>(); -    ernbResult.add(new RegisterResult("bpkMax", "de/st/"+randomIdentifier, randomGivenName, randomFamilyName, "2011-01-01")); -    ernbResult.add(new RegisterResult("bpkMax", "de/st/"+randomIdentifier, "Maximilian", randomFamilyName, "2011-01-01")); +    ArrayList<RegisterResult> ernpResult = new ArrayList<>(); +    ernpResult.add(new RegisterResult(randombpk, DE_ST+randomIdentifier, randomGivenName, randomFamilyName, randomDate)); +    ernpResult.add(new RegisterResult(randombpk, DE_ST+randomIdentifier, randomGivenName+RandomStringUtils.random(2), +        randomFamilyName, +        randomDate)); -    ernbClient = Mockito.mock(IErnbClient.class); -    Mockito.when(ernbClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(ernbResult); +    ernpClient = Mockito.mock(IErnpClient.class); +    Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(ernpResult); -    task = new InitialSearchTask(emptyHandlers(), ernbClient, zmrClient); +    task = new InitialSearchTask(emptyHandlers(), ernpClient, zmrClient);      try {        task.execute(pendingReq, executionContext);        Assert.assertTrue("Wrong workflow, should not reach this point/ get a bpk", false); @@ -231,30 +236,24 @@ public class InitialSearchTaskFirstTest {    /**     * One match, no register update needed     */ -  public void testNode102a() throws Exception { +  public void testNode102_UserIdentified_a() throws Exception { -    String randomBpk = RandomStringUtils.randomNumeric(12);; -    //Mock ZMR +    String randomBpk = RandomStringUtils.randomNumeric(12);      ArrayList<RegisterResult> zmrResult = new ArrayList<>();      zmrClient = Mockito.mock(IZmrClient.class); -    Mockito.when(zmrClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(zmrResult); +    Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(zmrResult); -    //Mock ernb -    ArrayList<RegisterResult> ernbResult = new ArrayList<>(); -    ernbResult.add(new RegisterResult(randomBpk, "de/st/"+randomIdentifier, randomGivenName, randomFamilyName, "2011-01-01")); +    ArrayList<RegisterResult> ernpResult = new ArrayList<>(); +    ernpResult.add(new RegisterResult(randomBpk, DE_ST+randomIdentifier, randomGivenName, randomFamilyName, randomDate)); -    ernbClient = Mockito.mock(IErnbClient.class); -    Mockito.when(ernbClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(ernbResult); +    ernpClient = Mockito.mock(IErnpClient.class); +    Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(ernpResult); -    task = new InitialSearchTask(emptyHandlers(), ernbClient, zmrClient); -    try { -      task.execute(pendingReq, executionContext); -      String bPk = (String) -          pendingReq.getSessionData(AuthProcessDataWrapper.class).getGenericDataFromSession(Constants.DATA_RESULT_MATCHING_BPK); -      Assert.assertTrue("Wrong bpk", bPk.equals(randomBpk)); -    } catch (final TaskExecutionException e) { -      Assert.assertTrue("Wrong workflow, should not reach this point", false); -    } +    task = new InitialSearchTask(emptyHandlers(), ernpClient, zmrClient); +    task.execute(pendingReq, executionContext); +    String bPk = (String) +        pendingReq.getSessionData(AuthProcessDataWrapper.class).getGenericDataFromSession(Constants.DATA_RESULT_MATCHING_BPK); +    Assert.assertTrue("Wrong bpk", bPk.equals(randomBpk));    }    @Test @@ -262,39 +261,33 @@ public class InitialSearchTaskFirstTest {    /**     * One match, no register update needed     */ -  public void testNode102b() throws Exception { +  public void testNode102_UserIdentified_b() throws Exception {      String randomBpk = RandomStringUtils.randomNumeric(14); -    //Mock ZMR +      ArrayList<RegisterResult> zmrResult = new ArrayList<>(); -    zmrResult.add(new RegisterResult(randomBpk, "de/st/"+randomIdentifier, randomGivenName, randomFamilyName, "2011-01-01")); +    zmrResult.add(new RegisterResult(randomBpk, DE_ST+randomIdentifier, randomGivenName, randomFamilyName, randomDate));      zmrClient = Mockito.mock(IZmrClient.class); -    Mockito.when(zmrClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(zmrResult); +    Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(zmrResult); -    //Mock ernb -    ArrayList<RegisterResult> ernbResult = new ArrayList<>(); +    ArrayList<RegisterResult> ernpResult = new ArrayList<>(); -    ernbClient = Mockito.mock(IErnbClient.class); -    Mockito.when(ernbClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(ernbResult); +    ernpClient = Mockito.mock(IErnpClient.class); +    Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(ernpResult); -    task = new InitialSearchTask(emptyHandlers(), ernbClient, zmrClient); -    try { -      task.execute(pendingReq, executionContext); -      String bPk = (String) -          pendingReq.getSessionData(AuthProcessDataWrapper.class).getGenericDataFromSession(Constants.DATA_RESULT_MATCHING_BPK); -      Assert.assertTrue("Wrong bpk", bPk.equals(randomBpk)); - -    } catch (final TaskExecutionException e) { -      Assert.assertTrue("Wrong workflow, should not reach this point", false); -    } +    task = new InitialSearchTask(emptyHandlers(), ernpClient, zmrClient); +    task.execute(pendingReq, executionContext); +    String bPk = (String) +        pendingReq.getSessionData(AuthProcessDataWrapper.class).getGenericDataFromSession(Constants.DATA_RESULT_MATCHING_BPK); +    Assert.assertTrue("Wrong bpk", bPk.equals(randomBpk));    }    @Test    @DirtiesContext    /** -   * One match found in ZMR and ErnB with detail search +   * One match found in ZMR and ErnP with detail search     */ -  public void testNode103IT() throws Exception { +  public void testNode103_UserIdentified_IT() throws Exception {      String bpkRegister = RandomStringUtils.randomNumeric(14);      String taxNumber = RandomStringUtils.randomNumeric(14);      final AuthenticationResponse response = buildDummyAuthResponseRandomPersonIT_Tax(taxNumber); @@ -302,29 +295,26 @@ public class InitialSearchTaskFirstTest {      pendingReq1.getSessionData(AuthProcessDataWrapper.class)          .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, response); -    //Mock ZMR initial search      ArrayList<RegisterResult> zmrResultInitial = new ArrayList<>();      zmrClient = Mockito.mock(IZmrClient.class); -    Mockito.when(zmrClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(zmrResultInitial); +    Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(zmrResultInitial);      ArrayList<RegisterResult> zmrResultSpecific = new ArrayList<>(); -    //String bpk, String pseudonym, String givenName, String familyName, String dateOfBirth, -    //                        String placeOfBirth, String birthName, String taxNumber, PostalAddressType address -    zmrResultSpecific.add(new RegisterResult(bpkRegister, "it/st/"+randomIdentifier+"4", randomGivenName, randomFamilyName, -        "2011-01-01", null, null, taxNumber, null)); -    Mockito.when(zmrClient.searchItSpecific(taxNumber)).thenReturn(zmrResultSpecific); +    zmrResultSpecific.add(new RegisterResult(bpkRegister, IT_ST+randomIdentifier+RandomStringUtils.random(2), +        randomGivenName, +        randomFamilyName, +        randomDate, null, null, taxNumber, null)); -    //Mock ernb initial search -    ArrayList<RegisterResult> ernbResultInitial = new ArrayList<>(); -    ernbClient = Mockito.mock(IErnbClient.class); -    Mockito.when(ernbClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(ernbResultInitial); +    Mockito.when(zmrClient.searchItSpecific(taxNumber)).thenReturn(zmrResultSpecific); +    ArrayList<RegisterResult> ernpResultInitial = new ArrayList<>(); +    ernpClient = Mockito.mock(IErnpClient.class); +    Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(ernpResultInitial); -    //Mock country specific search -    List<ICountrySpecificDetailSearchProcessor> handlers = new ArrayList<>(); -    ItSpecificDetailSearchProcessor it = new ItSpecificDetailSearchProcessor(ernbClient, zmrClient); +    List<CountrySpecificDetailSearchProcessor> handlers = new ArrayList<>(); +    ItSpecificDetailSearchProcessor it = new ItSpecificDetailSearchProcessor(ernpClient, zmrClient);      handlers.add(it); -    task = new InitialSearchTask(handlers, ernbClient, zmrClient); +    task = new InitialSearchTask(handlers, ernpClient, zmrClient);      try {        task.execute(pendingReq1, executionContext); @@ -340,26 +330,25 @@ public class InitialSearchTaskFirstTest {    @Test    @DirtiesContext    /** -   * Multiple matches found in ZMR and ErnB with detail search +   * Multiple matches found in ZMR and ErnP with detail search     */ -  public void testNode103DE() throws Exception { +  public void testNode103_UserIdentified_DE() throws Exception {      String givenName = randomGivenName;      String familyName = randomFamilyName; -    String pseudonym = "de/st/max1234"; -    String bpk = "bpkMax"; -    String dateOfBirth = "2011-01-01"; -    String placeOfBirth = "München"; -    String birthName = "BabyMax"; +    String pseudonym = DE_ST + RandomStringUtils.random(5); +    String bpk = RandomStringUtils.random(5); +    String dateOfBirth = randomDate; +    String placeOfBirth = randomPlaceOfBirth; +    String birthName = randomBirthName;      final AuthenticationResponse response = buildDummyAuthResponseDE(givenName, familyName, pseudonym,          dateOfBirth, placeOfBirth, birthName);      TestRequestImpl pendingReq1 = new TestRequestImpl();      pendingReq1.getSessionData(AuthProcessDataWrapper.class)          .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, response); -    //Mock ZMR initial search      ArrayList<RegisterResult> zmrResultInitial = new ArrayList<>();      zmrClient = Mockito.mock(IZmrClient.class); -    Mockito.when(zmrClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(zmrResultInitial); +    Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(zmrResultInitial);      ArrayList<RegisterResult> zmrResultSpecific = new ArrayList<>();      zmrResultSpecific.add(new RegisterResult(bpk, pseudonym, givenName, familyName, dateOfBirth, placeOfBirth, @@ -368,16 +357,14 @@ public class InitialSearchTaskFirstTest {      Mockito.when(zmrClient.searchDeSpecific(givenName, familyName, dateOfBirth, placeOfBirth, birthName)).thenReturn(zmrResultSpecific); -    //Mock ernb initial search -    ArrayList<RegisterResult> ernbResultInitial = new ArrayList<>(); -    ernbClient = Mockito.mock(IErnbClient.class); -    Mockito.when(ernbClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(ernbResultInitial); +    ArrayList<RegisterResult> ernpResultInitial = new ArrayList<>(); +    ernpClient = Mockito.mock(IErnpClient.class); +    Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(ernpResultInitial); -    //Mock country specific search -    List<ICountrySpecificDetailSearchProcessor> handlers = new ArrayList<>(); -    DeSpecificDetailSearchProcessor de = new DeSpecificDetailSearchProcessor(ernbClient, zmrClient); +    List<CountrySpecificDetailSearchProcessor> handlers = new ArrayList<>(); +    DeSpecificDetailSearchProcessor de = new DeSpecificDetailSearchProcessor(ernpClient, zmrClient);      handlers.add(de); -    task = new InitialSearchTask(handlers, ernbClient, zmrClient); +    task = new InitialSearchTask(handlers, ernpClient, zmrClient);      try {        task.execute(pendingReq1, executionContext); @@ -393,28 +380,27 @@ public class InitialSearchTaskFirstTest {    @Test    @DirtiesContext    /** -   * Multiple matches found in ZMR and ErnB with detail search +   * Multiple matches found in ZMR and ErnP with detail search     */ -  public void testNode104DE() throws Exception { +  public void testNode104_ManualFixNecessary_DE() throws Exception {      String givenName = randomGivenName;      String familyName = randomFamilyName; -    String pseudonym1 = "de/st/max1234"; -    String pseudonym2 = "de/st/max12345"; -    String bpk1 = "bpkMax"; -    String bpk2 = "bpkMax1"; -    String dateOfBirth = "2011-01-01"; -    String placeOfBirth = "München"; -    String birthName = "BabyMax"; +    String pseudonym1 = DE_ST + RandomStringUtils.random(5); +    String pseudonym2 = pseudonym1 + RandomStringUtils.random(2); +    String bpk1 = RandomStringUtils.random(5); +    String bpk2 = bpk1 + RandomStringUtils.random(2); +    String dateOfBirth = randomDate; +    String placeOfBirth = randomPlaceOfBirth; +    String birthName = randomBirthName;      final AuthenticationResponse response = buildDummyAuthResponseDE(givenName, familyName, pseudonym1,          dateOfBirth, placeOfBirth, birthName);      TestRequestImpl pendingReq1 = new TestRequestImpl();      pendingReq1.getSessionData(AuthProcessDataWrapper.class)          .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, response); -    //Mock ZMR initial search      ArrayList<RegisterResult> zmrResultInitial = new ArrayList<>();      zmrClient = Mockito.mock(IZmrClient.class); -    Mockito.when(zmrClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(zmrResultInitial); +    Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(zmrResultInitial);      ArrayList<RegisterResult> zmrResultSpecific = new ArrayList<>();      zmrResultSpecific.add(new RegisterResult(bpk1, pseudonym1, givenName, familyName, dateOfBirth, placeOfBirth, @@ -425,23 +411,18 @@ public class InitialSearchTaskFirstTest {          null, null));      Mockito.when(zmrClient.searchDeSpecific(givenName, familyName, dateOfBirth, placeOfBirth, birthName)).thenReturn(zmrResultSpecific); +    ArrayList<RegisterResult> ernpResultInitial = new ArrayList<>(); +    ernpClient = Mockito.mock(IErnpClient.class); +    Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(ernpResultInitial); -    //Mock ernb initial search -    ArrayList<RegisterResult> ernbResultInitial = new ArrayList<>(); -    ernbClient = Mockito.mock(IErnbClient.class); -    Mockito.when(ernbClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(ernbResultInitial); - -    //Mock country specific search -    List<ICountrySpecificDetailSearchProcessor> handlers = new ArrayList<>(); -    DeSpecificDetailSearchProcessor de = new DeSpecificDetailSearchProcessor(ernbClient, zmrClient); +    List<CountrySpecificDetailSearchProcessor> handlers = new ArrayList<>(); +    DeSpecificDetailSearchProcessor de = new DeSpecificDetailSearchProcessor(ernpClient, zmrClient);      handlers.add(de); -    task = new InitialSearchTask(handlers, ernbClient, zmrClient); +    task = new InitialSearchTask(handlers, ernpClient, zmrClient);      try {        task.execute(pendingReq1, executionContext); -        Assert.assertTrue("Wrong workflow, should not reach this point/ get a bpk", false); -      } catch (final TaskExecutionException e) {        Throwable origE = e.getOriginalException();        Assert.assertTrue("Wrong exception", (origE.getCause() instanceof ManualFixNecessaryException)); @@ -451,43 +432,40 @@ public class InitialSearchTaskFirstTest {    @Test    @DirtiesContext    /** -   * Multiple matches found in ZMR and ErnB with detail search +   * Multiple matches found in ZMR and ErnP with detail search     */ -  public void testNode104IT() throws Exception { +  public void testNode104_ManualFixNecessary_IT() throws Exception {      String fakeTaxNumber = RandomStringUtils.randomNumeric(14);;      final AuthenticationResponse response = buildDummyAuthResponseRandomPersonIT_Tax(fakeTaxNumber);      TestRequestImpl pendingReq1 = new TestRequestImpl();      pendingReq1.getSessionData(AuthProcessDataWrapper.class)          .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, response); -    //Mock ZMR initial search      ArrayList<RegisterResult> zmrResultInitial = new ArrayList<>();      zmrClient = Mockito.mock(IZmrClient.class); -    Mockito.when(zmrClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(zmrResultInitial); +    Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(zmrResultInitial);      ArrayList<RegisterResult> zmrResultSpecific = new ArrayList<>(); -    zmrResultSpecific.add(new RegisterResult("bpkMax", "it/st/"+randomIdentifier+"4", randomGivenName, randomFamilyName, "2011-01-01", null, null, +    zmrResultSpecific.add(new RegisterResult("bpkMax", IT_ST+randomIdentifier+"4", randomGivenName, randomFamilyName, +        randomDate, null, null,          fakeTaxNumber, null)); -    zmrResultSpecific.add(new RegisterResult("bpkMax1", "it/st/"+randomIdentifier+"5", randomGivenName, randomFamilyName, "2011-01-01", null, null, +    zmrResultSpecific.add(new RegisterResult("bpkMax1", IT_ST+randomIdentifier+"5", randomGivenName, randomFamilyName, +        randomDate, null, null,          fakeTaxNumber, null));      Mockito.when(zmrClient.searchItSpecific(fakeTaxNumber)).thenReturn(zmrResultSpecific); -    //Mock ernb initial search -    ArrayList<RegisterResult> ernbResultInitial = new ArrayList<>(); -    ernbClient = Mockito.mock(IErnbClient.class); -    Mockito.when(ernbClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(ernbResultInitial); +    ArrayList<RegisterResult> ernpResultInitial = new ArrayList<>(); +    ernpClient = Mockito.mock(IErnpClient.class); +    Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(ernpResultInitial); -    //Mock country specific search -    List<ICountrySpecificDetailSearchProcessor> handlers = new ArrayList<>(); -    ItSpecificDetailSearchProcessor it = new ItSpecificDetailSearchProcessor(ernbClient, zmrClient); +    List<CountrySpecificDetailSearchProcessor> handlers = new ArrayList<>(); +    ItSpecificDetailSearchProcessor it = new ItSpecificDetailSearchProcessor(ernpClient, zmrClient);      handlers.add(it); -    task = new InitialSearchTask(handlers, ernbClient, zmrClient); +    task = new InitialSearchTask(handlers, ernpClient, zmrClient);      try {        task.execute(pendingReq1, executionContext); -        Assert.assertTrue("Wrong workflow, should not reach this point/ get a bpk", false); -      } catch (final TaskExecutionException e) {        Throwable origE = e.getOriginalException();        Assert.assertTrue("Wrong exception", (origE.getCause() instanceof ManualFixNecessaryException)); @@ -497,45 +475,35 @@ public class InitialSearchTaskFirstTest {    @Test    @DirtiesContext    /** -   * NO match found in ZMR and ErnB with Initial search +   * NO match found in ZMR and ErnP with Initial search     */ -  public void testNode105() { +  public void testNode105_TemporaryEnd() throws TaskExecutionException { -    //Mock ZMR      ArrayList<RegisterResult> zmrResult = new ArrayList<>();      zmrClient = Mockito.mock(IZmrClient.class); -    Mockito.when(zmrClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(zmrResult); - -    //Mock ernb -    ArrayList<RegisterResult> ernbResult = new ArrayList<>(); -    ernbClient = Mockito.mock(IErnbClient.class); -    Mockito.when(ernbClient.searchWithPersonIdentifer(randomIdentifier)).thenReturn(ernbResult); +    Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(zmrResult); -    task = new InitialSearchTask(emptyHandlers(), ernbClient, zmrClient); -    try { -      task.execute(pendingReq, executionContext); +    ArrayList<RegisterResult> ernpResult = new ArrayList<>(); +    ernpClient = Mockito.mock(IErnpClient.class); +    Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(ernpResult); -      String bPk = (String) -          pendingReq.getSessionData(AuthProcessDataWrapper.class).getGenericDataFromSession(Constants.DATA_RESULT_MATCHING_BPK); -      Assert.assertTrue("Wrong bpk", bPk.equals("TODO-Temporary-Endnode-105")); -    } catch (final TaskExecutionException e) { -      Assert.assertTrue("Wrong workflow, should not reach this point", false); -    } +    task = new InitialSearchTask(emptyHandlers(), ernpClient, zmrClient); +    task.execute(pendingReq, executionContext); +    String bPk = (String) +        pendingReq.getSessionData(AuthProcessDataWrapper.class).getGenericDataFromSession(Constants.DATA_RESULT_MATCHING_BPK); +    Assert.assertEquals("Wrong bpk", "TODO-Temporary-Endnode-105", bPk);    }    @NotNull    private AuthenticationResponse buildDummyAuthResponseRandomPerson() throws URISyntaxException { -    // NOTE: Those strings "de/st/max123" seem to be somehow relevant, but where do we need to use that exact string -    // again? -    // NOTE: If not, why not using random strings?      return buildDummyAuthResponse(randomGivenName, randomFamilyName, -        "de/st/"+randomIdentifier, "2011-01-01"); +        DE_ST+randomIdentifier, randomDate);    }    private AuthenticationResponse buildDummyAuthResponseRandomPersonIT_Tax(String taxNumber) throws URISyntaxException {      return buildDummyAuthResponse(randomGivenName, randomFamilyName, -        "it/st/"+randomIdentifier, "2011-01-01", taxNumber, null, null); +        IT_ST+randomIdentifier, randomDate, taxNumber, null, null);    }    @NotNull @@ -555,58 +523,46 @@ public class InitialSearchTaskFirstTest {    private AuthenticationResponse buildDummyAuthResponse(String givenName, String familyName, String identifier,                                                          String dateOfBirth, String taxNumber, String placeOfBirth,                                                          String birthName) throws URISyntaxException { -    final AttributeDefinition attributeDef = AttributeDefinition.builder() -        .friendlyName(Constants.eIDAS_ATTR_PERSONALIDENTIFIER).nameUri(new URI("ad", "sd", "ff")) -        .personType(PersonType.LEGAL_PERSON).xmlType(new QName("http://saf", "as", "af")) -        .attributeValueMarshaller("eu.eidas.auth.commons.attribute.impl.LiteralStringAttributeValueMarshaller").build(); -    final AttributeDefinition attributeDef2 = AttributeDefinition.builder() -        .friendlyName(Constants.eIDAS_ATTR_CURRENTFAMILYNAME).nameUri(new URI("ad", "sd", "fff")) -        .personType(PersonType.LEGAL_PERSON).xmlType(new QName("http://saf", "as", "aff")) -        .attributeValueMarshaller("eu.eidas.auth.commons.attribute.impl.LiteralStringAttributeValueMarshaller").build(); -    final AttributeDefinition attributeDef3 = AttributeDefinition.builder() -        .friendlyName(Constants.eIDAS_ATTR_CURRENTGIVENNAME).nameUri(new URI("ad", "sd", "ffff")) -        .personType(PersonType.LEGAL_PERSON).xmlType(new QName("http://saf", "as", "afff")) -        .attributeValueMarshaller("eu.eidas.auth.commons.attribute.impl.LiteralStringAttributeValueMarshaller").build(); -    final AttributeDefinition attributeDef4 = AttributeDefinition.builder() -        .friendlyName(Constants.eIDAS_ATTR_DATEOFBIRTH).nameUri(new URI("ad", "sd", "fffff")) -        .personType(PersonType.LEGAL_PERSON).xmlType(new QName("http://saf", "as", "affff")) -        .attributeValueMarshaller("eu.eidas.auth.commons.attribute.impl.DateTimeAttributeValueMarshaller").build(); -    final AttributeDefinition attributeDef5 = AttributeDefinition.builder() -        .friendlyName(Constants.eIDAS_ATTR_TAXREFERENCE).nameUri(new URI("ad", "sd", "ffffff")) -        .personType(PersonType.LEGAL_PERSON).xmlType(new QName("http://saf", "as", "afffff")) -        .attributeValueMarshaller("eu.eidas.auth.commons.attribute.impl.LiteralStringAttributeValueMarshaller").build(); -    final AttributeDefinition attributeDef6 = AttributeDefinition.builder() -        .friendlyName(Constants.eIDAS_ATTR_PLACEOFBIRTH).nameUri(new URI("ad", "sd", "fffffff")) -        .personType(PersonType.LEGAL_PERSON).xmlType(new QName("http://saf", "as", "affffff")) -        .attributeValueMarshaller("eu.eidas.auth.commons.attribute.impl.LiteralStringAttributeValueMarshaller").build(); -    final AttributeDefinition attributeDef7 = AttributeDefinition.builder() -        .friendlyName(Constants.eIDAS_ATTR_BIRTHNAME).nameUri(new URI("ad", "sd", "ffffffff")) -        .personType(PersonType.LEGAL_PERSON).xmlType(new QName("http://saf", "as", "afffffff")) -        .attributeValueMarshaller("eu.eidas.auth.commons.attribute.impl.LiteralStringAttributeValueMarshaller").build();      ImmutableAttributeMap.Builder builder = ImmutableAttributeMap.builder() -        .put(attributeDef, identifier) -        .put(attributeDef2, familyName) -        .put(attributeDef3, givenName) -        .put(attributeDef4, dateOfBirth); - +        .put(generateStringAttribute(Constants.eIDAS_ATTR_PERSONALIDENTIFIER,"ff","af"), identifier) +        .put(generateStringAttribute(Constants.eIDAS_ATTR_CURRENTFAMILYNAME,"fff","aff"), familyName) +        .put(generateStringAttribute(Constants.eIDAS_ATTR_CURRENTGIVENNAME,"ffff","afff"), givenName) +        .put(generateDateTimeAttribute(Constants.eIDAS_ATTR_DATEOFBIRTH,"fffff","affff"), dateOfBirth);      if (taxNumber != null) { -      builder.put(attributeDef5, taxNumber); +      builder.put(generateStringAttribute(Constants.eIDAS_ATTR_TAXREFERENCE,"ffffff","afffff"), taxNumber);      }      if (birthName != null) { -      builder.put(attributeDef7, birthName); +      builder.put(generateStringAttribute(Constants.eIDAS_ATTR_BIRTHNAME,"fffffff","affffff"), birthName);      }      if (placeOfBirth != null) { -      builder.put(attributeDef6, placeOfBirth); +      builder.put(generateStringAttribute(Constants.eIDAS_ATTR_PLACEOFBIRTH,"ffffffff","afffffff"), placeOfBirth);      }      final ImmutableAttributeMap attributeMap = builder.build();      val b = new AuthenticationResponse.Builder();      return b.id("aasdf").issuer("asd").subject("asf").statusCode("200").inResponseTo("asdf").subjectNameIdFormat( -        "afaf") -        .attributes(attributeMap).build(); +        "afaf").attributes(attributeMap).build(); +  } + +  private AttributeDefinition generateStringAttribute(String friendlyName, String fragment, String prefix) throws URISyntaxException { +    return generateAttribute(friendlyName, fragment, prefix, "eu.eidas.auth.commons.attribute.impl" + +        ".LiteralStringAttributeValueMarshaller"); +  } + +  private AttributeDefinition generateDateTimeAttribute(String friendlyName, String fragment, String prefix) throws URISyntaxException { +    return generateAttribute(friendlyName, fragment, prefix, "eu.eidas.auth.commons.attribute.impl" + +        ".DateTimeAttributeValueMarshaller"); +  } + +  private AttributeDefinition 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 List<ICountrySpecificDetailSearchProcessor> emptyHandlers() { +  private List<CountrySpecificDetailSearchProcessor> emptyHandlers() {      return new ArrayList<>();    } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_tasks_test.xml b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_tasks_test.xml index 10d480e0..1f3a984b 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_tasks_test.xml +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_tasks_test.xml @@ -66,7 +66,7 @@          scope="prototype" />    <bean id="ErnbClientForeIDAS" -        class="at.asitplus.eidas.specific.modules.auth.eidas.v2.ernb.DummyErnbClient" /> +        class="at.asitplus.eidas.specific.modules.auth.eidas.v2.ernp.DummyErnpClient" />    <bean id="ZmrClientForeIDAS"          class="at.asitplus.eidas.specific.modules.auth.eidas.v2.zmr.DummyZmrClient" /> | 
