From e1a1436d13541e5934099cf1d746f23b5fd39509 Mon Sep 17 00:00:00 2001 From: tkuzynow Date: Thu, 9 May 2024 11:04:26 +0200 Subject: [PATCH] fix: commit temp state --- pom.xml | 6 +-- src/main/resources/testcontainers.properties | 1 + .../api/AbstractIntegrationTest.java | 39 +++++++++++++++++++ .../api/controller/ActuatorControllerIT.java | 11 +----- .../ApplicationSettingsControllerIT.java | 3 +- .../ConsultingTypeControllerE2EIT.java | 10 ++++- .../ConsultingTypeControllerIT.java | 13 ++----- .../controller/TopicAdminControllerIT.java | 11 +----- .../api/controller/TopicControllerIT.java | 4 +- .../api/service/TopicServiceIT.java | 17 +------- .../service/TopicServiceTenantAwareIT.java | 20 ++-------- src/test/resources/testcontainers.properties | 1 + testcontainers.properties | 1 + 13 files changed, 70 insertions(+), 67 deletions(-) create mode 100644 src/main/resources/testcontainers.properties create mode 100644 src/test/java/de/caritas/cob/consultingtypeservice/api/AbstractIntegrationTest.java create mode 100644 src/test/resources/testcontainers.properties create mode 100644 testcontainers.properties diff --git a/pom.xml b/pom.xml index 2dbbdbdb..d7c3ac47 100644 --- a/pom.xml +++ b/pom.xml @@ -182,7 +182,7 @@ org.testcontainers mongodb - 1.19.7 + 1.18.3 test @@ -563,7 +563,7 @@ maven-surefire-plugin - true + false @@ -588,7 +588,7 @@ false - **/*IT.* + **/*IT.java diff --git a/src/main/resources/testcontainers.properties b/src/main/resources/testcontainers.properties new file mode 100644 index 00000000..a329723e --- /dev/null +++ b/src/main/resources/testcontainers.properties @@ -0,0 +1 @@ +docker.client.strategy=org.testcontainers.dockerclient.DockerDesktopClientProviderStrategy \ No newline at end of file diff --git a/src/test/java/de/caritas/cob/consultingtypeservice/api/AbstractIntegrationTest.java b/src/test/java/de/caritas/cob/consultingtypeservice/api/AbstractIntegrationTest.java new file mode 100644 index 00000000..68756adf --- /dev/null +++ b/src/test/java/de/caritas/cob/consultingtypeservice/api/AbstractIntegrationTest.java @@ -0,0 +1,39 @@ +package de.caritas.cob.consultingtypeservice.api; + +import org.junit.After; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.containers.startupcheck.OneShotStartupCheckStrategy; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; + +@Testcontainers +public class AbstractIntegrationTest { + + @Container + static MongoDBContainer mongoDBContainer = + new MongoDBContainer(DockerImageName.parse("mongo:6.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + + @AfterAll + public void tearDown() { + // Stop the MongoDB container after each test + mongoDBContainer.stop(); + } + + + @AfterAll + static void afterAll() { + mongoDBContainer.stop(); + } + +} diff --git a/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/ActuatorControllerIT.java b/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/ActuatorControllerIT.java index 3e4c60f6..5b4c2547 100644 --- a/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/ActuatorControllerIT.java +++ b/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/ActuatorControllerIT.java @@ -8,6 +8,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import de.caritas.cob.consultingtypeservice.ConsultingTypeServiceApplication; +import de.caritas.cob.consultingtypeservice.api.AbstractIntegrationTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -31,16 +32,8 @@ @TestPropertySource(properties = "spring.profiles.active=testing") @AutoConfigureMockMvc(addFilters = false) @Testcontainers -class ActuatorControllerIT { +class ActuatorControllerIT extends AbstractIntegrationTest { - @Container - static MongoDBContainer mongoDBContainer = - new MongoDBContainer(DockerImageName.parse("mongo:6.0")); - - @DynamicPropertySource - static void setProperties(DynamicPropertyRegistry registry) { - registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); - } @Autowired private WebApplicationContext context; diff --git a/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/ApplicationSettingsControllerIT.java b/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/ApplicationSettingsControllerIT.java index 0af8a4fe..a891aa3e 100644 --- a/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/ApplicationSettingsControllerIT.java +++ b/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/ApplicationSettingsControllerIT.java @@ -12,6 +12,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import de.caritas.cob.consultingtypeservice.ConsultingTypeServiceApplication; +import de.caritas.cob.consultingtypeservice.api.AbstractIntegrationTest; import de.caritas.cob.consultingtypeservice.api.auth.UserRole; import de.caritas.cob.consultingtypeservice.api.model.ApplicationSettingsEntity; import de.caritas.cob.consultingtypeservice.api.model.ApplicationSettingsPatchDTO; @@ -46,7 +47,7 @@ @TestPropertySource(properties = "spring.profiles.active=testing") @TestPropertySource(properties = "feature.multitenancy.with.single.domain.enabled=true") @AutoConfigureMockMvc(addFilters = false) -class ApplicationSettingsControllerIT { +class ApplicationSettingsControllerIT extends AbstractIntegrationTest { private MockMvc mockMvc; diff --git a/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/ConsultingTypeControllerE2EIT.java b/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/ConsultingTypeControllerE2EIT.java index 58c7edb4..f0ce3885 100644 --- a/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/ConsultingTypeControllerE2EIT.java +++ b/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/ConsultingTypeControllerE2EIT.java @@ -15,6 +15,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import de.caritas.cob.consultingtypeservice.ConsultingTypeServiceApplication; +import de.caritas.cob.consultingtypeservice.api.AbstractIntegrationTest; import de.caritas.cob.consultingtypeservice.api.auth.AuthenticatedUser; import de.caritas.cob.consultingtypeservice.api.auth.Authority.AuthorityValue; import de.caritas.cob.consultingtypeservice.api.consultingtypes.ConsultingTypeConverter; @@ -42,15 +43,22 @@ import org.springframework.security.core.Authentication; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; @SpringBootTest(classes = ConsultingTypeServiceApplication.class) @AutoConfigureMockMvc @ActiveProfiles("testing") @AutoConfigureTestDatabase -class ConsultingTypeControllerE2EIT { +@Testcontainers +class ConsultingTypeControllerE2EIT extends AbstractIntegrationTest { private static final EasyRandom easyRandom = new EasyRandom(); private static final String CSRF_HEADER = "csrfHeader"; diff --git a/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/ConsultingTypeControllerIT.java b/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/ConsultingTypeControllerIT.java index b770e1ce..2be69938 100644 --- a/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/ConsultingTypeControllerIT.java +++ b/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/ConsultingTypeControllerIT.java @@ -16,6 +16,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; +import de.caritas.cob.consultingtypeservice.api.AbstractIntegrationTest; import de.caritas.cob.consultingtypeservice.api.auth.RoleAuthorizationAuthorityMapper; import de.caritas.cob.consultingtypeservice.api.consultingtypes.ConsultingTypeConverter; import de.caritas.cob.consultingtypeservice.api.exception.UnexpectedErrorException; @@ -36,6 +37,7 @@ import org.jeasy.random.EasyRandom; import org.json.JSONObject; import org.junit.Test; +import org.junit.jupiter.api.AfterEach; import org.junit.runner.RunWith; import org.keycloak.adapters.AdapterDeploymentContext; import org.springframework.beans.factory.annotation.Autowired; @@ -55,7 +57,7 @@ @RunWith(SpringRunner.class) @WebMvcTest(ConsultingTypeController.class) @AutoConfigureMockMvc(addFilters = false) -public class ConsultingTypeControllerIT { +public class ConsultingTypeControllerIT extends AbstractIntegrationTest { private static final ObjectMapper objectMapper = new ObjectMapper(); @Autowired private MockMvc mvc; @@ -70,15 +72,6 @@ public class ConsultingTypeControllerIT { private final ConsultingTypeConverter consultingTypeConverter = new ConsultingTypeConverter(); - @Container - static MongoDBContainer mongoDBContainer = - new MongoDBContainer(DockerImageName.parse("mongo:6.0")); - - @DynamicPropertySource - static void setProperties(DynamicPropertyRegistry registry) { - registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); - } - @Test public void getBasicConsultingTypeList_Should_ReturnNoContent_When_ServiceReturnsEmptyList() throws Exception { diff --git a/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/TopicAdminControllerIT.java b/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/TopicAdminControllerIT.java index b67aa8cb..8dbda062 100644 --- a/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/TopicAdminControllerIT.java +++ b/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/TopicAdminControllerIT.java @@ -15,6 +15,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import de.caritas.cob.consultingtypeservice.ConsultingTypeServiceApplication; +import de.caritas.cob.consultingtypeservice.api.AbstractIntegrationTest; import de.caritas.cob.consultingtypeservice.api.auth.UserRole; import de.caritas.cob.consultingtypeservice.api.model.TopicMultilingualDTO; import de.caritas.cob.consultingtypeservice.api.model.TopicStatus; @@ -60,20 +61,12 @@ @TestPropertySource(properties = "spring.profiles.active=testing") @AutoConfigureMockMvc(addFilters = false) @TestPropertySource(properties = "feature.multitenancy.with.single.domain.enabled=true") -@Testcontainers @Sql( scripts = "classpath:database/TopicDatabase.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD) -class TopicAdminControllerIT { +class TopicAdminControllerIT extends AbstractIntegrationTest { - @Container - static MongoDBContainer mongoDBContainer = - new MongoDBContainer(DockerImageName.parse("mongo:6.0")); - @DynamicPropertySource - static void setProperties(DynamicPropertyRegistry registry) { - registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); - } private MockMvc mockMvc; diff --git a/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/TopicControllerIT.java b/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/TopicControllerIT.java index df415321..4dd70883 100644 --- a/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/TopicControllerIT.java +++ b/src/test/java/de/caritas/cob/consultingtypeservice/api/controller/TopicControllerIT.java @@ -10,6 +10,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import de.caritas.cob.consultingtypeservice.ConsultingTypeServiceApplication; +import de.caritas.cob.consultingtypeservice.api.AbstractIntegrationTest; import de.caritas.cob.consultingtypeservice.api.auth.UserRole; import de.caritas.cob.consultingtypeservice.api.service.TenantService; import de.caritas.cob.consultingtypeservice.api.tenant.TenantContext; @@ -46,11 +47,10 @@ @TestPropertySource(properties = "feature.multitenancy.with.single.domain.enabled=true") @AutoConfigureMockMvc(addFilters = false) @TestPropertySource("classpath:application-testing.properties") -@Testcontainers @Sql( scripts = "classpath:database/TopicDatabase.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD) -class TopicControllerIT { +class TopicControllerIT extends AbstractIntegrationTest { @Container static MongoDBContainer mongoDBContainer = diff --git a/src/test/java/de/caritas/cob/consultingtypeservice/api/service/TopicServiceIT.java b/src/test/java/de/caritas/cob/consultingtypeservice/api/service/TopicServiceIT.java index d5783290..33aa7287 100644 --- a/src/test/java/de/caritas/cob/consultingtypeservice/api/service/TopicServiceIT.java +++ b/src/test/java/de/caritas/cob/consultingtypeservice/api/service/TopicServiceIT.java @@ -3,19 +3,15 @@ import static org.assertj.core.api.Assertions.assertThat; import de.caritas.cob.consultingtypeservice.ConsultingTypeServiceApplication; +import de.caritas.cob.consultingtypeservice.api.AbstractIntegrationTest; import de.caritas.cob.consultingtypeservice.api.model.TopicEntity; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.DynamicPropertyRegistry; -import org.springframework.test.context.DynamicPropertySource; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.jdbc.Sql; import org.springframework.test.context.jdbc.Sql.ExecutionPhase; -import org.testcontainers.containers.MongoDBContainer; -import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.utility.DockerImageName; @SpringBootTest(classes = ConsultingTypeServiceApplication.class) @TestPropertySource(properties = "spring.profiles.active=testing") @@ -23,19 +19,10 @@ @Sql( scripts = "classpath:database/TopicDatabase.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD) -class TopicServiceIT { +class TopicServiceIT extends AbstractIntegrationTest { @Autowired TopicService topicService; - @Container - static MongoDBContainer mongoDBContainer = - new MongoDBContainer(DockerImageName.parse("mongo:6.0")); - - @DynamicPropertySource - static void setProperties(DynamicPropertyRegistry registry) { - registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); - } - @Test void getAllTopics_Should_returnAllTopics() { // given, when diff --git a/src/test/java/de/caritas/cob/consultingtypeservice/api/service/TopicServiceTenantAwareIT.java b/src/test/java/de/caritas/cob/consultingtypeservice/api/service/TopicServiceTenantAwareIT.java index dce7fae3..ccc6ddc1 100644 --- a/src/test/java/de/caritas/cob/consultingtypeservice/api/service/TopicServiceTenantAwareIT.java +++ b/src/test/java/de/caritas/cob/consultingtypeservice/api/service/TopicServiceTenantAwareIT.java @@ -3,6 +3,7 @@ import static org.assertj.core.api.Assertions.assertThat; import de.caritas.cob.consultingtypeservice.ConsultingTypeServiceApplication; +import de.caritas.cob.consultingtypeservice.api.AbstractIntegrationTest; import de.caritas.cob.consultingtypeservice.api.model.TopicEntity; import de.caritas.cob.consultingtypeservice.api.tenant.TenantContext; import org.junit.jupiter.api.AfterEach; @@ -10,15 +11,10 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.DynamicPropertyRegistry; -import org.springframework.test.context.DynamicPropertySource; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.jdbc.Sql; import org.springframework.test.context.jdbc.Sql.ExecutionPhase; -import org.testcontainers.containers.MongoDBContainer; -import org.testcontainers.junit.jupiter.Container; -import org.testcontainers.junit.jupiter.Testcontainers; -import org.testcontainers.utility.DockerImageName; + @SpringBootTest(classes = ConsultingTypeServiceApplication.class) @TestPropertySource(properties = "spring.profiles.active=testing") @@ -26,20 +22,10 @@ @TestPropertySource( properties = "consulting.types.json.path=src/test/resources/consulting-type-settings-tenant-specific") -@Testcontainers @Sql( scripts = "classpath:database/TopicDatabase.sql", executionPhase = ExecutionPhase.BEFORE_TEST_METHOD) -class TopicServiceTenantAwareIT { - - @Container - static MongoDBContainer mongoDBContainer = - new MongoDBContainer(DockerImageName.parse("mongo:6.0")); - - @DynamicPropertySource - static void setProperties(DynamicPropertyRegistry registry) { - registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); - } +class TopicServiceTenantAwareIT extends AbstractIntegrationTest { @Autowired TopicService topicService; diff --git a/src/test/resources/testcontainers.properties b/src/test/resources/testcontainers.properties new file mode 100644 index 00000000..a329723e --- /dev/null +++ b/src/test/resources/testcontainers.properties @@ -0,0 +1 @@ +docker.client.strategy=org.testcontainers.dockerclient.DockerDesktopClientProviderStrategy \ No newline at end of file diff --git a/testcontainers.properties b/testcontainers.properties new file mode 100644 index 00000000..a329723e --- /dev/null +++ b/testcontainers.properties @@ -0,0 +1 @@ +docker.client.strategy=org.testcontainers.dockerclient.DockerDesktopClientProviderStrategy \ No newline at end of file