Skip to content

Commit cefc23e

Browse files
committed
start adding test
1 parent a027ecf commit cefc23e

File tree

3 files changed

+59
-9
lines changed

3 files changed

+59
-9
lines changed
Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
1-
from fastapi import FastAPI
1+
from typing import Annotated, cast
2+
3+
from fastapi import Depends, FastAPI
4+
from servicelib.fastapi.dependencies import get_app
25
from simcore_service_api_server.services_rpc.wb_api_server import WbApiRpcClient
36

47

5-
def get_wb_api_rpc_client(app: FastAPI) -> WbApiRpcClient:
8+
async def get_wb_api_rpc_client(
9+
app: Annotated[FastAPI, Depends(get_app)]
10+
) -> WbApiRpcClient:
611
assert app.state.wb_api_rpc_client # nosec
7-
return app.state.wb_api_rpc_client
12+
return cast(WbApiRpcClient, app.state.wb_api_rpc_client)
Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,35 @@
1-
from typing import Annotated
1+
from typing import Annotated, Any
22

3-
from fastapi import APIRouter, Depends
4-
from models_library.api_schemas_webserver.licensed_items import LicensedItemGetPage
3+
from fastapi import APIRouter, Depends, status
4+
from simcore_service_api_server.exceptions.service_errors_utils import (
5+
DEFAULT_BACKEND_SERVICE_STATUS_CODES,
6+
)
57

68
from ...api.dependencies.authentication import get_product_name
79
from ...api.dependencies.webserver_rpc import get_wb_api_rpc_client
8-
from ...models.pagination import PaginationParams
10+
from ...models.pagination import Page, PaginationParams
11+
from ...models.schemas.model_adapter import LicensedItemGet
912
from ...services_rpc.wb_api_server import WbApiRpcClient
1013

1114
router = APIRouter()
1215

16+
_LICENSE_ITEMS_STATUS_CODES: dict[int | str, dict[str, Any]] = {
17+
**DEFAULT_BACKEND_SERVICE_STATUS_CODES,
18+
}
19+
1320

1421
@router.get(
15-
"/", response_model=LicensedItemGetPage, description="Get all licensed items"
22+
"/page",
23+
response_model=Page[LicensedItemGet],
24+
status_code=status.HTTP_200_OK,
25+
responses=_LICENSE_ITEMS_STATUS_CODES,
26+
description="Get all licensed items",
1627
)
1728
async def get_licensed_items(
1829
page_params: Annotated[PaginationParams, Depends()],
1930
web_api_rpc: Annotated[WbApiRpcClient, Depends(get_wb_api_rpc_client)],
2031
product_name: Annotated[str, Depends(get_product_name)],
21-
) -> LicensedItemGetPage:
32+
) -> Page[LicensedItemGet]:
2233
return await web_api_rpc.get_licensed_items(
2334
product_name=product_name, page_params=page_params
2435
)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import pytest
2+
from fastapi import status
3+
from httpx import AsyncClient, BasicAuth
4+
from models_library.api_schemas_webserver.licensed_items import LicensedItemGetPage
5+
from pytest_mock import MockerFixture
6+
from servicelib.rabbitmq._client_rpc import RabbitMQRPCClient
7+
from simcore_service_api_server._meta import API_VTAG
8+
9+
10+
@pytest.fixture
11+
async def mock_wb_api_server_rcp(mocker: MockerFixture) -> MockerFixture:
12+
async def _get_backend_licensed_items(
13+
rabbitmq_rpc_client: RabbitMQRPCClient,
14+
*,
15+
product_name: str,
16+
offset: int,
17+
limit: int,
18+
) -> LicensedItemGetPage:
19+
return None
20+
21+
mocker.patch(
22+
"servicelib.rabbitmq.rpc_interfaces.webserver.licenses.licensed_items.get_licensed_items",
23+
_get_backend_licensed_items,
24+
)
25+
26+
return mocker
27+
28+
29+
async def test_get_licensed_items(
30+
mock_wb_api_server_rcp: MockerFixture, client: AsyncClient, auth: BasicAuth
31+
):
32+
33+
resp = await client.get(f"{API_VTAG}/credits/price", auth=auth)
34+
assert resp.status_code == status.HTTP_200_OK

0 commit comments

Comments
 (0)