From be92ba36ba3c73d8df77f7dbfcb9038f4106fa8f Mon Sep 17 00:00:00 2001 From: Fabio Boi Date: Sun, 4 Oct 2026 11:50:59 +0200 Subject: [PATCH] Add saved Headscale DNS choice for MagicDNS manager addresses --- test_enroll.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/test_enroll.py b/test_enroll.py index 97c35d6..71f8bc7 100644 --- a/test_enroll.py +++ b/test_enroll.py @@ -53,7 +53,7 @@ printf 'MANAGERS=%s\n' "${MANAGERS[*]}" self.assertIn('MANAGERS=133', r.stdout) self.assertNotIn('UNEXPECTED MUTATION', r.stderr) - def run_worker(self, want_ts, want_wz, ssh=0, installed=False, failure=False): + def run_worker(self, want_ts, want_wz, ssh=0, installed=False, failure=False, dns=0): with tempfile.TemporaryDirectory() as td: p = Path(td) (p/'ossec/var/run').mkdir(parents=True) @@ -94,7 +94,7 @@ id() { if [[ $1 == -u ]]; then echo 1000; else return 0; fi; } mocks = 'MOCK_INSTALLED=%d; MOCK_FAILURE=%d\n' % (installed, failure) + mocks r = bash(mocks + worker, td, 'manager.example.com', '4.14.8-1', 'https://headscale.example.com', 'fixture', str(want_ts), str(want_wz), - str(ssh), 'fixtureuser', '0', '0') + str(ssh), 'fixtureuser', '0', '0', str(dns)) self.assertNotIn('fixture-secret-not-for-logging', r.stdout+r.stderr) self.assertFalse((p/'headscale.key').exists(), 'secret cleanup did not run') return r @@ -114,6 +114,18 @@ id() { if [[ $1 == -u ]]; then echo 1000; else return 0; fi; } self.assertNotIn('APT ', r.stdout) self.assertNotIn('TAILSCALE up', r.stdout) + def test_magicdns_enabled_before_manager_connection(self): + r = self.run_worker(1, 1, dns=1) + self.assertEqual(r.returncode, 0, r.stderr) + self.assertIn('--accept-dns=true', r.stdout) + self.assertLess(r.stdout.index('--accept-dns=true'), r.stdout.index('CHECK TCP 1514')) + + def test_existing_client_accepts_dns_without_reauthentication(self): + r = self.run_worker(0, 0, ssh=1, installed=True, dns=1) + self.assertEqual(r.returncode, 0, r.stderr) + self.assertIn('TAILSCALE set --accept-dns=true', r.stdout) + self.assertNotIn('TAILSCALE up', r.stdout) + def test_tailscale_ssh_uses_no_openssh_server_or_public_key(self): r = self.run_worker(0, 0, ssh=1, installed=True) self.assertEqual(r.returncode, 0, r.stderr)