Skip to content

Commit 2eb2f3f

Browse files
committed
Fix failing test cases after revision of 403 status codes.
1 parent 1ae81a1 commit 2eb2f3f

File tree

4 files changed

+63
-63
lines changed

4 files changed

+63
-63
lines changed

tests/backend/integration/api/organisations/test_resources.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,13 @@ def test_get_all_org_includes_managers_if_user_is_authenticated(self):
7474
response_body[0]["managers"][0]["username"], self.test_author.username
7575
)
7676

77-
def test_get_all_org_raises_error_if_filter_by_manager_id__on_unauthenticated_request(
77+
def test_get_all_org_raises_error_if_filter_by_manager_id_on_unauthenticated_request(
7878
self,
7979
):
8080
"Test 403 is returned if filter by manager id on unauthenticated request"
8181

8282
response = self.client.get(f"{self.endpoint_url}?manager_user_id=2")
83-
self.assertEqual(response.status_code, 403)
83+
self.assertEqual(response.status_code, 401)
8484

8585
def test_get_all_org_includes_stats_if_omit_stats_set_false(self):
8686
"""Test stats are not returned is omitOrgStats is set to False"""
@@ -283,7 +283,7 @@ def test_delete_org_with_projects_fails(self):
283283
headers={"Authorization": self.session_token},
284284
)
285285
response_body = response.get_json()
286-
self.assertEqual(response.status_code, 403)
286+
self.assertEqual(response.status_code, 409)
287287
self.assertEqual(response_body["Error"], "Organisation has some projects")
288288
self.assertEqual(response_body["SubCode"], "OrgHasProjects")
289289

tests/backend/integration/api/projects/test_resources.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ def test_project_with_mapped_tasks_cannot_be_deleted(self):
101101
self.url, headers={"Authorization": self.author_session_token}
102102
)
103103
# Assert
104-
self.assertEqual(response.status_code, 403)
104+
self.assertEqual(response.status_code, 409)
105105
self.assertEqual(response.json["SubCode"], "HasMappedTasks")
106106

107107
def test_org_manager_can_delete_project(self):

tests/backend/integration/api/system/test_authentication.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ def test_returns_404_if_user_does_not_exist(self):
210210
self.assertEqual(error_details["sub_code"], USER_NOT_FOUND_SUB_CODE)
211211
self.assertEqual(error_details["message"], USER_NOT_FOUND_MESSAGE)
212212

213-
def test_returns_403_if_invalid_email_token(self):
213+
def test_returns_400_if_invalid_email_token(self):
214214
# Arrange
215215
user = return_canned_user(USERNAME, USER_ID)
216216
user.create()
@@ -219,7 +219,7 @@ def test_returns_403_if_invalid_email_token(self):
219219
self.url, query_string={"token": "1234", "username": USERNAME}
220220
)
221221
# Assert
222-
self.assertEqual(response.status_code, 403)
222+
self.assertEqual(response.status_code, 400)
223223
self.assertEqual(response.json["SubCode"], "BadSignature")
224224
self.assertEqual(response.json["Error"], " Bad Token Signature")
225225

@@ -239,11 +239,11 @@ def test_returns_403_if_expired_email_token(self, mock_is_valid_token):
239239
self.url, query_string={"token": token, "username": USERNAME}
240240
)
241241
# Assert
242-
self.assertEqual(response.status_code, 403)
242+
self.assertEqual(response.status_code, 400)
243243
self.assertEqual(response.json["SubCode"], "ExpiredToken")
244244
self.assertEqual(response.json["Error"], " Token has expired")
245245

246-
def test_returns_403_if_token_and_email_mismatch(self):
246+
def test_returns_400_if_token_and_email_mismatch(self):
247247
# Arrange
248248
user = return_canned_user(USERNAME, USER_ID)
249249
user.email_address = "test_email_2"
@@ -257,7 +257,7 @@ def test_returns_403_if_token_and_email_mismatch(self):
257257
self.url, query_string={"token": token, "username": USERNAME}
258258
)
259259
# Assert
260-
self.assertEqual(response.status_code, 403)
260+
self.assertEqual(response.status_code, 400)
261261
self.assertEqual(response.json["SubCode"], "InvalidEmail")
262262
self.assertEqual(response.json["Error"], " Email address does not match token")
263263

tests/backend/integration/api/tasks/test_actions.py

+54-54
Original file line numberDiff line numberDiff line change
@@ -386,10 +386,10 @@ def test_mapping_lock_returns_403_for_if_user_not_allowed_to_map(
386386
)
387387

