Skip to content

Commit a4eb646

Browse files
committed
draft catalog tests
1 parent d21a1a7 commit a4eb646

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

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

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from fastapi import FastAPI
1414
from models_library.products import ProductName
1515
from models_library.rest_pagination import MAXIMUM_NUMBER_OF_ITEMS_PER_PAGE
16+
from models_library.services import ServiceRelease
1617
from models_library.services_types import ServiceKey, ServiceVersion
1718
from models_library.users import UserID
1819
from pydantic import ValidationError
@@ -29,6 +30,7 @@
2930
batch_get_my_services,
3031
check_for_service,
3132
get_service,
33+
get_service_release_history,
3234
list_services_paginated,
3335
update_service,
3436
)
@@ -477,3 +479,69 @@ async def test_rpc_batch_get_my_services(
477479
"write": True,
478480
}
479481
assert my_services[1].owner == user["primary_gid"]
482+
assert my_services[1].key == other_service_key
483+
assert my_services[1].release.version == other_service_version
484+
485+
486+
async def test_rpc_get_service_release_history(
487+
background_sync_task_mocked: None,
488+
mocked_director_service_api: MockRouter,
489+
rpc_client: RabbitMQRPCClient,
490+
product_name: ProductName,
491+
user_id: UserID,
492+
app: FastAPI,
493+
):
494+
assert app
495+
496+
service_key = "simcore/services/comp/test-service-release-history"
497+
service_version_1 = "1.0.0"
498+
service_version_2 = "1.1.0"
499+
500+
# Inject fake service releases for the target service
501+
fake_releases = [
502+
ServiceRelease(key=service_key, version=service_version_1),
503+
ServiceRelease(key=service_key, version=service_version_2),
504+
]
505+
506+
# Inject unrelated fake service releases
507+
unrelated_service_key_1 = "simcore/services/comp/unrelated-service-1"
508+
unrelated_service_key_2 = "simcore/services/comp/unrelated-service-2"
509+
unrelated_releases = [
510+
ServiceRelease(key=unrelated_service_key_1, version="1.0.0"),
511+
ServiceRelease(key=unrelated_service_key_1, version="1.1.0"),
512+
ServiceRelease(key=unrelated_service_key_2, version="2.0.0"),
513+
]
514+
515+
mocked_director_service_api.post(
516+
f"/services/{service_key}/releases",
517+
json=[release.model_dump() for release in fake_releases],
518+
)
519+
mocked_director_service_api.post(
520+
f"/services/{unrelated_service_key_1}/releases",
521+
json=[release.model_dump() for release in unrelated_releases[:2]],
522+
)
523+
mocked_director_service_api.post(
524+
f"/services/{unrelated_service_key_2}/releases",
525+
json=[release.model_dump() for release in unrelated_releases[2:]],
526+
)
527+
528+
# Call the RPC function
529+
release_history = await get_service_release_history(
530+
rpc_client,
531+
product_name=product_name,
532+
user_id=user_id,
533+
service_key=service_key,
534+
)
535+
536+
# Validate the response
537+
assert isinstance(release_history, list)
538+
assert len(release_history) == 2
539+
assert release_history[0].key == service_key
540+
assert release_history[0].version == service_version_1
541+
assert release_history[1].key == service_key
542+
assert release_history[1].version == service_version_2
543+
544+
# Ensure unrelated services do not appear in the release history
545+
unrelated_keys = {unrelated_service_key_1, unrelated_service_key_2}
546+
for release in release_history:
547+
assert release.key not in unrelated_keys

0 commit comments

Comments
 (0)