Skip to content

Commit 4d5f2a0

Browse files
committed
Replace test container-based AbstractTestcontainersRedisTestBase with CsmTestBase and add @EnableRedisDocumentRepositories annotations
1 parent 7c2c181 commit 4d5f2a0

13 files changed

Lines changed: 29 additions & 92 deletions

File tree

api/src/integrationTest/kotlin/com/cosmotech/api/home/ControllerTestBase.kt

Lines changed: 4 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package com.cosmotech.api.home
44

55
import com.cosmotech.api.home.Constants.ORGANIZATION_USER_EMAIL
66
import com.cosmotech.api.home.Constants.PLATFORM_ADMIN_EMAIL
7+
import com.cosmotech.common.tests.CsmTestBase
78
import com.cosmotech.dataset.domain.Dataset
89
import com.cosmotech.dataset.domain.DatasetPart
910
import com.cosmotech.organization.domain.Organization
@@ -12,11 +13,6 @@ import com.cosmotech.runner.domain.Runner
1213
import com.cosmotech.solution.domain.Solution
1314
import com.cosmotech.workspace.domain.Workspace
1415
import com.redis.om.spring.indexing.RediSearchIndexer
15-
import com.redis.testcontainers.RedisServer
16-
import com.redis.testcontainers.RedisStackContainer
17-
import com.redis.testcontainers.junit.AbstractTestcontainersRedisTestBase
18-
import org.junit.jupiter.api.AfterAll
19-
import org.junit.jupiter.api.BeforeAll
2016
import org.junit.jupiter.api.BeforeEach
2117
import org.junit.jupiter.api.extension.ExtendWith
2218
import org.slf4j.LoggerFactory
@@ -26,27 +22,19 @@ import org.springframework.http.HttpHeaders
2622
import org.springframework.restdocs.RestDocumentationContextProvider
2723
import org.springframework.restdocs.RestDocumentationExtension
2824
import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration
29-
import org.springframework.restdocs.operation.preprocess.Preprocessors.*
25+
import org.springframework.restdocs.operation.preprocess.Preprocessors.modifyHeaders
26+
import org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint
3027
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
3128
import org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity
32-
import org.springframework.test.context.DynamicPropertyRegistry
33-
import org.springframework.test.context.DynamicPropertySource
3429
import org.springframework.test.web.servlet.MockMvc
3530
import org.springframework.test.web.servlet.setup.DefaultMockMvcBuilder
3631
import org.springframework.test.web.servlet.setup.MockMvcBuilders
3732
import org.springframework.web.context.WebApplicationContext
38-
import org.testcontainers.containers.PostgreSQLContainer
39-
import org.testcontainers.containers.PostgreSQLContainer.POSTGRESQL_PORT
40-
import org.testcontainers.containers.localstack.LocalStackContainer
41-
import org.testcontainers.junit.jupiter.Testcontainers
42-
import org.testcontainers.utility.DockerImageName
43-
import org.testcontainers.utility.MountableFile
4433

