async def test_threaded_resolver_positive_lookup() -> None: loop = Mock() loop.getaddrinfo = fake_addrinfo(["127.0.0.1"]) resolver = ThreadedResolver() resolver._loop = loop real = await resolver.resolve('www.python.org') ipaddress.ip_address(real[0]['host'])
async def test_threaded_negative_lookup() -> None: loop = Mock() ips = [] loop.getaddrinfo = fake_addrinfo(ips) resolver = ThreadedResolver() resolver._loop = loop with pytest.raises(socket.gaierror): await resolver.resolve('doesnotexist.bla')
async def test_threaded_resolver_positive_lookup() -> None: loop = Mock() loop.getaddrinfo = fake_addrinfo(["127.0.0.1"]) resolver = ThreadedResolver() resolver._loop = loop real = await resolver.resolve("www.python.org") assert real[0]["hostname"] == "www.python.org" ipaddress.ip_address(real[0]["host"])
async def test_threaded_resolver_multiple_replies() -> None: loop = Mock() ips = ['127.0.0.1', '127.0.0.2', '127.0.0.3', '127.0.0.4'] loop.getaddrinfo = fake_addrinfo(ips) resolver = ThreadedResolver() resolver._loop = loop real = await resolver.resolve('www.google.com') ips = [ipaddress.ip_address(x['host']) for x in real] assert len(ips) > 3, "Expecting multiple addresses"
async def test_threaded_resolver_multiple_replies() -> None: loop = Mock() ips = ["127.0.0.1", "127.0.0.2", "127.0.0.3", "127.0.0.4"] loop.getaddrinfo = fake_addrinfo(ips) resolver = ThreadedResolver() resolver._loop = loop real = await resolver.resolve("www.google.com") ips = [ipaddress.ip_address(x["host"]) for x in real] assert len(ips) > 3, "Expecting multiple addresses"
async def test_threaded_negative_lookup_with_unknown_result() -> None: loop = Mock() # If compile CPython with `--disable-ipv6` option, # we will get an (int, bytes) tuple, instead of a Exception. async def unknown_addrinfo(*args: Any, **kwargs: Any) -> List[Any]: return [( socket.AF_INET6, socket.SOCK_STREAM, 6, "", (10, b"\x01\xbb\x00\x00\x00\x00*\x04NB\x00\x1a\x00\x00"), )] loop.getaddrinfo = unknown_addrinfo resolver = ThreadedResolver() resolver._loop = loop with patch("socket.has_ipv6", False): res = await resolver.resolve("www.python.org") assert len(res) == 0