Skip to content

Commit 2f54321

Browse files
committed
updates tests
1 parent 1fc1195 commit 2f54321

File tree

2 files changed

+26
-7
lines changed

2 files changed

+26
-7
lines changed

services/api-server/src/simcore_service_api_server/services/webserver.py

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
)
3131
from models_library.api_schemas_webserver.resource_usage import PricingPlanGet
3232
from models_library.api_schemas_webserver.wallets import WalletGet
33+
from models_library.api_schemas_webserver.users import ProfileGet as WebProfileGet
34+
from models_library.api_schemas_webserver.users import ProfileUpdate as WebProfileUpdate
3335
from models_library.generics import Envelope
3436
from models_library.projects import ProjectID
3537
from models_library.projects_nodes_io import NodeID
@@ -78,6 +80,7 @@
7880
WalletGetWithAvailableCreditsLegacy,
7981
)
8082
from ..models.schemas.profiles import Profile, ProfileUpdate
83+
from ..models.schemas.profiles import Profile, ProfileUpdate, UserRoleEnum
8184
from ..models.schemas.solvers import SolverKeyId
8285
from ..models.schemas.studies import StudyPort
8386
from ..utils.client_base import BaseServiceClientApi, setup_client_instance
@@ -243,17 +246,33 @@ async def _wait_for_long_running_task_results(self, lrt_response: httpx.Response
243246
async def get_me(self) -> Profile:
244247
response = await self.client.get("/me", cookies=self.session_cookies)
245248
response.raise_for_status()
246-
profile: Profile | None = (
247-
Envelope[Profile].model_validate_json(response.text).data
249+
250+
got: WebProfileGet | None = (
251+
Envelope[WebProfileGet].model_validate_json(response.text).data
252+
)
253+
assert got is not None # nosec
254+
255+
return Profile(
256+
first_name=got.first_name,
257+
last_name=got.last_name,
258+
id=got.id,
259+
login=got.login,
260+
role=UserRoleEnum(got.role),
261+
groups=got.groups.model_dump() if got.groups else None, # type: ignore
262+
gravatar_id=got.gravatar_id,
248263
)
249-
assert profile is not None # nosec
250-
return profile
251264

252265
@_exception_mapper(_PROFILE_STATUS_MAP)
253266
async def update_me(self, *, profile_update: ProfileUpdate) -> Profile:
267+
268+
update = WebProfileUpdate(
269+
first_name=profile_update.first_name,
270+
last_name=profile_update.last_name,
271+
)
272+
254273
response = await self.client.patch(
255274
"/me",
256-
json=profile_update.model_dump(exclude_none=True),
275+
json=update.model_dump(exclude_none=True, exclude_unset=True),
257276
cookies=self.session_cookies,
258277
)
259278
response.raise_for_status()

services/api-server/tests/unit/_with_db/test_api_user.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44

55

66
import json
7-
from copy import deepcopy
87

98
import httpx
109
import pytest
1110
import respx
1211
from fastapi import FastAPI
12+
from models_library.api_schemas_webserver.users import ProfileGet as WebProfileGet
1313
from respx import MockRouter
1414
from simcore_service_api_server._meta import API_VTAG
1515
from simcore_service_api_server.core.settings import ApplicationSettings
@@ -32,7 +32,7 @@ def mocked_webserver_service_api(app: FastAPI):
3232
) as respx_mock:
3333
# NOTE: webserver-api uses the same schema as api-server!
3434
# in-memory fake data
35-
me = deepcopy(Profile.model_config["json_schema_extra"]["example"])
35+
me = WebProfileGet.model_json_schema()["examples"][0]
3636

3737
def _get_me(request):
3838
return httpx.Response(status.HTTP_200_OK, json={"data": me})

0 commit comments

Comments
 (0)