Skip to content

Commit ca85bc1

Browse files
Copilotdzikoysk
andcommitted
Replace LocalStack with Floci in test suite
Co-authored-by: dzikoysk <4235722+dzikoysk@users.noreply.github.com> Agent-Logs-Url: https://github.com/dzikoysk/reposilite/sessions/ab5235dc-512e-49c0-a80f-9b37f8759fe1
1 parent a20e5a3 commit ca85bc1

File tree

3 files changed

+17
-23
lines changed

3 files changed

+17
-23
lines changed

reposilite-backend/build.gradle.kts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,6 @@ dependencies {
8080
// See https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts-minimum-sdk.html
8181
implementation("software.amazon.awssdk:sts:$awssdk")
8282

83-
val awsSdkV1 = "1.12.791"
84-
testImplementation("com.amazonaws:aws-java-sdk-s3:$awsSdkV1")
85-
8683
implementation("com.github.ben-manes.caffeine:caffeine:3.2.3")
8784

8885
val exposed = "0.61.0"
@@ -139,7 +136,6 @@ dependencies {
139136
testImplementation("org.testcontainers:mariadb:$testcontainers")
140137
testImplementation("org.testcontainers:testcontainers:$testcontainers")
141138
testImplementation("org.testcontainers:junit-jupiter:$testcontainers")
142-
testImplementation("org.testcontainers:localstack:$testcontainers")
143139
testImplementation("org.testcontainers:mysql:$testcontainers")
144140
testImplementation("org.testcontainers:postgresql:$testcontainers") {
145141
exclude(group = "org.apache.commons", module = "commons-compress")

reposilite-backend/src/integration/kotlin/com/reposilite/RecommendedRemoteSpecificationJunitExtension.kt

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,16 @@ import org.junit.jupiter.api.extension.AfterEachCallback
2121
import org.junit.jupiter.api.extension.BeforeEachCallback
2222
import org.junit.jupiter.api.extension.Extension
2323
import org.junit.jupiter.api.extension.ExtensionContext
24+
import org.testcontainers.containers.GenericContainer
2425
import org.testcontainers.containers.MariaDBContainer
25-
import org.testcontainers.containers.localstack.LocalStackContainer
26-
import org.testcontainers.containers.localstack.LocalStackContainer.Service.S3
2726
import org.testcontainers.junit.jupiter.Container
2827
import org.testcontainers.junit.jupiter.Testcontainers
2928
import org.testcontainers.utility.DockerImageName
3029

3130
/**
3231
* Integrations used in remote stack:
3332
* - MariaDB
34-
* - AWS S3 through LocalStack
33+
* - AWS S3 through Floci
3534
*/
3635
@Testcontainers
3736
internal class RecommendedRemoteSpecificationJunitExtension : Extension, BeforeEachCallback, AfterEachCallback {
@@ -42,12 +41,12 @@ internal class RecommendedRemoteSpecificationJunitExtension : Extension, BeforeE
4241
private val mariaDb = SpecifiedMariaDBContainer("mariadb:latest")
4342

4443
@Container
45-
private val localstack: LocalStackContainer = LocalStackContainer(DockerImageName.parse("localstack/localstack:latest"))
46-
.withServices(S3)
44+
private val floci: GenericContainer<*> = GenericContainer(DockerImageName.parse("hectorvent/floci:latest"))
45+
.withExposedPorts(4566)
4746

4847
override fun beforeEach(context: ExtensionContext?) {
4948
mariaDb.start()
50-
localstack.start()
49+
floci.start()
5150

5251
context?.also {
5352
val instance = it.requiredTestInstance
@@ -59,18 +58,18 @@ internal class RecommendedRemoteSpecificationJunitExtension : Extension, BeforeE
5958
instance,
6059
S3StorageProviderSettings(
6160
bucketName = "test-repository",
62-
endpoint = localstack.getEndpointOverride(S3).toString(),
63-
accessKey = localstack.accessKey,
64-
secretKey = localstack.secretKey,
65-
region = localstack.region
61+
endpoint = "http://${floci.host}:${floci.getMappedPort(4566)}",
62+
accessKey = "test", // Floci accepts any credentials
63+
secretKey = "test", // Floci accepts any credentials
64+
region = "us-east-1"
6665
)
6766
)
6867
}
6968
}
7069

7170
override fun afterEach(context: ExtensionContext?) {
7271
mariaDb.stop()
73-
localstack.stop()
72+
floci.stop()
7473
}
7574

7675
}

reposilite-backend/src/integration/kotlin/com/reposilite/storage/infrastructure/S3StorageProviderIntegrationTest.kt

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@ import com.reposilite.storage.StorageProviderIntegrationTest
2323
import com.reposilite.storage.s3.S3StorageProviderSettings
2424
import org.junit.jupiter.api.BeforeEach
2525
import org.junit.jupiter.api.io.TempDir
26-
import org.testcontainers.containers.localstack.LocalStackContainer
27-
import org.testcontainers.containers.localstack.LocalStackContainer.Service.S3
26+
import org.testcontainers.containers.GenericContainer
2827
import org.testcontainers.junit.jupiter.Container
2928
import org.testcontainers.junit.jupiter.Testcontainers
3029
import org.testcontainers.utility.DockerImageName
@@ -37,8 +36,8 @@ internal class S3StorageProviderIntegrationTest : StorageProviderIntegrationTest
3736
lateinit var rootDirectory: File
3837

3938
@Container
40-
val localstack: LocalStackContainer = LocalStackContainer(DockerImageName.parse("localstack/localstack:latest"))
41-
.withServices(S3)
39+
val floci: GenericContainer<*> = GenericContainer(DockerImageName.parse("hectorvent/floci:latest"))
40+
.withExposedPorts(4566)
4241

4342
@BeforeEach
4443
fun setup() {
@@ -53,10 +52,10 @@ internal class S3StorageProviderIntegrationTest : StorageProviderIntegrationTest
5352
repository = "test-repository",
5453
storageSettings = S3StorageProviderSettings(
5554
bucketName = "test-repository",
56-
endpoint = localstack.getEndpointOverride(S3).toURL().toString(),
57-
accessKey = localstack.accessKey,
58-
secretKey = localstack.secretKey,
59-
region = localstack.region
55+
endpoint = "http://${floci.host}:${floci.getMappedPort(4566)}",
56+
accessKey = "test", // Floci accepts any credentials
57+
secretKey = "test", // Floci accepts any credentials
58+
region = "us-east-1"
6059
)
6160
)!!
6261
}

0 commit comments

Comments
 (0)