add docstrings for every fixture and test methods

also add tests for missing components
This commit is contained in:
2021-08-11 01:51:23 +03:00
parent b5c6c286f7
commit d548fa02f0
28 changed files with 385 additions and 1 deletions

View File

@ -0,0 +1,15 @@
import pytest
from collections import namedtuple
_request = namedtuple("_request", ["path"])
@pytest.fixture
def aiohttp_request() -> _request:
"""
fixture for aiohttp like object
:return: aiohttp like request test instance
"""
return _request("path")

View File

@ -0,0 +1,48 @@
import logging
import pytest
from aiohttp.web_exceptions import HTTPBadRequest
from pytest_mock import MockerFixture
from typing import Any
from ahriman.web.middlewares.exception_handler import exception_handler
async def test_exception_handler(aiohttp_request: Any, mocker: MockerFixture) -> None:
"""
must pass success response
"""
request_handler = pytest.helpers.AsyncMock()
logging_mock = mocker.patch("logging.Logger.exception")
handler = exception_handler(logging.getLogger())
await handler(aiohttp_request, request_handler)
logging_mock.assert_not_called()
async def test_exception_handler_client_error(aiohttp_request: Any, mocker: MockerFixture) -> None:
"""
must pass client exception
"""
request_handler = pytest.helpers.AsyncMock()
request_handler.side_effect = HTTPBadRequest()
logging_mock = mocker.patch("logging.Logger.exception")
handler = exception_handler(logging.getLogger())
with pytest.raises(HTTPBadRequest):
await handler(aiohttp_request, request_handler)
logging_mock.assert_not_called()
async def test_exception_handler_server_error(aiohttp_request: Any, mocker: MockerFixture) -> None:
"""
must log server exception and re-raise it
"""
request_handler = pytest.helpers.AsyncMock()
request_handler.side_effect = Exception()
logging_mock = mocker.patch("logging.Logger.exception")
handler = exception_handler(logging.getLogger())
with pytest.raises(Exception):
await handler(aiohttp_request, request_handler)
logging_mock.assert_called_once()