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 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)))); } }