diff options
| author | Nick Hall <nick.hall@deshaw.com> | 2019-02-03 14:02:49 +0000 |
|---|---|---|
| committer | Nick Hall <nick.hall@deshaw.com> | 2020-08-08 00:25:22 +0100 |
| commit | c4878f8e2a4cf095a795bad9f2d9660c4aaad7c3 (patch) | |
| tree | f04715c8013db64d44c7fce0a3e91d1508bdcd23 /tests | |
| parent | 157e4e907333fae7fb4c5888949258aa7927f6e9 (diff) | |
| download | dnspython-c4878f8e2a4cf095a795bad9f2d9660c4aaad7c3.tar.gz | |
Add support for TKEY RR type
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_rdtypeanytkey.py | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/tests/test_rdtypeanytkey.py b/tests/test_rdtypeanytkey.py new file mode 100644 index 0000000..3a3ca57 --- /dev/null +++ b/tests/test_rdtypeanytkey.py @@ -0,0 +1,96 @@ +# -*- coding: utf-8 +# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license + +# Copyright (C) 2003-2007, 2009-2011 Nominum, Inc. +# +# Permission to use, copy, modify, and distribute this software and its +# documentation for any purpose with or without fee is hereby granted, +# provided that the above copyright notice and this permission notice +# appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND NOMINUM DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NOMINUM BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +import unittest +import base64 + +import dns.name +import dns.zone +import dns.rdtypes.ANY.TKEY +from dns.rdataclass import RdataClass +from dns.rdatatype import RdataType + + +class RdtypeAnyTKeyTestCase(unittest.TestCase): + tkey_rdata_text = 'gss-tsig. 1594203795 1594206664 3 0 KEYKEYKEYKEYKEYKEYKEYKEYKEYKEYKEYKEY OTHEROTHEROTHEROTHEROTHEROTHEROT' + tkey_rdata_text_no_other = 'gss-tsig. 1594203795 1594206664 3 0 KEYKEYKEYKEYKEYKEYKEYKEYKEYKEYKEYKEY' + + def testTextOptionalData(self): + # construct the rdata from text and extract the TKEY + tkey = dns.rdata.from_text( + RdataClass.ANY, RdataType.TKEY, + RdtypeAnyTKeyTestCase.tkey_rdata_text, origin='.') + self.assertEqual(type(tkey), dns.rdtypes.ANY.TKEY.TKEY) + + # go to text and compare + tkey_out_text = tkey.to_text(relativize=False) + self.assertEqual(tkey_out_text, + RdtypeAnyTKeyTestCase.tkey_rdata_text) + + def testTextNoOptionalData(self): + # construct the rdata from text and extract the TKEY + tkey = dns.rdata.from_text( + RdataClass.ANY, RdataType.TKEY, + RdtypeAnyTKeyTestCase.tkey_rdata_text_no_other, origin='.') + self.assertEqual(type(tkey), dns.rdtypes.ANY.TKEY.TKEY) + + # go to text and compare + tkey_out_text = tkey.to_text(relativize=False) + self.assertEqual(tkey_out_text, + RdtypeAnyTKeyTestCase.tkey_rdata_text_no_other) + + def testWireOptionalData(self): + key = base64.b64decode('KEYKEYKEYKEYKEYKEYKEYKEYKEYKEYKEYKEY') + other = base64.b64decode('OTHEROTHEROTHEROTHEROTHEROTHEROT') + + # construct the TKEY and compare the text output + tkey = dns.rdtypes.ANY.TKEY.TKEY(dns.rdataclass.ANY, + dns.rdatatype.TKEY, + dns.name.from_text('gss-tsig.'), + 1594203795, 1594206664, + 3, 0, key, other) + self.assertEqual(tkey.to_text(relativize=False), + RdtypeAnyTKeyTestCase.tkey_rdata_text) + + # go to/from wire and compare the text output + wire = tkey.to_wire() + tkey_out_wire = dns.rdata.from_wire(dns.rdataclass.ANY, + dns.rdatatype.TKEY, + wire, 0, len(wire)) + self.assertEqual(tkey_out_wire.to_text(relativize=False), + RdtypeAnyTKeyTestCase.tkey_rdata_text) + + def testWireNoOptionalData(self): + key = base64.b64decode('KEYKEYKEYKEYKEYKEYKEYKEYKEYKEYKEYKEY') + + # construct the TKEY with no 'other' data and compare the text output + tkey = dns.rdtypes.ANY.TKEY.TKEY(dns.rdataclass.ANY, + dns.rdatatype.TKEY, + dns.name.from_text('gss-tsig.'), + 1594203795, 1594206664, + 3, 0, key) + self.assertEqual(tkey.to_text(relativize=False), + RdtypeAnyTKeyTestCase.tkey_rdata_text_no_other) + + # go to/from wire and compare the text output + wire = tkey.to_wire() + tkey_out_wire = dns.rdata.from_wire(dns.rdataclass.ANY, + dns.rdatatype.TKEY, + wire, 0, len(wire)) + self.assertEqual(tkey_out_wire.to_text(relativize=False), + RdtypeAnyTKeyTestCase.tkey_rdata_text_no_other) |
