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.SymmetricKeyConfiguration; import at.gv.egiz.eaaf.core.impl.credential.SymmetricKeyConfiguration.SymmetricKeyType; @RunWith(BlockJUnit4ClassRunner.class) public class SymmetricKeyConfigurationTest { private Map config; @Before public void testSetup() { config = new HashMap<>(); } @Test public void emptyConfigMap() { try { SymmetricKeyConfiguration.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 emptyKeyType() { try { config.put("key.type", ""); SymmetricKeyConfiguration.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 unknownKeyType() { try { config.put("key.type", "test"); SymmetricKeyConfiguration.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 hsmFacadeKeyTypeMissingName() { try { config.put("key.type", "hsmfacade"); SymmetricKeyConfiguration.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 hsmFacadeKeyTypeMissingAlias() { try { final String keyStoreName = RandomStringUtils.randomAlphabetic(5); config.put("key.type", "hsmfacade"); config.put("keystore.name", keyStoreName); SymmetricKeyConfiguration.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 hsmFacadeKeyTypeSucces() throws EaafConfigurationException { final String keyStoreName = RandomStringUtils.randomAlphabetic(5); final String keyAlias = RandomStringUtils.randomAlphabetic(5); config.put("key.type", "hsmfacade"); config.put("keystore.name", keyStoreName); config.put("key.alias", keyAlias); final SymmetricKeyConfiguration keyStoreConfig = SymmetricKeyConfiguration.buildFromConfigurationMap(config, "jUnitTest"); Assert.assertNotNull("KeyStore config object", keyStoreConfig); Assert.assertEquals("Wrong Type", SymmetricKeyType.HSMFACADE, keyStoreConfig.getKeyType()); Assert.assertEquals("Wrong KeyStoreName", keyStoreName, keyStoreConfig.getKeyStoreName()); Assert.assertEquals("Wrong KeyStoreName", keyAlias, keyStoreConfig.getKeyAlias()); keyStoreConfig.validate(); } @Test public void passphraseKeyTypeMissingPassphrase() { try { config.put("key.type", "passphrase"); SymmetricKeyConfiguration.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 passphraseKeyTypeMissingSalt() { try { final String passphrase = RandomStringUtils.randomAlphabetic(5); config.put("key.type", "passphrase"); config.put("key.passphrase", passphrase); SymmetricKeyConfiguration.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 passphraseKeyTypeSucces() throws EaafConfigurationException { final String passphrase = RandomStringUtils.randomAlphabetic(5); final String salt = RandomStringUtils.randomAlphabetic(5); config.put("key.type", "passphrase"); config.put("key.passphrase", passphrase); config.put("key.salt", salt); final SymmetricKeyConfiguration keyStoreConfig = SymmetricKeyConfiguration.buildFromConfigurationMap(config, "jUnitTest"); Assert.assertNotNull("KeyStore config object", keyStoreConfig); Assert.assertEquals("Wrong Type", SymmetricKeyType.PASSPHRASE, keyStoreConfig.getKeyType()); Assert.assertEquals("Wrong KeyStoreName", passphrase, keyStoreConfig.getSoftKeyPassphrase()); Assert.assertEquals("Wrong KeyStoreName", salt, keyStoreConfig.getSoftKeySalt()); keyStoreConfig.validate(); } }