From 88373c472c52ddc1191c1c20e74bff7776d0e805 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 11 Nov 2019 16:39:13 +1300 Subject: [PATCH] selftest: Add expected-output tests for the ndrdump struct mode BUG: https://bugzilla.samba.org/show_bug.cgi?id=14191 Signed-off-by: Andrew Bartlett Reviewed-by: Douglas Bagnall --- python/samba/tests/blackbox/ndrdump.py | 28 +++++++++++++- selftest/knownfail.d/ndrdump | 2 + .../tests/dns-decode_dns_name_packet-hex.txt | 35 ++++++++++++++++++ source4/librpc/tests/krb5pac-PAC_DATA.dat | Bin 0 -> 768 bytes 4 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 selftest/knownfail.d/ndrdump create mode 100644 source4/librpc/tests/dns-decode_dns_name_packet-hex.txt create mode 100644 source4/librpc/tests/krb5pac-PAC_DATA.dat diff --git a/python/samba/tests/blackbox/ndrdump.py b/python/samba/tests/blackbox/ndrdump.py index fd1bc832d9b..b8f467f8e82 100644 --- a/python/samba/tests/blackbox/ndrdump.py +++ b/python/samba/tests/blackbox/ndrdump.py @@ -62,9 +62,35 @@ class NdrDumpTests(BlackboxTestCase): self.data_path("dns-decode_dns_name_packet-hex.dat"))) def test_ndrdump_with_hex_struct_name(self): + expected = open(self.data_path("dns-decode_dns_name_packet-hex.txt")).read() try: - self.check_run( + actual = self.check_output( "ndrdump dns dns_name_packet struct --hex-input %s" % self.data_path("dns-decode_dns_name_packet-hex.dat")) except BlackboxProcessError as e: self.fail(e) + + # check_output will return bytes + # convert expected to bytes for python 3 + self.assertEqual(actual, expected.encode('utf-8')) + + def test_ndrdump_with_binary_struct_name(self): + # Prefix of the expected unparsed PAC data (without times, as + # these vary by host) + expected = '''pull returned NT_STATUS_OK + PAC_DATA: struct PAC_DATA + num_buffers : 0x00000005 (5) + version : 0x00000000 (0) + buffers: ARRAY(5)''' + try: + actual = self.check_output( + "ndrdump krb5pac PAC_DATA struct %s" % + self.data_path("krb5pac-PAC_DATA.dat")) + except BlackboxProcessError as e: + self.fail(e) + + # check_output will return bytes + # convert expected to bytes for python 3 + self.assertEqual(actual[:len(expected)], + expected.encode('utf-8')) + self.assertTrue(actual.endswith(b"dump OK\n")) diff --git a/selftest/knownfail.d/ndrdump b/selftest/knownfail.d/ndrdump new file mode 100644 index 00000000000..6ad82d78eb1 --- /dev/null +++ b/selftest/knownfail.d/ndrdump @@ -0,0 +1,2 @@ +^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_with_binary_struct_name +^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_with_hex_struct_name diff --git a/source4/librpc/tests/dns-decode_dns_name_packet-hex.txt b/source4/librpc/tests/dns-decode_dns_name_packet-hex.txt new file mode 100644 index 00000000000..a973c28d5b9 --- /dev/null +++ b/source4/librpc/tests/dns-decode_dns_name_packet-hex.txt @@ -0,0 +1,35 @@ +pull returned NT_STATUS_OK + dns_name_packet: struct dns_name_packet + id : 0xecef (60655) + operation : 0x2800 (10240) + 0x00: DNS_RCODE (0) + 0: DNS_FLAG_RECURSION_AVAIL + 0: DNS_FLAG_RECURSION_DESIRED + 0: DNS_FLAG_TRUNCATION + 0: DNS_FLAG_AUTHORITATIVE + 0x05: DNS_OPCODE (5) + 0: DNS_FLAG_REPLY + qdcount : 0x0001 (1) + ancount : 0x0000 (0) + nscount : 0x0001 (1) + arcount : 0x0000 (0) + questions: ARRAY(1) + questions: struct dns_name_question + name : 'samba2003.example.com' + question_type : DNS_QTYPE_SOA (0x6) + question_class : DNS_QCLASS_IN (0x1) + answers: ARRAY(0) + nsrecs: ARRAY(1) + nsrecs: struct dns_res_rec + name : 'cnamedotprefix0.samba2003.example.com' + rr_type : DNS_QTYPE_CNAME (0x5) + rr_class : DNS_QCLASS_IN (0x1) + ttl : 0x00000384 (900) + length : 0x0013 (19) + rdata : union dns_rdata(case 0x5) + cname_record : '' + unexpected : DATA_BLOB length=18 +[0000] 0F 62 6E 61 6D 65 64 6F 74 70 72 65 66 69 78 32 .bnamedo tprefix2 +[0010] C0 0C .. + additional: ARRAY(0) +dump OK diff --git a/source4/librpc/tests/krb5pac-PAC_DATA.dat b/source4/librpc/tests/krb5pac-PAC_DATA.dat new file mode 100644 index 0000000000000000000000000000000000000000..71b48d9d7190d4f630064254e48cb71fbddb11ae GIT binary patch literal 768 zc-muSfB;4yz5pa5pnNVMRsmuSCJ3Jgi2Hyz0Lo_rVgVq20Ohko`5&NsMgb0nGeB^F z5o#a<6T_oRx*mEnt}_0IfO;6cWbys^xF|aT|4CH{) zJWyHyN{c{g2_Vf4q`v^|V`PH3PX;Q74mg0mQvk{dFbDzt$i$$5q)vc=bij*5J2Ip& zLn4sO2hx-Qkbgk_Vuu7Jn6`n^Y*3mVN^?MIR;XSUu)AD<(3yb~ z9tJQme+FM5%ag$mtd5ZdEX^tkBo0?9df&PG!}YS2z)uF@ckZCLlOo_lFJK7jF(fd+ zq8+zt2Ouj22=jsRdO*2EAe{sx^%znaD!{w~h8!SUk0BYX24)`2&3X*MK%Osy6Ohzn xa0RAZ5HEni2gud~`V^!F5}$uvW?$ZNW{=&c`Rc(SKAWX%M%61ne?k9b69D(pV-ElT literal 0 Hc-jL100001 -- 2.47.3