66import contextlib
77import json
88import logging
9- import random
109import sys
1110from collections .abc import AsyncIterator , Awaitable , Callable
1211from copy import deepcopy
2019from common_library .json_serialization import json_dumps
2120from faker import Faker
2221from models_library .api_schemas_webserver .projects import ProjectGet
22+ from models_library .api_schemas_webserver .users import PhoneNumberStr
2323from models_library .projects import ProjectID
2424from models_library .projects_nodes_io import NodeID
2525from models_library .projects_state import ProjectState
26+ from pydantic import TypeAdapter
2627from pytest_mock import MockerFixture
2728from pytest_simcore .helpers .assert_checks import assert_status
2829from pytest_simcore .helpers .monkeypatch_envs import EnvVarsDict , setenvs_from_dict
@@ -154,9 +155,17 @@ async def user(client: TestClient) -> AsyncIterator[UserInfoDict]:
154155 yield user_info
155156
156157
158+ @pytest .fixture
159+ def user_phone (faker : Faker ) -> PhoneNumberStr :
160+ phone = faker .phone_number ()
161+ tail = f"{ faker .pyint (100 , 999 )} "
162+ valid_phone = phone [: - len (tail )] + tail # ensure phone is 10 digits long
163+ return TypeAdapter (PhoneNumberStr ).validate_python (valid_phone )
164+
165+
157166@pytest .fixture
158167async def logged_user (
159- client : TestClient , user_role : UserRole , faker : Faker
168+ client : TestClient , user_role : UserRole , faker : Faker , user_phone : PhoneNumberStr
160169) -> AsyncIterator [UserInfoDict ]:
161170 """adds a user in db and logs in with client
162171
@@ -168,8 +177,7 @@ async def logged_user(
168177 "role" : user_role .name ,
169178 "first_name" : faker .first_name (),
170179 "last_name" : faker .last_name (),
171- "phone" : faker .phone_number ()
172- + f"{ random .randint (1000 , 9999 )} " , # noqa: S311
180+ "phone" : user_phone ,
173181 },
174182 check_if_succeeds = user_role != UserRole .ANONYMOUS ,
175183 ) as user :
0 commit comments