diff options
Diffstat (limited to 'molecule/default/tests/test_client_setup.py')
| -rw-r--r-- | molecule/default/tests/test_client_setup.py | 323 |
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 |