diff --git a/src/test/java/cz/cvut/kbss/study/persistence/BaseDaoTestRunner.java b/src/test/java/cz/cvut/kbss/study/persistence/BaseDaoTestRunner.java index 2edd1a47..bc116282 100644 --- a/src/test/java/cz/cvut/kbss/study/persistence/BaseDaoTestRunner.java +++ b/src/test/java/cz/cvut/kbss/study/persistence/BaseDaoTestRunner.java @@ -9,7 +9,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; @ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = {TestPersistenceConfig.class}) +@ContextConfiguration(classes = {TestPersistenceConfig.class}, initializers = {ConfigDataApplicationContextInitializer.class}) @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) @ActiveProfiles("test") abstract public class BaseDaoTestRunner extends TransactionalTestRunner { diff --git a/src/test/java/cz/cvut/kbss/study/persistence/ConfigDataApplicationContextInitializer.java b/src/test/java/cz/cvut/kbss/study/persistence/ConfigDataApplicationContextInitializer.java new file mode 100644 index 00000000..cd92431c --- /dev/null +++ b/src/test/java/cz/cvut/kbss/study/persistence/ConfigDataApplicationContextInitializer.java @@ -0,0 +1,23 @@ +package cz.cvut.kbss.study.persistence; + +import org.springframework.boot.DefaultBootstrapContext; +import org.springframework.boot.DefaultPropertiesPropertySource; +import org.springframework.boot.context.config.ConfigDataEnvironmentPostProcessor; +import org.springframework.boot.env.RandomValuePropertySource; +import org.springframework.context.ApplicationContextInitializer; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.core.env.ConfigurableEnvironment; + +public class ConfigDataApplicationContextInitializer implements ApplicationContextInitializer { + public ConfigDataApplicationContextInitializer() { + } + + public void initialize(ConfigurableApplicationContext applicationContext) { + ConfigurableEnvironment environment = applicationContext.getEnvironment(); + RandomValuePropertySource.addToEnvironment(environment); + DefaultBootstrapContext bootstrapContext = new DefaultBootstrapContext(); + ConfigDataEnvironmentPostProcessor.applyTo(environment, applicationContext, bootstrapContext, new String[0]); + bootstrapContext.close(applicationContext); + DefaultPropertiesPropertySource.moveToEnd(environment); + } +} \ No newline at end of file diff --git a/src/test/java/cz/cvut/kbss/study/persistence/TestFormGenPersistenceFactory.java b/src/test/java/cz/cvut/kbss/study/persistence/TestFormGenPersistenceFactory.java index 5cdf8c3d..6925b19b 100644 --- a/src/test/java/cz/cvut/kbss/study/persistence/TestFormGenPersistenceFactory.java +++ b/src/test/java/cz/cvut/kbss/study/persistence/TestFormGenPersistenceFactory.java @@ -9,6 +9,7 @@ import jakarta.annotation.PostConstruct; import jakarta.annotation.PreDestroy; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; @@ -16,15 +17,12 @@ import org.springframework.core.env.Environment; @Configuration -@PropertySource("classpath:application.properties") +@EnableConfigurationProperties(cz.cvut.kbss.study.util.Configuration.class) @Profile("test") public class TestFormGenPersistenceFactory { - private static final String URL_PROPERTY = "test." + ConfigParam.FORM_GEN_REPOSITORY_URL; - private static final String DRIVER_PROPERTY = "test." + ConfigParam.PERSISTENCE_DRIVER; - @Autowired - private Environment environment; + private cz.cvut.kbss.study.util.Configuration config; private EntityManagerFactory emf; @@ -36,8 +34,8 @@ public EntityManagerFactory getEntityManagerFactory() { @PostConstruct private void init() { final Map properties = TestPersistenceFactory.getDefaultProperties(); - properties.put(JOPAPersistenceProperties.ONTOLOGY_PHYSICAL_URI_KEY, environment.getProperty(URL_PROPERTY)); - properties.put(JOPAPersistenceProperties.DATA_SOURCE_CLASS, environment.getProperty(DRIVER_PROPERTY)); + properties.put(JOPAPersistenceProperties.ONTOLOGY_PHYSICAL_URI_KEY, config.getFormGenRepositoryUrl()); + properties.put(JOPAPersistenceProperties.DATA_SOURCE_CLASS, config.getPersistenceDriver()); this.emf = Persistence.createEntityManagerFactory("formGenTestPU", properties); } diff --git a/src/test/java/cz/cvut/kbss/study/persistence/TestPersistenceFactory.java b/src/test/java/cz/cvut/kbss/study/persistence/TestPersistenceFactory.java index 9510fde3..7145480f 100644 --- a/src/test/java/cz/cvut/kbss/study/persistence/TestPersistenceFactory.java +++ b/src/test/java/cz/cvut/kbss/study/persistence/TestPersistenceFactory.java @@ -10,6 +10,7 @@ import jakarta.annotation.PostConstruct; import jakarta.annotation.PreDestroy; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; @@ -24,14 +25,15 @@ import static cz.cvut.kbss.ontodriver.config.OntoDriverProperties.DATA_SOURCE_USERNAME; @Configuration -@PropertySource("classpath:application.properties") +@EnableConfigurationProperties(cz.cvut.kbss.study.util.Configuration.class) @Profile("test") public class TestPersistenceFactory { - private static final String URL_PROPERTY = "test." + ConfigParam.REPOSITORY_URL; - private static final String DRIVER_PROPERTY = "test." + ConfigParam.PERSISTENCE_DRIVER; - private static final String USERNAME_PROPERTY = "test.username"; - private static final String PASSWORD_PROPERTY = "test.password"; + private static final String USERNAME_PROPERTY = "username"; + private static final String PASSWORD_PROPERTY = "password"; + + @Autowired + private cz.cvut.kbss.study.util.Configuration config; @Autowired private Environment environment; @@ -47,8 +49,8 @@ public EntityManagerFactory getEntityManagerFactory() { @PostConstruct private void init() { final Map properties = getDefaultProperties(); - properties.put(JOPAPersistenceProperties.ONTOLOGY_PHYSICAL_URI_KEY, environment.getProperty(URL_PROPERTY)); - properties.put(JOPAPersistenceProperties.DATA_SOURCE_CLASS, environment.getProperty(DRIVER_PROPERTY)); + properties.put(JOPAPersistenceProperties.ONTOLOGY_PHYSICAL_URI_KEY, config.getRepositoryUrl()); + properties.put(JOPAPersistenceProperties.DATA_SOURCE_CLASS,config.getPersistenceDriver()); if (environment.getProperty(USERNAME_PROPERTY) != null) { properties.put(DATA_SOURCE_USERNAME, environment.getProperty(USERNAME_PROPERTY)); properties.put(DATA_SOURCE_PASSWORD, environment.getProperty(PASSWORD_PROPERTY)); diff --git a/src/test/java/cz/cvut/kbss/study/service/BaseServiceTestRunner.java b/src/test/java/cz/cvut/kbss/study/service/BaseServiceTestRunner.java index 68a0777e..9b655a7b 100644 --- a/src/test/java/cz/cvut/kbss/study/service/BaseServiceTestRunner.java +++ b/src/test/java/cz/cvut/kbss/study/service/BaseServiceTestRunner.java @@ -6,6 +6,7 @@ import cz.cvut.kbss.study.environment.generator.Generator; import cz.cvut.kbss.study.model.Institution; import cz.cvut.kbss.study.model.User; +import cz.cvut.kbss.study.persistence.ConfigDataApplicationContextInitializer; import cz.cvut.kbss.study.persistence.dao.InstitutionDao; import cz.cvut.kbss.study.persistence.dao.UserDao; import org.junit.jupiter.api.BeforeEach; @@ -19,7 +20,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; @ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = {TestServiceConfig.class, TestPersistenceConfig.class}) +@ContextConfiguration(classes = {TestServiceConfig.class, TestPersistenceConfig.class}, initializers = {ConfigDataApplicationContextInitializer.class}) @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) @ActiveProfiles("test") public abstract class BaseServiceTestRunner extends TransactionalTestRunner { diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties deleted file mode 100644 index 00a0e2dd..00000000 --- a/src/test/resources/application.properties +++ /dev/null @@ -1,6 +0,0 @@ -test.repositoryUrl=study-test-repository -test.persistenceDriver=cz.cvut.kbss.ontodriver.rdf4j.Rdf4jDataSource -test.formGenRepositoryUrl=test-formGen-repository -repositoryUrl=study-test-repository -formGenRepositoryUrl=test-formGen-repository -formGenServiceUrl=http://localhost:8081/formGenerator \ No newline at end of file diff --git a/src/test/resources/application.yml b/src/test/resources/application.yml new file mode 100644 index 00000000..506ae0b5 --- /dev/null +++ b/src/test/resources/application.yml @@ -0,0 +1,4 @@ +persistenceDriver: cz.cvut.kbss.ontodriver.rdf4j.Rdf4jDataSource +repositoryUrl: study-test-repository +formGenRepositoryUrl: test-formGen-repository +formGenServiceUrl: http://localhost:8081/formGenerator \ No newline at end of file