MongoKontainer

class MongoKontainer(kontainerSpec: KontainerSpec, delegate: PlatformKontainer) : GenericTcpKontainer

Provides a MongoDB Kontainer.

Author

Scott Rossillo

Samples

import com.mongodb.MongoClientSettings
import com.mongodb.MongoCredential
import com.mongodb.ServerAddress
import io.microkt.kontainers.junit5.annotation.Kontainers
import io.microkt.kontainers.mongo.MongoKontainer.Env.MONGO_INITDB_ROOT_PASSWORD
import io.microkt.kontainers.mongo.MongoKontainer.Env.MONGO_INITDB_ROOT_USERNAME
import org.junit.jupiter.api.Assertions.assertNotNull
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Tags
import org.junit.jupiter.api.Test
import org.litote.kmongo.KMongo
import org.litote.kmongo.eq
import org.litote.kmongo.findOne
import org.litote.kmongo.getCollection
import java.net.InetSocketAddress
fun main() { 
   //sampleStart 
   @Kontainers
@Tags(
    Tag("docker"),
    Tag("kubernetes")
)
internal class MongoKontainerTest(private val mongo: MongoKontainer) {
    private val settings = MongoClientSettings.builder()
        .credential(
            MongoCredential.createCredential(
                mongo.kontainerSpec.environment[MONGO_INITDB_ROOT_USERNAME]!!,
                "admin",
                mongo.kontainerSpec.environment[MONGO_INITDB_ROOT_PASSWORD]!!.toCharArray()
            )
        )
        .applyToClusterSettings {
            it.hosts(listOf(ServerAddress(InetSocketAddress(mongo.getAddress(), mongo.getPort()!!))))
        }
        .build()
    private val client = KMongo.createClient(settings)
    private val database = client.getDatabase("test")
    private val collection = database.getCollection<Jedi>()

    @Test
    fun testQuery() {
        collection.insertOne(Jedi("Luke", 19))
        collection.insertOne(Jedi("Yoda", 900))

        val yoda: Jedi? = collection.findOne(Jedi::name eq "Yoda")
        assertNotNull(yoda)
    }

    @Test
    fun testValidPort() {
        assertNotNull(mongo.getPort(mongoKontainerSpec.ports.first().port))
    }
} 
   //sampleEnd
}

Constructors

Link copied to clipboard
fun MongoKontainer(kontainerSpec: KontainerSpec, delegate: PlatformKontainer)

Creates a new MongoKontainer with the given kontainerSpec.

Types

Link copied to clipboard
object Env

MongoDB environment variables.

Functions

Link copied to clipboard
open override fun getAddress(): String?
Link copied to clipboard
open override fun getDirectAddress(): String?
Link copied to clipboard
open override fun getPort(): Int?
open override fun getPort(containerPort: Int): Int?
Link copied to clipboard
open suspend override fun remove()
Link copied to clipboard
open override fun removeSync()
Link copied to clipboard
suspend override fun start(timeout: Long)
Link copied to clipboard
open override fun startSync(timeout: Long)
Link copied to clipboard
open override fun waitForReady(timeout: Long)

Properties

Link copied to clipboard
open override val id: String
Link copied to clipboard
open override val kontainerSpec: KontainerSpec