Browse Source

More tests for permission modify

Yentl Van Tendeloo 7 years ago
parent
commit
41149cf16c
2 changed files with 28 additions and 1 deletions
  1. 0 1
      bootstrap/core_algorithm.alc
  2. 28 0
      unit/test_all.py

+ 0 - 1
bootstrap/core_algorithm.alc

@@ -1172,7 +1172,6 @@ String function cmd_model_add(type : String, name : String, code : String):
 		if (allow_read(current_user_id, type_id)):
 			// And is readable
 			mm = get_full_model(type_id, get_entry_id("formalisms/SimpleClassDiagrams"))
-			log("Got mm: " + cast_id(mm))
 			if (element_neq(mm, read_root())):
 				if (element_neq(create_folders(current_user_id, get_foldername(name)), read_root())):
 					if (allow_write(current_user_id, get_entry_id(get_foldername(name)))):

+ 28 - 0
unit/test_all.py

@@ -223,9 +223,31 @@ class TestModelverse(unittest.TestCase):
         # Check that we can write
         instantiate("users/user/test/a", "Class")
 
+        # Cannot modify permissions if we don't own the model
+        try:
+            permission_modify("formalisms/SimpleClassDiagrams", "222")
+            self.fail()
+        except UserPermissionDenied:
+            pass
+
+        # Cannot modify permissions even if we have full access, as long as we are not the owner
+        model_add("users/user/test/z", "formalisms/SimpleClassDiagrams")
+        permission_owner("users/user/test/z", "admin")
+        try:
+            permission_modify("users/user/test/z", "222")
+            self.fail()
+        except UserPermissionDenied:
+            pass
+        try:
+            permission_owner("users/user/test/z", "user")
+            self.fail()
+        except UserPermissionDenied:
+            pass
+
     def test_op_model_add(self):
         assert model_list_full("users/user/test") == set([])
         model_add("users/user/test/a", "formalisms/SimpleClassDiagrams")
+        # Test permissions of newly created empty model
         assert model_list_full("users/user/test") == set([("a", "user", "nobody", "200")])
 
         model_add("users/user/test/b", "formalisms/SimpleClassDiagrams", \
@@ -239,31 +261,37 @@ class TestModelverse(unittest.TestCase):
             }
             """)
 
+        # Test permissions of newly created non-empty model
         assert model_list_full("users/user/test") == set([("a", "user", "nobody", "200"), ("b", "user", "nobody", "200")])
+        # Test content of newly created model with code upload
         lst = element_list_nice("users/user/test/b")
         assert len(lst) == 2
         assert {'__id': "A", "__type": "Class", "abstract": None, "constraint": {"AL": ""}, "lower_cardinality": None, "upper_cardinality": None, "name": "A"} in lst
         assert {'__id': "B", "__type": "Class", "abstract": True, "constraint": {"AL": ""}, "lower_cardinality": None, "upper_cardinality": None, "name": "B"} in lst
 
         try:
+            # Cannot upload model to occupied location
             model_add("users/user/test/a", "formalisms/SimpleClassDiagrams")
             self.fail()
         except ModelExists:
             assert model_list_full("users/user/test") == set([("a", "user", "nobody", "200"), ("b", "user", "nobody", "200")])
 
         try:
+            # Cannot upload model to unwritable location at root
             model_add("z", "formalisms/SimpleClassDiagrams")
             self.fail()
         except WritePermissionDenied:
             assert model_list_full("users/user/test") == set([("a", "user", "nobody", "200"), ("b", "user", "nobody", "200")])
 
         try:
+            # Cannot upload model to unwritable location somewhere in hierarchy
             model_add("users/new_model", "formalisms/SimpleClassDiagrams")
             self.fail()
         except WritePermissionDenied:
             assert model_list("users/") == set(["user/", "admin/", "LoLA/", "pypdevs_batch_service/", "HUTN/", "JSON/", "file/", "pypdevs_service/"])
 
         try:
+            # Cannot upload model to unwritable location somewhere in hierarchy with multiple new branches
             model_add("users/new_username/new_model", "formalisms/SimpleClassDiagrams")
             self.fail()
         except WritePermissionDenied: