@@ -18,6 +18,7 @@ package app.cash.tempest2.testing
1818
1919import app.cash.tempest2.testing.internal.buildDynamoDb
2020import app.cash.tempest2.testing.internal.hostName
21+ import com.github.dockerjava.api.model.AuthConfig
2122import com.github.dockerjava.api.model.ExposedPort
2223import com.github.dockerjava.api.model.Ports
2324import com.google.common.util.concurrent.AbstractIdleService
@@ -27,7 +28,8 @@ import software.amazon.awssdk.services.dynamodb.model.DynamoDbException
2728class DockerDynamoDbServer private constructor(
2829 override val port : Int ,
2930 private val onBeforeStartup : () -> Unit ,
30- imageResolver : (String ) -> String
31+ imageResolver : (String ) -> String ,
32+ authProvider : (() -> AuthConfig )?
3133) : AbstractIdleService(), TestDynamoDbServer {
3234
3335 override val id = " tempest2-docker-dynamodb-local-$port "
@@ -60,17 +62,20 @@ class DockerDynamoDbServer private constructor(
6062
6163 private val composer = Composer (
6264 " e-$id " ,
63- Container {
64- // DynamoDB Local listens on port 8000 by default.
65- val exposedClientPort = ExposedPort .tcp(8000 )
66- val portBindings = Ports ()
67- portBindings.bind(exposedClientPort, Ports .Binding .bindPort(port))
68- withImage(resolvedImage)
69- .withName(id)
70- .withExposedPorts(exposedClientPort)
71- .withCmd(" -jar" , " DynamoDBLocal.jar" , " -sharedDb" , " -disableTelemetry" )
72- .withPortBindings(portBindings)
73- }
65+ Container (createCmd = {
66+ // DynamoDB Local listens on port 8000 by default.
67+ val exposedClientPort = ExposedPort .tcp(8000 )
68+ val portBindings = Ports ()
69+ portBindings.bind(exposedClientPort, Ports .Binding .bindPort(port))
70+ withImage(resolvedImage)
71+ .withName(id)
72+ .withExposedPorts(exposedClientPort)
73+ .withCmd(" -jar" , " DynamoDBLocal.jar" , " -sharedDb" , " -disableTelemetry" )
74+ .withPortBindings(portBindings)
75+ },
76+ beforeStartHook = { _, _ -> },
77+ authConfig = authProvider?.let { it() },
78+ )
7479 )
7580
7681 object Factory : TestDynamoDbServer.Factory<DockerDynamoDbServer> {
@@ -84,10 +89,11 @@ class DockerDynamoDbServer private constructor(
8489 * ```
8590 */
8691 var imageResolver: (String ) -> String = { it }
92+ var authProvider: (() -> AuthConfig )? = null
8793
8894 override fun hostName (port : Int ): String = app.cash.tempest2.testing.internal.hostName(port)
8995 override fun create (port : Int , onBeforeStartup : () -> Unit ) =
90- DockerDynamoDbServer (port, onBeforeStartup, imageResolver)
96+ DockerDynamoDbServer (port, onBeforeStartup, imageResolver, authProvider )
9197 }
9298
9399 companion object {
0 commit comments