Skip to content

Commit 2268177

Browse files
committed
drafts test
1 parent 90cc5ef commit 2268177

File tree

1 file changed

+50
-4
lines changed

1 file changed

+50
-4
lines changed

services/web/server/tests/unit/with_dbs/04/products/test_products_handlers.py

Lines changed: 50 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@
1010

1111
import pytest
1212
from aiohttp.test_utils import TestClient
13-
from models_library.api_schemas_webserver.product import GetProduct
13+
from models_library.api_schemas_webserver.product import ProductGet
1414
from models_library.products import ProductName
1515
from pytest_simcore.helpers.assert_checks import assert_status
1616
from pytest_simcore.helpers.webserver_login import UserInfoDict
1717
from servicelib.aiohttp import status
1818
from servicelib.rest_constants import X_PRODUCT_NAME_HEADER
19+
from servicelib.status_codes_utils import is_2xx_success
1920
from simcore_postgres_database.constants import QUANTIZE_EXP_ARG
2021
from simcore_service_webserver.db.models import UserRole
2122
from simcore_service_webserver.groups.api import auto_add_user_to_product_group
@@ -99,17 +100,62 @@ async def test_get_product(
99100
response = await client.get("/v0/products/current", headers=current_project_headers)
100101
data, error = await assert_status(response, status.HTTP_200_OK)
101102

102-
got_product = GetProduct(**data)
103+
got_product = ProductGet(**data)
103104
assert got_product.name == product_name
104105
assert got_product.credits_per_usd == expected_credits_per_usd
105106
assert not error
106107

107108
response = await client.get(f"/v0/products/{product_name}")
108109
data, error = await assert_status(response, status.HTTP_200_OK)
109-
assert got_product == GetProduct(**data)
110+
assert got_product == ProductGet(**data)
110111
assert not error
111112

112-
response = await client.get("/v0/product/invalid")
113+
response = await client.get("/v0/products/invalid")
113114
data, error = await assert_status(response, status.HTTP_404_NOT_FOUND)
114115
assert not data
115116
assert error
117+
118+
119+
@pytest.mark.parametrize(
120+
"user_role, expected_status_code",
121+
[
122+
(UserRole.ANONYMOUS, status.HTTP_401_UNAUTHORIZED),
123+
(UserRole.GUEST, status.HTTP_403_FORBIDDEN),
124+
(UserRole.USER, status.HTTP_200_OK),
125+
(UserRole.TESTER, status.HTTP_200_OK),
126+
(UserRole.PRODUCT_OWNER, status.HTTP_200_OK),
127+
(UserRole.ADMIN, status.HTTP_200_OK),
128+
],
129+
)
130+
async def test_get_current_product_ui(
131+
product_name: ProductName,
132+
logged_user: UserInfoDict,
133+
client: TestClient,
134+
user_role: UserRole,
135+
expected_status_code: int,
136+
):
137+
assert logged_user["role"] == f"{user_role}"
138+
139+
# give access to user to this product
140+
assert client.app
141+
await auto_add_user_to_product_group(
142+
client.app, user_id=logged_user["id"], product_name=product_name
143+
)
144+
145+
current_project_headers = {X_PRODUCT_NAME_HEADER: product_name}
146+
response = await client.get(
147+
"/v0/products/current/ui", headers=current_project_headers
148+
)
149+
150+
data, error = await assert_status(response, expected_status_code)
151+
152+
if is_2xx_success(expected_status_code):
153+
# ui is something owned and fully controlled by the front-end
154+
# Will be something like the data stored in this file
155+
# https://github.com/itisfoundation/osparc-simcore/blob/1dcd369717959348099cc6241822a1f0aff0382c/services/static-webserver/client/source/resource/osparc/new_studies.json
156+
assert not error
157+
assert data is not None
158+
assert isinstance(data, dict)
159+
else:
160+
assert error
161+
assert not data

0 commit comments

Comments
 (0)