From bee97df87fbda6cc9a146a3ea2b7265b2b99a76e Mon Sep 17 00:00:00 2001 From: Evgeniy Alekseev Date: Sun, 3 Oct 2021 02:05:28 +0300 Subject: [PATCH] do not write anything on httpexceptions in log --- src/ahriman/web/middlewares/exception_handler.py | 6 +++--- .../web/middlewares/test_exception_handler.py | 16 +++++++++++++++- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/ahriman/web/middlewares/exception_handler.py b/src/ahriman/web/middlewares/exception_handler.py index 63e32f40..342c2fc7 100644 --- a/src/ahriman/web/middlewares/exception_handler.py +++ b/src/ahriman/web/middlewares/exception_handler.py @@ -18,7 +18,7 @@ # along with this program. If not, see . # from aiohttp.web import middleware, Request -from aiohttp.web_exceptions import HTTPClientError +from aiohttp.web_exceptions import HTTPException from aiohttp.web_response import StreamResponse from logging import Logger @@ -35,8 +35,8 @@ def exception_handler(logger: Logger) -> MiddlewareType: async def handle(request: Request, handler: HandlerType) -> StreamResponse: try: return await handler(request) - except HTTPClientError: - raise + except HTTPException: + raise # we do not raise 5xx exceptions actually so it should be fine except Exception: logger.exception("exception during performing request to %s", request.path) raise diff --git a/tests/ahriman/web/middlewares/test_exception_handler.py b/tests/ahriman/web/middlewares/test_exception_handler.py index ca16d28e..ea281093 100644 --- a/tests/ahriman/web/middlewares/test_exception_handler.py +++ b/tests/ahriman/web/middlewares/test_exception_handler.py @@ -1,7 +1,7 @@ import logging import pytest -from aiohttp.web_exceptions import HTTPBadRequest +from aiohttp.web_exceptions import HTTPBadRequest, HTTPNoContent from pytest_mock import MockerFixture from unittest.mock import AsyncMock @@ -21,6 +21,20 @@ async def test_exception_handler(mocker: MockerFixture) -> None: logging_mock.assert_not_called() +async def test_exception_handler_success(mocker: MockerFixture) -> None: + """ + must pass client exception + """ + request = pytest.helpers.request("", "", "") + request_handler = AsyncMock(side_effect=HTTPNoContent()) + logging_mock = mocker.patch("logging.Logger.exception") + + handler = exception_handler(logging.getLogger()) + with pytest.raises(HTTPNoContent): + await handler(request, request_handler) + logging_mock.assert_not_called() + + async def test_exception_handler_client_error(mocker: MockerFixture) -> None: """ must pass client exception