diff options
Diffstat (limited to 'eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus')
| -rw-r--r-- | eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ErnpRestClientTest.java | 132 | 
1 files changed, 132 insertions, 0 deletions
| 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 new file mode 100644 index 00000000..9eb574fd --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ErnpRestClientTest.java @@ -0,0 +1,132 @@ +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 org.apache.commons.io.IOUtils; +import org.junit.AfterClass; +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.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 lombok.SneakyThrows; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; +import okhttp3.mockwebserver.RecordedRequest; + +@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 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(); + +  } +   +  @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())); +     +    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()); + +    RegisterResult persInfo = resp.getPersonResult().get(0); +    assertEquals("wrong familyname", "XXXSZR", persInfo.getFamilyName());     +     +     +  } +   +   +} | 
