do not write anything on httpexceptions in log

This commit is contained in:
Evgenii Alekseev 2021-10-03 02:05:28 +03:00
parent 6becd01803
commit bee97df87f
2 changed files with 18 additions and 4 deletions

View File

@ -18,7 +18,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
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

View File

@ -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