aboutsummaryrefslogtreecommitdiffstats
path: root/molecule/default/tests/test_client_setup.py
diff options
context:
space:
mode:
Diffstat (limited to 'molecule/default/tests/test_client_setup.py')
-rw-r--r--molecule/default/tests/test_client_setup.py323
1 files changed, 171 insertions, 152 deletions
diff --git a/molecule/default/tests/test_client_setup.py b/molecule/default/tests/test_client_setup.py
index 6d11a93..f59c6db 100644
--- a/molecule/default/tests/test_client_setup.py
+++ b/molecule/default/tests/test_client_setup.py
@@ -1,42 +1,49 @@
"""Tests for client setup configuration"""
+
import pytest
-testinfra_hosts = ['borg-client', 'borg-client-2', 'borg-client-multi', 'borg-client-nonroot', 'borg-client-multi-keys']
+testinfra_hosts = [
+ "borg-client",
+ "borg-client-2",
+ "borg-client-multi",
+ "borg-client-nonroot",
+ "borg-client-multi-keys",
+]
CLIENT_USER_MAP = {
- 'borg-client': 'root',
- 'borg-client-2': 'root',
- 'borg-client-multi': 'root',
- 'borg-client-nonroot': 'backupuser',
- 'borg-client-multi-keys': 'root',
+ "borg-client": "root",
+ "borg-client-2": "root",
+ "borg-client-multi": "root",
+ "borg-client-nonroot": "backupuser",
+ "borg-client-multi-keys": "root",
}
CLIENT_SSH_KEY_TYPE_MAP = {
- 'borg-client': 'rsa',
- 'borg-client-2': 'ed25519',
- 'borg-client-multi': 'rsa',
- 'borg-client-nonroot': 'rsa',
- 'borg-client-multi-keys': 'ed25519',
+ "borg-client": "rsa",
+ "borg-client-2": "ed25519",
+ "borg-client-multi": "rsa",
+ "borg-client-nonroot": "rsa",
+ "borg-client-multi-keys": "ed25519",
}
CLIENT_SSH_KEY_PER_REPO_MAP = {
- 'borg-client': False,
- 'borg-client-2': False,
- 'borg-client-multi': False,
- 'borg-client-nonroot': False,
- 'borg-client-multi-keys': True,
+ "borg-client": False,
+ "borg-client-2": False,
+ "borg-client-multi": False,
+ "borg-client-nonroot": False,
+ "borg-client-multi-keys": True,
}
def get_client_user(host):
hostname = host.backend.get_hostname()
- return CLIENT_USER_MAP.get(hostname, 'root')
+ return CLIENT_USER_MAP.get(hostname, "root")
def get_client_ssh_key_type(host):
hostname = host.backend.get_hostname()
- return CLIENT_SSH_KEY_TYPE_MAP.get(hostname, 'rsa')
+ return CLIENT_SSH_KEY_TYPE_MAP.get(hostname, "rsa")
def get_client_ssh_key_per_repo(host):
@@ -46,14 +53,14 @@ def get_client_ssh_key_per_repo(host):
def get_client_home(host):
user = get_client_user(host)
- return f'/home/{user}' if user != 'root' else '/root'
+ return f"/home/{user}" if user != "root" else "/root"
class TestSSHSetup:
def test_ssh_directory_exists(self, host):
client_home = get_client_home(host)
client_user = get_client_user(host)
- ssh_dir = host.file(f'{client_home}/.ssh')
+ ssh_dir = host.file(f"{client_home}/.ssh")
assert ssh_dir.exists
assert ssh_dir.is_directory
assert ssh_dir.user == client_user
@@ -67,9 +74,13 @@ class TestSSHSetup:
per_repo = get_client_ssh_key_per_repo(host)
hostname = host.backend.get_hostname()
- if per_repo and hostname == 'borg-client-multi-keys':
- key1 = host.file(f'{client_home}/.ssh/id_{key_type}_borgbackup_borg_server_configs_keys')
- key2 = host.file(f'{client_home}/.ssh/id_{key_type}_borgbackup_borg_server_home_data_keys')
+ if per_repo and hostname == "borg-client-multi-keys":
+ key1 = host.file(
+ f"{client_home}/.ssh/id_{key_type}_borgbackup_borg_server_configs_keys"
+ )
+ key2 = host.file(
+ f"{client_home}/.ssh/id_{key_type}_borgbackup_borg_server_home_data_keys"
+ )
assert key1.exists
assert key1.user == client_user
assert key1.group == client_user
@@ -79,7 +90,7 @@ class TestSSHSetup:
assert key2.group == client_user
assert key2.mode == 0o600
else:
- key = host.file(f'{client_home}/.ssh/id_{key_type}')
+ key = host.file(f"{client_home}/.ssh/id_{key_type}")
assert key.exists
assert key.user == client_user
assert key.group == client_user
@@ -92,9 +103,13 @@ class TestSSHSetup:
per_repo = get_client_ssh_key_per_repo(host)
hostname = host.backend.get_hostname()
- if per_repo and hostname == 'borg-client-multi-keys':
- key1 = host.file(f'{client_home}/.ssh/id_{key_type}_borgbackup_borg_server_configs_keys.pub')
- key2 = host.file(f'{client_home}/.ssh/id_{key_type}_borgbackup_borg_server_home_data_keys.pub')
+ if per_repo and hostname == "borg-client-multi-keys":
+ key1 = host.file(
+ f"{client_home}/.ssh/id_{key_type}_borgbackup_borg_server_configs_keys.pub"
+ )
+ key2 = host.file(
+ f"{client_home}/.ssh/id_{key_type}_borgbackup_borg_server_home_data_keys.pub"
+ )
assert key1.exists
assert key1.user == client_user
assert key1.group == client_user
@@ -102,16 +117,16 @@ class TestSSHSetup:
assert key2.user == client_user
assert key2.group == client_user
else:
- key = host.file(f'{client_home}/.ssh/id_{key_type}.pub')
+ key = host.file(f"{client_home}/.ssh/id_{key_type}.pub")
assert key.exists
assert key.user == client_user
assert key.group == client_user
def test_known_hosts_contains_borg_server(self, host):
client_home = get_client_home(host)
- known_hosts = host.file(f'{client_home}/.ssh/known_hosts')
+ known_hosts = host.file(f"{client_home}/.ssh/known_hosts")
assert known_hosts.exists
- assert known_hosts.contains('borg-server')
+ assert known_hosts.contains("borg-server")
class TestBackupScript:
@@ -119,9 +134,9 @@ class TestBackupScript:
hostname = host.backend.get_hostname()
client_user = get_client_user(host)
- if hostname == 'borg-client-multi':
- script1 = host.file('/usr/local/bin/run_borg_backup@configs')
- script2 = host.file('/usr/local/bin/run_borg_backup@home-data')
+ if hostname == "borg-client-multi":
+ script1 = host.file("/usr/local/bin/run_borg_backup@configs")
+ script2 = host.file("/usr/local/bin/run_borg_backup@home-data")
assert script1.exists
assert script1.user == client_user
assert script1.group == client_user
@@ -130,9 +145,9 @@ class TestBackupScript:
assert script2.user == client_user
assert script2.group == client_user
assert script2.mode == 0o711
- elif hostname == 'borg-client-multi-keys':
- script1 = host.file('/usr/local/bin/run_borg_backup@configs-keys')
- script2 = host.file('/usr/local/bin/run_borg_backup@home-data-keys')
+ elif hostname == "borg-client-multi-keys":
+ script1 = host.file("/usr/local/bin/run_borg_backup@configs-keys")
+ script2 = host.file("/usr/local/bin/run_borg_backup@home-data-keys")
assert script1.exists
assert script1.user == client_user
assert script1.group == client_user
@@ -141,14 +156,14 @@ class TestBackupScript:
assert script2.user == client_user
assert script2.group == client_user
assert script2.mode == 0o711
- elif hostname == 'borg-client-nonroot':
- script = host.file('/usr/local/bin/run_borg_backup@borg-server')
+ elif hostname == "borg-client-nonroot":
+ script = host.file("/usr/local/bin/run_borg_backup@borg-server")
assert script.exists
assert script.user == client_user
assert script.group == client_user
assert script.mode == 0o711
- elif hostname in ('borg-client', 'borg-client-2'):
- script = host.file('/usr/local/bin/run_borg_backup')
+ elif hostname in ("borg-client", "borg-client-2"):
+ script = host.file("/usr/local/bin/run_borg_backup")
assert script.exists
assert script.user == client_user
assert script.group == client_user
@@ -159,125 +174,129 @@ class TestBackupScript:
def test_backup_script_contains_borg_command(self, host):
hostname = host.backend.get_hostname()
- if hostname == 'borg-client-multi':
- script1 = host.file('/usr/local/bin/run_borg_backup@configs')
- script2 = host.file('/usr/local/bin/run_borg_backup@home-data')
- assert script1.contains('borg create')
- assert script2.contains('borg create')
- elif hostname == 'borg-client-multi-keys':
- script1 = host.file('/usr/local/bin/run_borg_backup@configs-keys')
- script2 = host.file('/usr/local/bin/run_borg_backup@home-data-keys')
- assert script1.contains('borg create')
- assert script2.contains('borg create')
- elif hostname == 'borg-client-nonroot':
- script = host.file('/usr/local/bin/run_borg_backup@borg-server')
- assert script.contains('borg create')
- elif hostname in ('borg-client', 'borg-client-2'):
- script = host.file('/usr/local/bin/run_borg_backup')
- assert script.contains('borg create')
+ if hostname == "borg-client-multi":
+ script1 = host.file("/usr/local/bin/run_borg_backup@configs")
+ script2 = host.file("/usr/local/bin/run_borg_backup@home-data")
+ assert script1.contains("borg create")
+ assert script2.contains("borg create")
+ elif hostname == "borg-client-multi-keys":
+ script1 = host.file("/usr/local/bin/run_borg_backup@configs-keys")
+ script2 = host.file("/usr/local/bin/run_borg_backup@home-data-keys")
+ assert script1.contains("borg create")
+ assert script2.contains("borg create")
+ elif hostname == "borg-client-nonroot":
+ script = host.file("/usr/local/bin/run_borg_backup@borg-server")
+ assert script.contains("borg create")
+ elif hostname in ("borg-client", "borg-client-2"):
+ script = host.file("/usr/local/bin/run_borg_backup")
+ assert script.contains("borg create")
else:
pytest.fail(f"Unexpected hostname: {hostname}")
def test_backup_script_contains_compression(self, host):
hostname = host.backend.get_hostname()
- if hostname == 'borg-client-multi':
- script1 = host.file('/usr/local/bin/run_borg_backup@configs')
- script2 = host.file('/usr/local/bin/run_borg_backup@home-data')
- assert script1.contains('-C zstd')
- assert script2.contains('-C lz4')
- elif hostname == 'borg-client-multi-keys':
- script1 = host.file('/usr/local/bin/run_borg_backup@configs-keys')
- script2 = host.file('/usr/local/bin/run_borg_backup@home-data-keys')
- assert script1.contains('-C zstd')
- assert script2.contains('-C lz4')
- elif hostname == 'borg-client-2':
- script = host.file('/usr/local/bin/run_borg_backup')
- assert script.contains('-C')
- assert script.contains('lz4')
- elif hostname in ('borg-client', 'borg-client-nonroot'):
- script = host.file('/usr/local/bin/run_borg_backup') if hostname == 'borg-client' else host.file('/usr/local/bin/run_borg_backup@borg-server')
- assert script.contains('-C')
- assert script.contains('zstd')
+ if hostname == "borg-client-multi":
+ script1 = host.file("/usr/local/bin/run_borg_backup@configs")
+ script2 = host.file("/usr/local/bin/run_borg_backup@home-data")
+ assert script1.contains("-C zstd")
+ assert script2.contains("-C lz4")
+ elif hostname == "borg-client-multi-keys":
+ script1 = host.file("/usr/local/bin/run_borg_backup@configs-keys")
+ script2 = host.file("/usr/local/bin/run_borg_backup@home-data-keys")
+ assert script1.contains("-C zstd")
+ assert script2.contains("-C lz4")
+ elif hostname == "borg-client-2":
+ script = host.file("/usr/local/bin/run_borg_backup")
+ assert script.contains("-C")
+ assert script.contains("lz4")
+ elif hostname in ("borg-client", "borg-client-nonroot"):
+ script = (
+ host.file("/usr/local/bin/run_borg_backup")
+ if hostname == "borg-client"
+ else host.file("/usr/local/bin/run_borg_backup@borg-server")
+ )
+ assert script.contains("-C")
+ assert script.contains("zstd")
else:
pytest.fail(f"Unexpected hostname: {hostname}")
def test_backup_script_contains_repo_path(self, host):
hostname = host.backend.get_hostname()
- if hostname == 'borg-client-multi':
- script1 = host.file('/usr/local/bin/run_borg_backup@configs')
- script2 = host.file('/usr/local/bin/run_borg_backup@home-data')
- assert script1.contains('borg@borg-server')
- assert script1.contains('/opt/borg/configs')
- assert script2.contains('borg@borg-server')
- assert script2.contains('/opt/borg/home-data')
- elif hostname == 'borg-client-multi-keys':
- script1 = host.file('/usr/local/bin/run_borg_backup@configs-keys')
- script2 = host.file('/usr/local/bin/run_borg_backup@home-data-keys')
- assert script1.contains('borg@borg-server')
- assert script1.contains('/opt/borg/configs-keys')
- assert script2.contains('borg@borg-server')
- assert script2.contains('/opt/borg/home-data-keys')
- elif hostname == 'borg-client-nonroot':
- script = host.file('/usr/local/bin/run_borg_backup@borg-server')
- assert script.contains('borg@borg-server')
- assert script.contains('/opt/borg')
- elif hostname == 'borg-client':
- script = host.file('/usr/local/bin/run_borg_backup')
- assert script.contains('borg@borg-server')
- assert script.contains('/opt/borg')
- elif hostname == 'borg-client-2':
- script = host.file('/usr/local/bin/run_borg_backup')
- assert script.contains('backupserver@borg-server-2')
- assert script.contains('/var/backups')
+ if hostname == "borg-client-multi":
+ script1 = host.file("/usr/local/bin/run_borg_backup@configs")
+ script2 = host.file("/usr/local/bin/run_borg_backup@home-data")
+ assert script1.contains("borg@borg-server")
+ assert script1.contains("/opt/borg/configs")
+ assert script2.contains("borg@borg-server")
+ assert script2.contains("/opt/borg/home-data")
+ elif hostname == "borg-client-multi-keys":
+ script1 = host.file("/usr/local/bin/run_borg_backup@configs-keys")
+ script2 = host.file("/usr/local/bin/run_borg_backup@home-data-keys")
+ assert script1.contains("borg@borg-server")
+ assert script1.contains("/opt/borg/configs-keys")
+ assert script2.contains("borg@borg-server")
+ assert script2.contains("/opt/borg/home-data-keys")
+ elif hostname == "borg-client-nonroot":
+ script = host.file("/usr/local/bin/run_borg_backup@borg-server")
+ assert script.contains("borg@borg-server")
+ assert script.contains("/opt/borg")
+ elif hostname == "borg-client":
+ script = host.file("/usr/local/bin/run_borg_backup")
+ assert script.contains("borg@borg-server")
+ assert script.contains("/opt/borg")
+ elif hostname == "borg-client-2":
+ script = host.file("/usr/local/bin/run_borg_backup")
+ assert script.contains("backupserver@borg-server-2")
+ assert script.contains("/var/backups")
else:
pytest.fail(f"Unexpected hostname: {hostname}")
def test_backup_script_contains_backup_paths(self, host):
hostname = host.backend.get_hostname()
- if hostname == 'borg-client-multi':
- script1 = host.file('/usr/local/bin/run_borg_backup@configs')
- script2 = host.file('/usr/local/bin/run_borg_backup@home-data')
- assert '/etc' in script1.content_string
- assert '/home' in script2.content_string
- assert '--exclude' in script2.content_string
- elif hostname == 'borg-client-multi-keys':
- script1 = host.file('/usr/local/bin/run_borg_backup@configs-keys')
- script2 = host.file('/usr/local/bin/run_borg_backup@home-data-keys')
- assert '/etc' in script1.content_string
- assert '/home' in script2.content_string
- assert '--exclude' in script2.content_string
- elif hostname == 'borg-client-nonroot':
- script = host.file('/usr/local/bin/run_borg_backup@borg-server')
+ if hostname == "borg-client-multi":
+ script1 = host.file("/usr/local/bin/run_borg_backup@configs")
+ script2 = host.file("/usr/local/bin/run_borg_backup@home-data")
+ assert "/etc" in script1.content_string
+ assert "/home" in script2.content_string
+ assert "--exclude" in script2.content_string
+ elif hostname == "borg-client-multi-keys":
+ script1 = host.file("/usr/local/bin/run_borg_backup@configs-keys")
+ script2 = host.file("/usr/local/bin/run_borg_backup@home-data-keys")
+ assert "/etc" in script1.content_string
+ assert "/home" in script2.content_string
+ assert "--exclude" in script2.content_string
+ elif hostname == "borg-client-nonroot":
+ script = host.file("/usr/local/bin/run_borg_backup@borg-server")
content = script.content_string
- assert '/etc' in content
- elif hostname in ('borg-client', 'borg-client-2'):
- script = host.file('/usr/local/bin/run_borg_backup')
+ assert "/etc" in content
+ elif hostname in ("borg-client", "borg-client-2"):
+ script = host.file("/usr/local/bin/run_borg_backup")
content = script.content_string
- assert '/etc' in content or '/home' in content
+ assert "/etc" in content or "/home" in content
else:
pytest.fail(f"Unexpected hostname: {hostname}")
def test_backup_script_is_executable(self, host):
hostname = host.backend.get_hostname()
- if hostname == 'borg-client-multi':
- script1 = host.file('/usr/local/bin/run_borg_backup@configs')
- script2 = host.file('/usr/local/bin/run_borg_backup@home-data')
+ if hostname == "borg-client-multi":
+ script1 = host.file("/usr/local/bin/run_borg_backup@configs")
+ script2 = host.file("/usr/local/bin/run_borg_backup@home-data")
assert script1.mode == 0o711
assert script2.mode == 0o711
- elif hostname == 'borg-client-multi-keys':
- script1 = host.file('/usr/local/bin/run_borg_backup@configs-keys')
- script2 = host.file('/usr/local/bin/run_borg_backup@home-data-keys')
+ elif hostname == "borg-client-multi-keys":
+ script1 = host.file("/usr/local/bin/run_borg_backup@configs-keys")
+ script2 = host.file("/usr/local/bin/run_borg_backup@home-data-keys")
assert script1.mode == 0o711
assert script2.mode == 0o711
- elif hostname == 'borg-client-nonroot':
- script = host.file('/usr/local/bin/run_borg_backup@borg-server')
+ elif hostname == "borg-client-nonroot":
+ script = host.file("/usr/local/bin/run_borg_backup@borg-server")
assert script.mode == 0o711
- elif hostname in ('borg-client', 'borg-client-2'):
- script = host.file('/usr/local/bin/run_borg_backup')
+ elif hostname in ("borg-client", "borg-client-2"):
+ script = host.file("/usr/local/bin/run_borg_backup")
assert script.mode == 0o711
else:
pytest.fail(f"Unexpected hostname: {hostname}")
@@ -289,66 +308,66 @@ class TestBackupScript:
if not per_repo:
return
- if hostname == 'borg-client-multi-keys':
- script1 = host.file('/usr/local/bin/run_borg_backup@configs-keys')
- script2 = host.file('/usr/local/bin/run_borg_backup@home-data-keys')
- assert 'BORG_RSH' in script1.content_string
- assert 'BORG_RSH' in script2.content_string
- assert 'ssh -i' in script1.content_string
- assert 'ssh -i' in script2.content_string
+ if hostname == "borg-client-multi-keys":
+ script1 = host.file("/usr/local/bin/run_borg_backup@configs-keys")
+ script2 = host.file("/usr/local/bin/run_borg_backup@home-data-keys")
+ assert "BORG_RSH" in script1.content_string
+ assert "BORG_RSH" in script2.content_string
+ assert "ssh -i" in script1.content_string
+ assert "ssh -i" in script2.content_string
class TestMultiInstanceBaseScript:
def test_base_script_exists(self, host):
hostname = host.backend.get_hostname()
- if hostname != 'borg-client-multi':
+ if hostname != "borg-client-multi":
return
client_user = get_client_user(host)
- base_script = host.file('/usr/local/bin/run_borg_backup')
+ base_script = host.file("/usr/local/bin/run_borg_backup")
assert base_script.exists
assert base_script.user == client_user
assert base_script.mode == 0o711
def test_base_script_contains_both_blocks(self, host):
hostname = host.backend.get_hostname()
- if hostname != 'borg-client-multi':
+ if hostname != "borg-client-multi":
return
- base_script = host.file('/usr/local/bin/run_borg_backup')
+ base_script = host.file("/usr/local/bin/run_borg_backup")
content = base_script.content_string
- assert 'borg-server/configs' in content
- assert 'borg-server/home-data' in content
+ assert "borg-server/configs" in content
+ assert "borg-server/home-data" in content
def test_base_script_contains_both_repos(self, host):
hostname = host.backend.get_hostname()
- if hostname != 'borg-client-multi':
+ if hostname != "borg-client-multi":
return
- base_script = host.file('/usr/local/bin/run_borg_backup')
+ base_script = host.file("/usr/local/bin/run_borg_backup")
content = base_script.content_string
- assert '/opt/borg/configs' in content
- assert '/opt/borg/home-data' in content
+ assert "/opt/borg/configs" in content
+ assert "/opt/borg/home-data" in content
def test_base_script_contains_both_compressions(self, host):
hostname = host.backend.get_hostname()
- if hostname != 'borg-client-multi':
+ if hostname != "borg-client-multi":
return
- base_script = host.file('/usr/local/bin/run_borg_backup')
+ base_script = host.file("/usr/local/bin/run_borg_backup")
content = base_script.content_string
- assert '-C zstd' in content
- assert '-C lz4' in content
+ assert "-C zstd" in content
+ assert "-C lz4" in content
def test_base_script_two_borg_create_commands(self, host):
hostname = host.backend.get_hostname()
- if hostname != 'borg-client-multi':
+ if hostname != "borg-client-multi":
return
- base_script = host.file('/usr/local/bin/run_borg_backup')
+ base_script = host.file("/usr/local/bin/run_borg_backup")
content = base_script.content_string
- assert content.count('borg create') == 2
+ assert content.count("borg create") == 2