测试安全访问权限

来自Odoo大V社-odoo中文开发手册
跳转至: 导航搜索

事实上,对于安全访问测试,由于缺少访问规则,目前我们的测试应该是会失败的。没有失败,是因为我们使用的是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异常。 如果我们现在运行测试,它们应该失败,然后抛出异常让我们来处理。

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