[ADD] test_access_rights: add test writing on many2many field with access rules

This commit is contained in:
Raphael Collet 2016-01-06 15:24:09 +01:00
parent 231e026936
commit 40be041ae7
3 changed files with 29 additions and 0 deletions

View File

@ -1,2 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_test_access_right_some_obj,access_test_access_right_some_obj,model_test_access_right_some_obj,,1,1,1,1
access_test_access_right_container,access_test_access_right_container,model_test_access_right_container,,1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_test_access_right_some_obj access_test_access_right_some_obj model_test_access_right_some_obj 1 1 1 1
3 access_test_access_right_container access_test_access_right_container model_test_access_right_container 1 1 1 1

View File

@ -4,3 +4,9 @@ class SomeObj(models.Model):
_name = 'test_access_right.some_obj'
val = fields.Integer()
class Container(models.Model):
_name = 'test_access_right.container'
some_ids = fields.Many2many('test_access_right.some_obj', 'test_access_right_rel', 'container_id', 'some_id')

View File

@ -31,3 +31,25 @@ class TestRules(TransactionCase):
# but this should
with self.assertRaises(openerp.exceptions.AccessError):
self.assertEqual(browse2.val, -1)
def test_many2many(self):
""" Test assignment of many2many field where rules apply. """
ids = [self.id1, self.id2]
# create container as superuser, connected to all some_objs
container_admin = self.env['test_access_right.container'].create({'some_ids': [(6, 0, ids)]})
self.assertItemsEqual(container_admin.some_ids.ids, ids)
# check the container as the public user
container_user = container_admin.sudo(self.browse_ref('base.public_user'))
self.assertItemsEqual(container_user.some_ids.ids, [self.id1])
# this should not fail
container_user.write({'some_ids': [(6, 0, ids)]})
self.assertItemsEqual(container_user.some_ids.ids, [self.id1])
self.assertItemsEqual(container_admin.some_ids.ids, ids)
# this removes accessible records only
container_user.write({'some_ids': [(5,)]})
self.assertItemsEqual(container_user.some_ids.ids, [])
self.assertItemsEqual(container_admin.some_ids.ids, [self.id2])