]> git.ipfire.org Git - thirdparty/starlette.git/commitdiff
Add test case for `HTTPException` when status code is 204 (#1432)
authorMarcelo Trylesinski <marcelotryle@gmail.com>
Wed, 26 Jan 2022 09:49:30 +0000 (10:49 +0100)
committerGitHub <noreply@github.com>
Wed, 26 Jan 2022 09:49:30 +0000 (10:49 +0100)
starlette/exceptions.py
tests/test_exceptions.py

index bc3b5b27bd9cf08bbdbd1aecc6c447784d725bb9..fcb0776cc76fc25cde5d1331c3dd02b61ab27a41 100644 (file)
@@ -99,5 +99,5 @@ class ExceptionMiddleware:
 
     def http_exception(self, request: Request, exc: HTTPException) -> Response:
         if exc.status_code in {204, 304}:
-            return Response(b"", status_code=exc.status_code)
+            return Response(status_code=exc.status_code)
         return PlainTextResponse(exc.detail, status_code=exc.status_code)
index 5fba9981b19ec8581c42e91a983aa4e7d49dd790..cef03359f1fdf8d7e2bf081032d539f8a7a9ee27 100644 (file)
@@ -13,6 +13,10 @@ def not_acceptable(request):
     raise HTTPException(status_code=406)
 
 
+def no_content(request):
+    raise HTTPException(status_code=204)
+
+
 def not_modified(request):
     raise HTTPException(status_code=304)
 
@@ -28,6 +32,7 @@ router = Router(
     routes=[
         Route("/runtime_error", endpoint=raise_runtime_error),
         Route("/not_acceptable", endpoint=not_acceptable),
+        Route("/no_content", endpoint=no_content),
         Route("/not_modified", endpoint=not_modified),
         Route("/handled_exc_after_response", endpoint=HandledExcAfterResponse()),
         WebSocketRoute("/runtime_error", endpoint=raise_runtime_error),
@@ -50,6 +55,12 @@ def test_not_acceptable(client):
     assert response.text == "Not Acceptable"
 
 
+def test_no_content(client):
+    response = client.get("/no_content")
+    assert response.status_code == 204
+    assert "content-length" not in response.headers
+
+
 def test_not_modified(client):
     response = client.get("/not_modified")
     assert response.status_code == 304