Selaa lähdekoodia

Fixes to owner_delete and the tests

Yentl Van Tendeloo 7 vuotta sitten
vanhempi
commit
0a6f67ed63
2 muutettua tiedostoa jossa 64 lisäystä ja 2 poistoa
  1. 1 1
      bootstrap/core_algorithm.alc
  2. 63 1
      unit/test_all.py

+ 1 - 1
bootstrap/core_algorithm.alc

@@ -2220,7 +2220,7 @@ String function cmd_group_owner_delete(group_name : String, other_user_name : St
 						model_delete_element(core, set_pop(overlap))
 						return "Success"!
 					else:
-						return "User is not an owner of the group!"!
+						return "Success"!
 				else:
 					return "User is not a member of the group!"!
 			else:

+ 63 - 1
unit/test_all.py

@@ -2940,6 +2940,69 @@ class TestModelverse(unittest.TestCase):
         group_delete("group2")
         group_delete("group3")
 
+    def test_op_group_owner_delete(self):
+        group_create("group1")
+        group_create("group2")
+        group_create("group3")
+        self.do_create_user("new_user")
+
+        group_owner_add("group1", "new_user")
+        group_owner_add("group2", "new_user")
+
+        # Basic use: remove owner, but stay a member
+        assert self.do_as_user("new_user", group_list, []) == set([("group1", True), ("group2", True)])
+        assert group_owner_delete("group2", "new_user") == None
+        assert self.do_as_user("new_user", group_list, []) == set([("group1", True), ("group2", False)])
+
+        # Test for user that is already not an owner
+        assert self.do_as_user("new_user", group_list, []) == set([("group1", True), ("group2", False)])
+        assert group_owner_delete("group2", "new_user") == None
+        assert self.do_as_user("new_user", group_list, []) == set([("group1", True), ("group2", False)])
+
+        # Test for user that is not even a member
+        assert self.do_as_user("new_user", group_list, []) == set([("group1", True), ("group2", False)])
+        try:
+            group_owner_delete("group3", "new_user")
+            self.fail()
+        except UserNotInGroup:
+            assert self.do_as_user("new_user", group_list, []) == set([("group1", True), ("group2", False)])
+
+        # Test non-existing user
+        try:
+            group_owner_delete("group1", "abc")
+            self.fail()
+        except UnknownUser:
+            pass
+
+        # Test non-existing group
+        try:
+            group_owner_delete("group4", "new_user")
+            self.fail()
+        except UnknownGroup:
+            assert self.do_as_user("new_user", group_list, []) == set([("group1", True), ("group2", False)])
+
+        # Only an owner of the group can do this
+        group_owner_delete("group2", "new_user")
+        assert group_list() == set([("group1", True), ("group2", True), ("group3", True)])
+        try:
+            self.do_as_user("new_user", group_owner_delete, ["group2", "user"])
+            self.fail()
+        except GroupPermissionDenied:
+            assert group_list() == set([("group1", True), ("group2", True), ("group3", True)])
+
+        # Also non-members can't modify
+        assert self.do_as_user("new_user", group_list, []) == set([("group1", True), ("group2", False)])
+        try:
+            self.do_as_user("new_user", group_owner_delete, ["group3", "user"])
+            self.fail()
+        except GroupPermissionDenied:
+            pass
+
+        # Delete all groups again
+        group_delete("group1")
+        group_delete("group2")
+        group_delete("group3")
+
     """
     def test_op_model_render(self):
     def test_op_transformation_between(self):
@@ -2951,7 +3014,6 @@ class TestModelverse(unittest.TestCase):
     def test_op_transformation_execute_MANUAL(self):
     def test_op_transformation_signature(self):
     def test_op_process_signature(self):
-    def test_op_group_owner_delete(self):
     def test_op_conformance_delete(self):
     def test_op_conformance_add(self):
     """