Skip to content

Commit c23a828

Browse files
authored
Merge pull request #231 from hydroserver2/v2-deployment
Added additional tests for unauthenticated users.
2 parents 38c740d + 29ca3a0 commit c23a828

File tree

14 files changed

+1052
-5
lines changed

14 files changed

+1052
-5
lines changed

iam/models/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def check_object_permissions(
3333
user: Optional["User"], workspace: "Workspace", resource_type: str
3434
):
3535
if not workspace:
36-
if user.account_type in ["admin", "staff"]:
36+
if user and user.account_type in ["admin", "staff"]:
3737
return ["view", "edit", "delete"]
3838
else:
3939
return ["view"]

iam/services/collaborator.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,8 @@ def delete(self, user: User, workspace_id: uuid.UUID, data: CollaboratorDeleteBo
9292

9393
permissions = collaborator.get_user_permissions(user=user)
9494

95-
if (
96-
not any(permission in permissions for permission in ("*", "delete"))
97-
and user.email != collaborator.user.email
95+
if not any(permission in permissions for permission in ("*", "delete")) and (
96+
not user or user.email != collaborator.user.email
9897
):
9998
raise HttpError(
10099
403, f"You do not have permission to remove this collaborator"

iam/services/workspace.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,10 @@ def list(self, user: Optional[User], associated_only: bool = False):
5353

5454
def get(self, user: Optional[User], uid: uuid.UUID):
5555
workspace, _ = self.get_workspace(user=user, workspace_id=uid)
56-
user.collaborator_roles = list(user.workspace_roles.all()) if user else []
56+
57+
if user:
58+
user.collaborator_roles = list(user.workspace_roles.all())
59+
5760
workspace = self.attach_role_and_transfer_fields(workspace, user)
5861

5962
return workspace

tests/iam/services/test_collaborator.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,13 @@
2525
"Workspace does not exist",
2626
404,
2727
),
28+
(None, "6e0deaf2-a92b-421b-9ece-86783265596f", 2, None),
29+
(
30+
None,
31+
"b27c51a0-7374-462d-8a53-d97d47176c10",
32+
"Workspace does not exist",
33+
404,
34+
),
2835
],
2936
)
3037
def test_list_collaborator(get_user, user, workspace, message, error_code):
@@ -105,6 +112,14 @@ def test_list_collaborator(get_user, user, workspace, message, error_code):
105112
"You do not have permission",
106113
403,
107114
),
115+
(
116+
None,
117+
"anonymous",
118+
"6e0deaf2-a92b-421b-9ece-86783265596f",
119+
"2f05f775-5d8a-4778-9942-3d13a64ec7a3",
120+
"You do not have permission",
121+
403,
122+
),
108123
(
109124
"anonymous",
110125
"anonymous",
@@ -113,6 +128,14 @@ def test_list_collaborator(get_user, user, workspace, message, error_code):
113128
"Workspace does not exist",
114129
404,
115130
),
131+
(
132+
None,
133+
"anonymous",
134+
"b27c51a0-7374-462d-8a53-d97d47176c10",
135+
"2f05f775-5d8a-4778-9942-3d13a64ec7a3",
136+
"Workspace does not exist",
137+
404,
138+
),
116139
(
117140
"owner",
118141
"fake",
@@ -240,6 +263,22 @@ def test_create_collaborator(
240263
"Workspace does not exist",
241264
404,
242265
),
266+
(
267+
None,
268+
"editor",
269+
"6e0deaf2-a92b-421b-9ece-86783265596f",
270+
"2f05f775-5d8a-4778-9942-3d13a64ec7a3",
271+
"You do not have permission",
272+
403,
273+
),
274+
(
275+
None,
276+
"editor",
277+
"b27c51a0-7374-462d-8a53-d97d47176c10",
278+
"2f05f775-5d8a-4778-9942-3d13a64ec7a3",
279+
"Workspace does not exist",
280+
404,
281+
),
243282
(
244283
"owner",
245284
"fake",
@@ -352,6 +391,20 @@ def test_update_collaborator(
352391
"Workspace does not exist",
353392
404,
354393
),
394+
(
395+
None,
396+
"editor",
397+
"6e0deaf2-a92b-421b-9ece-86783265596f",
398+
"You do not have permission",
399+
403,
400+
),
401+
(
402+
None,
403+
"editor",
404+
"b27c51a0-7374-462d-8a53-d97d47176c10",
405+
"Workspace does not exist",
406+
404,
407+
),
355408
(
356409
"owner",
357410
"fake",

tests/iam/services/test_role.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,19 @@
2121
"Workspace does not exist",
2222
404,
2323
),
24+
(
25+
None,
26+
"b27c51a0-7374-462d-8a53-d97d47176c10",
27+
0,
28+
"Workspace does not exist",
29+
404,
30+
),
2431
("owner", "6e0deaf2-a92b-421b-9ece-86783265596f", 2, None, None),
2532
("admin", "6e0deaf2-a92b-421b-9ece-86783265596f", 2, None, None),
2633
("editor", "6e0deaf2-a92b-421b-9ece-86783265596f", 2, None, None),
2734
("viewer", "6e0deaf2-a92b-421b-9ece-86783265596f", 2, None, None),
2835
("anonymous", "6e0deaf2-a92b-421b-9ece-86783265596f", 2, None, None),
36+
(None, "6e0deaf2-a92b-421b-9ece-86783265596f", 2, None, None),
2937
],
3038
)
3139
def test_list_role(get_user, user, workspace, length, message, error_code):
@@ -66,6 +74,13 @@ def test_list_role(get_user, user, workspace, length, message, error_code):
6674
"Editor",
6775
None,
6876
),
77+
(
78+
None,
79+
"6e0deaf2-a92b-421b-9ece-86783265596f",
80+
"2f05f775-5d8a-4778-9942-3d13a64ec7a3",
81+
"Editor",
82+
None,
83+
),
6984
(
7085
"owner",
7186
"00000000-0000-0000-0000-000000000000",
@@ -87,6 +102,13 @@ def test_list_role(get_user, user, workspace, length, message, error_code):
87102
"Workspace does not exist",
88103
404,
89104
),
105+
(
106+
None,
107+
"b27c51a0-7374-462d-8a53-d97d47176c10",
108+
"60b9d8b1-28d1-4d0d-9bee-4e47219d0118",
109+
"Workspace does not exist",
110+
404,
111+
),
90112
],
91113
)
92114
def test_get_role(get_user, user, workspace, role, message, error_code):

