]> git.ipfire.org Git - thirdparty/httpx.git/commitdiff
Add test for HEAD redirect behavior (#1184)
authorFlorimond Manca <florimond.manca@gmail.com>
Sun, 16 Aug 2020 06:12:17 +0000 (08:12 +0200)
committerGitHub <noreply@github.com>
Sun, 16 Aug 2020 06:12:17 +0000 (08:12 +0200)
tests/client/test_redirects.py

index 7c3cbd716ced0c70027981143753dad1efe305f9..3380f91920e3492530fe44a1e4f25f0206e7abf5 100644 (file)
@@ -160,7 +160,9 @@ class MockTransport:
                 ByteStream(b""),
             )
 
-        return b"HTTP/1.1", 200, b"OK", [], ByteStream(b"Hello, world!")
+        stream = ByteStream(b"Hello, world!") if method != b"HEAD" else ByteStream(b"")
+
+        return b"HTTP/1.1", 200, b"OK", [], stream
 
 
 class AsyncMockTransport(MockTransport, httpcore.AsyncHTTPTransport):
@@ -236,6 +238,20 @@ async def test_disallow_redirects():
     assert len(response.history) == 1
 
 
+@pytest.mark.asyncio
+async def test_head_redirect():
+    """
+    Contrary to Requests, redirects remain enabled by default for HEAD requests.
+    """
+    client = AsyncClient(transport=AsyncMockTransport())
+    response = await client.head("https://example.org/redirect_302")
+    assert response.status_code == codes.OK
+    assert response.url == URL("https://example.org/")
+    assert response.request.method == "HEAD"
+    assert len(response.history) == 1
+    assert response.text == ""
+
+
 @pytest.mark.usefixtures("async_environment")
 async def test_relative_redirect():
     client = AsyncClient(transport=AsyncMockTransport())