Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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)