aboutsummaryrefslogtreecommitdiffstats
path: root/molecule/default/tests/test_ssh_connectivity.py
diff options
context:
space:
mode:
authorColin Wilk <colin@wilk.cx>2026-06-28 22:47:11 +0200
committerColin Wilk <colin@wilk.cx>2026-06-28 23:18:35 +0200
commit7d96c1a11fc442b4efddf9ce5250cf0a9dfaf02e (patch)
tree5561dbeee61aaab05e21f3bc2895ff703a2ce137 /molecule/default/tests/test_ssh_connectivity.py
parent785e6c88e4c0a3ccc44fd357b4f693c5aadd432c (diff)
downloadansible-role-borgbackup-7d96c1a11fc442b4efddf9ce5250cf0a9dfaf02e.tar.gz
ansible-role-borgbackup-7d96c1a11fc442b4efddf9ce5250cf0a9dfaf02e.zip
Parametrize server-side borg user
Adds option to choose a non-default borg backup user on the server.
Diffstat (limited to 'molecule/default/tests/test_ssh_connectivity.py')
-rw-r--r--molecule/default/tests/test_ssh_connectivity.py79
1 files changed, 55 insertions, 24 deletions
diff --git a/molecule/default/tests/test_ssh_connectivity.py b/molecule/default/tests/test_ssh_connectivity.py
index 0cc1897..f57b7b6 100644
--- a/molecule/default/tests/test_ssh_connectivity.py
+++ b/molecule/default/tests/test_ssh_connectivity.py
@@ -16,52 +16,73 @@ def get_borg_rsh(host, repo_name):
)
+def get_server_user(hostname):
+ if hostname == 'borg-client-2':
+ return 'backupserver'
+ return 'borg'
+
+
+def get_server_host(hostname):
+ if hostname == 'borg-client-2':
+ return 'borg-server-2'
+ return 'borg-server'
+
+
def test_ssh_connection_to_server(host):
- c = host.run('ssh -o BatchMode=yes -o ConnectTimeout=5 borg@borg-server echo test')
+ hostname = host.backend.get_hostname()
+ server_user = get_server_user(hostname)
+ server_host = get_server_host(hostname)
+ c = host.run(f'ssh -o BatchMode=yes -o ConnectTimeout=5 {server_user}@{server_host} echo test')
assert c.rc == 0 or 'Connection refused' not in c.stderr
def test_no_password_prompt_on_connect(host):
hostname = host.backend.get_hostname()
+ server_user = get_server_user(hostname)
+ server_host = get_server_host(hostname)
if hostname == 'borg-client-multi-keys':
c = host.run(
'ssh -i /root/.ssh/id_ed25519_borgbackup_borg_server_configs_keys '
'-o BatchMode=yes -o PreferredAuthentications=publickey '
- 'borg@borg-server exit'
+ f'{server_user}@{server_host} exit'
)
else:
c = host.run(
'ssh -o BatchMode=yes -o PreferredAuthentications=publickey '
- 'borg@borg-server exit'
+ f'{server_user}@{server_host} exit'
)
assert c.rc == 0
def test_known_hosts_has_correct_entry(host):
+ hostname = host.backend.get_hostname()
+ server_host = get_server_host(hostname)
known_hosts = host.file('/root/.ssh/known_hosts')
content = known_hosts.content_string
- assert 'borg-server' in content
+ assert server_host in content
assert 'ssh-' in content
def test_borg_can_connect_to_server(host):
hostname = host.backend.get_hostname()
+ server_user = get_server_user(hostname)
+ server_host = get_server_host(hostname)
if hostname == 'borg-client-multi':
- c = host.run('borg list borg@borg-server:/opt/borg/configs')
+ c = host.run(f'borg list {server_user}@{server_host}:/opt/borg/configs')
assert c.rc == 0, 'Should be able to connect to configs repo'
elif hostname == 'borg-client-multi-keys':
c = host.run(
f'{get_borg_rsh(host, "configs-keys")} '
- 'borg list borg@borg-server:/opt/borg/configs-keys'
+ f'borg list {server_user}@{server_host}:/opt/borg/configs-keys'
)
assert c.rc == 0, 'Should be able to connect to configs-keys repo'
elif hostname == 'borg-client':
- c = host.run('borg list borg@borg-server:/opt/borg/borg-client')
+ c = host.run(f'borg list {server_user}@{server_host}:/opt/borg/borg-client')
assert c.rc == 0
elif hostname == 'borg-client-2':
- c = host.run('borg list borg@borg-server:/opt/borg/borg-client-2')
+ c = host.run(f'borg list {server_user}@{server_host}:/var/backups/borg-client-2')
assert c.rc == 0, 'Should be able to connect to borg-client-2 repo'
else:
pytest.fail(f"Unexpected hostname: {hostname}")
@@ -69,28 +90,30 @@ def test_borg_can_connect_to_server(host):
def test_borg_info_works(host):
hostname = host.backend.get_hostname()
+ server_user = get_server_user(hostname)
+ server_host = get_server_host(hostname)
if hostname == 'borg-client-multi':
- c = host.run('borg info borg@borg-server:/opt/borg/configs')
+ c = host.run(f'borg info {server_user}@{server_host}:/opt/borg/configs')
assert c.rc == 0, 'Should be able to get info for configs repo'
- c2 = host.run('borg info borg@borg-server:/opt/borg/home-data')
+ c2 = host.run(f'borg info {server_user}@{server_host}:/opt/borg/home-data')
assert c2.rc == 0, 'Should be able to get info for home-data repo'
elif hostname == 'borg-client-multi-keys':
c = host.run(
f'{get_borg_rsh(host, "configs-keys")} '
- 'borg info borg@borg-server:/opt/borg/configs-keys'
+ f'borg info {server_user}@{server_host}:/opt/borg/configs-keys'
)
assert c.rc == 0, 'Should be able to get info for configs-keys repo'
c2 = host.run(
f'{get_borg_rsh(host, "home-data-keys")} '
- 'borg info borg@borg-server:/opt/borg/home-data-keys'
+ f'borg info {server_user}@{server_host}:/opt/borg/home-data-keys'
)
assert c2.rc == 0, 'Should be able to get info for home-data-keys repo'
elif hostname == 'borg-client':
- c = host.run('borg info borg@borg-server:/opt/borg/borg-client')
+ c = host.run(f'borg info {server_user}@{server_host}:/opt/borg/borg-client')
assert c.rc == 0
elif hostname == 'borg-client-2':
- c = host.run('borg info borg@borg-server:/opt/borg/borg-client-2')
+ c = host.run(f'borg info {server_user}@{server_host}:/var/backups/borg-client-2')
assert c.rc == 0, 'Should be able to get info for borg-client-2 repo'
else:
pytest.fail(f"Unexpected hostname: {hostname}")
@@ -101,40 +124,48 @@ def test_multi_instance_can_access_both_repos(host):
if hostname != 'borg-client-multi':
return
- c1 = host.run('borg list borg@borg-server:/opt/borg/configs')
+ server_user = get_server_user(hostname)
+ server_host = get_server_host(hostname)
+
+ c1 = host.run(f'borg list {server_user}@{server_host}:/opt/borg/configs')
assert c1.rc == 0, 'borg-client-multi should access configs repo'
- c2 = host.run('borg list borg@borg-server:/opt/borg/home-data')
+ c2 = host.run(f'borg list {server_user}@{server_host}:/opt/borg/home-data')
assert c2.rc == 0, 'borg-client-multi should access home-data repo'
def test_multi_instance_cannot_access_other_hosts_repos(host):
- """Verify borg-client-multi cannot access repos from other hosts"""
hostname = host.backend.get_hostname()
if hostname != 'borg-client-multi':
return
- c1 = host.run('borg list borg@borg-server:/opt/borg/borg-client')
+ server_user = get_server_user(hostname)
+ server_host = get_server_host(hostname)
+
+ c1 = host.run(f'borg list {server_user}@{server_host}:/opt/borg/borg-client')
assert c1.rc != 0, (
'borg-client-multi should NOT access borg-client repo'
)
- c2 = host.run('borg list borg@borg-server:/opt/borg/borg-client-2')
+ c2 = host.run(f'borg list {server_user}@{server_host}:/opt/borg/borg-client-2')
assert c2.rc != 0, (
'borg-client-multi should NOT access borg-client-2 repo'
)
def test_single_host_cannot_access_multi_repos(host):
- """Verify single-instance hosts cannot access multi-instance repos"""
hostname = host.backend.get_hostname()
if hostname not in ['borg-client', 'borg-client-2']:
return
- c1 = host.run('borg list borg@borg-server:/opt/borg/configs')
- assert c1.rc != 0, (
- f'{hostname} should NOT access configs repo (belongs to borg-client-multi)'
- )
+ server_user = get_server_user(hostname)
+ server_host = get_server_host(hostname)
+
+ if hostname == 'borg-client':
+ c1 = host.run(f'borg list {server_user}@{server_host}:/opt/borg/configs')
+ assert c1.rc != 0, (
+ f'{hostname} should NOT access configs repo (belongs to borg-client-multi)'
+ )
c2 = host.run('borg list borg@borg-server:/opt/borg/home-data')
assert c2.rc != 0, (