diff options
Diffstat (limited to 'eidas_modules/authmodule-eIDAS-v2/src/test/java/at')
2 files changed, 106 insertions, 10 deletions
| 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 index b3ba8a9d..74ac065e 100644 --- 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 @@ -48,7 +48,6 @@ import org.apache.commons.lang3.RandomStringUtils;  import org.jetbrains.annotations.NotNull;  import org.junit.Assert;  import org.junit.Before; -import org.junit.Ignore;  import org.junit.Test;  import org.junit.runner.RunWith;  import org.mockito.Mock; @@ -181,15 +180,17 @@ public class InitialSearchTaskTest {    @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(randomRegisterResult(oldGivenName, randomBpk))); +        .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())) -        .thenThrow(new IllegalStateException("ZMR update should not be neccessary")); +        .thenReturn(zmrRegisterResult(firstZmrResult));      Mockito.when(ernpClient.searchWithPersonIdentifier(randomPseudonym, DE))          .thenReturn(emptyErnpRegisterResult()); @@ -213,17 +214,33 @@ public class InitialSearchTaskTest {     *     * @throws EidasSAuthenticationException     */ -  @Ignore    @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); @@ -799,6 +816,18 @@ public class InitialSearchTaskTest {    }    @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);    } 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 index 0e95f718..7f27a17c 100644 --- 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 @@ -190,10 +190,13 @@ public class InitialSearchTaskWithRegistersTest {    /**     * 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_Zmr() throws Exception { +  public void singlePersonalIdMatchUpdateNecessary_ZmrNotDone() throws Exception {      String oldGivenName = "XXXClaus - Maria"; @@ -208,7 +211,12 @@ public class InitialSearchTaskWithRegistersTest {      // inject response      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")); +         +        //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"));                             // execute test @@ -220,13 +228,72 @@ public class InitialSearchTaskWithRegistersTest {          oldGivenName, "1994-12-31", DE);      // validate request -    assertEquals("wrong number of req.", 1, zmrReq.getAllValues().size()); +    assertEquals("wrong number of req.", 2, zmrReq.getAllValues().size());      assertNotNull("Personensuche req.", zmrReq.getValue().getPersonSuchenRequest()); -    checkBasicRequestParameters(zmrReq.getValue(), ZmrClientTest.PROCESS_TASK_SEARCH, null, "jUnit123456"); +    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"));     + + +    // 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", 1,  +       zmrReq.getAllValues().get(2).getPersonAendernRequest().getEidasIdentitaetAnlage().size()); +    assertEquals("eIDAS attribute to add - Type", "http://eidas.europa.eu/attributes/naturalperson/PlaceOfBirth",  +        zmrReq.getAllValues().get(2).getPersonAendernRequest().getEidasIdentitaetAnlage().get(0).getEidasArt()); +    assertEquals("eIDAS attribute to add - Value", placeOfBirth,  +        zmrReq.getAllValues().get(2).getPersonAendernRequest().getEidasIdentitaetAnlage().get(0).getEidasWert());     +    assertNull("ZMR update MDS", zmrReq.getAllValues().get(2).getPersonAendernRequest().getPersonAenderung()); +         +  } +   +      /**     * Two matches by PersonalId found in ZMR     * | 
