Add tests for debugger middleware

This commit is contained in:
Hristo Gueorguiev 2024-04-27 17:24:14 -04:00
parent b95824cfab
commit 431d5764d6
1 changed files with 53 additions and 0 deletions

View File

@ -0,0 +1,53 @@
from unittest.mock import MagicMock, patch
import pytest
from fastapi import FastAPI
from fastapi.middleware.debugger import (
DebuggerMiddleware,
webpdb_catch_exceptions_middleware,
)
from fastapi.testclient import TestClient
MAGIC_VALUE_THAT_NEVER_RETURNS = 42
def get_client_for_new_app(middlware_params=None):
app = FastAPI()
app.add_middleware(DebuggerMiddleware, **(middlware_params or {}))
@app.get("/call-debugger-on-raise")
async def raise_exception():
raise ValueError("Test")
return MAGIC_VALUE_THAT_NEVER_RETURNS
return TestClient(app)
@pytest.fixture
def pdb_test_client():
return get_client_for_new_app()
@pytest.fixture
def webpdb_test_client():
return get_client_for_new_app(
{"start_debugger_func": webpdb_catch_exceptions_middleware}
)
def test_pdb(pdb_test_client):
pdb_mock = MagicMock()
with patch.dict("sys.modules", {"pdb": pdb_mock}):
with pytest.raises(ValueError):
_ = pdb_test_client.get("/call-debugger-on-raise")
assert pdb_mock.pm.called
def test_webpdb(webpdb_test_client):
webpdb_mock = MagicMock()
with patch.dict("sys.modules", {"web_pdb": webpdb_mock}):
with pytest.raises(ValueError):
_ = webpdb_test_client.get("/call-debugger-on-raise")
assert webpdb_mock.catch_post_mortem.called