3
3
# pylint: disable=unused-variable
4
4
5
5
from collections .abc import Callable
6
+ from datetime import timedelta
6
7
from typing import Any
7
8
9
+ import arrow
8
10
import pytest
9
11
from fastapi import FastAPI
12
+ from models_library .api_schemas_catalog .services import MyServiceGet
10
13
from models_library .products import ProductName
11
- from models_library .services_access import ServiceGroupAccessRightsV2
12
- from models_library .services_history import CompatibleService
13
14
from models_library .users import UserID
15
+ from pydantic import TypeAdapter
16
+ from pytest_simcore .helpers .catalog_services import CreateFakeServiceDataCallable
14
17
from respx .router import MockRouter
15
18
from simcore_service_catalog .api .dependencies .director import get_director_api
16
19
from simcore_service_catalog .db .repositories .groups import GroupsRepository
@@ -162,7 +165,7 @@ async def test_batch_get_my_services(
162
165
groups_repo : GroupsRepository ,
163
166
user_id : UserID ,
164
167
user : dict [str , Any ],
165
- create_fake_service_data : Callable ,
168
+ create_fake_service_data : CreateFakeServiceDataCallable ,
166
169
services_db_tables_injector : Callable ,
167
170
):
168
171
# catalog
@@ -173,12 +176,15 @@ async def test_batch_get_my_services(
173
176
other_service_key = "simcore/services/comp/other-service"
174
177
other_service_version = "2.0.0"
175
178
179
+ expected_retirement = arrow .now ().datetime + timedelta (days = 1 )
180
+
176
181
fake_service_1 = create_fake_service_data (
177
182
service_key ,
178
183
service_version_1 ,
179
184
team_access = None ,
180
185
everyone_access = None ,
181
186
product = target_product ,
187
+ deprecated = expected_retirement ,
182
188
)
183
189
fake_service_2 = create_fake_service_data (
184
190
service_key ,
@@ -215,23 +221,38 @@ async def test_batch_get_my_services(
215
221
# assert returned order and length as ids
216
222
assert services_ids == [(sc .key , sc .release .version ) for sc in my_services ]
217
223
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
226
- )
227
- assert my_services [1 ].owner == user ["primary_gid" ]
228
-
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
235
-
236
224
assert my_services [1 ].release .retired is None
237
225
assert my_services [2 ].release .compatibility is None # nothing to update
226
+
227
+ released = my_services [1 ].release
228
+
229
+ assert my_services == TypeAdapter (list [MyServiceGet ]).validate_python (
230
+ [
231
+ {
232
+ "key" : "simcore/services/comp/some-service" ,
233
+ "release" : {
234
+ "version" : "1.0.0" ,
235
+ "version_display" : None ,
236
+ "released" : released ,
237
+ "retired" : expected_retirement ,
238
+ "compatibility" : {
239
+ "can_update_to" : {"version" : "1.0.1" }
240
+ }, # can be updated
241
+ },
242
+ "owner" : user ["primary_gid" ],
243
+ "my_access_rights" : {"execute" : True , "write" : True }, # full access
244
+ },
245
+ {
246
+ "key" : "simcore/services/comp/other-service" ,
247
+ "release" : {
248
+ "version" : "2.0.0" ,
249
+ "version_display" : None ,
250
+ "released" : released ,
251
+ "retired" : None ,
252
+ "compatibility" : None , # cannot be updated
253
+ },
254
+ "owner" : user ["primary_gid" ],
255
+ "my_access_rights" : {"execute" : True , "write" : True }, # full acces
256
+ },
257
+ ]
258
+ )
0 commit comments