diff options
Diffstat (limited to 'modules/core_common_webapp/src/test/java/at/asitplus/eidas')
-rw-r--r-- | modules/core_common_webapp/src/test/java/at/asitplus/eidas/specific/core/test/utils/AuthenticationDataBuilderTest.java | 282 |
1 files changed, 8 insertions, 274 deletions
diff --git a/modules/core_common_webapp/src/test/java/at/asitplus/eidas/specific/core/test/utils/AuthenticationDataBuilderTest.java b/modules/core_common_webapp/src/test/java/at/asitplus/eidas/specific/core/test/utils/AuthenticationDataBuilderTest.java index 586749cb..12936a59 100644 --- a/modules/core_common_webapp/src/test/java/at/asitplus/eidas/specific/core/test/utils/AuthenticationDataBuilderTest.java +++ b/modules/core_common_webapp/src/test/java/at/asitplus/eidas/specific/core/test/utils/AuthenticationDataBuilderTest.java @@ -1,10 +1,6 @@ package at.asitplus.eidas.specific.core.test.utils; import static at.asitplus.eidas.specific.core.MsEidasNodeConstants.PROP_CONFIG_SP_NEW_EID_MODE; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertThrows; -import static org.junit.Assert.assertTrue; import java.io.IOException; import java.security.PublicKey; @@ -76,7 +72,6 @@ public class AuthenticationDataBuilderTest { private TestRequestImpl pendingReq; private DummySpConfiguration oaParam; - private Map<String, String> spConfig; private String eidasBind; private String authBlock; @@ -97,7 +92,7 @@ public class AuthenticationDataBuilderTest { RequestContextHolder.resetRequestAttributes(); RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp)); - spConfig = new HashMap<>(); + 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"); @@ -111,250 +106,27 @@ public class AuthenticationDataBuilderTest { authBlock = RandomStringUtils.randomAlphanumeric(20); eidasBind = RandomStringUtils.randomAlphanumeric(20); pendingReq.getSessionData(AuthProcessDataWrapper.class) + .setGenericDataToSession(MsEidasNodeConstants.AUTH_DATA_SZR_AUTHBLOCK, authBlock); + pendingReq.getSessionData(AuthProcessDataWrapper.class) + .setGenericDataToSession(MsEidasNodeConstants.AUTH_DATA_EIDAS_BIND, eidasBind); + pendingReq.getSessionData(AuthProcessDataWrapper.class) .setQaaLevel(EaafConstants.EIDAS_LOA_PREFIX + RandomStringUtils.randomAlphabetic(5)); pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession( PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, - RandomStringUtils.randomAlphabetic(2).toUpperCase()); + RandomStringUtils.randomAlphabetic(2)); LocaleContextHolder.resetLocaleContext(); } @Test - public void eidasProxyMode() throws EaafAuthenticationException, EaafStorageException { + public void eidMode() throws EaafAuthenticationException { // initialize state boolean isTestIdentity = RandomUtils.nextBoolean(); - pendingReq.getSessionData(EidAuthProcessDataWrapper.class).setTestIdentity(isTestIdentity); pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(true); - - String givenName = RandomStringUtils.randomAlphabetic(10); - String familyName = RandomStringUtils.randomAlphabetic(10); - String dateOfBirth = "1956-12-08"; - String bpk = RandomStringUtils.randomAlphanumeric(10); - String cc = pendingReq.getSessionData(AuthProcessDataWrapper.class) - .getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class); - String spC = RandomStringUtils.randomAlphabetic(2).toUpperCase(); - - spConfig.put("target", EaafConstants.URN_PREFIX_EIDAS + cc + "+" + spC); - - pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(true); - pendingReq.getSessionData(AuthProcessDataWrapper.class).setForeigner(false); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.GIVEN_NAME_NAME, givenName); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.PRINCIPAL_NAME_NAME, familyName); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.BIRTHDATE_NAME, dateOfBirth); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(MsEidasNodeConstants.ATTR_EIDAS_PERSONAL_IDENTIFIER, bpk); - - //set LoA level attribute instead of explicit session-data - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.EID_CITIZEN_EIDAS_QAA_LEVEL_NAME, - pendingReq.getSessionData(AuthProcessDataWrapper.class).getQaaLevel()); - pendingReq.getSessionData(AuthProcessDataWrapper.class).setQaaLevel(null); - - - - // execute test - IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq); - - - // validate state - Assert.assertNotNull("AuthData null", authData); - Assert.assertNull("authBlock null", authData.getGenericData(MsEidasNodeConstants.AUTH_DATA_SZR_AUTHBLOCK, String.class)); - Assert.assertNull("eidasBind null", authData.getGenericData(MsEidasNodeConstants.AUTH_DATA_EIDAS_BIND, String.class)); - - Assert.assertEquals("LoA", pendingReq.getSessionData(AuthProcessDataWrapper.class) - .getGenericDataFromSession(PvpAttributeDefinitions.EID_CITIZEN_EIDAS_QAA_LEVEL_NAME, String.class), - authData.getEidasQaaLevel()); - Assert.assertEquals("CitizenCountry", cc, authData.getCiticenCountryCode()); - Assert.assertEquals("familyName", familyName, authData.getFamilyName()); - Assert.assertEquals("givenName", givenName, authData.getGivenName()); - Assert.assertEquals("DateOfBirth", dateOfBirth, authData.getDateOfBirth()); - - Assert.assertEquals("bPK", pendingReq.getSessionData(AuthProcessDataWrapper.class) - .getGenericDataFromSession(MsEidasNodeConstants.ATTR_EIDAS_PERSONAL_IDENTIFIER, String.class), - authData.getGenericData(MsEidasNodeConstants.ATTR_EIDAS_PERSONAL_IDENTIFIER, String.class)); - - Assert.assertEquals("testIdentity flag", - isTestIdentity ? EidIdentityStatusLevelValues.TESTIDENTITY : EidIdentityStatusLevelValues.IDENTITY, - ((EidAuthenticationData)authData).getEidStatus()); - assertFalse("mandate flag", ((EidAuthenticationData)authData).isUseMandate()); - - } - - @Test - public void eidasProxyModeWithJurMandate() throws EaafAuthenticationException, EaafStorageException { - // initialize state - injectRepresentativeInfosIntoSession(); - - String commonMandate = RandomStringUtils.randomAlphabetic(10); - - // set constant country-code and sourcePin to check hashed eIDAS identifier - String sourcePinMandate = "asfdsadfsadfsafsdafsadfasr"; - spConfig.put("target", EaafConstants.URN_PREFIX_EIDAS + "AT+EE"); - - // set nat. person mandate information - pendingReq.getSessionData(AuthProcessDataWrapper.class).setUseMandates(true); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_LEG_PER_FULL_NAME_NAME, commonMandate); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_LEG_PER_SOURCE_PIN_NAME, sourcePinMandate); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_LEG_PER_SOURCE_PIN_TYPE_NAME, - EaafConstants.URN_PREFIX_BASEID + "+XFN"); - - // execute test - IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq); - - - // validate state - Assert.assertNotNull("AuthData null", authData); - assertTrue("mandate flag", ((EidAuthenticationData)authData).isUseMandate()); - - //check mandate informations - checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_LEG_PER_FULL_NAME_NAME, commonMandate); - checkGenericAttribute(authData, MsEidasNodeConstants.ATTR_EIDAS_JUR_MANDATOR_PERSONAL_IDENTIFIER, - "AT/EE/urn:publicid:gv.at:baseid+XFN+asfdsadfsadfsafsdafsadfasr"); - - } - - @Test - public void eidasProxyModeWithJurMandateMissingAttribute() throws EaafAuthenticationException, EaafStorageException { - // initialize state - injectRepresentativeInfosIntoSession(); - - // set constant country-code and sourcePin to check hashed eIDAS identifier - String sourcePinMandate = "asfdsadfsadfsafsdafsadfasr"; - spConfig.put("target", EaafConstants.URN_PREFIX_EIDAS + "AT+EE"); - - // set nat. person mandate information - pendingReq.getSessionData(AuthProcessDataWrapper.class).setUseMandates(true); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_LEG_PER_SOURCE_PIN_NAME, sourcePinMandate); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_LEG_PER_SOURCE_PIN_TYPE_NAME, - EaafConstants.URN_PREFIX_BASEID + "+XFN"); - - // execute test - // execute test - EaafAuthenticationException error = assertThrows(EaafAuthenticationException.class, - () -> authenticationDataBuilder.buildAuthenticationData(pendingReq)); - Assert.assertEquals("wrong errorId", "builder.11", error.getErrorId()); - - } - - @Test - public void eidasProxyModeWithNatMandate() throws EaafAuthenticationException, EaafStorageException { - // initialize state - injectRepresentativeInfosIntoSession(); - - String givenNameMandate = RandomStringUtils.randomAlphabetic(10); - String familyNameMandate = RandomStringUtils.randomAlphabetic(10); - String dateOfBirthMandate = "1957-09-15"; - String bpkMandate = RandomStringUtils.randomAlphanumeric(10); - - // set nat. person mandate information - pendingReq.getSessionData(AuthProcessDataWrapper.class).setUseMandates(true); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_GIVEN_NAME_NAME, givenNameMandate); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_FAMILY_NAME_NAME, familyNameMandate); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_BIRTHDATE_NAME, dateOfBirthMandate); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_BPK_NAME, "AT+XX:" + bpkMandate); - - // execute test - IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq); - - - // validate state - Assert.assertNotNull("AuthData null", authData); - assertTrue("mandate flag", ((EidAuthenticationData)authData).isUseMandate()); - - //check mandate informations - checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_NAT_PER_GIVEN_NAME_NAME, givenNameMandate); - checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_NAT_PER_FAMILY_NAME_NAME, familyNameMandate); - checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_NAT_PER_BIRTHDATE_NAME, "1957-09-15"); - checkGenericAttribute(authData, MsEidasNodeConstants.ATTR_EIDAS_NAT_MANDATOR_PERSONAL_IDENTIFIER, bpkMandate); - - } - - @Test - public void eidasProxyModeWithNatMandateWrongBpkFormat() throws EaafAuthenticationException, EaafStorageException { - // initialize state - injectRepresentativeInfosIntoSession(); - - String givenNameMandate = RandomStringUtils.randomAlphabetic(10); - String familyNameMandate = RandomStringUtils.randomAlphabetic(10); - String dateOfBirthMandate = "1957-09-15"; - String bpkMandate = RandomStringUtils.randomAlphanumeric(10); - - // set nat. person mandate information - pendingReq.getSessionData(AuthProcessDataWrapper.class).setUseMandates(true); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_GIVEN_NAME_NAME, givenNameMandate); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_FAMILY_NAME_NAME, familyNameMandate); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_BIRTHDATE_NAME, dateOfBirthMandate); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_BPK_NAME, bpkMandate); - - // execute test - IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq); - - // validate state - Assert.assertNotNull("AuthData null", authData); - assertTrue("mandate flag", ((EidAuthenticationData)authData).isUseMandate()); - - //check mandate informations - checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_NAT_PER_GIVEN_NAME_NAME, givenNameMandate); - checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_NAT_PER_FAMILY_NAME_NAME, familyNameMandate); - checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_NAT_PER_BIRTHDATE_NAME, "1957-09-15"); - checkGenericAttribute(authData, MsEidasNodeConstants.ATTR_EIDAS_NAT_MANDATOR_PERSONAL_IDENTIFIER, bpkMandate); - - } - - @Test - public void eidasProxyModeWithNatMandateMissingAttribute() throws EaafAuthenticationException, EaafStorageException { - // initialize state - injectRepresentativeInfosIntoSession(); - - String familyNameMandate = RandomStringUtils.randomAlphabetic(10); - String dateOfBirthMandate = "1957-09-15"; - String bpkMandate = RandomStringUtils.randomAlphanumeric(10); - - // set nat. person mandate information - pendingReq.getSessionData(AuthProcessDataWrapper.class).setUseMandates(true); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_FAMILY_NAME_NAME, familyNameMandate); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_BIRTHDATE_NAME, dateOfBirthMandate); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_BPK_NAME, bpkMandate); - - // execute test - EaafAuthenticationException error = assertThrows(EaafAuthenticationException.class, - () -> authenticationDataBuilder.buildAuthenticationData(pendingReq)); - Assert.assertEquals("wrong errorId", "builder.11", error.getErrorId()); - - } - - @Test - public void eidMode() throws EaafAuthenticationException, EaafStorageException { - // initialize state - boolean isTestIdentity = RandomUtils.nextBoolean(); pendingReq.getSessionData(EidAuthProcessDataWrapper.class).setTestIdentity(isTestIdentity); - pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(true); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(MsEidasNodeConstants.AUTH_DATA_SZR_AUTHBLOCK, authBlock); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(MsEidasNodeConstants.AUTH_DATA_EIDAS_BIND, eidasBind); - + // execute IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq); @@ -439,44 +211,6 @@ public class AuthenticationDataBuilderTest { } - private void injectRepresentativeInfosIntoSession() throws EaafStorageException { - boolean isTestIdentity = RandomUtils.nextBoolean(); - pendingReq.getSessionData(EidAuthProcessDataWrapper.class).setTestIdentity(isTestIdentity); - pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(true); - - String givenName = RandomStringUtils.randomAlphabetic(10); - String familyName = RandomStringUtils.randomAlphabetic(10); - String dateOfBirth = "1956-12-08"; - String bpk = RandomStringUtils.randomAlphanumeric(10); - String cc = pendingReq.getSessionData(AuthProcessDataWrapper.class) - .getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class); - String spC = RandomStringUtils.randomAlphabetic(2).toUpperCase(); - spConfig.put("target", EaafConstants.URN_PREFIX_EIDAS + cc + "+" + spC); - - pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(true); - pendingReq.getSessionData(AuthProcessDataWrapper.class).setForeigner(false); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.GIVEN_NAME_NAME, givenName); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.PRINCIPAL_NAME_NAME, familyName); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.BIRTHDATE_NAME, dateOfBirth); - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(MsEidasNodeConstants.ATTR_EIDAS_PERSONAL_IDENTIFIER, bpk); - - //set LoA level attribute instead of explicit session-data - pendingReq.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(PvpAttributeDefinitions.EID_CITIZEN_EIDAS_QAA_LEVEL_NAME, - pendingReq.getSessionData(AuthProcessDataWrapper.class).getQaaLevel()); - pendingReq.getSessionData(AuthProcessDataWrapper.class).setQaaLevel(null); - - } - - private void checkGenericAttribute(IAuthData authData, String attrName, String expected) { - assertEquals("Wrong: " + attrName, expected, authData.getGenericData(attrName, String.class)); - - } - private IIdentityLink buildDummyIdl() { return new IIdentityLink() { |