summaryrefslogtreecommitdiff
path: root/odoo/addons/test_access_rights/tests/test_ir_rules.py
diff options
context:
space:
mode:
Diffstat (limited to 'odoo/addons/test_access_rights/tests/test_ir_rules.py')
-rw-r--r--odoo/addons/test_access_rights/tests/test_ir_rules.py38
1 files changed, 34 insertions, 4 deletions
diff --git a/odoo/addons/test_access_rights/tests/test_ir_rules.py b/odoo/addons/test_access_rights/tests/test_ir_rules.py
index 9cb2f3ebda2..b10d6c22200 100644
--- a/odoo/addons/test_access_rights/tests/test_ir_rules.py
+++ b/odoo/addons/test_access_rights/tests/test_ir_rules.py
@@ -8,10 +8,11 @@ class TestRules(TransactionCase):
def setUp(self):
super(TestRules, self).setUp()
- self.id1 = self.env['test_access_right.some_obj']\
- .create({'val': 1}).id
- self.id2 = self.env['test_access_right.some_obj']\
- .create({'val': -1}).id
+ ObjCateg = self.env['test_access_right.obj_categ']
+ SomeObj = self.env['test_access_right.some_obj']
+ self.categ1 = ObjCateg.create({'name': 'Food'}).id
+ self.id1 = SomeObj.create({'val': 1, 'categ_id': self.categ1}).id
+ self.id2 = SomeObj.create({'val': -1, 'categ_id': self.categ1}).id
# create a global rule forbidding access to records with a negative
# (or zero) val
self.env['ir.rule'].create({
@@ -19,6 +20,13 @@ class TestRules(TransactionCase):
'model_id': self.browse_ref('test_access_rights.model_test_access_right_some_obj').id,
'domain_force': "[('val', '>', 0)]"
})
+ # create a global rule that forbid access to records without
+ # categories, the search is part of the test
+ self.env['ir.rule'].create({
+ 'name': 'See all categories',
+ 'model_id': self.browse_ref('test_access_rights.model_test_access_right_some_obj').id,
+ 'domain_force': "[('categ_id', 'in', user.env['test_access_right.obj_categ'].search([]).ids)]"
+ })
def test_basic_access(self):
env = self.env(user=self.browse_ref('base.public_user'))
@@ -82,3 +90,25 @@ class TestRules(TransactionCase):
Model = env['test_access_right.some_obj']
with self.assertQueryCount(0):
Model._filter_access_rules('read')
+
+ def test_no_context_in_ir_rules(self):
+ """ The context should not impact the ir rules. """
+ env = self.env(user=self.browse_ref('base.public_user'))
+ ObjCateg = self.env['test_access_right.obj_categ']
+ SomeObj = self.env['test_access_right.some_obj']
+
+ # validate the effect of context on category search, there are
+ # no existing media category
+ self.assertTrue(ObjCateg.search([]))
+ self.assertFalse(ObjCateg.with_context(only_media=True).search([]))
+
+ # record1 is food and is accessible with an empy context
+ ObjCateg.clear_caches()
+ records = SomeObj.search([('id', '=', self.id1)])
+ self.assertTrue(records)
+
+ # it should also be accessible as the context is not used when
+ # searching for SomeObjs
+ ObjCateg.clear_caches()
+ records = SomeObj.with_context(only_media=True).search([('id', '=', self.id1)])
+ self.assertTrue(records)