diff options
| author | Thomas Lenz <thomas.lenz@egiz.gv.at> | 2020-12-22 14:15:14 +0100 | 
|---|---|---|
| committer | Thomas Lenz <thomas.lenz@egiz.gv.at> | 2020-12-22 14:15:14 +0100 | 
| commit | 9fd7ba09ba2a5a827ef8530967aa0bfefc412f42 (patch) | |
| tree | ab1c6f7ab54851a436c2e2bd12d331f6651fcdb9 /connector_lib/src | |
| parent | 83d7101ae4169a840e13e2b178fd7a07108fff2d (diff) | |
| download | National_eIDAS_Gateway-9fd7ba09ba2a5a827ef8530967aa0bfefc412f42.tar.gz National_eIDAS_Gateway-9fd7ba09ba2a5a827ef8530967aa0bfefc412f42.tar.bz2 National_eIDAS_Gateway-9fd7ba09ba2a5a827ef8530967aa0bfefc412f42.zip | |
add jUnit tests for configuration-operations
Diffstat (limited to 'connector_lib/src')
8 files changed, 363 insertions, 2 deletions
| diff --git a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsConnectorEventCodes.java b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsConnectorEventCodes.java index 35bafd67..cfc434c4 100644 --- a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsConnectorEventCodes.java +++ b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsConnectorEventCodes.java @@ -45,4 +45,8 @@ public class MsConnectorEventCodes {    public static final int SZR_ERNB_EIDAS_RAW_ID = 6210;    public static final int SZR_ERNB_EIDAS_ERNB_ID = 6211; +   +  private MsConnectorEventCodes() { +    // hidden constructor for class with static values only. +  }  } diff --git a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsEidasNodeConstants.java b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsEidasNodeConstants.java index b1ef799f..8d1dcc0b 100644 --- a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsEidasNodeConstants.java +++ b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MsEidasNodeConstants.java @@ -169,4 +169,8 @@ public class MsEidasNodeConstants {    public static final List<String> COUNTRY_SELECTION_PARAM_WHITELIST =        Arrays.asList(REQ_PARAM_SELECTED_COUNTRY, REQ_PARAM_SELECTED_ENVIRONMENT); +  private MsEidasNodeConstants() { +    //hidden Constructor for class with static values only. +  } +    } diff --git a/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/BasicConfigProviderTest.java b/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/BasicConfigProviderTest.java new file mode 100644 index 00000000..d1623b00 --- /dev/null +++ b/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/BasicConfigProviderTest.java @@ -0,0 +1,156 @@ +package at.asitplus.eidas.specific.connector.test.config; + +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Map; + +import org.apache.commons.lang3.RandomStringUtils; +import org.junit.Assert; +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.MsEidasNodeConstants; +import at.asitplus.eidas.specific.connector.config.ServiceProviderConfiguration; +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; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = { +    "/SpringTest-context_basic_realConfig.xml"}) +@DirtiesContext(classMode = ClassMode.BEFORE_CLASS) +public class BasicConfigProviderTest { + +  @Autowired private IConfigurationWithSP basicConfig; +   +  /** +   * 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"); +     +  } +   +  @Test +  public void configPropInfos() { +    Assert.assertEquals("size", 2, MsEidasNodeConstants.COUNTRY_SELECTION_PARAM_WHITELIST.size()); +     +  } +   +  @Test +  public void loadSpNoExist() throws EaafConfigurationException { +    ISpConfiguration spConfig = basicConfig.getServiceProviderConfiguration( +        RandomStringUtils.randomAlphabetic(5)); +    Assert.assertNull("spConfig", spConfig); +     +  } +   +  @Test +  public void loadSpConfigBasicMode() throws EaafConfigurationException { +    ISpConfiguration spConfig = basicConfig.getServiceProviderConfiguration("jUnitTest1"); +     +    Assert.assertNotNull("spConfig", spConfig); +    Assert.assertEquals("uniqueId", "jUnitTest1", spConfig.getUniqueIdentifier()); +    Assert.assertEquals("friendlyName", "NO FRIENDLYNAME SET", spConfig.getFriendlyName()); +    Assert.assertEquals("pvp2.truststore", "", spConfig.getConfigurationValue("pvp2.metadata.truststore")); +    String test = RandomStringUtils.randomAlphabetic(5); +    Assert.assertEquals("pvp2.password", "1234pass",  +        spConfig.getConfigurationValue("pvp2.metadata.truststore.password", test)); +    Assert.assertEquals("eidMode", true, spConfig.isConfigurationValue("newEidMode")); +    Assert.assertEquals("notexistflag", false, spConfig.isConfigurationValue("notexist", false)); +    Assert.assertNotNull("fullConfig", spConfig.getFullConfiguration()); +    Assert.assertEquals("fullConfig", 4, spConfig.getFullConfiguration().size()); +     +  } +   +  @Test +  public void loadSpConfigAdvancedMode() throws EaafConfigurationException { +    ISpConfiguration spConfig = basicConfig.getServiceProviderConfiguration( +        "jUnitTest2", ServiceProviderConfiguration.class); +     +    Assert.assertNotNull("spConfig", spConfig); +    Assert.assertEquals("uniqueId", "jUnitTest2", spConfig.getUniqueIdentifier()); +    Assert.assertEquals("friendlyName", "jUnit tester 2", spConfig.getFriendlyName()); +    Assert.assertEquals("pvp2.truststore", "", spConfig.getConfigurationValue("pvp2.metadata.truststore")); +    String test = RandomStringUtils.randomAlphabetic(5); +    Assert.assertEquals("pvp2.password", test,  +        spConfig.getConfigurationValue("pvp2.metadata.truststore.notexist", test)); +    Assert.assertEquals("eidMode", false, spConfig.isConfigurationValue("newEidMode")); +    Assert.assertEquals("notexistflag", false, spConfig.isConfigurationValue("notexist", false)); +    Assert.assertNotNull("fullConfig", spConfig.getFullConfiguration()); +    Assert.assertEquals("fullConfig", 5, spConfig.getFullConfiguration().size()); +    Assert.assertFalse("baseIdInternal", spConfig.hasBaseIdInternalProcessingRestriction()); +    Assert.assertTrue("baseIdTransfer", spConfig.hasBaseIdTransferRestriction()); +     +  } +   +  @Test +  public void loadSpConfigAdvancedModeWrongDecorator() throws EaafConfigurationException { +    ISpConfiguration spConfig1 = basicConfig.getServiceProviderConfiguration( +        "jUnitTest2", null);     +    Assert.assertNull("spConfig", spConfig1); + +    String spConfig2 = basicConfig.getServiceProviderConfiguration( +        "jUnitTest2", String.class);     +    Assert.assertNull("spConfig", spConfig2); +     +  } +   +  @Test +  public void loadConfigValuesString() { +    Assert.assertEquals("without default", "ownSpecificConnector",  +        basicConfig.getBasicConfiguration("auth.eIDAS.node_v2.entityId")); +     +    Assert.assertEquals("with default", "",  +        basicConfig.getBasicConfiguration("auth.eIDAS.szrclient.endpoint.prod",  +            RandomStringUtils.randomAlphabetic(5))); +     +    String rand1 = RandomStringUtils.randomAlphanumeric(5); +    Assert.assertEquals("unknown with default", rand1,  +        basicConfig.getBasicConfiguration("notexist", rand1)); +     +  } +   +  @Test +  public void loadConfigValuesBoolean() { +    Assert.assertEquals("without default", true,  +        basicConfig.getBasicConfigurationBoolean("auth.eIDAS.szrclient.useTestService")); +     +    Assert.assertEquals("with default", false,  +        basicConfig.getBasicConfigurationBoolean("auth.notexist",  +            false)); +     +    Assert.assertEquals("unknown with default", false,  +        basicConfig.getBasicConfigurationBoolean("auth.eIDAS.szrclient.params.vkz", true)); +     +  } +   +  @Test +  public void loadConfigMap() { +    Map<String, String> entries = basicConfig.getBasicConfigurationWithPrefix("auth.eIDAS.szrclient"); +    Assert.assertEquals("wrong size", 16, entries.size()); +    Assert.assertTrue("missing element", entries.containsKey("endpoint.test")); +    Assert.assertEquals("wrong entry", "http://localhost:1234/demoszr", entries.get("endpoint.test")); +     +  } +   +  @Test +  public void validateUrl() throws MalformedURLException, EaafException { +    Assert.assertEquals("wrong URL", "http://localhost/test",  +        basicConfig.validateIdpUrl(new URL("http://localhost/test/" + RandomStringUtils.randomAlphabetic(5)))); +    +    Assert.assertNull("wrong URL", +        basicConfig.validateIdpUrl(new URL("http://localhost/wrong/" + RandomStringUtils.randomAlphabetic(5)))); +     +  } +} diff --git a/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/ServiceProviderConfigurationTest.java b/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/ServiceProviderConfigurationTest.java new file mode 100644 index 00000000..d95e2882 --- /dev/null +++ b/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/ServiceProviderConfigurationTest.java @@ -0,0 +1,54 @@ +package at.asitplus.eidas.specific.connector.test.config; + +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.Test; +import org.junit.runner.RunWith; +import org.junit.runners.BlockJUnit4ClassRunner; + +import at.asitplus.eidas.specific.connector.config.ServiceProviderConfiguration; +import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap; +import at.gv.egiz.eaaf.core.api.data.EaafConstants; +import at.gv.egiz.eaaf.core.api.idp.IConfiguration; +import at.gv.egiz.eaaf.core.exceptions.EaafException; + +@RunWith(BlockJUnit4ClassRunner.class) +public class ServiceProviderConfigurationTest { + +   +   +  @Test +  public void spConfigLoad() throws EaafException { +    IConfiguration authConfig = new MsConnectorDummyConfigMap(); +     +    Map<String, String> map = new HashMap<>(); +    map.put("uniqueID", RandomStringUtils.randomAlphabetic(10)); +    map.put("policy.allowed.requested.targets", "urn:publicid:gv.at:cdid\\+.*"); + +    ServiceProviderConfiguration spConfig = new ServiceProviderConfiguration(map, authConfig); +     +    spConfig.setRequiredLoA(Arrays.asList(EaafConstants.EIDAS_LOA_LOW)); +    Assert.assertEquals("LoA", 1, spConfig.getRequiredLoA().size()); +    Assert.assertEquals("LoA", "http://eidas.europa.eu/LoA/low", spConfig.getRequiredLoA().get(0)); +     +    spConfig.setLoAMachtingMode("exact"); +    Assert.assertEquals("wrong machtingMode", "exact", spConfig.getLoAMatchingMode()); +     +    String bpkTarget = EaafConstants.URN_PREFIX_CDID + RandomStringUtils.randomAlphabetic(2); +    spConfig.setBpkTargetIdentifier(bpkTarget); +    Assert.assertEquals("wrong bPK", bpkTarget, spConfig.getAreaSpecificTargetIdentifier()); +     +     +    try { +      spConfig.setBpkTargetIdentifier(EaafConstants.URN_PREFIX_WBPK + RandomStringUtils.randomAlphabetic(2)); +       +    } catch (EaafException e) { +      Assert.assertEquals("ErrorId", "auth.37", e.getErrorId()); +    } +     +  } +} diff --git a/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/MsConnectorDummyConfigMap.java b/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/dummy/MsConnectorDummyConfigMap.java index ab390731..42e31377 100644 --- a/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/MsConnectorDummyConfigMap.java +++ b/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/dummy/MsConnectorDummyConfigMap.java @@ -1,4 +1,4 @@ -package at.asitplus.eidas.specific.connector.test.config; +package at.asitplus.eidas.specific.connector.test.config.dummy;  import java.io.IOException;  import java.io.InputStream; diff --git a/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/MsConnectorDummySpConfiguration.java b/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/dummy/MsConnectorDummySpConfiguration.java index e6e35ab1..b379080d 100644 --- a/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/MsConnectorDummySpConfiguration.java +++ b/connector_lib/src/test/java/at/asitplus/eidas/specific/connector/test/config/dummy/MsConnectorDummySpConfiguration.java @@ -1,4 +1,4 @@ -package at.asitplus.eidas.specific.connector.test.config; +package at.asitplus.eidas.specific.connector.test.config.dummy;  import java.util.List;  import java.util.Map; diff --git a/connector_lib/src/test/resources/SpringTest-context_basic_realConfig.xml b/connector_lib/src/test/resources/SpringTest-context_basic_realConfig.xml new file mode 100644 index 00000000..bcca90b5 --- /dev/null +++ b/connector_lib/src/test/resources/SpringTest-context_basic_realConfig.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://www.springframework.org/schema/beans" +  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +  xmlns:context="http://www.springframework.org/schema/context" +  xmlns:tx="http://www.springframework.org/schema/tx" +  xmlns:aop="http://www.springframework.org/schema/aop" +  xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd +    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd +    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd +    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> + +  <context:annotation-config /> + +  <bean id="BasicMSSpecificNodeConfig" +    class="at.asitplus.eidas.specific.connector.config.BasicConfigurationProvider"> +    <constructor-arg +      value="#{systemProperties['eidas.ms.configuration']}" /> +  </bean> + +</beans>
\ No newline at end of file diff --git a/connector_lib/src/test/resources/config/junit_config_1.properties b/connector_lib/src/test/resources/config/junit_config_1.properties new file mode 100644 index 00000000..01dcf842 --- /dev/null +++ b/connector_lib/src/test/resources/config/junit_config_1.properties @@ -0,0 +1,123 @@ +## Basic service configuration +eidas.ms.context.url.prefix=http://localhost/test/ +eidas.ms.context.url.request.validation=true + +eidas.ms.context.use.clustermode=true + +##Monitoring +eidas.ms.monitoring.eIDASNode.metadata.url= + + +##Specific logger configuration +eidas.ms.technicallog.write.MDS.into.techlog=true +eidas.ms.revisionlog.write.MDS.into.revisionlog=true +eidas.ms.revisionlog.logIPAddressOfUser=true + +##Directory for static Web content +eidas.ms.webcontent.static.directory=webcontent/ +eidas.ms.webcontent.templates=templates/ +eidas.ms.webcontent.properties=properties/messages + +## extended validation of pending-request Id's +eidas.ms.core.pendingrequestid.maxlifetime=300 +eidas.ms.core.pendingrequestid.digist.algorithm=HmacSHA256 +eidas.ms.core.pendingrequestid.digist.secret=pendingReqIdSecret + +## eIDAS Ref. Implementation connector ### +eidas.ms.auth.eIDAS.node_v2.entityId=ownSpecificConnector +eidas.ms.auth.eIDAS.node_v2.forward.endpoint= +eidas.ms.auth.eIDAS.node_v2.forward.method=POST +eidas.ms.auth.eIDAS.node_v2.countrycode=AT +eidas.ms.auth.eIDAS.node_v2.publicSectorTargets=.* +eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName=true +eidas.ms.auth.eIDAS.node_v2.workarounds.useRequestIdAsTransactionIdentifier=true +eidas.ms.auth.eIDAS.node_v2.workarounds.useStaticProviderNameForPublicSPs=true +eidas.ms.auth.eIDAS.node_v2.staticProviderNameForPublicSPs=myNode + +eidas.ms.auth.eIDAS.node_v2.loa.requested.minimum=http://eidas.europa.eu/LoA/high + +eidas.ms.auth.eIDAS.szrclient.useTestService=true +eidas.ms.auth.eIDAS.szrclient.endpoint.prod= +eidas.ms.auth.eIDAS.szrclient.endpoint.test=http://localhost:1234/demoszr +eidas.ms.auth.eIDAS.szrclient.ssl.keyStore.path=keys/..... +eidas.ms.auth.eIDAS.szrclient.ssl.keyStore.password= +eidas.ms.auth.eIDAS.szrclient.ssl.trustStore.path= +eidas.ms.auth.eIDAS.szrclient.ssl.trustStore.password= +eidas.ms.auth.eIDAS.szrclient.timeout.connection=15 +eidas.ms.auth.eIDAS.szrclient.timeout.response=30 +eidas.ms.auth.eIDAS.szrclient.params.vkz= + +eidas.ms.auth.eIDAS.szrclient.params.useSZRForbPKCalculation=false + + +eidas.ms.auth.eIDAS.authblock.keystore.password=f/+saJBc3a}*/T^s +eidas.ms.auth.eIDAS.authblock.keystore.friendlyName=connectorkeypair +eidas.ms.auth.eIDAS.authblock.keystore.path=./../keystore/teststore.jks +eidas.ms.auth.eIDAS.authblock.keystore.type=jks +eidas.ms.auth.eIDAS.authblock.key.alias=connectorkeypair +eidas.ms.auth.eIDAS.authblock.key.password=f/+saJBc3a}*/T^s + + +#Raw eIDAS Id data storage +eidas.ms.auth.eIDAS.szrclient.workarounds.eidmapping.revisionlog.active=true + +eidas.ms.auth.eIDAS.szrclient.params.setPlaceOfBirthIfAvailable=true +eidas.ms.auth.eIDAS.szrclient.params.setBirthNameIfAvailable=true + +eidas.ms.auth.eIDAS.szrclient.debug.logfullmessages=true +eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution=true + +##without mandates +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.0=PersonIdentifier,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.1=FamilyName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.2=FirstName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.onlynatural.3=DateOfBirth,true + +eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.4=PlaceOfBirth,false +eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.5=BirthName,false +eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.6=Gender,false +eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.7=CurrentAddress,false +eidas.ms.auth.eIDAS.node_v2.attributes.requested.de.onlynatural.8=testtest,false + +##with mandates ---- NOT FULLY SUPPORTED AT THE MOMENT ----- +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.0=PersonIdentifier,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.1=FamilyName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.2=FirstName,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.3=DateOfBirth,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.4=LegalPerson,true +eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.5=LegalName,true + + +## PVP2 S-Profile end-point configuration +eidas.ms.pvp2.keystore.path=keys/..... +eidas.ms.pvp2.keystore.password= +eidas.ms.pvp2.key.metadata.alias= +eidas.ms.pvp2.key.metadata.password= +eidas.ms.pvp2.key.signing.alias= +eidas.ms.pvp2.key.signing.password= +eidas.ms.pvp2.metadata.validity=24 + +## Service Provider configuration +eidas.ms.sp.0.uniqueID=jUnitTest1 +eidas.ms.sp.0.pvp2.metadata.truststore= +eidas.ms.sp.0.pvp2.metadata.truststore.password=1234pass +eidas.ms.sp.0.newEidMode=true + +eidas.ms.sp.1.uniqueID=jUnitTest2 +eidas.ms.sp.1.friendlyName=jUnit tester 2 +eidas.ms.sp.1.pvp2.metadata.truststore= +eidas.ms.sp.1.pvp2.metadata.truststore.password= +eidas.ms.sp.1.newEidMode=false + +#eidas.ms.sp.0.friendlyName= +#eidas.ms.sp.0.pvp2.metadata.url= +#eidas.ms.sp.0.policy.allowed.requested.targets=.* +#eidas.ms.sp.0.policy.hasBaseIdTransferRestriction=false + + +##only for advanced config +eidas.ms.configuration.sp.disableRegistrationRequirement= +eidas.ms.configuration.restrictions.baseID.spTransmission= +eidas.ms.configuration.auth.default.countrycode= +eidas.ms.configuration.pvp.scheme.validation= +eidas.ms.configuration.pvp.enable.entitycategories=
\ No newline at end of file | 