388388
@patch.object(ProjectAdminService, "is_user_action_permitted_on_project")
389-
def test_mapping_lock_returns_403_if_task_in_invalid_state_for_mapping(
389+
def test_mapping_lock_returns_409_if_task_in_invalid_state_for_mapping(
390390
self, mock_pm_role
391391
):
392-
"""Test returns 403 if task is in invalid state for mapping. i.e. not in READY or INVALIDATED state."""
392+
"""Test returns 409 if task is in invalid state for mapping. i.e. not in READY or INVALIDATED state."""
393393
# Arrange
394394
mock_pm_role.return_value = True
395395
# Act
@@ -398,7 +398,7 @@ def test_mapping_lock_returns_403_if_task_in_invalid_state_for_mapping(
398398
)
399399
# Assert
400400
# As Task 1 is in MAPPED state, it should not be allowed to be locked for mapping.
401-
self.assertEqual(response.status_code, 403)
401+
self.assertEqual(response.status_code, 409)
402402
self.assertEqual(response.json["SubCode"], "InvalidTaskState")
403403

404404
# Arrange
@@ -411,7 +411,7 @@ def test_mapping_lock_returns_403_if_task_in_invalid_state_for_mapping(
411411
)
412412
# Assert
413413
# As Task 1 is in VALIDATED state, it should not be allowed to be locked for mapping.
414-
self.assertEqual(response.status_code, 403)
414+
self.assertEqual(response.status_code, 409)
415415
self.assertEqual(response.json["SubCode"], "InvalidTaskState")
416416

417417
@patch.object(UserService, "has_user_accepted_license")
@@ -513,20 +513,20 @@ def test_mapping_unlock_returns_404_for_invalid_task_id(self):
513513
self.assertEqual(response.status_code, 404)
514514
self.assertEqual(response.json["error"]["sub_code"], TASK_NOT_FOUND_SUB_CODE)
515515

516-
def test_mapping_unlock_returns_403_if_task_not_locked_for_mapping(self):
517-
"""Test returns 403 if task is not locked for mapping."""
516+
def test_mapping_unlock_returns_409_if_task_not_locked_for_mapping(self):
517+
"""Test returns 409 if task is not locked for mapping."""
518518
# Act
519519
response = self.client.post(
520520
self.url,
521521
headers={"Authorization": self.user_session_token},
522522
json={"status": "MAPPED"},
523523
)
524524
# Assert
525-
self.assertEqual(response.status_code, 403)
525+
self.assertEqual(response.status_code, 409)
526526
self.assertEqual(response.json["SubCode"], "LockBeforeUnlocking")
527527

528-
def test_mapping_unlock_returns_403_if_task_locked_by_other_user(self):
529-
"""Test returns 403 if task is locked by other user."""
528+
def test_mapping_unlock_returns_409_if_task_locked_by_other_user(self):
529+
"""Test returns 409 if task is locked by other user."""
530530
# Arrange
531531
task = Task.get(1, self.test_project.id)
532532
task.task_status = TaskStatus.LOCKED_FOR_MAPPING.value
@@ -539,11 +539,11 @@ def test_mapping_unlock_returns_403_if_task_locked_by_other_user(self):
539539
json={"status": "MAPPED"},
540540
)
541541
# Assert
542-
self.assertEqual(response.status_code, 403)
542+
self.assertEqual(response.status_code, 409)
543543
self.assertEqual(response.json["SubCode"], "TaskNotOwned")
544544

545-
def test_returns_403_if_invalid_new_state_passed(self):
546-
"""Test returns 403 if invalid new state passed as new task state should be READY, MAPPED or BADIMAGERY."""
545+
def test_returns_409_if_invalid_new_state_passed(self):
546+
"""Test returns 409 if invalid new state passed as new task state should be READY, MAPPED or BADIMAGERY."""
547547
# Arrange
548548
task = Task.get(1, self.test_project.id)
549549
task.task_status = TaskStatus.LOCKED_FOR_MAPPING.value
@@ -556,7 +556,7 @@ def test_returns_403_if_invalid_new_state_passed(self):
556556
json={"status": "INVALIDATED"},
557557
)
558558
# Assert
559-
self.assertEqual(response.status_code, 403)
559+
self.assertEqual(response.status_code, 409)
560560
self.assertEqual(response.json["SubCode"], "InvalidUnlockState")
561561

