瀏覽代碼

First test and wrapper code for user_password

Yentl Van Tendeloo 7 年之前
父節點
當前提交
831ffc36e3
共有 4 個文件被更改,包括 279 次插入174 次删除
  1. 49 0
      unit/test_all.py
  2. 20 0
      wrappers/classes/modelverse.xml
  3. 4 0
      wrappers/modelverse.py
  4. 206 174
      wrappers/modelverse_SCCD.py

+ 49 - 0
unit/test_all.py

@@ -712,6 +712,55 @@ class TestModelverse(unittest.TestCase):
         except ReadPermissionDenied:
             pass
 
+    def test_op_user_password(self):
+        # Test initial password
+        user_logout()
+        try:
+            login("user", "user2")
+            self.fail()
+        except PermissionDenied:
+            pass
+        login("user", "user")
+
+        # Change it to user2
+        user_password("user", "user2")
+        user_logout()
+        try:
+            login("user", "user")
+            self.fail()
+        except PermissionDenied:
+            pass
+        login("user", "user2")
+
+        # Reset for further tests
+        user_password("user", "user")
+
+        # Change other users password
+        try:
+            user_password("user2", "user10")
+            self.fail()
+        except UserPermissionDenied:
+            user_logout()
+            login("user2", "user2")
+            user_logout()
+
+        # But admin can do that
+        self.do_as_user("admin", user_password, ["user2", "user10"])
+        user_logout()
+        login("user2", "user10")
+        user_logout()
+        login("user", "user")
+
+        # Admin cannot change password of non-existing user
+        try:
+            self.do_as_user("admin", user_password, ["user10", "user10"])
+            self.fail()
+        except UnknownUser:
+            user_logout()
+            # Check that we can still create the new user with whatever password we want
+            login("user10", "user11")
+            user_logout()
+
     def test_op_model_types(self):
         model_add("users/user/test/a", "formalisms/SimpleClassDiagrams")
 

+ 20 - 0
wrappers/classes/modelverse.xml

@@ -317,6 +317,20 @@
                         </transition>
                     </state>
 
+                    <state id="user_password">
+                        <onentry>
+                            <raise event="request">
+                                <parameter expr="['user_password', self.parameters[0], self.parameters[1]]"/>
+                            </raise>
+                        </onentry>
+
+                        <transition cond="self.expect_response('Success')" target="../../wait_for_action/history">
+                            <raise event="result">
+                                <parameter expr="None"/>
+                            </raise>
+                        </transition>
+                    </state>
+
                     <state id="read_permissions">
                         <onentry>
                             <raise event="request">
@@ -1681,6 +1695,12 @@
                             </script>
                         </transition>
 
+                        <transition cond="self.expect_action('user_password')" target="../../operations/user_password">
+                            <script>
+                                self.load_action()
+                            </script>
+                        </transition>
+
                         <transition cond="self.expect_action('model_list_full')" target="../../operations/model_list_full">
                             <script>
                                 self.load_action()

+ 4 - 0
wrappers/modelverse.py

@@ -263,6 +263,10 @@ def model_list(location):
     INPUT("model_list", [location])
     return OUTPUT()
 
+def user_password(username, password):
+    INPUT("user_password", [username, password])
+    return OUTPUT()
+
 def model_add(model_name, metamodel_name, model_code=""):
     INPUT("model_add", [model_name, metamodel_name, model_code])
     return OUTPUT()

文件差異過大導致無法顯示
+ 206 - 174
wrappers/modelverse_SCCD.py