Explorar o código

Test for query even if not writable

Yentl Van Tendeloo %!s(int64=7) %!d(string=hai) anos
pai
achega
8c4c3538b2
Modificáronse 2 ficheiros con 36 adicións e 3 borrados
  1. 33 3
      unit/test_all.py
  2. 3 0
      wrappers/modelverse.py

+ 33 - 3
unit/test_all.py

@@ -464,6 +464,7 @@ class TestModelverse(unittest.TestCase):
             pass
     
     def test_op_all_instances(self):
+        # Test M2 level
         model_add("users/user/test/a", "formalisms/SimpleClassDiagrams", """
             Class A {}
             Class B : A {}
@@ -472,18 +473,21 @@ class TestModelverse(unittest.TestCase):
         assert all_instances("users/user/test/a", "Class") == set(["A", "B"])
         assert all_instances("users/user/test/a", "Association") == set(["C"])
 
+        # Test non-existing type
         try:
             all_instances("users/user/test/a", "non-existing")
             self.fail()
         except UnknownElement:
             pass
 
+        # Test non-existing model
         try:
             all_instances("users/user/test/b", "Class")
             self.fail()
         except UnknownModel:
             pass
 
+        # Test M1 level
         model_add("users/user/test/b", "users/user/test/a", """
             A a {}
             B b {}
@@ -494,12 +498,16 @@ class TestModelverse(unittest.TestCase):
         assert all_instances("users/user/test/b", "B") == set(["b"])
         assert all_instances("users/user/test/b", "C") == set(["c"])
 
+        # No read permission
         try:
             all_instances("administration/core", "Class")
             self.fail()
         except ReadPermissionDenied:
             pass
 
+        # No write permission, but can query
+        assert type(all_instances("formalisms/SimpleClassDiagrams", "Class")) == set
+
     def test_op_admin_promote_demote(self):
         # Verify that user doesn't have admin permissions
         try:
@@ -683,6 +691,9 @@ class TestModelverse(unittest.TestCase):
         except ReadPermissionDenied:
             pass
 
+        # No write permission, but can query
+        assert type(element_list("formalisms/SimpleClassDiagrams")) == set
+
     def test_op_element_list_nice(self):
         # Test simple element_list_nice
         model_add("users/user/test/a", "formalisms/ProcessModel", """
@@ -784,6 +795,9 @@ class TestModelverse(unittest.TestCase):
         except ReadPermissionDenied:
             pass
 
+        # No write permission, but can query
+        assert type(element_list_nice("formalisms/SimpleClassDiagrams")) == list
+
     def test_op_types(self):
         # Try operation of unopened model
         assert types("formalisms/ProcessModel") == element_list("formalisms/SimpleClassDiagrams")
@@ -823,6 +837,9 @@ class TestModelverse(unittest.TestCase):
         except ReadPermissionDenied:
             pass
 
+        # No write permission for either M or MM, but can query
+        assert type(types("formalisms/SimpleClassDiagrams")) == set
+
     def test_op_read_info(self):
         # Basic case
         model_add("users/user/test/a", "formalisms/ProcessModel", """
@@ -855,13 +872,16 @@ class TestModelverse(unittest.TestCase):
         except UnknownModel:
             pass
 
-        # Unreadable model
+        # No read permission
         try:
             read_info("administration/core", "administration")
             self.fail()
         except ReadPermissionDenied:
             pass
 
+        # No write permission, but can query
+        assert type(read_info("formalisms/SimpleClassDiagrams", "Class")) == tuple
+
     def test_op_read_attrs(self):
         # Basic behaviour
         model_add("users/user/test/a", "formalisms/SimpleClassDiagrams", """
@@ -944,6 +964,9 @@ class TestModelverse(unittest.TestCase):
         except ReadPermissionDenied:
             pass
 
+        # No write permissions, but can query
+        assert type(read_attrs("formalisms/SimpleClassDiagrams", "Class")) == type(dict())
+
     def test_op_attr_assign(self):
         model_add("users/user/test/a", "formalisms/SimpleClassDiagrams", """
             SimpleAttribute Natural {
@@ -1622,6 +1645,9 @@ class TestModelverse(unittest.TestCase):
         except ReadPermissionDenied:
             pass
 
+        # No write permissions, but can query
+        assert type(read_outgoing("formalisms/SimpleClassDiagrams", "Class", "")) == type(set())
+
     def test_op_read_incoming(self):
         model_add("users/user/test/a", "formalisms/SimpleClassDiagrams", """
             SimpleAttribute String {}
@@ -1650,6 +1676,9 @@ class TestModelverse(unittest.TestCase):
         # Test simpleattribute
         assert read_incoming("users/user/test/a", "String", "") == set(["A_name"])
 
+        # Test empty result
+        assert read_incoming("users/user/test/a", "F", "") == set([])
+
         # Non-existing model
         try:
             read_incoming("users/afa", "Association", "")
@@ -1680,6 +1709,9 @@ class TestModelverse(unittest.TestCase):
         except ReadPermissionDenied:
             pass
 
+        # No write permissions, but can query
+        assert type(read_incoming("formalisms/SimpleClassDiagrams", "Class", "")) == type(set())
+
     """
     def test_op_model_render(self):
     def test_op_transformation_between(self):
@@ -1702,8 +1734,6 @@ class TestModelverse(unittest.TestCase):
     def test_op_group_list(self):
     def test_op_conformance_delete(self):
     def test_op_conformance_add(self):
-    def test_op_read_incoming(self):
-    def test_op_read_association_source(self):
     def test_op_read_association_destination(self):
     def test_op_conections_between(self):
     def test_op_define_attribute(self):

+ 3 - 0
wrappers/modelverse.py

@@ -87,6 +87,9 @@ class InterfaceMismatch(ModelverseException):
 class UnknownMetamodellingHierarchy(ModelverseException):
     pass
 
+class NotAnAssociation(ModelverseException):
+    pass
+
 def run_controller():
     try:
         controller.start()