45-
@Testcontainers
4634
@EnableWebSecurity
4735
@ExtendWith(RestDocumentationExtension::class)
4836
@AutoConfigureRestDocs
49-
abstract class ControllerTestBase : AbstractTestcontainersRedisTestBase() {
37+
abstract class ControllerTestBase : CsmTestBase() {
5038

5139
@Autowired private lateinit var context: WebApplicationContext
5240

@@ -106,78 +94,4 @@ abstract class ControllerTestBase : AbstractTestcontainersRedisTestBase() {
10694
)
10795
.build()
10896
}
109-
110-
companion object {
111-
private const val DEFAULT_REDIS_PORT = 6379
112-
private const val LOCALSTACK_FULL_IMAGE_NAME = "localstack/localstack:4.14.0"
113-
114-
var postgres: PostgreSQLContainer<*> =
115-
PostgreSQLContainer("postgres:latest")
116-
.withCopyFileToContainer(
117-
MountableFile.forClasspathResource("init-db.sql"),
118-
"/docker-entrypoint-initdb.d/",
119-
)
120-
121-
var redisStackServer = RedisStackContainer(RedisStackContainer.DEFAULT_IMAGE_NAME)
122-
123-
val localStackServer =
124-
LocalStackContainer(DockerImageName.parse(LOCALSTACK_FULL_IMAGE_NAME))
125-
.withServices(LocalStackContainer.Service.S3)
126-
127-
init {
128-
redisStackServer.start()
129-
postgres.start()
130-
localStackServer.start()
131-
localStackServer.execInContainer("awslocal", "s3", "mb", "s3://test-bucket")
132-
}
133-
134-
@JvmStatic
135-
@DynamicPropertySource
136-
fun connectionProperties(registry: DynamicPropertyRegistry) {
137-
initPostgresConfiguration(registry)
138-
initRedisConfiguration(registry)
139-
initS3Configuration(registry)
140-
}
141-
142-
private fun initRedisConfiguration(registry: DynamicPropertyRegistry) {
143-
val containerIp =
144-
redisStackServer.containerInfo.networkSettings.networks.entries
145-
.elementAt(0)
146-
.value
147-
.ipAddress
148-
149-
registry.add("spring.data.redis.host") { containerIp }
150-
registry.add("spring.data.redis.port") { DEFAULT_REDIS_PORT }
151-
}
152-
153-
private fun initS3Configuration(registry: DynamicPropertyRegistry) {
154-
registry.add("spring.cloud.aws.s3.endpoint") { localStackServer.endpoint }
155-
registry.add("spring.cloud.aws.credentials.access-key") { localStackServer.accessKey }
156-
registry.add("spring.cloud.aws.credentials.secret-key") { localStackServer.secretKey }
157-
registry.add("spring.cloud.aws.s3.region") { localStackServer.region }
158-
}
159-
160-
private fun initPostgresConfiguration(registry: DynamicPropertyRegistry) {
161-
registry.add("csm.platform.databases.data.host") { postgres.host }
162-
registry.add("csm.platform.databases.data.port") { postgres.getMappedPort(POSTGRESQL_PORT) }
163-
}
164-
}
165-
166-
@BeforeAll
167-
fun beforeAll() {
168-
redisStackServer.start()
169-
localStackServer.start()
170-
postgres.start()
171-
}
172-
173-
@AfterAll
174-
fun afterAll() {
175-
postgres.stop()
176-
localStackServer.stop()
177-
redisStackServer.stop()
178-
}
179-
180-
override fun redisServers(): MutableCollection<RedisServer> {
181-
return mutableListOf(redisStackServer)
182-
}
18397
}

common/src/main/kotlin/com/cosmotech/common/tests/CsmTestBase.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// Licensed under the MIT license.
33
package com.cosmotech.common.tests
44

5-
import com.redis.om.spring.annotations.EnableRedisDocumentRepositories
65
import com.redis.testcontainers.RedisServer
76
import com.redis.testcontainers.RedisStackContainer
87
import com.redis.testcontainers.junit.AbstractTestcontainersRedisTestBase
@@ -16,7 +15,6 @@ import org.testcontainers.containers.localstack.LocalStackContainer
1615
import org.testcontainers.utility.DockerImageName
1716
import org.testcontainers.utility.MountableFile
1817

