Quellcode durchsuchen

More interesting permission_modify test

Yentl Van Tendeloo vor 7 Jahren
Ursprung
Commit
59cc428be1
3 geänderte Dateien mit 63 neuen und 51 gelöschten Zeilen
  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"
         assert verify("test/a", "formalisms/ProcessModel") == "OK"
 
 
     def test_op_permission_modify(self):
     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):
     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=".">
                     <transition event="HTTP_output" cond="not self.finish_output_thread" target=".">
                         <parameter name="data"/>
                         <parameter name="data"/>
                         <script>
                         <script>
-                            #print("Got input (%s): %s" % (self.taskname, data))
+                            print("Got input (%s): %s" % (self.taskname, data))
                             if self.taskname == "task_manager":
                             if self.taskname == "task_manager":
                                 self.controller.taskname = self.taskname = json.loads(data)
                                 self.controller.taskname = self.taskname = json.loads(data)
                             else:
                             else:
@@ -172,7 +172,7 @@
                     <transition event="HTTP_output" cond="self.finish_output_thread" target="../finished">
                     <transition event="HTTP_output" cond="self.finish_output_thread" target="../finished">
                         <parameter name="data"/>
                         <parameter name="data"/>
                         <script>
                         <script>
-                            #print("Got input (%s): %s" % (self.taskname, data))
+                            print("Got input (%s): %s" % (self.taskname, data))
                             if self.taskname == "task_manager":
                             if self.taskname == "task_manager":
                                 self.controller.taskname = self.taskname = json.loads(data)
                                 self.controller.taskname = self.taskname = json.loads(data)
                             else:
                             else:
@@ -1403,7 +1403,7 @@
                         </raise>
                         </raise>
                     </transition>
                     </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">
                         <raise event="exception">
                             <parameter expr="'WritePermissionDenied'"/>
                             <parameter expr="'WritePermissionDenied'"/>
                             <parameter expr="self.current_model"/>
                             <parameter expr="self.current_model"/>
@@ -1431,7 +1431,7 @@
                         </raise>
                         </raise>
                     </transition>
                     </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">
                         <raise event="exception">
                             <parameter expr="'AdminPermissionDenied'"/>
                             <parameter expr="'AdminPermissionDenied'"/>
                             <parameter expr="'Admin permissions are required for this operation!'"/>
                             <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">
                     <transition cond="self.expect_response_partial('Conformance hierarchy unknown for: ', pop=False)" target="../wait_for_action/history">
                         <raise event="exception">
                         <raise event="exception">
                             <parameter expr="'UnknownMetamodellingHierarchy'"/>
                             <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>
                         </raise>
-
-                        <script>
-                            self.responses.pop(0)
-                        </script>
                     </transition>
                     </transition>
 
 
                     <transition cond="self.expect_response_partial('', pop=False)" target="../wait_for_action/history">
                     <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)
 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 author: Yentl Van Tendeloo
 Model name:   MvK Server
 Model name:   MvK Server
@@ -2199,7 +2199,7 @@ class Modelverse(RuntimeClassBase):
         self.raiseInternalEvent(Event("exception", None, ['WritePermissionDenied', self.current_model]))
         self.raiseInternalEvent(Event("exception", None, ['WritePermissionDenied', self.current_model]))
     
     
     def _initialized_behaviour_operations_7_guard(self, parameters):
     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):
     def _initialized_behaviour_operations_8_exec(self, parameters):
         self.raiseInternalEvent(Event("exception", None, ['ExecutePermissionDenied', self.split_response(self.responses.pop(0))[0]]))
         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!']))
         self.raiseInternalEvent(Event("exception", None, ['AdminPermissionDenied', 'Admin permissions are required for this operation!']))
     
     
     def _initialized_behaviour_operations_11_guard(self, parameters):
     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):
     def _initialized_behaviour_operations_12_exec(self, parameters):
         self.raiseInternalEvent(Event("exception", None, ['InterfaceMismatch', self.split_response(self.responses.pop(0))[0]]))
         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)
         return self.expect_response_partial('Location not found: ', pop=False)
     
     
     def _initialized_behaviour_operations_15_exec(self, parameters):
     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):
     def _initialized_behaviour_operations_15_guard(self, parameters):
         return self.expect_response_partial('Conformance hierarchy unknown for: ', pop=False)
         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):
     def _initialized_http_mapper_init_2_exec(self, parameters):
         data = parameters[0]
         data = parameters[0]
-        #print("Got input (%s): %s" % (self.taskname, data))
+        print("Got input (%s): %s" % (self.taskname, data))
         if self.taskname == "task_manager":
         if self.taskname == "task_manager":
             self.controller.taskname = self.taskname = json.loads(data)
             self.controller.taskname = self.taskname = json.loads(data)
         else:
         else:
@@ -2453,7 +2452,7 @@ class Modelverse(RuntimeClassBase):
     
     
     def _initialized_http_mapper_init_3_exec(self, parameters):
     def _initialized_http_mapper_init_3_exec(self, parameters):
         data = parameters[0]
         data = parameters[0]
-        #print("Got input (%s): %s" % (self.taskname, data))
+        print("Got input (%s): %s" % (self.taskname, data))
         if self.taskname == "task_manager":
         if self.taskname == "task_manager":
             self.controller.taskname = self.taskname = json.loads(data)
             self.controller.taskname = self.taskname = json.loads(data)
         else:
         else: