|
@@ -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):
|
|
|
"""
|