From 431d5764d6ed28e26e7ef1bbd24ea4de8ac7aa64 Mon Sep 17 00:00:00 2001 From: Hristo Gueorguiev Date: Sat, 27 Apr 2024 17:24:14 -0400 Subject: [PATCH] Add tests for debugger middleware --- tests/test_middleware_debugger_class.py | 53 +++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 tests/test_middleware_debugger_class.py diff --git a/tests/test_middleware_debugger_class.py b/tests/test_middleware_debugger_class.py new file mode 100644 index 000000000..ca4997bdc --- /dev/null +++ b/tests/test_middleware_debugger_class.py @@ -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