From dc50d90a4750600b4555c19c2b939200216b68bd Mon Sep 17 00:00:00 2001 From: Gerwin Gsenger Date: Mon, 19 Jan 2015 16:59:05 +0100 Subject: add initial version of a moaid-configuration test, does not work if old db is not initialized --- .../moa/id/commons/db/ConfigurationDBReadTest.java | 127 +++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 id/server/moa-id-commons/src/test/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBReadTest.java (limited to 'id/server/moa-id-commons/src/test/java/at/gv/egovernment/moa') diff --git a/id/server/moa-id-commons/src/test/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBReadTest.java b/id/server/moa-id-commons/src/test/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBReadTest.java new file mode 100644 index 000000000..7147cd5bc --- /dev/null +++ b/id/server/moa-id-commons/src/test/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBReadTest.java @@ -0,0 +1,127 @@ +package at.gv.egovernment.moa.id.commons.db; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Arrays; +import java.util.List; +import java.util.Properties; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentGeneral; +import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration; +import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException; + +import com.datentechnik.moa.id.conf.persistence.Configuration; +import com.fasterxml.jackson.annotation.JsonProperty; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("configuration.beans-test.xml") +public class ConfigurationDBReadTest { + + @Autowired + Configuration configDataBase; + + private Properties getHibernateProperties() throws FileNotFoundException, IOException { + + Properties configProp = null; + try (InputStream in = ConfigurationDBReadTest.class.getResourceAsStream("hibernate.properties");) { + Properties props = new Properties(); + props.load(in); + // read Config Hibernate properties + configProp = new Properties(); + for (Object key : props.keySet()) { + String propPrefix = "configuration."; + if (key.toString().startsWith(propPrefix + "hibernate")) { + String propertyName = key.toString().substring(propPrefix.length()); + configProp.put(propertyName, props.get(key.toString())); + } + } + } + + return configProp; + } + + private void migrateDatabase(List methodNames) throws IllegalAccessException, IllegalArgumentException, + InvocationTargetException, NoSuchMethodException, SecurityException { + for (String name : methodNames) { + Method method = ConfigurationFromDBExtractor.class.getMethod(name); + Object tmp = method.invoke(null, new Object[] {}); + JsonProperty annotation = method.getAnnotation(JsonProperty.class); + if (annotation != null) { + configDataBase.set(annotation.value(), tmp); + } else { + System.out.println("Methods must be annotated, annotation is used as key in key-value db."); + assertTrue(false); + } + } + } + + @Before + public void initialize() throws FileNotFoundException, MOADatabaseException, IOException, IllegalAccessException, + IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException { + + // initialize the connection to the old database + ConfigurationDBUtils.initHibernate(getHibernateProperties()); + + // migrate the data in the old database to a new key value database + List methodNames = Arrays.asList("getAuthComponentGeneral", "getChainingModes", + "getTrustedCACertificates", "getDefaultBKUs", "getSLRequestTemplates", "getTimeStampItem", + "getPvp2RefreshItem", "getOnlineApplications", "getGenericConfigurations"); + migrateDatabase(methodNames); + + // close the session with the old database + ConfigurationDBUtils.closeSession(); + } + + @Test + public void testGetMOAIDConfiguration() throws FileNotFoundException, MOADatabaseException, IOException, + IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, + SecurityException { + + // get the old moaid configuration + MOAIDConfiguration oldConfig = ConfigurationDBRead.getMOAIDConfiguration(); + + // get the a new moaid configuration from the data in the key value + // database + MOAIDConfiguration newConfig = NewConfigurationDBRead.getMOAIDConfiguration(); + + // check if both configurations yield a similar MOAIDConfiguration + // object + assertTrue(oldConfig.equals(newConfig)); + + } + + @Test + public void testGetMOAIDConfigurationNotEqual() throws FileNotFoundException, MOADatabaseException, IOException, + IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, + SecurityException { + + // get the old moaid configuration + MOAIDConfiguration oldConfig = ConfigurationDBRead.getMOAIDConfiguration(); + + // delete part of the configuration + oldConfig.setAuthComponentGeneral(new AuthComponentGeneral()); + + // get the a new moaid configuration from the data in the key value + // database + MOAIDConfiguration newConfig = NewConfigurationDBRead.getMOAIDConfiguration(); + + // check if both configurations yield a similar MOAIDConfiguration + // object + assertFalse(oldConfig.equals(newConfig)); + + } + +} -- cgit v1.2.3