Skip to content

Commit 34d4577

Browse files
adding unit tests in webserver
1 parent 4eaaf16 commit 34d4577

File tree

1 file changed

+77
-24
lines changed

1 file changed

+77
-24
lines changed

services/web/server/tests/unit/with_dbs/04/licenses/test_licenses_rpc.py

Lines changed: 77 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77

88
import pytest
99
from aiohttp.test_utils import TestClient
10+
from models_library.api_schemas_resource_usage_tracker.licensed_items_usages import (
11+
LicenseCheckoutGet,
12+
LicensedItemUsageGet,
13+
)
1014
from models_library.licensed_items import LicensedResourceType
1115
from models_library.products import ProductName
1216
from pytest_mock import MockerFixture
@@ -17,7 +21,7 @@
1721
from servicelib.rabbitmq.rpc_interfaces.webserver.licenses.licensed_items import (
1822
checkout_licensed_item_for_wallet,
1923
get_licensed_items,
20-
get_licensed_items_for_wallet,
24+
get_purchased_licensed_items_for_wallet,
2125
release_licensed_item_for_wallet,
2226
)
2327
from settings_library.rabbit import RabbitSettings
@@ -67,12 +71,66 @@ async def rpc_client(
6771
return await rabbitmq_rpc_client("client")
6872

6973

70-
async def test_api_keys_workflow(
74+
@pytest.fixture
75+
def mock_get_wallet_by_user(mocker: MockerFixture) -> tuple:
76+
return mocker.patch(
77+
"simcore_service_webserver.licenses._licensed_checkouts_api.get_wallet_by_user",
78+
spec=True,
79+
)
80+
81+
82+
_LICENSE_CHECKOUT_GET = LicenseCheckoutGet.model_validate(
83+
{
84+
"checkout_id": "beb16d18-d57d-44aa-a638-9727fa4a72ef",
85+
}
86+
)
87+
88+
89+
@pytest.fixture
90+
def mock_checkout_licensed_item(mocker: MockerFixture) -> tuple:
91+
return mocker.patch(
92+
"simcore_service_webserver.licenses._licensed_checkouts_api.licensed_items_usages.checkout_licensed_item",
93+
spec=True,
94+
return_value=_LICENSE_CHECKOUT_GET,
95+
)
96+
97+
98+
_LICENSED_ITEM_USAGE_GET = LicensedItemUsageGet.model_validate(
99+
LicensedItemUsageGet.model_config["json_schema_extra"]["examples"][0]
100+
)
101+
102+
103+
@pytest.fixture
104+
def mock_get_licensed_item_usage(mocker: MockerFixture) -> tuple:
105+
return mocker.patch(
106+
"simcore_service_webserver.licenses._licensed_checkouts_api.licensed_items_usages.get_licensed_item_usage",
107+
spec=True,
108+
return_value=_LICENSED_ITEM_USAGE_GET,
109+
)
110+
111+
112+
@pytest.fixture
113+
def mock_release_licensed_item(mocker: MockerFixture) -> tuple:
114+
return mocker.patch(
115+
"simcore_service_webserver.licenses._licensed_checkouts_api.licensed_items_usages.release_licensed_item",
116+
spec=True,
117+
return_value=_LICENSED_ITEM_USAGE_GET,
118+
)
119+
120+
121+
@pytest.mark.acceptance_test(
122+
"Implements https://github.com/ITISFoundation/osparc-issues/issues/1800"
123+
)
124+
async def test_license_checkout_workflow(
71125
client: TestClient,
72126
rpc_client: RabbitMQRPCClient,
73127
osparc_product_name: ProductName,
74128
logged_user: UserInfoDict,
75129
pricing_plan_id: int,
130+
mock_get_wallet_by_user: MockerFixture,
131+
mock_checkout_licensed_item: MockerFixture,
132+
mock_release_licensed_item: MockerFixture,
133+
mock_get_licensed_item_usage: MockerFixture,
76134
):
77135
assert client.app
78136

@@ -82,7 +140,7 @@ async def test_api_keys_workflow(
82140
assert len(result.items) == 0
83141
assert result.total == 0
84142

85-
await _licensed_items_db.create(
143+
license_item_db = await _licensed_items_db.create(
86144
client.app,
87145
product_name=osparc_product_name,
88146
name="Model A",
@@ -97,31 +155,26 @@ async def test_api_keys_workflow(
97155
assert result.total == 1
98156

99157
with pytest.raises(NotImplementedError):
100-
await get_licensed_items_for_wallet(
158+
await get_purchased_licensed_items_for_wallet(
101159
rpc_client,
102160
user_id=logged_user["id"],
103161
product_name=osparc_product_name,
104162
wallet_id=1,
105163
)
106164

107-
with pytest.raises(NotImplementedError):
108-
await checkout_licensed_item_for_wallet(
109-
rpc_client,
110-
user_id=logged_user["id"],
111-
product_name=osparc_product_name,
112-
wallet_id=1,
113-
licensed_item_id="c5139a2e-4e1f-4ebe-9bfd-d17f195111ee",
114-
num_of_seats=1,
115-
service_run_id="run_1",
116-
)
165+
checkout = await checkout_licensed_item_for_wallet(
166+
rpc_client,
167+
product_name=osparc_product_name,
168+
user_id=logged_user["id"],
169+
wallet_id=1,
170+
licensed_item_id=license_item_db.licensed_item_id,
171+
num_of_seats=1,
172+
service_run_id="run_1",
173+
)
117174

118-
with pytest.raises(NotImplementedError):
119-
await release_licensed_item_for_wallet(
120-
rpc_client,
121-
user_id=logged_user["id"],
122-
product_name=osparc_product_name,
123-
wallet_id=1,
124-
licensed_item_id="c5139a2e-4e1f-4ebe-9bfd-d17f195111ee",
125-
num_of_seats=1,
126-
service_run_id="run_1",
127-
)
175+
await release_licensed_item_for_wallet(
176+
rpc_client,
177+
product_name=osparc_product_name,
178+
user_id=logged_user["id"],
179+
checkout_id=checkout.checkout_id,
180+
)

0 commit comments

Comments
 (0)