# 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
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
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)
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)
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()
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()