self.flags = flags
+ @property
+ def nameservers(self):
+ return self._nameservers
+
+ @nameservers.setter
+ def nameservers(self, nameservers):
+ """
+ :param nameservers: can be a ``str``, ``list``, or None.
+ If it's a ``str``, it will converted to a list.
+ :raise ValueError: if `nameservers` is anything other than \
+ ``str``, ``list``, or None.
+ """
+ if isinstance(nameservers, str):
+ self._nameservers = [nameservers]
+ elif isinstance(nameservers, list):
+ self._nameservers = nameservers
+ elif nameservers is None:
+ self._nameservers = None
+ else:
+ raise ValueError('nameservers must be either a str, a list, or None'
+ ' (not a {})'.format(type(nameservers)))
#: The default resolver.
default_resolver = None
...
class Resolver:
- def __init__(self, configure):
+ def __init__(self, filename : Optional[str] = '/etc/resolv.conf', configure : Optional[bool] = True):
self.nameservers : List[str]
def query(self, qname : str, rdtype : Union[int,str] = rdatatype.A, rdclass : Union[int,str] = rdataclass.IN,
tcp : bool = False, source : Optional[str] = None, raise_on_no_answer=True, source_port : int = 0):
self.assertTrue(e2.canonical_name == dns.name.from_text(cname2))
+class ResolverNameserverValidTypeTestCase(unittest.TestCase):
+ def test_set_nameserver_to_string(self):
+ resolver = dns.resolver.Resolver()
+ resolver.nameservers = '1.2.3.4'
+ self.assertEqual(resolver.nameservers, ['1.2.3.4'])
+
+ def test_set_nameserver_to_list(self):
+ resolver = dns.resolver.Resolver()
+ resolver.nameservers = ['1.2.3.4']
+ self.assertEqual(resolver.nameservers, ['1.2.3.4'])
+
+ def test_set_nameserver_to_None(self):
+ resolver = dns.resolver.Resolver()
+ resolver.nameservers = None
+ self.assertEqual(resolver.nameservers, None)
+
+ def test_set_nameserver_invalid_type(self):
+ resolver = dns.resolver.Resolver()
+ invalid_nameservers = [1234, (1, 2, 3, 4), {'invalid': 'nameserver'}]
+ for invalid_nameserver in invalid_nameservers:
+ with self.assertRaises(ValueError):
+ resolver.nameservers = invalid_nameserver
+
if __name__ == '__main__':
unittest.main()