add tests for all databases
This commit is contained in:
parent
e2d82e9bba
commit
1a21eb03cd
4 changed files with 260 additions and 7 deletions
|
@ -11,8 +11,6 @@ services:
|
||||||
POSTGRES_PASSWORD: test2
|
POSTGRES_PASSWORD: test2
|
||||||
POSTGRES_DB: test
|
POSTGRES_DB: test
|
||||||
POSTGRES_USER: postgres2
|
POSTGRES_USER: postgres2
|
||||||
ports:
|
|
||||||
- "5433:5432"
|
|
||||||
command: -p 5433
|
command: -p 5433
|
||||||
mysql:
|
mysql:
|
||||||
image: docker.io/mariadb:10.5
|
image: docker.io/mariadb:10.5
|
||||||
|
@ -24,8 +22,6 @@ services:
|
||||||
environment:
|
environment:
|
||||||
MYSQL_ROOT_PASSWORD: test2
|
MYSQL_ROOT_PASSWORD: test2
|
||||||
MYSQL_DATABASE: test
|
MYSQL_DATABASE: test
|
||||||
ports:
|
|
||||||
- "3307:3306"
|
|
||||||
command: --port=3307
|
command: --port=3307
|
||||||
mongodb:
|
mongodb:
|
||||||
image: docker.io/mongo:5.0.5
|
image: docker.io/mongo:5.0.5
|
||||||
|
@ -37,8 +33,6 @@ services:
|
||||||
environment:
|
environment:
|
||||||
MONGO_INITDB_ROOT_USERNAME: root2
|
MONGO_INITDB_ROOT_USERNAME: root2
|
||||||
MONGO_INITDB_ROOT_PASSWORD: test2
|
MONGO_INITDB_ROOT_PASSWORD: test2
|
||||||
ports:
|
|
||||||
- "27018:27017"
|
|
||||||
command: --port=27018
|
command: --port=27018
|
||||||
tests:
|
tests:
|
||||||
image: docker.io/alpine:3.13
|
image: docker.io/alpine:3.13
|
||||||
|
|
|
@ -297,6 +297,114 @@ def test_restore_database_dump_runs_mongorestore_with_username_and_password():
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_restore_database_dump_with_connection_params_uses_connection_params_for_restore():
|
||||||
|
database_config = [
|
||||||
|
{
|
||||||
|
'name': 'foo',
|
||||||
|
'username': 'mongo',
|
||||||
|
'password': 'trustsome1',
|
||||||
|
'authentication_database': 'admin',
|
||||||
|
'schemas': None,
|
||||||
|
}
|
||||||
|
]
|
||||||
|
extract_process = flexmock(stdout=flexmock())
|
||||||
|
|
||||||
|
flexmock(module).should_receive('make_dump_path')
|
||||||
|
flexmock(module.dump).should_receive('make_database_dump_filename')
|
||||||
|
flexmock(module).should_receive('execute_command_with_processes').with_args(
|
||||||
|
[
|
||||||
|
'mongorestore',
|
||||||
|
'--archive',
|
||||||
|
'--drop',
|
||||||
|
'--db',
|
||||||
|
'foo',
|
||||||
|
'--host',
|
||||||
|
'clihost',
|
||||||
|
'--port',
|
||||||
|
'cliport',
|
||||||
|
'--username',
|
||||||
|
'cliusername',
|
||||||
|
'--password',
|
||||||
|
'clipassword',
|
||||||
|
'--authenticationDatabase',
|
||||||
|
'admin',
|
||||||
|
],
|
||||||
|
processes=[extract_process],
|
||||||
|
output_log_level=logging.DEBUG,
|
||||||
|
input_file=extract_process.stdout,
|
||||||
|
).once()
|
||||||
|
|
||||||
|
module.restore_database_dump(
|
||||||
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': 'clihost',
|
||||||
|
'port': 'cliport',
|
||||||
|
'username': 'cliusername',
|
||||||
|
'password': 'clipassword',
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_restore_database_dump_without_connection_params_uses_restore_params_in_config_for_restore():
|
||||||
|
database_config = [
|
||||||
|
{
|
||||||
|
'name': 'foo',
|
||||||
|
'username': 'mongo',
|
||||||
|
'password': 'trustsome1',
|
||||||
|
'authentication_database': 'admin',
|
||||||
|
'schemas': None,
|
||||||
|
'restore_hostname': 'restorehost',
|
||||||
|
'restore_port': 'restoreport',
|
||||||
|
'restore_username': 'restoreuser',
|
||||||
|
'restore_password': 'restorepass',
|
||||||
|
}
|
||||||
|
]
|
||||||
|
extract_process = flexmock(stdout=flexmock())
|
||||||
|
|
||||||
|
flexmock(module).should_receive('make_dump_path')
|
||||||
|
flexmock(module.dump).should_receive('make_database_dump_filename')
|
||||||
|
flexmock(module).should_receive('execute_command_with_processes').with_args(
|
||||||
|
[
|
||||||
|
'mongorestore',
|
||||||
|
'--archive',
|
||||||
|
'--drop',
|
||||||
|
'--db',
|
||||||
|
'foo',
|
||||||
|
'--host',
|
||||||
|
'restorehost',
|
||||||
|
'--port',
|
||||||
|
'restoreport',
|
||||||
|
'--username',
|
||||||
|
'restoreuser',
|
||||||
|
'--password',
|
||||||
|
'restorepass',
|
||||||
|
'--authenticationDatabase',
|
||||||
|
'admin',
|
||||||
|
],
|
||||||
|
processes=[extract_process],
|
||||||
|
output_log_level=logging.DEBUG,
|
||||||
|
input_file=extract_process.stdout,
|
||||||
|
).once()
|
||||||
|
|
||||||
|
module.restore_database_dump(
|
||||||
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_restore_database_dump_runs_mongorestore_with_options():
|
def test_restore_database_dump_runs_mongorestore_with_options():
|
||||||
database_config = [{'name': 'foo', 'restore_options': '--harder', 'schemas': None}]
|
database_config = [{'name': 'foo', 'restore_options': '--harder', 'schemas': None}]
|
||||||
extract_process = flexmock(stdout=flexmock())
|
extract_process = flexmock(stdout=flexmock())
|
||||||
|
|
|
@ -518,6 +518,94 @@ def test_restore_database_dump_runs_mysql_with_username_and_password():
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_restore_database_dump_with_connection_params_uses_connection_params_for_restore():
|
||||||
|
database_config = [{'name': 'foo', 'username': 'root', 'password': 'trustsome1'}]
|
||||||
|
extract_process = flexmock(stdout=flexmock())
|
||||||
|
|
||||||
|
flexmock(module).should_receive('execute_command_with_processes').with_args(
|
||||||
|
(
|
||||||
|
'mysql',
|
||||||
|
'--batch',
|
||||||
|
'--host',
|
||||||
|
'clihost',
|
||||||
|
'--port',
|
||||||
|
'cliport',
|
||||||
|
'--protocol',
|
||||||
|
'tcp',
|
||||||
|
'--user',
|
||||||
|
'cliusername',
|
||||||
|
),
|
||||||
|
processes=[extract_process],
|
||||||
|
output_log_level=logging.DEBUG,
|
||||||
|
input_file=extract_process.stdout,
|
||||||
|
extra_environment={'MYSQL_PWD': 'clipassword'},
|
||||||
|
).once()
|
||||||
|
|
||||||
|
module.restore_database_dump(
|
||||||
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': 'clihost',
|
||||||
|
'port': 'cliport',
|
||||||
|
'username': 'cliusername',
|
||||||
|
'password': 'clipassword',
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_restore_database_dump_without_connection_params_uses_restore_params_in_config_for_restore():
|
||||||
|
database_config = [
|
||||||
|
{
|
||||||
|
'name': 'foo',
|
||||||
|
'username': 'root',
|
||||||
|
'password': 'trustsome1',
|
||||||
|
'hostname': 'dbhost',
|
||||||
|
'port': 'dbport',
|
||||||
|
'restore_username': 'restoreuser',
|
||||||
|
'restore_password': 'restorepass',
|
||||||
|
'restore_hostname': 'restorehost',
|
||||||
|
'restore_port': 'restoreport',
|
||||||
|
}
|
||||||
|
]
|
||||||
|
extract_process = flexmock(stdout=flexmock())
|
||||||
|
|
||||||
|
flexmock(module).should_receive('execute_command_with_processes').with_args(
|
||||||
|
(
|
||||||
|
'mysql',
|
||||||
|
'--batch',
|
||||||
|
'--host',
|
||||||
|
'restorehost',
|
||||||
|
'--port',
|
||||||
|
'restoreport',
|
||||||
|
'--protocol',
|
||||||
|
'tcp',
|
||||||
|
'--user',
|
||||||
|
'restoreuser',
|
||||||
|
),
|
||||||
|
processes=[extract_process],
|
||||||
|
output_log_level=logging.DEBUG,
|
||||||
|
input_file=extract_process.stdout,
|
||||||
|
extra_environment={'MYSQL_PWD': 'restorepass'},
|
||||||
|
).once()
|
||||||
|
|
||||||
|
module.restore_database_dump(
|
||||||
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={
|
||||||
|
'hostname': None,
|
||||||
|
'port': None,
|
||||||
|
'username': None,
|
||||||
|
'password': None,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_restore_database_dump_with_dry_run_skips_restore():
|
def test_restore_database_dump_with_dry_run_skips_restore():
|
||||||
database_config = [{'name': 'foo'}]
|
database_config = [{'name': 'foo'}]
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import logging
|
||||||
import pytest
|
import pytest
|
||||||
from flexmock import flexmock
|
from flexmock import flexmock
|
||||||
|
|
||||||
|
@ -94,7 +95,69 @@ def test_restore_database_dump_restores_database():
|
||||||
database_config = [{'path': '/path/to/database', 'name': 'database'}]
|
database_config = [{'path': '/path/to/database', 'name': 'database'}]
|
||||||
extract_process = flexmock(stdout=flexmock())
|
extract_process = flexmock(stdout=flexmock())
|
||||||
|
|
||||||
flexmock(module).should_receive('execute_command_with_processes').once()
|
flexmock(module).should_receive('execute_command_with_processes').with_args(
|
||||||
|
(
|
||||||
|
'sqlite3',
|
||||||
|
'/path/to/database',
|
||||||
|
),
|
||||||
|
processes=[extract_process],
|
||||||
|
output_log_level=logging.DEBUG,
|
||||||
|
input_file=extract_process.stdout,
|
||||||
|
).once()
|
||||||
|
|
||||||
|
flexmock(module.os).should_receive('remove').once()
|
||||||
|
|
||||||
|
module.restore_database_dump(
|
||||||
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={'restore_path': None},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_restore_database_dump_with_connection_params_uses_connection_params_for_restore():
|
||||||
|
database_config = [{'path': '/path/to/database', 'name': 'database'}]
|
||||||
|
extract_process = flexmock(stdout=flexmock())
|
||||||
|
|
||||||
|
flexmock(module).should_receive('execute_command_with_processes').with_args(
|
||||||
|
(
|
||||||
|
'sqlite3',
|
||||||
|
'cli/path/to/database',
|
||||||
|
),
|
||||||
|
processes=[extract_process],
|
||||||
|
output_log_level=logging.DEBUG,
|
||||||
|
input_file=extract_process.stdout,
|
||||||
|
).once()
|
||||||
|
|
||||||
|
flexmock(module.os).should_receive('remove').once()
|
||||||
|
|
||||||
|
module.restore_database_dump(
|
||||||
|
database_config,
|
||||||
|
'test.yaml',
|
||||||
|
{},
|
||||||
|
dry_run=False,
|
||||||
|
extract_process=extract_process,
|
||||||
|
connection_params={'restore_path': 'cli/path/to/database'},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_restore_database_dump_without_connection_params_uses_restore_params_in_config_for_restore():
|
||||||
|
database_config = [
|
||||||
|
{'path': '/path/to/database', 'name': 'database', 'restore_path': 'config/path/to/database'}
|
||||||
|
]
|
||||||
|
extract_process = flexmock(stdout=flexmock())
|
||||||
|
|
||||||
|
flexmock(module).should_receive('execute_command_with_processes').with_args(
|
||||||
|
(
|
||||||
|
'sqlite3',
|
||||||
|
'config/path/to/database',
|
||||||
|
),
|
||||||
|
processes=[extract_process],
|
||||||
|
output_log_level=logging.DEBUG,
|
||||||
|
input_file=extract_process.stdout,
|
||||||
|
).once()
|
||||||
|
|
||||||
flexmock(module.os).should_receive('remove').once()
|
flexmock(module.os).should_receive('remove').once()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue