Skip to content

Commit 084c8ea

Browse files
committed
fixes tests
1 parent 3bfb4e6 commit 084c8ea

File tree

2 files changed

+36
-12
lines changed

2 files changed

+36
-12
lines changed

services/web/server/src/simcore_service_webserver/projects/_controller/access_rights_rest.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,15 +72,20 @@ async def share_project(request: web.Request):
7272
)
7373

7474
_logger.debug(
75-
"Send email with confirmation link %s to %s ",
75+
"Send email with confirmation link %s to %s with %s ",
7676
confirmation_link,
7777
body_params.sharee_email,
78+
(
79+
f"message {body_params.sharer_message}"
80+
if body_params.sharer_message
81+
else "no message"
82+
),
7883
)
7984

85+
data = ProjectShareAccepted(sharee_email=body_params.sharee_email, confirmation_link=confirmation_link) # type: ignore
86+
8087
return web.json_response(
81-
Envelope[ProjectShareAccepted]
82-
.from_data({"confirmation_link": confirmation_link})
83-
.model_dump(),
88+
Envelope[ProjectShareAccepted].from_data(data).model_dump(),
8489
dumps=json_dumps,
8590
status=status.HTTP_202_ACCEPTED,
8691
)

services/web/server/tests/unit/with_dbs/02/test_projects_groups_handlers.py

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from models_library.api_schemas_webserver.projects_access_rights import (
1313
ProjectShareAccepted,
1414
)
15+
from pytest_mock import MockType
1516
from pytest_mock.plugin import MockerFixture
1617
from pytest_simcore.helpers.assert_checks import assert_status
1718
from pytest_simcore.helpers.webserver_login import NewUser, UserInfoDict
@@ -21,17 +22,19 @@
2122

2223

2324
@pytest.fixture
24-
def mock_catalog_api_get_services_for_user_in_product(mocker: MockerFixture):
25-
mocker.patch(
25+
def mock_catalog_api_get_services_for_user_in_product(
26+
mocker: MockerFixture,
27+
) -> MockType:
28+
return mocker.patch(
2629
"simcore_service_webserver.projects._controller.projects_rest.catalog_service.get_services_for_user_in_product",
2730
spec=True,
2831
return_value=[],
2932
)
3033

3134

3235
@pytest.fixture
33-
def mock_project_uses_available_services(mocker: MockerFixture):
34-
mocker.patch(
36+
def mock_project_uses_available_services(mocker: MockerFixture) -> MockType:
37+
return mocker.patch(
3538
"simcore_service_webserver.projects._controller.projects_rest.project_uses_available_services",
3639
spec=True,
3740
return_value=True,
@@ -47,8 +50,8 @@ async def test_projects_groups_full_workflow( # noqa: PLR0915
4750
logged_user: UserInfoDict,
4851
user_project: ProjectDict,
4952
expected: HTTPStatus,
50-
mock_catalog_api_get_services_for_user_in_product,
51-
mock_project_uses_available_services,
53+
mock_catalog_api_get_services_for_user_in_product: MockType,
54+
mock_project_uses_available_services: MockType,
5255
):
5356
assert client.app
5457
# check the default project permissions
@@ -261,8 +264,8 @@ async def test_share_project(
261264
client: TestClient,
262265
logged_user: UserInfoDict,
263266
user_project: ProjectDict,
264-
mock_catalog_api_get_services_for_user_in_product,
265-
mock_project_uses_available_services,
267+
mock_catalog_api_get_services_for_user_in_product: MockType,
268+
mock_project_uses_available_services: MockType,
266269
):
267270
assert client.app
268271

@@ -297,3 +300,19 @@ async def test_share_project(
297300
assert data[0]["read"] is True
298301
assert data[0]["write"] is True
299302
assert data[0]["delete"] is True
303+
304+
# check an invalid
305+
url = client.app.router["share_project"].url_for(
306+
project_id=f"{user_project['uuid']}"
307+
)
308+
resp = await client.post(
309+
f"{url}",
310+
json={
311+
"shareeEmail": "[email protected]",
312+
# invalid access rights combination
313+
"read": True,
314+
"write": False,
315+
"delete": True,
316+
},
317+
)
318+
await assert_status(resp, status.HTTP_422_UNPROCESSABLE_ENTITY)

0 commit comments

Comments
 (0)