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
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
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>"