8
8
import pytest
9
9
from fastapi import FastAPI
10
10
from models_library .products import ProductName
11
+ from models_library .services_access import ServiceGroupAccessRightsV2
12
+ from models_library .services_history import CompatibleService
11
13
from models_library .users import UserID
12
14
from respx .router import MockRouter
13
15
from simcore_service_catalog .api .dependencies .director import get_director_api
@@ -152,22 +154,24 @@ async def test_list_services_paginated(
152
154
153
155
154
156
async def test_batch_get_my_services (
155
- background_sync_task_mocked : None ,
157
+ background_tasks_setup_disabled : None ,
156
158
rabbitmq_and_rpc_setup_disabled : None ,
157
159
mocked_director_service_api : MockRouter ,
158
160
target_product : ProductName ,
159
161
services_repo : ServicesRepository ,
160
162
groups_repo : GroupsRepository ,
161
163
user_id : UserID ,
164
+ user : dict [str , Any ],
162
165
create_fake_service_data : Callable ,
163
166
services_db_tables_injector : Callable ,
164
167
):
165
- # Create fake services data
168
+ # catalog
166
169
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
+
169
173
other_service_key = "simcore/services/comp/other-service"
170
- other_service_version = "1 .0.0"
174
+ other_service_version = "2 .0.0"
171
175
172
176
fake_service_1 = create_fake_service_data (
173
177
service_key ,
@@ -194,10 +198,9 @@ async def test_batch_get_my_services(
194
198
# Inject fake services into the database
195
199
await services_db_tables_injector ([fake_service_1 , fake_service_2 , fake_service_3 ])
196
200
197
- # Batch get my services
198
- ids = [
201
+ # Batch get services e.g. services in a project
202
+ services_ids = [
199
203
(service_key , service_version_1 ),
200
- (service_key , service_version_2 ),
201
204
(other_service_key , other_service_version ),
202
205
]
203
206
@@ -206,13 +209,29 @@ async def test_batch_get_my_services(
206
209
groups_repo ,
207
210
product_name = target_product ,
208
211
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
210
226
)
227
+ assert my_services [1 ].owner == user ["primary_gid" ]
211
228
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
213
235
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