mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-04-24 15:27:17 +00:00
68 lines
2.3 KiB
Python
68 lines
2.3 KiB
Python
import pytest
|
|
|
|
from aiohttp import web
|
|
from asyncio import BaseEventLoop
|
|
from aiohttp.test_utils import TestClient
|
|
from pytest_mock import MockerFixture
|
|
from typing import Any
|
|
from unittest.mock import MagicMock
|
|
|
|
from ahriman.core.auth.oauth import OAuth
|
|
from ahriman.web.views.base import BaseView
|
|
|
|
|
|
@pytest.fixture
|
|
def base(application: web.Application) -> BaseView:
|
|
"""
|
|
base view fixture
|
|
:param application: application fixture
|
|
:return: generated base view fixture
|
|
"""
|
|
return BaseView(pytest.helpers.request(application, "", ""))
|
|
|
|
|
|
@pytest.fixture
|
|
def client(application: web.Application, event_loop: BaseEventLoop,
|
|
aiohttp_client: Any, mocker: MockerFixture) -> TestClient:
|
|
"""
|
|
web client fixture
|
|
:param application: application fixture
|
|
:param event_loop: context event loop
|
|
:param aiohttp_client: aiohttp client fixture
|
|
:param mocker: mocker object
|
|
:return: web client test instance
|
|
"""
|
|
mocker.patch("pathlib.Path.iterdir", return_value=[])
|
|
return event_loop.run_until_complete(aiohttp_client(application))
|
|
|
|
|
|
@pytest.fixture
|
|
def client_with_auth(application_with_auth: web.Application, event_loop: BaseEventLoop,
|
|
aiohttp_client: Any, mocker: MockerFixture) -> TestClient:
|
|
"""
|
|
web client fixture with full authorization functions
|
|
:param application_with_auth: application fixture
|
|
:param event_loop: context event loop
|
|
:param aiohttp_client: aiohttp client fixture
|
|
:param mocker: mocker object
|
|
:return: web client test instance
|
|
"""
|
|
mocker.patch("pathlib.Path.iterdir", return_value=[])
|
|
return event_loop.run_until_complete(aiohttp_client(application_with_auth))
|
|
|
|
|
|
@pytest.fixture
|
|
def client_with_oauth_auth(application_with_auth: web.Application, event_loop: BaseEventLoop,
|
|
aiohttp_client: Any, mocker: MockerFixture) -> TestClient:
|
|
"""
|
|
web client fixture with full authorization functions
|
|
:param application_with_auth: application fixture
|
|
:param event_loop: context event loop
|
|
:param aiohttp_client: aiohttp client fixture
|
|
:param mocker: mocker object
|
|
:return: web client test instance
|
|
"""
|
|
mocker.patch("pathlib.Path.iterdir", return_value=[])
|
|
application_with_auth["validator"] = MagicMock(spec=OAuth)
|
|
return event_loop.run_until_complete(aiohttp_client(application_with_auth))
|