From: Bob Halley Date: Tue, 30 Jun 2020 14:16:26 +0000 (-0700) Subject: increase update test coverage X-Git-Tag: v2.0.0rc2~39 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7ad83a3f0412ac800791a0237ad7e03789cd8fcf;p=thirdparty%2Fdnspython.git increase update test coverage --- diff --git a/tests/test_update.py b/tests/test_update.py index d9ce6f52..3abec93f 100644 --- a/tests/test_update.py +++ b/tests/test_update.py @@ -112,6 +112,34 @@ blaz ANY A blaz2 ANY ANY """ +added_text = """id 1 +opcode UPDATE +;ZONE +example. IN SOA +;UPDATE +foo 300 IN A 10.0.0.1 +foo 300 IN A 10.0.0.2 +""" + +replaced_text = """id 1 +opcode UPDATE +;ZONE +example. IN SOA +;UPDATE +foo ANY A +foo 300 IN A 10.0.0.1 +foo 300 IN A 10.0.0.2 +""" + +deleted_text = """id 1 +opcode UPDATE +;ZONE +example. IN SOA +;UPDATE +foo 0 NONE A 10.0.0.1 +foo 0 NONE A 10.0.0.2 +""" + class UpdateTestCase(unittest.TestCase): def test_to_wire1(self): # type: () -> None @@ -233,5 +261,86 @@ class UpdateTestCase(unittest.TestCase): self.assertTrue(isinstance(r, dns.update.UpdateMessage)) self.assertTrue(update.is_response(r)) + def test_making_UpdateSection(self): + self.assertEqual(dns.update.UpdateSection.make(0), + dns.update.UpdateSection.make('ZONE')) + with self.assertRaises(ValueError): + dns.update.UpdateSection.make(99) + + def test_setters(self): + u = dns.update.UpdateMessage(id=1) + qrrset = dns.rrset.RRset(dns.name.from_text('example'), + dns.rdataclass.IN, dns.rdatatype.SOA) + rrset = dns.rrset.from_text('foo', 300, 'in', 'a', '10.0.0.1') + u.zone = [qrrset] + self.assertEqual(u.sections[0], [qrrset]) + self.assertEqual(u.sections[1], []) + self.assertEqual(u.sections[2], []) + self.assertEqual(u.sections[3], []) + u.prerequisite = [rrset] + self.assertEqual(u.sections[0], [qrrset]) + self.assertEqual(u.sections[1], [rrset]) + self.assertEqual(u.sections[2], []) + self.assertEqual(u.sections[3], []) + u.update = [rrset] + self.assertEqual(u.sections[0], [qrrset]) + self.assertEqual(u.sections[1], [rrset]) + self.assertEqual(u.sections[2], [rrset]) + self.assertEqual(u.sections[3], []) + + def test_added_rdataset(self): + u = dns.update.UpdateMessage('example.', id=1) + rds = dns.rdataset.from_text('in', 'a', 300, '10.0.0.1', '10.0.0.2') + u.add('foo', rds) + expected = dns.message.from_text(added_text) + self.assertEqual(u, expected) + + def test_replaced_rdataset(self): + u = dns.update.UpdateMessage('example.', id=1) + rds = dns.rdataset.from_text('in', 'a', 300, '10.0.0.1', '10.0.0.2') + u.replace('foo', rds) + expected = dns.message.from_text(replaced_text) + self.assertEqual(u, expected) + + def test_delete_rdataset(self): + u = dns.update.UpdateMessage('example.', id=1) + rds = dns.rdataset.from_text('in', 'a', 300, '10.0.0.1', '10.0.0.2') + u.delete('foo', rds) + expected = dns.message.from_text(deleted_text) + self.assertEqual(u, expected) + + def test_added_rdata(self): + u = dns.update.UpdateMessage('example.', id=1) + rd1 = dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.A, + '10.0.0.1') + rd2 = dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.A, + '10.0.0.2') + u.add('foo', 300, rd1) + u.add('foo', 300, rd2) + expected = dns.message.from_text(added_text) + self.assertEqual(u, expected) + + def test_replaced_rdata(self): + u = dns.update.UpdateMessage('example.', id=1) + rd1 = dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.A, + '10.0.0.1') + rd2 = dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.A, + '10.0.0.2') + u.replace('foo', 300, rd1) + u.add('foo', 300, rd2) + expected = dns.message.from_text(replaced_text) + self.assertEqual(u, expected) + + def test_deleted_rdata(self): + u = dns.update.UpdateMessage('example.', id=1) + rd1 = dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.A, + '10.0.0.1') + rd2 = dns.rdata.from_text(dns.rdataclass.IN, dns.rdatatype.A, + '10.0.0.2') + u.delete('foo', rd1) + u.delete('foo', rd2) + expected = dns.message.from_text(deleted_text) + self.assertEqual(u, expected) + if __name__ == '__main__': unittest.main()