summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Halley <halley@play-bow.org>2020-06-28 19:05:28 -0700
committerBob Halley <halley@play-bow.org>2020-06-28 19:05:28 -0700
commit7d30bd297fb63155474ee8199d81af7a04aca2db (patch)
tree49b23c711eb19f37c92d4decc7d667782a5e8df1
parentbf953169dc24d1e9bfe7805a7530a8347c24fab4 (diff)
downloaddnspython-7d30bd297fb63155474ee8199d81af7a04aca2db.tar.gz
increase coverage
-rw-r--r--MANIFEST.in2
-rw-r--r--tests/query12
-rw-r--r--tests/test_message.py43
-rw-r--r--tests/test_rrset.py17
4 files changed, 73 insertions, 1 deletions
diff --git a/MANIFEST.in b/MANIFEST.in
index 2f3b4d4..8fdc68c 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,3 +1,3 @@
include LICENSE ChangeLog README.md
recursive-include examples *.txt *.py
-recursive-include tests *.txt *.py Makefile *.good example
+recursive-include tests *.txt *.py Makefile *.good example query
diff --git a/tests/query b/tests/query
new file mode 100644
index 0000000..06edbb7
--- /dev/null
+++ b/tests/query
@@ -0,0 +1,12 @@
+id 1234
+opcode QUERY
+rcode NOERROR
+flags RD
+edns 0
+eflags DO
+payload 4096
+;QUESTION
+wwww.dnspython.org. IN A
+;ANSWER
+;AUTHORITY
+;ADDITIONAL
diff --git a/tests/test_message.py b/tests/test_message.py
index a123409..ca1fc86 100644
--- a/tests/test_message.py
+++ b/tests/test_message.py
@@ -16,6 +16,7 @@
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+import os
import unittest
import binascii
@@ -27,6 +28,9 @@ import dns.rdataclass
import dns.rdatatype
import dns.rrset
+def here(filename):
+ return os.path.join(os.path.dirname(__file__), filename)
+
query_text = """id 1234
opcode QUERY
rcode NOERROR
@@ -203,6 +207,7 @@ class MessageTestCase(unittest.TestCase):
m = dns.message.make_query('foo', 'A')
m.set_rcode(4095)
self.assertEqual(m.rcode(), 4095)
+ self.assertEqual(m.edns, 0)
m.set_rcode(2)
self.assertEqual(m.rcode(), 2)
@@ -239,6 +244,34 @@ class MessageTestCase(unittest.TestCase):
dns.rdatatype.SOA)
self.assertEqual(rrs1, rrs2)
+ def test_FindRRsetUnindexed(self):
+ a = dns.message.from_text(answer_text)
+ a.index = None
+ n = dns.name.from_text('dnspython.org.')
+ rrs1 = a.find_rrset(a.answer, n, dns.rdataclass.IN, dns.rdatatype.SOA)
+ rrs2 = a.find_rrset(dns.message.ANSWER, n, dns.rdataclass.IN,
+ dns.rdatatype.SOA)
+ self.assertEqual(rrs1, rrs2)
+
+ def test_GetRRset(self):
+ a = dns.message.from_text(answer_text)
+ a.index = None
+ n = dns.name.from_text('dnspython.org.')
+ rrs1 = a.get_rrset(a.answer, n, dns.rdataclass.IN, dns.rdatatype.SOA)
+ rrs2 = a.get_rrset(dns.message.ANSWER, n, dns.rdataclass.IN,
+ dns.rdatatype.SOA)
+ self.assertEqual(rrs1, rrs2)
+
+ def test_GetNonexistentRRset(self):
+ a = dns.message.from_text(answer_text)
+ a.index = None
+ n = dns.name.from_text('dnspython.org.')
+ rrs1 = a.get_rrset(a.answer, n, dns.rdataclass.IN, dns.rdatatype.TXT)
+ rrs2 = a.get_rrset(dns.message.ANSWER, n, dns.rdataclass.IN,
+ dns.rdatatype.TXT)
+ self.assertTrue(rrs1 is None)
+ self.assertEqual(rrs1, rrs2)
+
def test_CleanTruncated(self):
def bad():
a = dns.message.from_text(answer_text)
@@ -303,5 +336,15 @@ class MessageTestCase(unittest.TestCase):
m.want_dnssec()
self.assertEqual(m.edns, 0)
+ def test_from_file(self):
+ m = dns.message.from_file(here('query'))
+ expected = dns.message.from_text(query_text)
+ self.assertEqual(m, expected)
+
+ def test_explicit_header_comment(self):
+ m = dns.message.from_text(';HEADER\n' + query_text)
+ expected = dns.message.from_text(query_text)
+ self.assertEqual(m, expected)
+
if __name__ == '__main__':
unittest.main()
diff --git a/tests/test_rrset.py b/tests/test_rrset.py
index 9540e3c..7835ba1 100644
--- a/tests/test_rrset.py
+++ b/tests/test_rrset.py
@@ -158,5 +158,22 @@ class RRsetTestCase(unittest.TestCase):
dns.rdataclass.IN, dns.rdatatype.A)
self.assertFalse(rrs == 123)
+ def testRepr(self):
+ rrset = dns.rrset.from_text('foo', 30, 'in', 'a', '10.0.0.1',
+ '10.0.0.2')
+ self.assertEqual(repr(rrset),
+ '<DNS foo IN A RRset: [<10.0.0.1>, <10.0.0.2>]>')
+ rrset.deleting = dns.rdataclass.NONE
+ self.assertEqual(repr(rrset),
+ '<DNS foo IN A delete=NONE RRset: ' +
+ '[<10.0.0.1>, <10.0.0.2>]>')
+ rrset = dns.rrset.from_text(
+ 'foo', 30, 'in', 'rrsig',
+ 'A 1 3 3600 20200701000000 20200601000000 1 NAME Ym9ndXM=')
+ self.assertEqual(repr(rrset),
+ '<DNS foo IN RRSIG(A) RRset: ' +
+ '[<A 1 3 3600 20200701000000 20200601000000 ' +
+ '1 NAME Ym9ndXM=>]>')
+
if __name__ == '__main__':
unittest.main()