562562
def test_mapping_unlock_returns_200_on_success(self):
@@ -664,11 +664,11 @@ def test_mapping_stop_returns_403_if_task_not_locked_for_mapping(self):
664664
headers={"Authorization": self.user_session_token},
665665
)
666666
# Assert
667-
self.assertEqual(response.status_code, 403)
667+
self.assertEqual(response.status_code, 409)
668668
self.assertEqual(response.json["SubCode"], "LockBeforeUnlocking")
669669

670-
def test_mapping_stop_returns_403_if_task_locked_by_other_user(self):
671-
"""Test returns 403 if task locked by other user."""
670+
def test_mapping_stop_returns_409_if_task_locked_by_other_user(self):
671+
"""Test returns 409 if task locked by other user."""
672672
# Arrange
673673
task = Task.get(1, self.test_project.id)
674674
task.task_status = TaskStatus.LOCKED_FOR_MAPPING.value
@@ -680,7 +680,7 @@ def test_mapping_stop_returns_403_if_task_locked_by_other_user(self):
680680
headers={"Authorization": self.user_session_token},
681681
)
682682
# Assert
683-
self.assertEqual(response.status_code, 403)
683+
self.assertEqual(response.status_code, 409)
684684
self.assertEqual(response.json["SubCode"], "TaskNotOwned")
685685

686686
def test_mapping_stop_returns_200_on_success(self):
@@ -780,8 +780,8 @@ def test_validation_lock_returns_404_for_invalid_task_id(self):
780780
self.assertEqual(response.status_code, 404)
781781
self.assertEqual(response.json["error"]["sub_code"], TASK_NOT_FOUND_SUB_CODE)
782782

783-
def test_validation_lock_returns_403_if_task_not_ready_for_validation(self):
784-
"""Test returns 403 if task not ready for validation."""
783+
def test_validation_lock_returns_409_if_task_not_ready_for_validation(self):
784+
"""Test returns 409 if task not ready for validation."""
785785
# Arrange
786786
task = Task.get(1, self.test_project.id)
787787
task.task_status = TaskStatus.READY.value # not ready for validation
@@ -793,13 +793,13 @@ def test_validation_lock_returns_403_if_task_not_ready_for_validation(self):
793793
json={"taskIds": [1]},
794794
)
795795
# Assert
796-
self.assertEqual(response.status_code, 403)
796+
self.assertEqual(response.status_code, 409)
797797
self.assertEqual(response.json["SubCode"], "NotReadyForValidation")
798798

799-
def test_validation_lock_returns_403_if_mapped_by_same_user_and_user_not_admin(
799+
def test_validation_lock_returns_409_if_mapped_by_same_user_and_user_not_admin(
800800
self,
801801
):
802-
"""Test returns 403 if mapped by same user."""
802+
"""Test returns 409 if mapped by same user."""
803803
# Arrange
804804
task = Task.get(1, self.test_project.id)
805805
task.task_status = TaskStatus.MAPPED.value
@@ -812,7 +812,7 @@ def test_validation_lock_returns_403_if_mapped_by_same_user_and_user_not_admin(
812812
json={"taskIds": [1]},
813813
)
814814
# Assert
815-
self.assertEqual(response.status_code, 403)
815+
self.assertEqual(response.status_code, 409)
816816
self.assertEqual(response.json["SubCode"], "CannotValidateMappedTask")
817817

818818
def test_validation_lock_returns_403_if_user_not_permitted_to_validate(self):
@@ -871,10 +871,10 @@ def test_validation_lock_returns_403_if_user_not_on_allowed_list(
871871
)
872872
# Assert
873873
self.assertEqual(response.status_code, 403)
874-
self.assertEqual(response.json["SubCode"], "UserNotAllowed")
874+
self.assertEqual(response.json["error"]["sub_code"], "USER_BLOCKED")
875875

876-
def test_validation_lock_returns_403_if_user_has_already_locked_other_task(self):
877-
"""Test returns 403 if user has already locked other task."""
876+
def test_validation_lock_returns_409_if_user_has_already_locked_other_task(self):
877+
"""Test returns 409 if user has already locked other task."""
878878
# Arrange
879879
self.test_project.status = ProjectStatus.PUBLISHED.value
880880
self.test_project.save()
@@ -889,7 +889,7 @@ def test_validation_lock_returns_403_if_user_has_already_locked_other_task(self)
889889
json={"taskIds": [1]},
890890
)
891891
# Assert
892-
self.assertEqual(response.status_code, 403)
892+
self.assertEqual(response.status_code, 409)
893893
self.assertEqual(response.json["SubCode"], "UserAlreadyHasTaskLocked")
894894

895895
@patch.object(ProjectService, "is_user_permitted_to_validate")
@@ -980,16 +980,16 @@ def test_validation_unlock_returns_404_if_task_not_found(self):
980980
self.assertEqual(response.status_code, 404)
981981
self.assertEqual(response.json["error"]["sub_code"], TASK_NOT_FOUND_SUB_CODE)
982982

983-
def test_validation_unlock_returns_403_if_task_not_locked_for_validation(self):
984-
"""Test returns 403 if task not locked for validation."""
983+
def test_validation_unlock_returns_409_if_task_not_locked_for_validation(self):
984+
"""Test returns 409 if task not locked for validation."""
985985
# Act
986986
response = self.client.post(
987987
self.url,
988988
headers={"Authorization": self.user_session_token},
989989
json={"validatedTasks": [{"taskId": 1, "status": "VALIDATED"}]},
990990
)
991991
# Assert
992-
self.assertEqual(response.status_code, 403)
992+
self.assertEqual(response.status_code, 409)
993993
self.assertEqual(response.json["SubCode"], "NotLockedForValidation")
994994

995995
@staticmethod
@@ -1002,8 +1002,8 @@ def lock_task_for_validation(task_id, project_id, user_id, mapped_by=None):
10021002
task.mapped_by = mapped_by
10031003
task.update()
10041004

1005-
def test_validation_unlock_returns_403_if_task_locked_by_other_user(self):
1006-
"""Test returns 403 if task locked by other user."""
1005+
def test_validation_unlock_returns_409_if_task_locked_by_other_user(self):
1006+
"""Test returns 409 if task locked by other user."""
10071007
# Arrange
10081008
TestTasksActionsValidationUnlockAPI.lock_task_for_validation(
10091009
1, self.test_project.id, self.test_author.id
@@ -1015,7 +1015,7 @@ def test_validation_unlock_returns_403_if_task_locked_by_other_user(self):
10151015
json={"validatedTasks": [{"taskId": 1, "status": "VALIDATED"}]},
10161016
)
10171017
# Assert
1018-
self.assertEqual(response.status_code, 403)
1018+
self.assertEqual(response.status_code, 409)
10191019
self.assertEqual(response.json["SubCode"], "TaskNotOwned")
10201020

10211021
def test_validation_unlock_returns_400_if_invalid_state_passsed(self):
@@ -1164,8 +1164,8 @@ def test_validation_stop_returns_404_if_task_not_found(self):
11641164
self.assertEqual(response.status_code, 404)
11651165
self.assertEqual(response.json["error"]["sub_code"], TASK_NOT_FOUND_SUB_CODE)
11661166

1167-
def test_validation_stop_returns_403_if_task_not_locked_for_validation(self):
1168-
"""Test returns 403 if task not locked for validation."""
1167+
def test_validation_stop_returns_409_if_task_not_locked_for_validation(self):
1168+
"""Test returns 409 if task not locked for validation."""
11691169
# Arrange
11701170
TestTasksActionsValidationUnlockAPI.lock_task_for_validation(
11711171
1, self.test_project.id, self.test_user.id
@@ -1178,11 +1178,11 @@ def test_validation_stop_returns_403_if_task_not_locked_for_validation(self):
11781178
)
11791179
# Assert
11801180
# Since task 2 is not locked for validation, we should get a 403 even though task 1 is locked for validation
1181-
self.assertEqual(response.status_code, 403)
1181+
self.assertEqual(response.status_code, 409)
11821182
self.assertEqual(response.json["SubCode"], "NotLockedForValidation")
11831183

1184-
def test_validation_stop_returns_403_if_task_locked_by_other_user(self):
1185-
"""Test returns 403 if task locked by other user."""
1184+
def test_validation_stop_returns_409_if_task_locked_by_other_user(self):
1185+
"""Test returns 409 if task locked by other user."""
11861186
# Arrange
11871187
TestTasksActionsValidationUnlockAPI.lock_task_for_validation(
11881188
1, self.test_project.id, self.test_author.id, self.test_author.id
@@ -1194,7 +1194,7 @@ def test_validation_stop_returns_403_if_task_locked_by_other_user(self):
11941194
json={"resetTasks": [{"taskId": 1}]},
11951195
)
11961196
# Assert
1197-
self.assertEqual(response.status_code, 403)
1197+
self.assertEqual(response.status_code, 409)
11981198
self.assertEqual(response.json["SubCode"], "TaskNotOwned")
11991199

