From 5382bf6344cc417144136957cc5e04f6f0aa1fcd Mon Sep 17 00:00:00 2001 From: Rob van der Linde Date: Thu, 23 Feb 2023 16:56:07 +1300 Subject: selftest: make two samba-tool drs tests generic BUG: https://bugzilla.samba.org/show_bug.cgi?id=15316 Signed-off-by: Rob van der Linde Reviewed-by: Andrew Bartlett Reviewed-by: Joseph Sutton (cherry picked from commit 1368e359b2a75b6b683aff274b2b2084f3cd469b) --- .../torture/drs/python/samba_tool_drs_showrepl.py | 35 +++++++++++++++------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/source4/torture/drs/python/samba_tool_drs_showrepl.py b/source4/torture/drs/python/samba_tool_drs_showrepl.py index de7f89336e3..bba840ce379 100644 --- a/source4/torture/drs/python/samba_tool_drs_showrepl.py +++ b/source4/torture/drs/python/samba_tool_drs_showrepl.py @@ -50,6 +50,21 @@ class SambaToolDrsShowReplTests(drs_base.DrsBaseTestCase): def test_samba_tool_showrepl(self): """Tests 'samba-tool drs showrepl' command. """ + nc_list = [self.config_dn, self.domain_dn, self.schema_dn] + dns_name = self.ldb_dc1.domain_dns_name() + + # Manually run kcc to create a "Connection" object, so we can find + # this for the expected output below. + kcc_out = self.check_output("samba-tool drs kcc %s %s" % (self.dc1, + self.cmdline_creds)) + self.assertIn(b"successful", kcc_out) + + # Run replicate to ensure there are incoming and outgoing partners + # exist, so we can expect these in the output below. + for nc in nc_list: + self._net_drs_replicate(DC=self.dnsname_dc2, fromDC=self.dnsname_dc1, nc_dn=nc, forced=True) + self._net_drs_replicate(DC=self.dnsname_dc1, fromDC=self.dnsname_dc2, nc_dn=nc, forced=True) + # Output should be like: # / # DSA Options: @@ -79,22 +94,20 @@ class SambaToolDrsShowReplTests(drs_base.DrsBaseTestCase): self.assertEqual(_conn, ' KCC CONNECTION OBJECTS ') self.assertRegex(header, - r'^Default-First-Site-Name\\LOCALDC\s+' + r'^Default-First-Site-Name\\%s\s+' r"DSA Options: %s\s+" r"DSA object GUID: %s\s+" r"DSA invocationId: %s" % - (HEX8_RE, GUID_RE, GUID_RE)) + (self.dc1.upper(), HEX8_RE, GUID_RE, GUID_RE)) # We don't assert the DomainDnsZones and ForestDnsZones are # there because we don't know that they have been set up yet. - for p in ['CN=Configuration,DC=samba,DC=example,DC=com', - 'DC=samba,DC=example,DC=com', - 'CN=Schema,CN=Configuration,DC=samba,DC=example,DC=com']: + for p in nc_list: self.assertRegex( inbound, r'%s\n' - r'\tDefault-First-Site-Name\\[A-Z]+ via RPC\n' + r'\tDefault-First-Site-Name\\[A-Z0-9]+ via RPC\n' r'\t\tDSA object GUID: %s\n' r'\t\tLast attempt @ [^\n]+\n' r'\t\t\d+ consecutive failure\(s\).\n' @@ -105,7 +118,7 @@ class SambaToolDrsShowReplTests(drs_base.DrsBaseTestCase): self.assertRegex( outbound, r'%s\n' - r'\tDefault-First-Site-Name\\[A-Z]+ via RPC\n' + r'\tDefault-First-Site-Name\\[A-Z0-9]+ via RPC\n' r'\t\tDSA object GUID: %s\n' r'\t\tLast attempt @ [^\n]+\n' r'\t\t\d+ consecutive failure\(s\).\n' @@ -117,13 +130,14 @@ class SambaToolDrsShowReplTests(drs_base.DrsBaseTestCase): r'Connection --\n' r'\tConnection name: %s\n' r'\tEnabled : TRUE\n' - r'\tServer DNS name : \w+.samba.example.com\n' + r'\tServer DNS name : \w+.%s\n' r'\tServer DN name : %s' - r'\n' % (GUID_RE, DN_RE)) + r'\n' % (GUID_RE, dns_name, DN_RE)) def test_samba_tool_showrepl_json(self): """Tests 'samba-tool drs showrepl --json' command. """ + dns_name = self.ldb_dc1.domain_dns_name() out = self.check_output("samba-tool drs showrepl %s %s --json" % (self.dc1, self.cmdline_creds)) d = json.loads(get_string(out)) @@ -151,8 +165,7 @@ class SambaToolDrsShowReplTests(drs_base.DrsBaseTestCase): # ntdsconnection for n in d["NTDSConnections"]: - self.assertRegex(n["dns name"], - r'^[\w]+\.samba\.example\.com$') + self.assertTrue(n["dns name"].endswith(dns_name)) self.assertRegex(n["name"], "^%s$" % GUID_RE) self.assertTrue(isinstance(n['enabled'], bool)) self.assertTrue(isinstance(n['options'], int)) -- cgit v1.2.1