“测试安全访问权限”的版本间的差异

来自Odoo大V社-odoo中文开发手册
跳转至: 导航搜索
(创建页面,内容为“事实上,对于安全访问测试,由于缺少访问规则,目前我们的测试应该是会失败的。没有失败,是因为我们使用的是admin用户...”)
 
 
(未显示另一用户的1个中间版本)
第1行: 第1行:
 
事实上,对于安全访问测试,由于缺少访问规则,目前我们的测试应该是会失败的。没有失败,是因为我们使用的是admin用户。因此,我们应该更改测试,以使它们使用Demo用户。
 
事实上,对于安全访问测试,由于缺少访问规则,目前我们的测试应该是会失败的。没有失败,是因为我们使用的是admin用户。因此,我们应该更改测试,以使它们使用Demo用户。
 
为此,我们应该修改tests/test_todo.py文件,添加一个setUp方法:
 
为此,我们应该修改tests/test_todo.py文件,添加一个setUp方法:
   #class TestTodo(TransactionCase):
+
   #class TestTodo(TransactionCase):
      def setUp(self,* args,** kwargs):
+
        def setUp(self,* args,** kwargs):
        result = super(TestTodo,self).setUp(* args,\
+
            result = super(TestTodo,self).setUp(* args,\
        ** kwargs)
+
            ** kwargs)
        user_demo = self.env.ref('base.user_demo')
+
            user_demo = self.env.ref('base.user_demo')
        self.env = self.env(user = user_demo)
+
            self.env = self.env(user = user_demo)
        return result
+
            return result
 
方法中第一个语句调用父类的setUp代码。接下来语句改变了运行测试的环境变量self.env,使用Demo用户给它赋予了新值。根据上面的写法,不需要再做其他改变。
 
方法中第一个语句调用父类的setUp代码。接下来语句改变了运行测试的环境变量self.env,使用Demo用户给它赋予了新值。根据上面的写法,不需要再做其他改变。
  
第22行: 第22行:
 
当尝试访问这条任务数据时,我们期望抛出一个AccessError异常。
 
当尝试访问这条任务数据时,我们期望抛出一个AccessError异常。
 
如果我们现在运行测试,它们应该失败,然后抛出异常让我们来处理。
 
如果我们现在运行测试,它们应该失败,然后抛出异常让我们来处理。
 +
上一节:[[设置安全访问权限]]
 +
下一节:[[添加访问控制安全]]

2017年4月17日 (一) 10:26的最新版本

事实上,对于安全访问测试,由于缺少访问规则,目前我们的测试应该是会失败的。没有失败,是因为我们使用的是admin用户。因此,我们应该更改测试,以使它们使用Demo用户。 为此,我们应该修改tests/test_todo.py文件,添加一个setUp方法:

  #class TestTodo(TransactionCase):
        def setUp(self,* args,** kwargs):
            result = super(TestTodo,self).setUp(* args,\
            ** kwargs)
            user_demo = self.env.ref('base.user_demo')
            self.env = self.env(user = user_demo)
            return result

方法中第一个语句调用父类的setUp代码。接下来语句改变了运行测试的环境变量self.env,使用Demo用户给它赋予了新值。根据上面的写法,不需要再做其他改变。

为确保用户只能看到自己的任务,我们还应该添加一个测试用例。添加之前,首先在顶部添加一个额外的导入语句:

  from odoo.exceptions import AccessError

然后,添加一个额外的方法到测试类:

   def test_record_rule(self):
       “测试每个用户记录规则”
       Todo = self.env [ todo.task']
       task = Todo.sudo().create({'name':'Admin Task'})
       with self.assertRaises(AccessError):
           Todo.browse([task.id])

因为env使用的是Demo用户,我们使用sudo()方法将上下文更改为admin用户。然后,我们使用admin来创建一条任务,这个任务Demo 用户应该无法访问。 当尝试访问这条任务数据时,我们期望抛出一个AccessError异常。 如果我们现在运行测试,它们应该失败,然后抛出异常让我们来处理。

上一节:设置安全访问权限
下一节:添加访问控制安全