|
1 | 1 | import pytest |
2 | 2 | from fastapi import status |
3 | 3 | from httpx import AsyncClient, BasicAuth |
4 | | -from models_library.api_schemas_webserver.licensed_items import LicensedItemGetPage |
| 4 | +from models_library.api_schemas_webserver.licensed_items import ( |
| 5 | + LicensedItemGet as _LicensedItemGet, |
| 6 | +) |
| 7 | +from models_library.api_schemas_webserver.licensed_items import ( |
| 8 | + LicensedItemGetPage as _LicensedItemGetPage, |
| 9 | +) |
| 10 | +from pydantic import TypeAdapter |
5 | 11 | from pytest_mock import MockerFixture |
6 | 12 | from servicelib.rabbitmq._client_rpc import RabbitMQRPCClient |
7 | 13 | from simcore_service_api_server._meta import API_VTAG |
| 14 | +from simcore_service_api_server.models.pagination import Page |
| 15 | +from simcore_service_api_server.models.schemas.model_adapter import LicensedItemGet |
8 | 16 |
|
9 | 17 |
|
10 | 18 | @pytest.fixture |
11 | | -async def mock_wb_api_server_rcp(mocker: MockerFixture) -> MockerFixture: |
| 19 | +async def mock_rabbitmq_rpc_client(mocker: MockerFixture) -> MockerFixture: |
| 20 | + class DummyRabbitMqRpcClient: |
| 21 | + pass |
| 22 | + |
| 23 | + def _get_dummy_rpc_client(): |
| 24 | + return DummyRabbitMqRpcClient |
| 25 | + |
| 26 | + mocker.patch( |
| 27 | + "simcore_service_api_server.core.application.get_rabbitmq_rpc_client", |
| 28 | + sideeffect=_get_dummy_rpc_client, |
| 29 | + ) |
| 30 | + return mocker |
| 31 | + |
| 32 | + |
| 33 | +@pytest.fixture |
| 34 | +async def mock_wb_api_server_rcp( |
| 35 | + mock_rabbitmq_rpc_client: MockerFixture, |
| 36 | +) -> MockerFixture: |
12 | 37 | async def _get_backend_licensed_items( |
13 | 38 | rabbitmq_rpc_client: RabbitMQRPCClient, |
14 | 39 | *, |
15 | 40 | product_name: str, |
16 | 41 | offset: int, |
17 | 42 | limit: int, |
18 | | - ) -> LicensedItemGetPage: |
19 | | - return None |
| 43 | + ) -> _LicensedItemGetPage: |
| 44 | + extra = _LicensedItemGet.model_config.get("json_schema_extra") |
| 45 | + assert isinstance(extra, dict) |
| 46 | + examples = extra.get("examples") |
| 47 | + assert isinstance(examples, list) |
| 48 | + return _LicensedItemGetPage( |
| 49 | + items=[_LicensedItemGet.model_validate(ex) for ex in examples], |
| 50 | + total=len(examples), |
| 51 | + ) |
20 | 52 |
|
21 | | - mocker.patch( |
22 | | - "servicelib.rabbitmq.rpc_interfaces.webserver.licenses.licensed_items.get_licensed_items", |
| 53 | + mock_rabbitmq_rpc_client.patch( |
| 54 | + "simcore_service_api_server.services_rpc.wb_api_server._get_licensed_items", |
23 | 55 | _get_backend_licensed_items, |
24 | 56 | ) |
25 | 57 |
|
26 | | - return mocker |
| 58 | + return mock_rabbitmq_rpc_client |
27 | 59 |
|
28 | 60 |
|
29 | 61 | async def test_get_licensed_items( |
30 | 62 | mock_wb_api_server_rcp: MockerFixture, client: AsyncClient, auth: BasicAuth |
31 | 63 | ): |
32 | | - |
33 | | - resp = await client.get(f"{API_VTAG}/credits/price", auth=auth) |
| 64 | + resp = await client.get(f"{API_VTAG}/licensed-items/page", auth=auth) |
34 | 65 | assert resp.status_code == status.HTTP_200_OK |
| 66 | + TypeAdapter(Page[LicensedItemGet]).validate_json(resp.text) |
0 commit comments