19-
@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"])
2018
open class CsmTestBase : AbstractTestcontainersRedisTestBase() {
2119

2220
companion object {
@@ -78,12 +76,15 @@ open class CsmTestBase : AbstractTestcontainersRedisTestBase() {
7876
@BeforeAll
7977
fun beforeAll() {
8078
redisStackServer.start()
79+
localStackServer.start()
8180
postgres.start()
8281
}
8382

8483
@AfterAll
8584
fun afterAll() {
8685
postgres.stop()
86+
localStackServer.stop()
87+
redisStackServer.stop()
8788
}
8889

8990
override fun redisServers(): MutableCollection<RedisServer> {

dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceIntegrationTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ import com.cosmotech.workspace.domain.WorkspaceCreateRequest
4848
import com.cosmotech.workspace.domain.WorkspaceSecurity
4949
import com.cosmotech.workspace.domain.WorkspaceSolution
5050
import com.ninjasquad.springmockk.SpykBean
51+
import com.redis.om.spring.annotations.EnableRedisDocumentRepositories
5152
import com.redis.om.spring.indexing.RediSearchIndexer
5253
import io.awspring.cloud.s3.S3Template
5354
import io.mockk.every
@@ -83,6 +84,7 @@ import org.springframework.test.context.junit4.SpringRunner
8384
@ExtendWith(MockKExtension::class)
8485
@ExtendWith(SpringExtension::class)
8586
@RunWith(SpringRunner::class)
87+
@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"])
8688
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
8789
class DatasetServiceIntegrationTest() : CsmTestBase() {
8890
val CONNECTED_ADMIN_USER = "test.admin@cosmotech.com"

dataset/src/integrationTest/kotlin/com/cosmotech/dataset/service/DatasetServiceRBACTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import com.cosmotech.workspace.domain.WorkspaceAccessControl
5050
import com.cosmotech.workspace.domain.WorkspaceCreateRequest
5151
import com.cosmotech.workspace.domain.WorkspaceSecurity
5252
import com.cosmotech.workspace.domain.WorkspaceSolution
53+
import com.redis.om.spring.annotations.EnableRedisDocumentRepositories
5354
import com.redis.om.spring.indexing.RediSearchIndexer
5455
import io.mockk.every
5556
import io.mockk.junit5.MockKExtension
@@ -81,6 +82,7 @@ import org.springframework.web.multipart.MultipartFile
8182
@ExtendWith(MockKExtension::class)
8283
@ExtendWith(SpringExtension::class)
8384
@RunWith(SpringRunner::class)
85+
@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"])
8486
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
8587
class DatasetServiceRBACTest : CsmTestBase() {
8688
val CONNECTED_ADMIN_USER = "test.admin@cosmotech.com"

organization/src/integrationTest/kotlin/com/cosmotech/organization/service/OrganizationServiceIntegrationTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import com.cosmotech.organization.domain.OrganizationCreateRequest
3636
import com.cosmotech.organization.domain.OrganizationRole
3737
import com.cosmotech.organization.domain.OrganizationSecurity
3838
import com.cosmotech.organization.domain.OrganizationUpdateRequest
39+
import com.redis.om.spring.annotations.EnableRedisDocumentRepositories
3940
import com.redis.om.spring.indexing.RediSearchIndexer
4041
import io.mockk.every
4142
import io.mockk.junit5.MockKExtension
@@ -68,6 +69,7 @@ import org.springframework.test.context.junit4.SpringRunner
6869
@RunWith(SpringRunner::class)
6970
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
7071
@Suppress("FunctionName")
72+
@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"])
7173
class OrganizationServiceIntegrationTest : CsmTestBase() {
7274

7375
private val logger = LoggerFactory.getLogger(OrganizationServiceIntegrationTest::class.java)

organization/src/integrationTest/kotlin/com/cosmotech/organization/service/OrganizationServiceRBACTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import com.cosmotech.organization.domain.OrganizationCreateRequest
2727
import com.cosmotech.organization.domain.OrganizationRole
2828
import com.cosmotech.organization.domain.OrganizationSecurity
2929
import com.cosmotech.organization.domain.OrganizationUpdateRequest
30+
import com.redis.om.spring.annotations.EnableRedisDocumentRepositories
3031
import com.redis.om.spring.indexing.RediSearchIndexer
3132
import io.mockk.every
3233
import io.mockk.junit5.MockKExtension
@@ -51,6 +52,7 @@ import org.springframework.test.context.junit4.SpringRunner
5152
@ExtendWith(SpringExtension::class)
5253
@RunWith(SpringRunner::class)
5354
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
55+
@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"])
5456
@Suppress("FunctionName")
5557
class OrganizationServiceRBACTest : CsmTestBase() {
5658
val CONNECTED_ADMIN_USER = "test.admin@cosmotech.com"

run/src/integrationTest/kotlin/com/cosmotech/run/service/RunServiceIntegrationTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import com.cosmotech.workspace.domain.WorkspaceCreateRequest
4545
import com.cosmotech.workspace.domain.WorkspaceSecurity
4646
import com.cosmotech.workspace.domain.WorkspaceSolution
4747
import com.ninjasquad.springmockk.SpykBean
48+
import com.redis.om.spring.annotations.EnableRedisDocumentRepositories
4849
import com.redis.om.spring.indexing.RediSearchIndexer
4950
import io.mockk.every
5051
import io.mockk.impl.annotations.MockK
@@ -76,6 +77,7 @@ import org.springframework.web.client.RestClientResponseException
7677
@ExtendWith(SpringExtension::class)
7778
@RunWith(SpringRunner::class)
7879
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
80+
@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"])
7981
class RunServiceIntegrationTest : CsmTestBase() {
8082

8183
val CONNECTED_ADMIN_USER = "test.admin@cosmotech.com"

runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceIntegrationTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import com.cosmotech.workspace.domain.WorkspaceSecurity
5050
import com.cosmotech.workspace.domain.WorkspaceSolution
5151
import com.cosmotech.workspace.domain.WorkspaceUpdateRequest
5252
import com.ninjasquad.springmockk.SpykBean
53+
import com.redis.om.spring.annotations.EnableRedisDocumentRepositories
5354
import com.redis.om.spring.indexing.RediSearchIndexer
5455
import io.mockk.every
5556
import io.mockk.junit5.MockKExtension
@@ -87,6 +88,7 @@ import org.springframework.test.util.ReflectionTestUtils
8788
@ExtendWith(SpringExtension::class)
8889
@RunWith(SpringRunner::class)
8990
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
91+
@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"])
9092
class RunnerServiceIntegrationTest : CsmTestBase() {
9193

9294
val CONNECTED_ADMIN_USER = "test.admin@cosmotech.com"

runner/src/integrationTest/kotlin/com/cosmotech/runner/service/RunnerServiceRBACTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import com.cosmotech.workspace.domain.WorkspaceCreateRequest
4949
import com.cosmotech.workspace.domain.WorkspaceSecurity
5050
import com.cosmotech.workspace.domain.WorkspaceSolution
5151
import com.ninjasquad.springmockk.SpykBean
52+
import com.redis.om.spring.annotations.EnableRedisDocumentRepositories
5253
import com.redis.om.spring.indexing.RediSearchIndexer
5354
import io.mockk.every
5455
import io.mockk.junit5.MockKExtension
@@ -78,6 +79,7 @@ import org.springframework.test.util.ReflectionTestUtils
7879
@ExtendWith(SpringExtension::class)
7980
@RunWith(SpringRunner::class)
8081
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
82+
@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"])
8183
@Suppress("FunctionName")
8284
class RunnerServiceRBACTest : CsmTestBase() {
8385

solution/src/integrationTest/kotlin/com/cosmotech/solution/service/SolutionServiceIntegrationTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import com.cosmotech.organization.domain.OrganizationCreateRequest
2424
import com.cosmotech.organization.domain.OrganizationSecurity
2525
import com.cosmotech.solution.SolutionApiServiceInterface
2626
import com.cosmotech.solution.domain.*
27+
import com.redis.om.spring.annotations.EnableRedisDocumentRepositories
2728
import com.redis.om.spring.indexing.RediSearchIndexer
2829
import io.mockk.every
2930
import io.mockk.junit5.MockKExtension
@@ -58,6 +59,7 @@ const val CONNECTED_READER_USER = "test.user@cosmotech.com"
5859
@ExtendWith(SpringExtension::class)
5960
@RunWith(SpringRunner::class)
6061
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
62+
@EnableRedisDocumentRepositories(basePackages = ["com.cosmotech"])
6163
@Suppress("FunctionName")
6264
class SolutionServiceIntegrationTest : CsmTestBase() {
6365

0 commit comments

Comments
 (0)