mirror of https://github.com/encode/starlette.git
43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
|
from starlette import Request, Response, TestClient
|
||
|
from starlette.debug import DebugMiddleware
|
||
|
import pytest
|
||
|
|
||
|
|
||
|
def test_debug_text():
|
||
|
def app(scope):
|
||
|
async def asgi(receive, send):
|
||
|
raise RuntimeError('Something went wrong')
|
||
|
return asgi
|
||
|
|
||
|
client = TestClient(DebugMiddleware(app))
|
||
|
response = client.get("/")
|
||
|
assert response.status_code == 500
|
||
|
assert response.headers['content-type'].startswith('text/plain')
|
||
|
assert 'RuntimeError' in response.text
|
||
|
|
||
|
|
||
|
def test_debug_html():
|
||
|
def app(scope):
|
||
|
async def asgi(receive, send):
|
||
|
raise RuntimeError('Something went wrong')
|
||
|
return asgi
|
||
|
|
||
|
client = TestClient(DebugMiddleware(app))
|
||
|
response = client.get("/", headers={'Accept': 'text/html, */*'})
|
||
|
assert response.status_code == 500
|
||
|
assert response.headers['content-type'].startswith('text/html')
|
||
|
assert 'RuntimeError' in response.text
|
||
|
|
||
|
|
||
|
def test_debug_after_response_sent():
|
||
|
def app(scope):
|
||
|
async def asgi(receive, send):
|
||
|
response = Response(b'', status_code=204)
|
||
|
await response(receive, send)
|
||
|
raise RuntimeError('Something went wrong')
|
||
|
return asgi
|
||
|
|
||
|
client = TestClient(DebugMiddleware(app))
|
||
|
with pytest.raises(RuntimeError):
|
||
|
response = client.get("/")
|