Commit 7c8c081f authored by Daniel Schreiber's avatar Daniel Schreiber

even more tests

parent f2b09a5f
Pipeline #33899 passed with stage
in 35 seconds
......@@ -289,17 +289,27 @@ class Resource(models.Model):
reject_request = True
# jetzt müssen wir noch testen, dass die andere Seite nicht fälschlicherweise unseren Teil der Vektoruhr updatet
if is_sp_local:
if remote_vec.sp and remote_vec.sp > local_vec.sp:
if remote_vec.sp and remote_vec.sp != local_vec.sp:
reject_request = True
else:
if remote_vec.idp and remote_vec.idp < local_vec.idp:
if remote_vec.idp and remote_vec.idp != local_vec.idp:
reject_request = True
else: # Local changes only require incrementing our local component
if remote_vec.idp and remote_vec.sp:
if local_vec.concurrent_to(remote_vec) or remote_vec.happened_before(local_vec):
reject_request = True
if remote_vec.idp and remote_vec.idp < local_vec.idp:
reject_request = True
if remote_vec.sp and remote_vec.sp < local_vec.sp:
reject_request = True
if remote_vec.sp and user_type == UserType.TYPE_IDP and remote_vec.sp != local_vec.sp:
# IDP Darf SP Wert nicht verändern
reject_request = True
if remote_vec.idp and user_type == UserType.TYPE_SP and remote_vec.idp != local_vec.idp:
# SP Darf IDP Wert nicht verändern
reject_request = True
return reject_request
......
......@@ -360,6 +360,16 @@ class ResourceUpdateTest(APITestCase):
self.client.force_authenticate(self.sp_user)
self._run_test_update_with_result(4, 2, 200, 5, 2, 'rejected')
def test_update_sp_must_not_incement_idp(self):
"""
Dieses Update muss fehlschlagen, weil der SP den Zähler vom IDP nicht erhöhen darf.
"""
self.assertEqual(self.sp.is_local, True)
self.client.force_authenticate(self.sp_user)
self._run_test_update_with_result(6, 3, 200, 5, 2, 'rejected')
self._run_test_update_with_result(5, 3, 200, 5, 2, 'rejected')
@override_settings(SERVER_REALM="b.edu")
def test_update_ok_as_idp(self):
self.assertEqual(self.sp.is_local, False)
......@@ -386,6 +396,15 @@ class ResourceUpdateTest(APITestCase):
self.client.force_authenticate(self.idp_user)
self._run_test_update_with_result(5, 1, 200, 5, 2, 'rejected')
def test_update_idp_must_not_incement_sp(self):
"""
Dieses Update muss fehlschlagen, weil der IDP den Zähler vom SP nicht erhöhen darf.
"""
self.assertEqual(self.sp.is_local, True)
self.client.force_authenticate(self.idp_user)
self._run_test_update_with_result(6, 3, 200, 5, 2, 'rejected')
self._run_test_update_with_result(6, 2, 200, 5, 2, 'rejected')
@override_settings(SERVER_REALM="b.edu")
def test_ok_sync_from_sp_side(self):
# Hier testen wir, ob die Vektoruhr richtig gesetzt wird, wenn ein sync
......@@ -396,10 +415,17 @@ class ResourceUpdateTest(APITestCase):
self._run_test_update(6, 2)
@override_settings(SERVER_REALM="b.edu")
def test_conflict_from_sp_side(self):
def test_conflict_sync_from_sp_side(self):
self.assertEqual(self.sp.is_local, False)
self.client.force_authenticate(self.sync_user)
# nebenläufig
self._run_test_update_with_result(6, 1, 200, 5, 2, 'rejected')
# IdP Wert geändert
self._run_test_update_with_result(6, 3, 200, 5, 2, 'rejected')
# SP Wert Lokal schon neuer
self._run_test_update_with_result(4, 1, 200, 5, 2, 'rejected')
# IdP Wert geändert, SP Wert lokal schon neuer
self._run_test_update_with_result(4, 3, 200, 5, 2, 'rejected')
def test_ok_sync_from_idp_side(self):
"""
......@@ -411,7 +437,7 @@ class ResourceUpdateTest(APITestCase):
self.client.force_authenticate(self.sync_user)
self._run_test_update(5, 3)
def test_conflict_from_idp_side(self):
def test_conflict_sync_from_idp_side(self):
"""
Das muss fehlschlagen, weil es hier eine Nebenläufigkeit der Vektoruhren
gibt.
......@@ -419,6 +445,9 @@ class ResourceUpdateTest(APITestCase):
self.assertEqual(self.sp.is_local, True)
self.client.force_authenticate(self.sync_user)
self._run_test_update_with_result(4, 3, 200, 5, 2, 'rejected')
self._run_test_update_with_result(6, 3, 200, 5, 2, 'rejected')
self._run_test_update_with_result(4, 2, 200, 5, 2, 'rejected')
self._run_test_update_with_result(6, 2, 200, 5, 2, 'rejected')
class AttributesTest(APITestCase):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment