def apply_safety_net(fake_getaddrinfo): fake_getaddrinfo.append( ( socket.AF_INET6, socket.SOCK_STREAM, socket.IPPROTO_TCP, "", ("2606:2800:220:1:248:1893:25c8:1946", 80), ) ) # Set up a fake entry to return some data for all of the IP's so mocket # doesn't try to connect if it can't find an entry. mocket_entry = Entry( "http://example.com/info.json", Entry.GET, Entry.response_cls( body=json.dumps({"ip": "2606:2800:220:1:248:1893:25c8:1946"}), status=200, headers=None, ), ) mocket_entry.location = ("2606:2800:220:1:248:1893:25c8:1946", 80) Mocket.register(mocket_entry)
def test_redirect_to_ip_unsafe_fails(session, fake_getaddrinfo): fake_getaddrinfo.append( ( socket.AF_INET6, socket.SOCK_STREAM, socket.IPPROTO_TCP, "", ("2606:2800:220:1:248:1893:25c8:1946", 80), ) ) # Set up a fake entry to return some data for all of the IP's so mocket # doesn't try to connect if it can't find an entry. mocket_entry = Entry( "http://example.com/info.json", Entry.GET, Entry.response_cls( body=json.dumps({"ip": "2606:2800:220:1:248:1893:25c8:1946"}), status=301, headers={"Location": "http://10.10.10.58/other.json"}, ), ) mocket_entry.location = ("2606:2800:220:1:248:1893:25c8:1946", 80) Mocket.register(mocket_entry) mocket_entry = Entry( "http://10.10.10.58/other.json", Entry.GET, Entry.response_cls( body=json.dumps({"ip": "10.10.10.58"}), status=200, headers=None ), ) mocket_entry.location = ("10.10.10.58", 80) Mocket.register(mocket_entry) with pytest.raises(requests.exceptions.ConnectionError) as exc: session.get("http://exampe.com/info.json") assert "getaddrinfo returns an empty list" in str(exc.value)
def request_succeeds(request, fake_getaddrinfo): for (family, ip, port) in request.param: fake_getaddrinfo.append( (family, socket.SOCK_STREAM, socket.IPPROTO_TCP, "", (ip, port)) ) # Set up a fake entry to return some data for all of the IP's so mocket # doesn't try to connect if it can't find an entry. mocket_entry = Entry( "http://example.com/info.json", Entry.GET, Entry.response_cls(body=json.dumps({"ip": ip}), status=200, headers=None), ) mocket_entry.location = (ip, port) Mocket.register(mocket_entry)