Skip to content

Commit 5832f9f

Browse files
committed
fix tests
1 parent 5d4880b commit 5832f9f

File tree

2 files changed

+54
-22
lines changed

2 files changed

+54
-22
lines changed

services/catalog/tests/unit/with_dbs/conftest.py

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from collections.abc import AsyncIterator, Awaitable, Callable
99
from copy import deepcopy
1010
from datetime import datetime
11-
from typing import Any
11+
from typing import Any, Protocol
1212

1313
import pytest
1414
import sqlalchemy as sa
@@ -354,6 +354,19 @@ def _fake_factory(**overrides):
354354
return _fake_factory
355355

356356

357+
class CreateFakeServiceData(Protocol):
358+
def __call__(
359+
self,
360+
key,
361+
version,
362+
team_access: str | None = None,
363+
everyone_access: str | None = None,
364+
product: ProductName = "osparc",
365+
deprecated: datetime | None = None,
366+
):
367+
...
368+
369+
357370
@pytest.fixture()
358371
async def create_fake_service_data(
359372
user_groups_ids: list[int],
@@ -376,11 +389,11 @@ async def create_fake_service_data(
376389
owner_access, team_access, everyone_access = fake_access_rights
377390
378391
"""
379-
everyone_gid, user_gid, team_gid = user_groups_ids
392+
everyone_gid, user_primary_gid, team_standard_gid = user_groups_ids
380393

381394
def _random_service(**overrides) -> dict[str, Any]:
382395
return random_service_meta_data(
383-
owner_primary_gid=user_gid,
396+
owner_primary_gid=user_primary_gid,
384397
fake=faker,
385398
**overrides,
386399
)
@@ -396,9 +409,9 @@ def _random_access(service, **overrides) -> dict[str, Any]:
396409
def _fake_factory(
397410
key,
398411
version,
399-
team_access=None,
400-
everyone_access=None,
401-
product=products_names[0],
412+
team_access: str | None = None,
413+
everyone_access: str | None = None,
414+
product: ProductName = products_names[0],
402415
deprecated: datetime | None = None,
403416
) -> tuple[dict[str, Any], ...]:
404417
service = _random_service(key=key, version=version, deprecated=deprecated)
@@ -420,7 +433,7 @@ def _fake_factory(
420433
fakes.append(
421434
_random_access(
422435
service,
423-
gid=team_gid,
436+
gid=team_standard_gid,
424437
execute_access="x" in team_access,
425438
write_access="w" in team_access,
426439
product_name=product,

services/catalog/tests/unit/with_dbs/test_services_services_api.py

Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import pytest
99
from fastapi import FastAPI
1010
from models_library.products import ProductName
11+
from models_library.services_access import ServiceGroupAccessRightsV2
12+
from models_library.services_history import CompatibleService
1113
from models_library.users import UserID
1214
from respx.router import MockRouter
1315
from simcore_service_catalog.api.dependencies.director import get_director_api
@@ -152,22 +154,24 @@ async def test_list_services_paginated(
152154

153155

154156
async def test_batch_get_my_services(
155-
background_sync_task_mocked: None,
157+
background_tasks_setup_disabled: None,
156158
rabbitmq_and_rpc_setup_disabled: None,
157159
mocked_director_service_api: MockRouter,
158160
target_product: ProductName,
159161
services_repo: ServicesRepository,
160162
groups_repo: GroupsRepository,
161163
user_id: UserID,
164+
user: dict[str, Any],
162165
create_fake_service_data: Callable,
163166
services_db_tables_injector: Callable,
164167
):
165-
# Create fake services data
168+
# catalog
166169
service_key = "simcore/services/comp/some-service"
167-
service_version_1 = "1.0.0"
168-
service_version_2 = "2.0.0"
170+
service_version_1 = "1.0.0" # can upgrade to 1.0.1
171+
service_version_2 = "1.0.1" # latest
172+
169173
other_service_key = "simcore/services/comp/other-service"
170-
other_service_version = "1.0.0"
174+
other_service_version = "2.0.0"
171175

172176
fake_service_1 = create_fake_service_data(
173177
service_key,
@@ -194,10 +198,9 @@ async def test_batch_get_my_services(
194198
# Inject fake services into the database
195199
await services_db_tables_injector([fake_service_1, fake_service_2, fake_service_3])
196200

197-
# Batch get my services
198-
ids = [
201+
# Batch get services e.g. services in a project
202+
services_ids = [
199203
(service_key, service_version_1),
200-
(service_key, service_version_2),
201204
(other_service_key, other_service_version),
202205
]
203206

@@ -206,13 +209,29 @@ async def test_batch_get_my_services(
206209
groups_repo,
207210
product_name=target_product,
208211
user_id=user_id,
209-
ids=ids,
212+
ids=services_ids,
213+
)
214+
215+
# assert returned order and length as ids
216+
assert services_ids == [(sc.key, sc.release.version) for sc in my_services]
217+
218+
# assert access: owns them
219+
assert my_services[0].my_access_rights == ServiceGroupAccessRightsV2(
220+
execute=True, write=True
221+
)
222+
assert my_services[0].owner == user["primary_gid"]
223+
224+
assert my_services[1].my_access_rights == ServiceGroupAccessRightsV2(
225+
execute=True, write=True
210226
)
227+
assert my_services[1].owner == user["primary_gid"]
211228

212-
assert len(my_services) == 3
229+
# assert status: first can be updated but not second
230+
assert my_services[0].release.retired is None
231+
assert my_services[0].release.compatibility
232+
assert my_services[0].release.compatibility.can_update_to == CompatibleService(
233+
version=service_version_2
234+
) # can be updated
213235

214-
# Check access rights
215-
assert my_services[0].my_access_rights == {}
216-
assert my_services[1].my_access_rights is not None
217-
assert my_services[2].my_access_rights is not None
218-
assert my_services[2].owner is not None
236+
assert my_services[1].release.retired is None
237+
assert my_services[2].release.compatibility is None # nothing to update

0 commit comments

Comments
 (0)