8
8
from syft import SyftSuccess
9
9
from syft .client .api import SyftAPICall
10
10
from syft .client .domain_client import DomainClient
11
+ from syft .node .node import get_default_root_email
11
12
from syft .node .worker import Worker
12
13
from syft .service .context import AuthedServiceContext
13
14
from syft .service .user .user import ServiceRole
@@ -32,7 +33,7 @@ def get_users(worker):
32
33
)
33
34
34
35
35
- def get_mock_client (root_client , role ):
36
+ def get_mock_client (root_client , role ) -> DomainClient :
36
37
worker = root_client .api .connection .node
37
38
client = worker .guest_client
38
39
mail = Faker ().email ()
@@ -66,17 +67,17 @@ def manually_call_service(worker, client, service, args=None, kwargs=None):
66
67
67
68
68
69
@pytest .fixture
69
- def guest_client (worker ):
70
+ def guest_client (worker ) -> DomainClient :
70
71
return get_mock_client (worker .root_client , ServiceRole .GUEST )
71
72
72
73
73
74
@pytest .fixture
74
- def ds_client (worker ):
75
+ def ds_client (worker ) -> DomainClient :
75
76
return get_mock_client (worker .root_client , ServiceRole .DATA_SCIENTIST )
76
77
77
78
78
79
@pytest .fixture
79
- def do_client (worker ):
80
+ def do_client (worker ) -> DomainClient :
80
81
return get_mock_client (worker .root_client , ServiceRole .DATA_OWNER )
81
82
82
83
@@ -233,6 +234,24 @@ def test_user_update(root_client):
233
234
)
234
235
235
236
237
+ def test_guest_user_update_to_root_email_failed (
238
+ root_client : DomainClient ,
239
+ do_client : DomainClient ,
240
+ guest_client : DomainClient ,
241
+ ds_client : DomainClient ,
242
+ ) -> None :
243
+ default_root_email : str = get_default_root_email ()
244
+ user_update_to_root_email = UserUpdate (email = default_root_email )
245
+ for client in [root_client , do_client , guest_client , ds_client ]:
246
+ res = client .api .services .user .update (
247
+ uid = client .me .id , user_update = user_update_to_root_email
248
+ )
249
+ assert isinstance (res , SyftError )
250
+ assert (
251
+ res .message == f"A user with the email { default_root_email } already exists."
252
+ )
253
+
254
+
236
255
def test_user_view_set_password (worker : Worker , root_client : DomainClient ) -> None :
237
256
root_client .me .set_password ("123" , confirm = False )
238
257
email = root_client .me .email
@@ -260,7 +279,6 @@ def test_user_view_set_invalid_email(
260
279
[
261
280
262
281
263
-
264
282
],
265
283
)
266
284
def test_user_view_set_email_success (
@@ -275,6 +293,22 @@ def test_user_view_set_email_success(
275
293
assert isinstance (result2 , SyftSuccess )
276
294
277
295
296
+ def test_user_view_set_default_admin_email_failed (
297
+ ds_client : DomainClient , guest_client : DomainClient
298
+ ) -> None :
299
+ default_root_email = get_default_root_email ()
300
+ result = ds_client .me .set_email (default_root_email )
301
+ assert isinstance (result , SyftError )
302
+ assert (
303
+ result .message == f"A user with the email { default_root_email } already exists."
304
+ )
305
+ result_2 = guest_client .me .set_email (default_root_email )
306
+ assert isinstance (result_2 , SyftError )
307
+ assert (
308
+ result .message == f"A user with the email { default_root_email } already exists."
309
+ )
310
+
311
+
278
312
def test_user_view_set_duplicated_email (
279
313
root_client : DomainClient , ds_client : DomainClient , guest_client : DomainClient
280
314
) -> None :
0 commit comments