Example #1
0
async def test_http_methods(client):
    async with respx.mock:
        url = "https://foo.bar"
        route = respx.get(url, path="/") % 404
        respx.post(url, path="/").respond(200)
        respx.post(url, path="/").respond(201)
        respx.put(url, path="/").respond(202)
        respx.patch(url, path="/").respond(500)
        respx.delete(url, path="/").respond(204)
        respx.head(url, path="/").respond(405)
        respx.options(url, path="/").respond(status_code=501)
        respx.request("GET", url, path="/baz/").respond(status_code=204)
        url += "/"

        response = httpx.get(url)
        assert response.status_code == 404
        response = await client.get(url)
        assert response.status_code == 404

        response = httpx.get(url + "baz/")
        assert response.status_code == 204
        response = await client.get(url + "baz/")
        assert response.status_code == 204

        response = httpx.post(url)
        assert response.status_code == 201
        response = await client.post(url)
        assert response.status_code == 201

        response = httpx.put(url)
        assert response.status_code == 202
        response = await client.put(url)
        assert response.status_code == 202

        response = httpx.patch(url)
        assert response.status_code == 500
        response = await client.patch(url)
        assert response.status_code == 500

        response = httpx.delete(url)
        assert response.status_code == 204
        response = await client.delete(url)
        assert response.status_code == 204

        response = httpx.head(url)
        assert response.status_code == 405
        response = await client.head(url)
        assert response.status_code == 405

        response = httpx.options(url)
        assert response.status_code == 501
        response = await client.options(url)
        assert response.status_code == 501

        assert route.called is True
        assert respx.calls.call_count == 8 * 2
Example #2
0
def test_deprecated():
    url = "https://foo.bar/"
    with respx.mock:
        respx.request("POST", url, status_code=201)
        with respx.HTTPXMock() as httpx_mock:
            httpx_mock.request("GET", url)
            response = httpx.post(url)
            assert response.status_code == 201
            response = httpx.get(url)
            assert response.status_code == 200
Example #3
0
async def test_start_stop(client):
    url = "https://foo.bar/"
    request = respx.request("GET", url, status_code=202)
    assert respx.stats.call_count == 0

    try:
        respx.start()
        response = await client.get(url)
        assert request.called is True
        assert response.status_code == 202
        assert response.text == ""
        assert respx.stats.call_count == 1

        respx.stop(clear=False, reset=False)
        assert len(respx.mock._patterns) == 1
        assert respx.stats.call_count == 1

        respx.reset()
        assert len(respx.mock._patterns) == 1
        assert respx.stats.call_count == 0

        respx.clear()
        assert len(respx.mock._patterns) == 0

    except Exception:  # pragma: nocover
        respx.stop()  # Cleanup global state on error, to not affect other tests
        raise
def test_prerender(
    get_test_client,
    whitelist,
    blacklist,
    user_agent,
    buffer_agent,
    prerender_agent,
    method,
    path,
    prerendered,
):
    request = respx.request(
        method,
        f"http://prerender.bar.com/http://testserver{path}",
        content="<html><body>PRERENDERED</body></html>",
    )

    test_client = get_test_client(whitelist, blacklist)

    headers = {}
    if user_agent:
        headers["user-agent"] = user_agent
    if buffer_agent:
        headers["x-bufferbot"] = buffer_agent
    if prerender_agent:
        headers["x-prerender"] = prerender_agent

    response = test_client.request(method, path, headers=headers)

    if prerendered:
        assert request.called
        assert response.text == "<html><body>PRERENDERED</body></html>"
        assert response.headers.get(
            "content-type") == "text/html; charset=utf-8"
    else:
        assert request.called is False
        assert response.text == "<html><body>RAW</body></html>"