tests/iam/services/test_utils.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
("editor", "b27c51a0-7374-462d-8a53-d97d47176c10", "Private", {"view"}, None),
2727
("viewer", "b27c51a0-7374-462d-8a53-d97d47176c10", "Private", {"view"}, None),
2828
("anonymous", "6e0deaf2-a92b-421b-9ece-86783265596f", "Public", {"view"}, None),
29+
(None, "6e0deaf2-a92b-421b-9ece-86783265596f", "Public", {"view"}, None),
2930
(
3031
"anonymous",
3132
"caf4b92e-6914-4449-8c8a-efa5a7fd1826",
@@ -47,6 +48,13 @@
4748
{},
4849
404,
4950
),
51+
(
52+
None,
53+
"b27c51a0-7374-462d-8a53-d97d47176c10",
54+
"Workspace does not exist",
55+
{},
56+
404,
57+
),
5058
],
5159
)
5260
def test_get_workspace(get_user, user, workspace, message, permissions, error_code):

tests/iam/services/test_workspace.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
("viewer", 2, True),
2626
("anonymous", 2, False),
2727
("anonymous", 1, True),
28+
(None, 1, False),
29+
(None, 0, True),
2830
("limited", 1, False),
2931
("limited", 0, True),
3032
],
@@ -44,6 +46,7 @@ def test_list_workspace(get_user, user, length, associated):
4446
("admin", "b27c51a0-7374-462d-8a53-d97d47176c10", "Private", None),
4547
("anonymous", "6e0deaf2-a92b-421b-9ece-86783265596f", "Public", None),
4648
("anonymous", "caf4b92e-6914-4449-8c8a-efa5a7fd1826", "Transfer", None),
49+
(None, "6e0deaf2-a92b-421b-9ece-86783265596f", "Public", None),
4750
(
4851
"owner",
4952
"00000000-0000-0000-0000-000000000000",
@@ -56,6 +59,12 @@ def test_list_workspace(get_user, user, length, associated):
5659
"Workspace does not exist",
5760
404,
5861
),
62+
(
63+
None,
64+
"b27c51a0-7374-462d-8a53-d97d47176c10",
65+
"Workspace does not exist",
66+
404,
67+
),
5968
],
6069
)
6170
def test_get_workspace(get_user, user, workspace, message, error_code):
@@ -120,6 +129,18 @@ def test_create_workspace(get_user, user, message, error_code):
120129
"You do not have permission to edit this workspace",
121130
403,
122131
),
132+
(
133+
None,
134+
"b27c51a0-7374-462d-8a53-d97d47176c10",
135+
"Workspace does not exist",
136+
404,
137+
),
138+
(
139+
None,
140+
"6e0deaf2-a92b-421b-9ece-86783265596f",
141+
"You do not have permission to edit this workspace",
142+
403,
143+
),
123144
],
124145
)
125146
def test_update_workspace(get_user, user, workspace, message, error_code):
@@ -173,6 +194,13 @@ def test_update_workspace(get_user, user, workspace, message, error_code):
173194
404,
174195
5,
175196
),
197+
(
198+
None,
199+
"b27c51a0-7374-462d-8a53-d97d47176c10",
200+
"Workspace does not exist",
201+
404,
202+
5,
203+
),
176204
(
177205
"editor",
178206
"6e0deaf2-a92b-421b-9ece-86783265596f",
@@ -235,6 +263,13 @@ def test_delete_workspace(
235263
"Workspace does not exist",
236264
404,
237265
),
266+
(
267+
None,
268+
"viewer",
269+
"b27c51a0-7374-462d-8a53-d97d47176c10",
270+
"Workspace does not exist",
271+
404,
272+
),
238273
(
239274
"editor",
240275
"viewer",
@@ -310,6 +345,12 @@ def test_transfer_workspace(
310345
"Workspace does not exist",
311346
404,
312347
),
348+
(
349+
None,
350+
"b27c51a0-7374-462d-8a53-d97d47176c10",
351+
"Workspace does not exist",
352+
404,
353+
),
313354
(
314355
"owner",
315356
"b27c51a0-7374-462d-8a53-d97d47176c10",
@@ -364,6 +405,12 @@ def test_accept_workspace_transfer(get_user, user, workspace, message, error_cod
364405
"Workspace does not exist",
365406
404,
366407
),
408+
(
409+
None,
410+
"b27c51a0-7374-462d-8a53-d97d47176c10",
411+
"Workspace does not exist",
412+
404,
413+
),
367414
(
368415
"owner",
369416
"b27c51a0-7374-462d-8a53-d97d47176c10",

0 commit comments

Comments
 (0)