Class: Testcontainers::MongoContainer

Inherits:
DockerContainer
  • Object
show all
Defined in:
lib/testcontainers/mongo.rb

Overview

MongoContainer class is used to manage containers that runs a Mongo databese

Constant Summary collapse

MONGO_DEFAULT_PORT =

Default port used by the container

27017
MONGO_DEFAULT_IMAGE =

Default image used by the container

"mongo:latest"
MONGO_DEFAULT_USERNAME =
"test"
MONGO_DEFAULT_PASSWORD =
"test"
MONGO_DEFAULT_DATABASE =
"test"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(image = MONGO_DEFAULT_IMAGE, username: nil, password: nil, database: nil, **kwargs) ⇒ MongoContainer

Initializes a new instance of MongoContainer

Parameters:

  • image (String) (defaults to: MONGO_DEFAULT_IMAGE)

    the image to use

  • username (String) (defaults to: nil)

    the username to use

  • password (String) (defaults to: nil)

    the password to use

  • database (String) (defaults to: nil)

    the database to use

  • port (String)

    the port to use

  • kwargs (Hash)

    the options to pass to the container. See DockerContainer#initialize



32
33
34
35
36
37
38
39
# File 'lib/testcontainers/mongo.rb', line 32

def initialize(image = MONGO_DEFAULT_IMAGE, username: nil, password: nil, database: nil, **kwargs)
  super(image, **kwargs)
  @username = username || ENV.fetch("MONGO_USERNAME", MONGO_DEFAULT_USERNAME)
  @password = password || ENV.fetch("MONGO_PASSWORD", MONGO_DEFAULT_PASSWORD)
  @database = database || ENV.fetch("MONGO_DATABASE", MONGO_DEFAULT_DATABASE)
  @healthcheck ||= add_healthcheck(_default_healthcheck_options)
  @wait_for ||= add_wait_for(:healthcheck)
end

Instance Attribute Details

#databaseString (readonly)

used by the container

Returns:

  • (String)

    the current value of database



10
11
12
# File 'lib/testcontainers/mongo.rb', line 10

def database
  @database
end

#passwordString (readonly)

used by the container

Returns:

  • (String)

    the current value of password



10
11
12
# File 'lib/testcontainers/mongo.rb', line 10

def password
  @password
end

#usernameString (readonly)

used by the container

Returns:

  • (String)

    the current value of username



10
11
12
# File 'lib/testcontainers/mongo.rb', line 10

def username
  @username
end

Instance Method Details

#mongo_url(protocol: "mongodb", username: nil, password: nil, database: nil, options: {}) ⇒ String Also known as: database_url

Returns the database url (e.g. mongodb://user:password@host:port/database)

Parameters:

  • protocol (String) (defaults to: "mongodb")

    the protocol to use in the string (default: “mongodb”)

  • database (String) (defaults to: nil)

    the database to use in the string (default: @database)

  • options (Hash) (defaults to: {})

    the options to use in the query string (default: {})

Returns:

  • (String)

    the database url

Raises:

  • (ConnectionError)

    If the connection to the Docker daemon fails.

  • (ContainerNotStartedError)

    If the container has not been started.



65
66
67
68
69
70
71
72
# File 'lib/testcontainers/mongo.rb', line 65

def mongo_url(protocol: "mongodb", username: nil, password: nil, database: nil, options: {})
  database ||= @database
  username ||= @username
  password ||= @password
  query_string = options.empty? ? "" : "?#{URI.encode_www_form(options)}"

  "#{protocol}://#{username}:#{password}@#{host}:#{mapped_port(port)}/#{database}#{query_string}"
end

#portInteger

Returns the port used by the container

Returns:

  • (Integer)

    the port used by the container



53
54
55
# File 'lib/testcontainers/mongo.rb', line 53

def port
  MONGO_DEFAULT_PORT
end

#startMongoContainer

Starts the container

Returns:



44
45
46
47
48
# File 'lib/testcontainers/mongo.rb', line 44

def start
  with_exposed_ports(port)
  _configure
  super
end

#with_database(database) ⇒ MongoContainer

Sets the database to use

Parameters:

  • database (String)

    the database to use

Returns:



80
81
82
83
# File 'lib/testcontainers/mongo.rb', line 80

def with_database(database)
  @database = database
  self
end

#with_password(password) ⇒ MongoContainer

Sets the password to use

Parameters:

  • password (String)

    the password to use

Returns:



98
99
100
101
# File 'lib/testcontainers/mongo.rb', line 98

def with_password(password)
  @password = password
  self
end

#with_username(username) ⇒ MongoContainer

Sets the username to use

Parameters:

  • username (String)

    the password to use

Returns:



89
90
91
92
# File 'lib/testcontainers/mongo.rb', line 89

def with_username(username)
  @password = password
  self
end