“测试安全访问权限”的版本间的差异
来自Odoo大V社-odoo中文开发手册
第22行: | 第22行: | ||
当尝试访问这条任务数据时,我们期望抛出一个AccessError异常。 | 当尝试访问这条任务数据时,我们期望抛出一个AccessError异常。 | ||
如果我们现在运行测试,它们应该失败,然后抛出异常让我们来处理。 | 如果我们现在运行测试,它们应该失败,然后抛出异常让我们来处理。 | ||
+ | 上一节:[[设置安全访问权限]] | ||
+ | 下一节:[[添加访问控制安全]] |
2017年4月17日 (一) 02: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异常。 如果我们现在运行测试,它们应该失败,然后抛出异常让我们来处理。
上一节:设置安全访问权限 下一节:添加访问控制安全