12001200
def test_validation_stop_returns_200_if_task_locked_by_user(self):
@@ -1287,8 +1287,8 @@ def test_returns_404_if_task_not_found(self):
12871287
self.assertEqual(response.status_code, 404)
12881288
self.assertEqual(response.json["error"]["sub_code"], TASK_NOT_FOUND_SUB_CODE)
12891289

1290-
def test_returns_403_if_task_too_small_to_split(self):
1291-
"""Test returns 403 if task too small to split."""
1290+
def test_returns_409_if_task_too_small_to_split(self):
1291+
"""Test returns 409 if task too small to split."""
12921292
# Arrange
12931293
task = Task.get(1, self.test_project.id)
12941294
task.zoom = 18
@@ -1299,21 +1299,21 @@ def test_returns_403_if_task_too_small_to_split(self):
12991299
headers={"Authorization": self.author_session_token},
13001300
)
13011301
# Assert
1302-
self.assertEqual(response.status_code, 403)
1302+
self.assertEqual(response.status_code, 409)
13031303
self.assertEqual(response.json["SubCode"], "SmallToSplit")
13041304

1305-
def test_returns_403_if_task_not_locked_for_mapping(self):
1306-
"""Test returns 403 if task not locked for mapping."""
1305+
def test_returns_409_if_task_not_locked_for_mapping(self):
1306+
"""Test returns 409 if task not locked for mapping."""
13071307
# Since task should be locked for mapping to split, we should get a 403
13081308
response = self.client.post(
13091309
self.url,
13101310
headers={"Authorization": self.author_session_token},
13111311
)
1312-
self.assertEqual(response.status_code, 403)
1312+
self.assertEqual(response.status_code, 409)
13131313
self.assertEqual(response.json["SubCode"], "LockToSplit")
13141314

1315-
def test_returns_403_if_task_locked_by_other_user(self):
1316-
"""Test returns 403 if task locked by other user."""
1315+
def test_returns_409_if_task_locked_by_other_user(self):
1316+
"""Test returns 409 if task locked by other user."""
13171317
# Arrange
13181318
test_user = return_canned_user("test user", 1111111)
13191319
test_user.create()
@@ -1325,7 +1325,7 @@ def test_returns_403_if_task_locked_by_other_user(self):
13251325
headers={"Authorization": self.author_session_token},
13261326
)
13271327
# Assert
1328-
self.assertEqual(response.status_code, 403)
1328+
self.assertEqual(response.status_code, 409)
13291329
self.assertEqual(response.json["SubCode"], "SplitOtherUserTask")
13301330

13311331
def test_returns_200_if_task_locked_by_user(self):
@@ -1549,8 +1549,8 @@ def test_returns_404_if_task_not_found(self):
15491549
self.assertEqual(response.status_code, 404)
15501550
self.assertEqual(response.json["error"]["sub_code"], TASK_NOT_FOUND_SUB_CODE)
15511551

1552-
def test_returns_403_if_task_not_locked(self):
1553-
"""Test returns 403 if task not locked."""
1552+
def test_returns_409_if_task_not_locked(self):
1553+
"""Test returns 409 if task not locked."""
15541554
# Task should be locked for mapping or validation to extend
15551555
# Act
15561556
response = self.client.post(
@@ -1559,11 +1559,11 @@ def test_returns_403_if_task_not_locked(self):
15591559
json={"taskIds": [1]},
15601560
)
15611561
# Assert
1562-
self.assertEqual(response.status_code, 403)
1562+
self.assertEqual(response.status_code, 409)
15631563
self.assertEqual(response.json["SubCode"], "TaskStatusNotLocked")
15641564

1565-
def test_returns_403_if_task_is_not_locked_by_requesting_user(self):
1566-
"""Test returns 403 if task is not locked by requesting user."""
1565+
def test_returns_409_if_task_is_not_locked_by_requesting_user(self):
1566+
"""Test returns 409 if task is not locked by requesting user."""
15671567
# Task should be locked for mapping or validation to extend
15681568
# Arrange
15691569
task = Task.get(1, self.test_project.id)
@@ -1575,7 +1575,7 @@ def test_returns_403_if_task_is_not_locked_by_requesting_user(self):
15751575
json={"taskIds": [1]},
15761576
)
15771577
# Assert
1578-
self.assertEqual(response.status_code, 403)
1578+
self.assertEqual(response.status_code, 409)
15791579
self.assertEqual(response.json["SubCode"], "LockedByAnotherUser")
15801580

15811581
def test_returns_200_if_task_locked_by_requesting_user(self):

0 commit comments

Comments
 (0)