package at.gv.egiz.eaaf.core.test.credentials; import java.util.HashMap; import java.util.Map; import org.apache.commons.lang3.RandomStringUtils; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.BlockJUnit4ClassRunner; import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException; import at.gv.egiz.eaaf.core.impl.credential.KeyStoreConfiguration; import at.gv.egiz.eaaf.core.impl.credential.KeyStoreConfiguration.KeyStoreType; @RunWith(BlockJUnit4ClassRunner.class) public class KeyStoreConfigurationTest { private Map config; @Before public void testSetup() { config = new HashMap<>(); } @Test public void emptyConfigMap() { try { KeyStoreConfiguration.buildFromConfigurationMap(config, "jUnitTest"); Assert.fail("Wrong config not detected"); } catch (final EaafConfigurationException e) { Assert.assertEquals("wrong errorCode", "internal.keystore.04", e.getErrorId()); } } @Test public void emptyKeyStoreType() { try { config.put("keystore.type", ""); KeyStoreConfiguration.buildFromConfigurationMap(config, "jUnitTest"); Assert.fail("Wrong config not detected"); } catch (final EaafConfigurationException e) { Assert.assertEquals("wrong errorCode", "internal.keystore.04", e.getErrorId()); } } @Test public void unknownKeyStoreType() { try { config.put("keystore.type", "test"); KeyStoreConfiguration.buildFromConfigurationMap(config, "jUnitTest"); Assert.fail("Wrong config not detected"); } catch (final EaafConfigurationException e) { Assert.assertEquals("wrong errorCode", "internal.keystore.01", e.getErrorId()); } } @Test public void pkcs11KeyStoreType() throws EaafConfigurationException { config.put("keystore.type", "pkcs11"); try { final KeyStoreConfiguration keyStoreConfig = KeyStoreConfiguration.buildFromConfigurationMap(config, "jUnitTest"); Assert.fail("Wrong config not detected"); } catch (final EaafConfigurationException e) { Assert.assertEquals("wrong errorCode", "internal.keystore.02", e.getErrorId()); } } @Test public void hsmFacadeKeyStoreTypeMissingName() { try { config.put("keystore.type", "hsmfacade"); KeyStoreConfiguration.buildFromConfigurationMap(config, "jUnitTest"); Assert.fail("Wrong config not detected"); } catch (final EaafConfigurationException e) { Assert.assertEquals("wrong errorCode", "internal.keystore.04", e.getErrorId()); } } @Test public void hsmFacadeKeyStoreTypeSucces() throws EaafConfigurationException { final String keyStoreName = RandomStringUtils.randomAlphabetic(5); config.put("keystore.type", "hsmfacade"); config.put("keystore.name", keyStoreName); final KeyStoreConfiguration keyStoreConfig = KeyStoreConfiguration.buildFromConfigurationMap(config, "jUnitTest"); Assert.assertNotNull("KeyStore config object", keyStoreConfig); Assert.assertEquals("Wrong Type", KeyStoreType.HSMFACADE, keyStoreConfig.getKeyStoreType()); Assert.assertEquals("Wrong KeyStoreName", keyStoreName, keyStoreConfig.getKeyStoreName()); } @Test public void softwareKeyStoreTypeMissingPath() { try { final String keyStorePass = RandomStringUtils.randomAlphabetic(5); config.put("keystore.type", "software"); config.put("keystore.password", keyStorePass); config.put("keystore.type", "jks"); KeyStoreConfiguration.buildFromConfigurationMap(config, "jUnitTest"); Assert.fail("Wrong config not detected"); } catch (final EaafConfigurationException e) { Assert.assertEquals("wrong errorCode", "internal.keystore.04", e.getErrorId()); } } @Test public void softwareKeyStoreTypeMissingPassword() { try { final String keyStorePath = RandomStringUtils.randomAlphabetic(5); config.put("keystore.type", "software"); config.put("keystore.software.path", keyStorePath); config.put("keystore.type", "jks"); KeyStoreConfiguration.buildFromConfigurationMap(config, "jUnitTest"); Assert.fail("Wrong config not detected"); } catch (final EaafConfigurationException e) { Assert.assertEquals("wrong errorCode", "internal.keystore.04", e.getErrorId()); } } @Test public void softwareKeyStoreTypeUnknownType() { try { final String keyStorePath = RandomStringUtils.randomAlphabetic(5); final String keyStorePass = RandomStringUtils.randomAlphabetic(5); config.put("keystore.path", keyStorePath); config.put("keystore.password", keyStorePass); config.put("keystore.type", RandomStringUtils.randomAlphabetic(4)); KeyStoreConfiguration.buildFromConfigurationMap(config, "jUnitTest"); Assert.fail("Wrong config not detected"); } catch (final EaafConfigurationException e) { Assert.assertEquals("wrong errorCode", "internal.keystore.01", e.getErrorId()); } } @Test public void softwareKeyStoreTypeSuccesJks() throws EaafConfigurationException { final String keyStorePath = RandomStringUtils.randomAlphabetic(5); final String keyStorePass = RandomStringUtils.randomAlphabetic(5); config.put("keystore.type", "jks"); config.put("keystore.path", keyStorePath); config.put("keystore.password", keyStorePass); final KeyStoreConfiguration keyStoreConfig = KeyStoreConfiguration.buildFromConfigurationMap(config, "jUnitTest"); Assert.assertNotNull("KeyStore config object", keyStoreConfig); Assert.assertEquals("Wrong Type", KeyStoreType.JKS, keyStoreConfig.getKeyStoreType()); Assert.assertEquals("Wrong KeyStoreName", keyStorePath, keyStoreConfig.getSoftKeyStoreFilePath()); Assert.assertEquals("Wrong KeyStoreName", keyStorePass, keyStoreConfig.getSoftKeyStorePassword()); } @Test public void softwareKeyStoreTypeSuccesPkcs12() throws EaafConfigurationException { final String keyStorePath = RandomStringUtils.randomAlphabetic(5); final String keyStorePass = RandomStringUtils.randomAlphabetic(5); config.put("keystore.type", "pkcs12"); config.put("keystore.path", keyStorePath); config.put("keystore.password", keyStorePass); final KeyStoreConfiguration keyStoreConfig = KeyStoreConfiguration.buildFromConfigurationMap(config, "jUnitTest"); Assert.assertNotNull("KeyStore config object", keyStoreConfig); Assert.assertEquals("Wrong Type", KeyStoreType.PKCS12, keyStoreConfig.getKeyStoreType()); Assert.assertEquals("Wrong KeyStoreName", keyStorePath, keyStoreConfig.getSoftKeyStoreFilePath()); Assert.assertEquals("Wrong KeyStoreName", keyStorePass, keyStoreConfig.getSoftKeyStorePassword()); } }