diff --git a/api/src/integrationTest/kotlin/com/cosmotech/api/home/ControllerTestBase.kt b/api/src/integrationTest/kotlin/com/cosmotech/api/home/ControllerTestBase.kt index eb6fcdd47..16bd13107 100644 --- a/api/src/integrationTest/kotlin/com/cosmotech/api/home/ControllerTestBase.kt +++ b/api/src/integrationTest/kotlin/com/cosmotech/api/home/ControllerTestBase.kt @@ -4,6 +4,7 @@ package com.cosmotech.api.home import com.cosmotech.api.home.Constants.ORGANIZATION_USER_EMAIL import com.cosmotech.api.home.Constants.PLATFORM_ADMIN_EMAIL +import com.cosmotech.common.tests.CsmTestBase import com.cosmotech.dataset.domain.Dataset import com.cosmotech.dataset.domain.DatasetPart import com.cosmotech.organization.domain.Organization @@ -12,11 +13,6 @@ import com.cosmotech.runner.domain.Runner import com.cosmotech.solution.domain.Solution import com.cosmotech.workspace.domain.Workspace import com.redis.om.spring.indexing.RediSearchIndexer -import com.redis.testcontainers.RedisServer -import com.redis.testcontainers.RedisStackContainer -import com.redis.testcontainers.junit.AbstractTestcontainersRedisTestBase -import org.junit.jupiter.api.AfterAll -import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.extension.ExtendWith import org.slf4j.LoggerFactory @@ -26,27 +22,19 @@ import org.springframework.http.HttpHeaders import org.springframework.restdocs.RestDocumentationContextProvider import org.springframework.restdocs.RestDocumentationExtension import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration -import org.springframework.restdocs.operation.preprocess.Preprocessors.* +import org.springframework.restdocs.operation.preprocess.Preprocessors.modifyHeaders +import org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity import org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity -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.setup.DefaultMockMvcBuilder import org.springframework.test.web.servlet.setup.MockMvcBuilders import org.springframework.web.context.WebApplicationContext -import org.testcontainers.containers.PostgreSQLContainer -import org.testcontainers.containers.PostgreSQLContainer.POSTGRESQL_PORT -import org.testcontainers.containers.localstack.LocalStackContainer -import org.testcontainers.junit.jupiter.Testcontainers -import org.testcontainers.utility.DockerImageName -import org.testcontainers.utility.MountableFile -@Testcontainers @EnableWebSecurity @ExtendWith(RestDocumentationExtension::class) @AutoConfigureRestDocs -abstract class ControllerTestBase : AbstractTestcontainersRedisTestBase() { +abstract class ControllerTestBase : CsmTestBase() { @Autowired private lateinit var context: WebApplicationContext @@ -106,78 +94,4 @@ abstract class ControllerTestBase : AbstractTestcontainersRedisTestBase() { ) .build() } - - companion object { - private const val DEFAULT_REDIS_PORT = 6379 - private const val LOCALSTACK_FULL_IMAGE_NAME = "localstack/localstack:latest" - - var postgres: PostgreSQLContainer<*> = - PostgreSQLContainer("postgres:latest") - .withCopyFileToContainer( - MountableFile.forClasspathResource("init-db.sql"), - "/docker-entrypoint-initdb.d/", - ) - - var redisStackServer = RedisStackContainer(RedisStackContainer.DEFAULT_IMAGE_NAME) - - val localStackServer = - LocalStackContainer(DockerImageName.parse(LOCALSTACK_FULL_IMAGE_NAME)) - .withServices(LocalStackContainer.Service.S3) - - init { - redisStackServer.start() - postgres.start() - localStackServer.start() - localStackServer.execInContainer("awslocal", "s3", "mb", "s3://test-bucket") - } - - @JvmStatic - @DynamicPropertySource - fun connectionProperties(registry: DynamicPropertyRegistry) { - initPostgresConfiguration(registry) - initRedisConfiguration(registry) - initS3Configuration(registry) - } - - private fun initRedisConfiguration(registry: DynamicPropertyRegistry) { - val containerIp = - redisStackServer.containerInfo.networkSettings.networks.entries - .elementAt(0) - .value - .ipAddress - - registry.add("spring.data.redis.host") { containerIp } - registry.add("spring.data.redis.port") { DEFAULT_REDIS_PORT } - } - - private fun initS3Configuration(registry: DynamicPropertyRegistry) { - registry.add("spring.cloud.aws.s3.endpoint") { localStackServer.endpoint } - registry.add("spring.cloud.aws.credentials.access-key") { localStackServer.accessKey } - registry.add("spring.cloud.aws.credentials.secret-key") { localStackServer.secretKey } - registry.add("spring.cloud.aws.s3.region") { localStackServer.region } - } - - private fun initPostgresConfiguration(registry: DynamicPropertyRegistry) { - registry.add("csm.platform.databases.data.host") { postgres.host } - registry.add("csm.platform.databases.data.port") { postgres.getMappedPort(POSTGRESQL_PORT) } - } - } - - @BeforeAll - fun beforeAll() { - redisStackServer.start() - localStackServer.start() - postgres.start() - } - - @AfterAll - fun afterAll() { - postgres.stop() - localStackServer.stop() - redisStackServer.stop() - } - - override fun redisServers(): MutableCollection { - return mutableListOf(redisStackServer) - } } diff --git a/common/src/main/kotlin/com/cosmotech/common/tests/CsmTestBase.kt b/common/src/main/kotlin/com/cosmotech/common/tests/CsmTestBase.kt index 5ae50c596..98190c1d9 100644 --- a/common/src/main/kotlin/com/cosmotech/common/tests/CsmTestBase.kt +++ b/common/src/main/kotlin/com/cosmotech/common/tests/CsmTestBase.kt @@ -2,7 +2,6 @@ // Licensed under the MIT license. package com.cosmotech.common.tests -import com.redis.om.spring.annotations.EnableRedisDocumentRepositories import com.redis.testcontainers.RedisServer import com.redis.testcontainers.RedisStackContainer import com.redis.testcontainers.junit.AbstractTestcontainersRedisTestBase @@ -16,12 +15,11 @@ import org.testcontainers.containers.localstack.LocalStackContainer import org.testcontainers.utility.DockerImageName import org.testcontainers.utility.MountableFile -@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"]) open class CsmTestBase : AbstractTestcontainersRedisTestBase() { companion object { private const val DEFAULT_REDIS_PORT = 6379 - private const val LOCALSTACK_FULL_IMAGE_NAME = "localstack/localstack:latest" + private const val LOCALSTACK_FULL_IMAGE_NAME = "localstack/localstack:4.14.0" var postgres: PostgreSQLContainer<*> = PostgreSQLContainer("postgres:latest") @@ -78,12 +76,15 @@ open class CsmTestBase : AbstractTestcontainersRedisTestBase() { @BeforeAll fun beforeAll() { redisStackServer.start() + localStackServer.start() postgres.start() } @AfterAll fun afterAll() { postgres.stop() + localStackServer.stop() + redisStackServer.stop() } override fun redisServers(): MutableCollection { diff --git a/dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceIntegrationTest.kt b/dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceIntegrationTest.kt index 5bfe56373..1bac04869 100644 --- a/dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceIntegrationTest.kt +++ b/dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceIntegrationTest.kt @@ -48,6 +48,7 @@ import com.cosmotech.workspace.domain.WorkspaceCreateRequest import com.cosmotech.workspace.domain.WorkspaceSecurity import com.cosmotech.workspace.domain.WorkspaceSolution import com.ninjasquad.springmockk.SpykBean +import com.redis.om.spring.annotations.EnableRedisDocumentRepositories import com.redis.om.spring.indexing.RediSearchIndexer import io.awspring.cloud.s3.S3Template import io.mockk.every @@ -83,6 +84,7 @@ import org.springframework.test.context.junit4.SpringRunner @ExtendWith(MockKExtension::class) @ExtendWith(SpringExtension::class) @RunWith(SpringRunner::class) +@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"]) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) class DatasetServiceIntegrationTest() : CsmTestBase() { val CONNECTED_ADMIN_USER = "test.admin@cosmotech.com" diff --git a/dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceRBACTest.kt b/dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceRBACTest.kt index 0eca8f306..ead309ae5 100644 --- a/dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceRBACTest.kt +++ b/dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceRBACTest.kt @@ -50,6 +50,7 @@ import com.cosmotech.workspace.domain.WorkspaceAccessControl import com.cosmotech.workspace.domain.WorkspaceCreateRequest import com.cosmotech.workspace.domain.WorkspaceSecurity import com.cosmotech.workspace.domain.WorkspaceSolution +import com.redis.om.spring.annotations.EnableRedisDocumentRepositories import com.redis.om.spring.indexing.RediSearchIndexer import io.mockk.every import io.mockk.junit5.MockKExtension @@ -81,6 +82,7 @@ import org.springframework.web.multipart.MultipartFile @ExtendWith(MockKExtension::class) @ExtendWith(SpringExtension::class) @RunWith(SpringRunner::class) +@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"]) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) class DatasetServiceRBACTest : CsmTestBase() { val CONNECTED_ADMIN_USER = "test.admin@cosmotech.com" diff --git a/organization/src/integrationTest/kotlin/com/cosmotech/organization/service/OrganizationServiceIntegrationTest.kt b/organization/src/integrationTest/kotlin/com/cosmotech/organization/service/OrganizationServiceIntegrationTest.kt index 87c9578a6..15d365aed 100644 --- a/organization/src/integrationTest/kotlin/com/cosmotech/organization/service/OrganizationServiceIntegrationTest.kt +++ b/organization/src/integrationTest/kotlin/com/cosmotech/organization/service/OrganizationServiceIntegrationTest.kt @@ -36,6 +36,7 @@ import com.cosmotech.organization.domain.OrganizationCreateRequest import com.cosmotech.organization.domain.OrganizationRole import com.cosmotech.organization.domain.OrganizationSecurity import com.cosmotech.organization.domain.OrganizationUpdateRequest +import com.redis.om.spring.annotations.EnableRedisDocumentRepositories import com.redis.om.spring.indexing.RediSearchIndexer import io.mockk.every import io.mockk.junit5.MockKExtension @@ -68,6 +69,7 @@ import org.springframework.test.context.junit4.SpringRunner @RunWith(SpringRunner::class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @Suppress("FunctionName") +@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"]) class OrganizationServiceIntegrationTest : CsmTestBase() { private val logger = LoggerFactory.getLogger(OrganizationServiceIntegrationTest::class.java) diff --git a/organization/src/integrationTest/kotlin/com/cosmotech/organization/service/OrganizationServiceRBACTest.kt b/organization/src/integrationTest/kotlin/com/cosmotech/organization/service/OrganizationServiceRBACTest.kt index 87d6807bb..57e8525d7 100644 --- a/organization/src/integrationTest/kotlin/com/cosmotech/organization/service/OrganizationServiceRBACTest.kt +++ b/organization/src/integrationTest/kotlin/com/cosmotech/organization/service/OrganizationServiceRBACTest.kt @@ -27,6 +27,7 @@ import com.cosmotech.organization.domain.OrganizationCreateRequest import com.cosmotech.organization.domain.OrganizationRole import com.cosmotech.organization.domain.OrganizationSecurity import com.cosmotech.organization.domain.OrganizationUpdateRequest +import com.redis.om.spring.annotations.EnableRedisDocumentRepositories import com.redis.om.spring.indexing.RediSearchIndexer import io.mockk.every import io.mockk.junit5.MockKExtension @@ -51,6 +52,7 @@ import org.springframework.test.context.junit4.SpringRunner @ExtendWith(SpringExtension::class) @RunWith(SpringRunner::class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"]) @Suppress("FunctionName") class OrganizationServiceRBACTest : CsmTestBase() { val CONNECTED_ADMIN_USER = "test.admin@cosmotech.com" diff --git a/run/src/integrationTest/kotlin/com/cosmotech/run/service/RunServiceIntegrationTest.kt b/run/src/integrationTest/kotlin/com/cosmotech/run/service/RunServiceIntegrationTest.kt index beb175df0..f9bec52b8 100644 --- a/run/src/integrationTest/kotlin/com/cosmotech/run/service/RunServiceIntegrationTest.kt +++ b/run/src/integrationTest/kotlin/com/cosmotech/run/service/RunServiceIntegrationTest.kt @@ -45,6 +45,7 @@ import com.cosmotech.workspace.domain.WorkspaceCreateRequest import com.cosmotech.workspace.domain.WorkspaceSecurity import com.cosmotech.workspace.domain.WorkspaceSolution import com.ninjasquad.springmockk.SpykBean +import com.redis.om.spring.annotations.EnableRedisDocumentRepositories import com.redis.om.spring.indexing.RediSearchIndexer import io.mockk.every import io.mockk.impl.annotations.MockK @@ -76,6 +77,7 @@ import org.springframework.web.client.RestClientResponseException @ExtendWith(SpringExtension::class) @RunWith(SpringRunner::class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"]) class RunServiceIntegrationTest : CsmTestBase() { val CONNECTED_ADMIN_USER = "test.admin@cosmotech.com" diff --git a/runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceIntegrationTest.kt b/runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceIntegrationTest.kt index ad60e030d..17cc81640 100644 --- a/runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceIntegrationTest.kt +++ b/runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceIntegrationTest.kt @@ -50,6 +50,7 @@ import com.cosmotech.workspace.domain.WorkspaceSecurity import com.cosmotech.workspace.domain.WorkspaceSolution import com.cosmotech.workspace.domain.WorkspaceUpdateRequest import com.ninjasquad.springmockk.SpykBean +import com.redis.om.spring.annotations.EnableRedisDocumentRepositories import com.redis.om.spring.indexing.RediSearchIndexer import io.mockk.every import io.mockk.junit5.MockKExtension @@ -87,6 +88,7 @@ import org.springframework.test.util.ReflectionTestUtils @ExtendWith(SpringExtension::class) @RunWith(SpringRunner::class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"]) class RunnerServiceIntegrationTest : CsmTestBase() { val CONNECTED_ADMIN_USER = "test.admin@cosmotech.com" diff --git a/runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceRBACTest.kt b/runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceRBACTest.kt index 7e82510e2..24da74eb4 100644 --- a/runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceRBACTest.kt +++ b/runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceRBACTest.kt @@ -49,6 +49,7 @@ import com.cosmotech.workspace.domain.WorkspaceCreateRequest import com.cosmotech.workspace.domain.WorkspaceSecurity import com.cosmotech.workspace.domain.WorkspaceSolution import com.ninjasquad.springmockk.SpykBean +import com.redis.om.spring.annotations.EnableRedisDocumentRepositories import com.redis.om.spring.indexing.RediSearchIndexer import io.mockk.every import io.mockk.junit5.MockKExtension @@ -78,6 +79,7 @@ import org.springframework.test.util.ReflectionTestUtils @ExtendWith(SpringExtension::class) @RunWith(SpringRunner::class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"]) @Suppress("FunctionName") class RunnerServiceRBACTest : CsmTestBase() { diff --git a/solution/src/integrationTest/kotlin/com/cosmotech/solution/service/SolutionServiceIntegrationTest.kt b/solution/src/integrationTest/kotlin/com/cosmotech/solution/service/SolutionServiceIntegrationTest.kt index 41fd9540f..28f1d0fae 100644 --- a/solution/src/integrationTest/kotlin/com/cosmotech/solution/service/SolutionServiceIntegrationTest.kt +++ b/solution/src/integrationTest/kotlin/com/cosmotech/solution/service/SolutionServiceIntegrationTest.kt @@ -24,6 +24,7 @@ import com.cosmotech.organization.domain.OrganizationCreateRequest import com.cosmotech.organization.domain.OrganizationSecurity import com.cosmotech.solution.SolutionApiServiceInterface import com.cosmotech.solution.domain.* +import com.redis.om.spring.annotations.EnableRedisDocumentRepositories import com.redis.om.spring.indexing.RediSearchIndexer import io.mockk.every import io.mockk.junit5.MockKExtension @@ -58,6 +59,7 @@ const val CONNECTED_READER_USER = "test.user@cosmotech.com" @ExtendWith(SpringExtension::class) @RunWith(SpringRunner::class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"]) @Suppress("FunctionName") class SolutionServiceIntegrationTest : CsmTestBase() { diff --git a/solution/src/integrationTest/kotlin/com/cosmotech/solution/service/SolutionServiceRBACTest.kt b/solution/src/integrationTest/kotlin/com/cosmotech/solution/service/SolutionServiceRBACTest.kt index b575294ab..f6aea25f9 100644 --- a/solution/src/integrationTest/kotlin/com/cosmotech/solution/service/SolutionServiceRBACTest.kt +++ b/solution/src/integrationTest/kotlin/com/cosmotech/solution/service/SolutionServiceRBACTest.kt @@ -29,6 +29,7 @@ import com.cosmotech.organization.domain.OrganizationCreateRequest import com.cosmotech.organization.domain.OrganizationSecurity import com.cosmotech.solution.api.SolutionApiService import com.cosmotech.solution.domain.* +import com.redis.om.spring.annotations.EnableRedisDocumentRepositories import com.redis.om.spring.indexing.RediSearchIndexer import io.mockk.every import io.mockk.impl.annotations.MockK @@ -58,6 +59,7 @@ import org.springframework.test.util.ReflectionTestUtils @ExtendWith(SpringExtension::class) @RunWith(SpringRunner::class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"]) class SolutionServiceRBACTest : CsmTestBase() { val TEST_USER_MAIL = "testuser@mail.fr" diff --git a/workspace/src/integrationTest/kotlin/com/cosmotech/workspace/service/WorkspaceServiceIntegrationTest.kt b/workspace/src/integrationTest/kotlin/com/cosmotech/workspace/service/WorkspaceServiceIntegrationTest.kt index 1a44d8534..2bc5cfe3d 100644 --- a/workspace/src/integrationTest/kotlin/com/cosmotech/workspace/service/WorkspaceServiceIntegrationTest.kt +++ b/workspace/src/integrationTest/kotlin/com/cosmotech/workspace/service/WorkspaceServiceIntegrationTest.kt @@ -23,6 +23,7 @@ import com.cosmotech.solution.api.SolutionApiService import com.cosmotech.solution.domain.* import com.cosmotech.workspace.WorkspaceApiServiceInterface import com.cosmotech.workspace.domain.* +import com.redis.om.spring.annotations.EnableRedisDocumentRepositories import com.redis.om.spring.indexing.RediSearchIndexer import io.mockk.every import io.mockk.junit5.MockKExtension @@ -54,6 +55,7 @@ import org.springframework.test.context.junit4.SpringRunner @ExtendWith(SpringExtension::class) @RunWith(SpringRunner::class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"]) @Suppress("FunctionName") class WorkspaceServiceIntegrationTest : CsmTestBase() { val TEST_USER_MAIL = "testuser@mail.fr" diff --git a/workspace/src/integrationTest/kotlin/com/cosmotech/workspace/service/WorkspaceServiceRBACTest.kt b/workspace/src/integrationTest/kotlin/com/cosmotech/workspace/service/WorkspaceServiceRBACTest.kt index f178e7435..e4a8b9465 100644 --- a/workspace/src/integrationTest/kotlin/com/cosmotech/workspace/service/WorkspaceServiceRBACTest.kt +++ b/workspace/src/integrationTest/kotlin/com/cosmotech/workspace/service/WorkspaceServiceRBACTest.kt @@ -37,6 +37,7 @@ import com.cosmotech.workspace.domain.WorkspaceRole import com.cosmotech.workspace.domain.WorkspaceSecurity import com.cosmotech.workspace.domain.WorkspaceSolution import com.cosmotech.workspace.domain.WorkspaceUpdateRequest +import com.redis.om.spring.annotations.EnableRedisDocumentRepositories import com.redis.om.spring.indexing.RediSearchIndexer import io.awspring.cloud.s3.S3Template import io.mockk.every @@ -68,6 +69,7 @@ import software.amazon.awssdk.services.s3.S3Client @ExtendWith(SpringExtension::class) @RunWith(SpringRunner::class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"]) @Suppress("FunctionName") class WorkspaceServiceRBACTest : CsmTestBase() {