diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-11 12:19:19 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2019-09-11 12:19:19 +0200 |
commit | 0a18b35422fd85f9cbb39796275bc90065c80689 (patch) | |
tree | daefab542c652030ce38937ca571026a6805a8de /archaeological_operations | |
parent | 6d7ffac2111f8054517e9574ce5266a5e9254c0e (diff) | |
download | Ishtar-0a18b35422fd85f9cbb39796275bc90065c80689.tar.bz2 Ishtar-0a18b35422fd85f9cbb39796275bc90065c80689.zip |
Lock: do not allow lock/unlock of items locked by another user
Diffstat (limited to 'archaeological_operations')
-rw-r--r-- | archaeological_operations/tests.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py index b3eac54d3..72cecee95 100644 --- a/archaeological_operations/tests.py +++ b/archaeological_operations/tests.py @@ -3167,6 +3167,14 @@ class OperationQATest(OperationInitTest, TestCase): self.assertEqual(ope.locked, True) self.assertEqual(ope.lock_user, self.user) + response = c.post(url, {"action": "unlock"}) + if response.status_code != 200: + self.assertRedirects(response, '/success/') + for ope in (op0, op1): + ope = models.Operation.objects.get(pk=ope.pk) + self.assertEqual(ope.locked, False) + self.assertEqual(ope.lock_user, None) + c = Client() c.login(username=self.alt_username, password=self.alt_password) response = c.get(reverse('operation-qa-lock', args=[pks])) @@ -3180,6 +3188,35 @@ class OperationQATest(OperationInitTest, TestCase): self.assertEqual(ope.locked, True) self.assertEqual(ope.lock_user, self.alt_user) + response = c.post(url, {"action": "unlock"}) + if response.status_code != 200: + self.assertRedirects(response, '/success/') + for ope in (op0, op1): + ope = models.Operation.objects.get(pk=ope.pk) + self.assertEqual(ope.locked, False) + self.assertEqual(ope.lock_user, None) + + # one item lock by another user + op0 = models.Operation.objects.get(pk=op0.pk) + op0.locked = True + op0.lock_user = self.user + op0.save() + op1 = models.Operation.objects.get(pk=op1.pk) + op1.locked = True + op1.lock_user = self.alt_user + op1.save() + + response = c.post(url, {"action": "unlock"}) + self.assertRedirects(response, '/qa-not-available/locked-by-others/') + + op0 = models.Operation.objects.get(pk=op0.pk) + self.assertEqual(op0.locked, True) + self.assertEqual(op0.lock_user, self.user) + + op1 = models.Operation.objects.get(pk=op1.pk) + self.assertEqual(op1.locked, True) + self.assertEqual(op1.lock_user, self.alt_user) + def test_bulk_update(self): c = Client() pks = u"{}-{}".format(self.operations[0].pk, self.operations[1].pk) @@ -3232,6 +3269,18 @@ class OperationQATest(OperationInitTest, TestCase): operation_type ) + # one item lock by another user + op0 = models.Operation.objects.get(pk=self.operations[0].pk) + op0.locked = True + op0.lock_user = self.user + op0.save() + + response = c.post( + reverse('operation-qa-bulk-update-confirm', args=[pks]), + {'qa_operation_type': operation_type.pk} + ) + self.assertRedirects(response, '/qa-not-available/') + class DocumentQATest(OperationInitTest, TestCase): fixtures = OPERATION_FIXTURES |