1
# test-case-name: twisted.names.test.test_dns
2
# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
3
# See LICENSE for details.
6
Tests for twisted.names.dns.
12
from cStringIO import StringIO
14
from StringIO import StringIO
16
from twisted.trial import unittest
17
from twisted.names import dns
19
class RoundtripDNSTestCase(unittest.TestCase):
20
"""Encoding and then decoding various objects."""
22
names = ["example.org", "go-away.fish.tv", "23strikesback.net"]
34
self.assertEquals(result.name, n)
38
for dnstype in range(1, 17):
39
for dnscls in range(1, 5):
42
dns.Query(n, dnstype, dnscls).encode(f)
48
self.assertEquals(result.name.name, n)
49
self.assertEquals(result.type, dnstype)
50
self.assertEquals(result.cls, dnscls)
55
dns.RRHeader("test.org", 3, 4, 17).encode(f)
59
result = dns.RRHeader()
61
self.assertEquals(str(result.name), "test.org")
62
self.assertEquals(result.type, 3)
63
self.assertEquals(result.cls, 4)
64
self.assertEquals(result.ttl, 17)
67
def testResources(self):
70
"will.compress.will.this.will.name.will.hopefully",
71
"test.CASE.preSErVatIOn.YeAH",
72
"a.s.h.o.r.t.c.a.s.e.t.o.t.e.s.t",
77
dns.SimpleRecord(s).encode(f)
79
result = dns.SimpleRecord()
81
self.assertEquals(str(result.name), s)
83
def testHashable(self):
85
dns.Record_NS, dns.Record_MD, dns.Record_MF, dns.Record_CNAME,
86
dns.Record_MB, dns.Record_MG, dns.Record_MR, dns.Record_PTR,
87
dns.Record_DNAME, dns.Record_A, dns.Record_SOA, dns.Record_NULL,
88
dns.Record_WKS, dns.Record_SRV, dns.Record_AFSDB, dns.Record_RP,
89
dns.Record_HINFO, dns.Record_MINFO, dns.Record_MX, dns.Record_TXT,
90
dns.Record_AAAA, dns.Record_A6
97
self.assertEquals(hk1, hk2, "%s != %s (for %s)" % (hk1,hk2,k))
100
class Encoding(unittest.TestCase):
102
bytes = ''.join([chr(i) for i in range(256)])
103
rec = dns.Record_NULL(bytes)
104
rr = dns.RRHeader('testname', dns.NULL, payload=rec)
106
msg1.answers.append(rr)
113
self.failUnless(isinstance(msg2.answers[0].payload, dns.Record_NULL))
114
self.assertEquals(msg2.answers[0].payload.payload, bytes)