Browse Source

More interesting permission_modify test

Yentl Van Tendeloo 5 years ago
parent
commit
59cc428be1
3 changed files with 63 additions and 51 deletions
  1. 52 35
      unit/test_all.py
  2. 5 9
      wrappers/classes/modelverse.xml
  3. 6 7
      wrappers/modelverse_SCCD.py

+ 52 - 35
unit/test_all.py

@@ -182,41 +182,58 @@ class TestModelverse(unittest.TestCase):
         assert verify("test/a", "formalisms/ProcessModel") == "OK"
 
     def test_op_permission_modify(self):
-        assert model_list_full("formalisms") == set([("SimpleClassDiagrams", "admin", "admin", "221"),
-                                                     ("ActionLanguage", "admin", "admin", "221"),
-                                                     ("TypeMapping", "admin", "admin", "221"),
-                                                     ("Tracability", "admin", "admin", "221"),
-                                                     ("ProcessModel", "admin", "admin", "221"),
-                                                     ("ManualOperation", "admin", "admin", "221"),
-                                                     ("Bottom", "admin", "admin", "221"),
-                                                    ])
-        assert permission_modify("formalisms/SimpleClassDiagrams", "000") == None
-        assert model_list_full("formalisms") == set([("SimpleClassDiagrams", "admin", "admin", "000"),
-                                                     ("ActionLanguage", "admin", "admin", "221"),
-                                                     ("TypeMapping", "admin", "admin", "221"),
-                                                     ("Tracability", "admin", "admin", "221"),
-                                                     ("ProcessModel", "admin", "admin", "221"),
-                                                     ("ManualOperation", "admin", "admin", "221"),
-                                                     ("Bottom", "admin", "admin", "221"),
-                                                    ])
-        assert permission_modify("formalisms/SimpleClassDiagrams", "222") == None
-        assert model_list_full("formalisms") == set([("SimpleClassDiagrams", "admin", "admin", "222"),
-                                                     ("ActionLanguage", "admin", "admin", "221"),
-                                                     ("TypeMapping", "admin", "admin", "221"),
-                                                     ("Tracability", "admin", "admin", "221"),
-                                                     ("ProcessModel", "admin", "admin", "221"),
-                                                     ("ManualOperation", "admin", "admin", "221"),
-                                                     ("Bottom", "admin", "admin", "221"),
-                                                    ])
-        assert permission_modify("formalisms/", "000") == None
-        assert model_list_full("formalisms") == set([("SimpleClassDiagrams", "admin", "admin", "222"),
-                                                     ("ActionLanguage", "admin", "admin", "221"),
-                                                     ("TypeMapping", "admin", "admin", "221"),
-                                                     ("Tracability", "admin", "admin", "221"),
-                                                     ("ProcessModel", "admin", "admin", "221"),
-                                                     ("ManualOperation", "admin", "admin", "221"),
-                                                     ("Bottom", "admin", "admin", "221"),
-                                                    ])
+        model_add("users/user/test/a", "formalisms/SimpleClassDiagrams")
+        print("1")
+        assert model_list_full("users/user/test") == set([("a", "user", "nobody", "200")])
+
+        # Check that we can read
+        element_list_nice("users/user/test/a")
+        print("2")
+        # Check that we can write
+        instantiate("users/user/test/a", "Class")
+        print("3")
+
+        assert permission_modify("users/user/test/a", "100") == None
+        print("4")
+        assert model_list_full("users/user/test") == set([("a", "user", "nobody", "100")])
+        print("5")
+        # Check that we can read
+        element_list_nice("users/user/test/a")
+        # Check that we can't write
+        print("6")
+        try:
+            instantiate("users/user/test/a", "Class")
+            print("7")
+            self.fail()
+        except WritePermissionDenied:
+            print("8")
+            pass
+
+        print("8a")
+        assert permission_modify("users/user/test/a", "000") == None
+        print("9")
+        assert model_list_full("users/user/test") == set([("a", "user", "nobody", "000")])
+        print("10")
+        # Check that we can't read
+        try:
+            element_list_nice("users/user/test/a")
+            print("11")
+            self.fail()
+        except ReadPermissionDenied:
+            print("12")
+            pass
+        except Exception as e:
+            import traceback
+            traceback.print_exc()
+        # Check that we can't write
+        try:
+            instantiate("users/user/test/a", "Class")
+            print("13")
+            self.fail()
+        except WritePermissionDenied:
+            print("14")
+            pass
+        print("15")
 
     """
     def test_op_model_add(self):

+ 5 - 9
wrappers/classes/modelverse.xml

@@ -157,7 +157,7 @@
                     <transition event="HTTP_output" cond="not self.finish_output_thread" target=".">
                         <parameter name="data"/>
                         <script>
-                            #print("Got input (%s): %s" % (self.taskname, data))
+                            print("Got input (%s): %s" % (self.taskname, data))
                             if self.taskname == "task_manager":
                                 self.controller.taskname = self.taskname = json.loads(data)
                             else:
@@ -172,7 +172,7 @@
                     <transition event="HTTP_output" cond="self.finish_output_thread" target="../finished">
                         <parameter name="data"/>
                         <script>
-                            #print("Got input (%s): %s" % (self.taskname, data))
+                            print("Got input (%s): %s" % (self.taskname, data))
                             if self.taskname == "task_manager":
                                 self.controller.taskname = self.taskname = json.loads(data)
                             else:
@@ -1403,7 +1403,7 @@
                         </raise>
                     </transition>
 
-                    <transition cond="self.expect_response('Write permission denied', pop=False)" target="../wait_for_action/history">
+                    <transition cond="self.expect_response('Write permission denied', pop=True)" target="../wait_for_action/history">
                         <raise event="exception">
                             <parameter expr="'WritePermissionDenied'"/>
                             <parameter expr="self.current_model"/>
@@ -1431,7 +1431,7 @@
                         </raise>
                     </transition>
 
-                    <transition cond="self.expect_response_partial('Admin permission denied', pop=False)" target="../wait_for_action/history">
+                    <transition cond="self.expect_response_partial('Admin permission denied', pop=True)" target="../wait_for_action/history">
                         <raise event="exception">
                             <parameter expr="'AdminPermissionDenied'"/>
                             <parameter expr="'Admin permissions are required for this operation!'"/>
@@ -1462,12 +1462,8 @@
                     <transition cond="self.expect_response_partial('Conformance hierarchy unknown for: ', pop=False)" target="../wait_for_action/history">
                         <raise event="exception">
                             <parameter expr="'UnknownMetamodellingHierarchy'"/>
-                            <parameter expr="'Metamodelling hierarchy could not be resolved or automatically inferred: there is no typing relation between your specified model and metamodel'"/>
+                            <parameter expr="'Metamodelling hierarchy could not be resolved or automatically inferred: there is no typing relation between your specified model and metamodel (%s)' % self.responses.pop(0)"/>
                         </raise>
-
-                        <script>
-                            self.responses.pop(0)
-                        </script>
                     </transition>
 
                     <transition cond="self.expect_response_partial('', pop=False)" target="../wait_for_action/history">

+ 6 - 7
wrappers/modelverse_SCCD.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Wed Jun  6 16:47:12 2018
+Date:   Thu Jun  7 09:13:08 2018
 
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server
@@ -2199,7 +2199,7 @@ class Modelverse(RuntimeClassBase):
         self.raiseInternalEvent(Event("exception", None, ['WritePermissionDenied', self.current_model]))
     
     def _initialized_behaviour_operations_7_guard(self, parameters):
-        return self.expect_response('Write permission denied', pop=False)
+        return self.expect_response('Write permission denied', pop=True)
     
     def _initialized_behaviour_operations_8_exec(self, parameters):
         self.raiseInternalEvent(Event("exception", None, ['ExecutePermissionDenied', self.split_response(self.responses.pop(0))[0]]))
@@ -2223,7 +2223,7 @@ class Modelverse(RuntimeClassBase):
         self.raiseInternalEvent(Event("exception", None, ['AdminPermissionDenied', 'Admin permissions are required for this operation!']))
     
     def _initialized_behaviour_operations_11_guard(self, parameters):
-        return self.expect_response_partial('Admin permission denied', pop=False)
+        return self.expect_response_partial('Admin permission denied', pop=True)
     
     def _initialized_behaviour_operations_12_exec(self, parameters):
         self.raiseInternalEvent(Event("exception", None, ['InterfaceMismatch', self.split_response(self.responses.pop(0))[0]]))
@@ -2244,8 +2244,7 @@ class Modelverse(RuntimeClassBase):
         return self.expect_response_partial('Location not found: ', pop=False)
     
     def _initialized_behaviour_operations_15_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['UnknownMetamodellingHierarchy', 'Metamodelling hierarchy could not be resolved or automatically inferred: there is no typing relation between your specified model and metamodel']))
-        self.responses.pop(0)
+        self.raiseInternalEvent(Event("exception", None, ['UnknownMetamodellingHierarchy', 'Metamodelling hierarchy could not be resolved or automatically inferred: there is no typing relation between your specified model and metamodel (%s)' % self.responses.pop(0)]))
     
     def _initialized_behaviour_operations_15_guard(self, parameters):
         return self.expect_response_partial('Conformance hierarchy unknown for: ', pop=False)
@@ -2440,7 +2439,7 @@ class Modelverse(RuntimeClassBase):
     
     def _initialized_http_mapper_init_2_exec(self, parameters):
         data = parameters[0]
-        #print("Got input (%s): %s" % (self.taskname, data))
+        print("Got input (%s): %s" % (self.taskname, data))
         if self.taskname == "task_manager":
             self.controller.taskname = self.taskname = json.loads(data)
         else:
@@ -2453,7 +2452,7 @@ class Modelverse(RuntimeClassBase):
     
     def _initialized_http_mapper_init_3_exec(self, parameters):
         data = parameters[0]
-        #print("Got input (%s): %s" % (self.taskname, data))
+        print("Got input (%s): %s" % (self.taskname, data))
         if self.taskname == "task_manager":
             self.controller.taskname = self.taskname = json.loads(data)
         else: