Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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

Expand Down Expand Up @@ -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<RedisServer> {
return mutableListOf(redisStackServer)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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")
Expand Down Expand Up @@ -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<RedisServer> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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() {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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() {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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() {

Expand Down
Loading