Sfoglia il codice sorgente

Fix bug in do_as_user when exceptions are raised

Yentl Van Tendeloo 7 anni fa
parent
commit
1802c11850
1 ha cambiato i file con 32 aggiunte e 4 eliminazioni
  1. 32 4
      unit/test_all.py

+ 32 - 4
unit/test_all.py

@@ -2515,10 +2515,16 @@ class TestModelverse(unittest.TestCase):
     def do_as_user(self, username, operation, args):
         user_logout()
         login(username, username)
-        result = operation(*args)
-        user_logout()
-        login("user", "user")
-        return result
+        try:
+            result = operation(*args)
+        except:
+            user_logout()
+            login("user", "user")
+            raise
+        else:
+            user_logout()
+            login("user", "user")
+            return result
 
     def test_op_group_join(self):
         group_name_1 = "new_group"      # Group with admin permissions
@@ -2658,11 +2664,33 @@ class TestModelverse(unittest.TestCase):
         permission_group("users/user/test/a/b", "users")
         permission_modify("users/user/test/a/b", "210")
 
+        # Test permissions
         self.do_test_permission("users/user/test/", {"admin": "RW", "user": "RW", "group_user": "", "other_user": ""})
         self.do_test_permission("users/user/test/a", {"admin": "RW", "user": "RW", "group_user": "", "other_user": ""})
         self.do_test_permission("users/user/test/a/b", {"admin": "RW", "user": "RW", "group_user": "R", "other_user": ""})
         self.do_test_permission("users/user/test/a/b/c", {"admin": "RW", "user": "RW", "group_user": "", "other_user": ""})
 
+        # But test if they are really applicable
+        try:
+            self.do_as_user("group_user", model_list, ["users/user/test"])
+            self.fail()
+        except ReadPermissionDenied:
+            pass
+
+        try:
+            self.do_as_user("group_user", model_list, ["users/user/test/a"])
+            self.fail()
+        except ReadPermissionDenied:
+            pass
+
+        self.do_as_user("group_user", model_list, ["users/user/test/a/b"])
+
+        try:
+            self.do_as_user("group_user", model_list, ["users/user/test/a/b/c"])
+            self.fail()
+        except ReadPermissionDenied:
+            pass
+
     """
     def test_op_model_render(self):
     def test_op_transformation_between(self):