61 lines
2.4 KiB
Python
61 lines
2.4 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo.exceptions import AccessError
|
|
from odoo.tests import TransactionCase
|
|
from odoo.tools import mute_logger
|
|
|
|
from odoo.addons.mail.tests.common import mail_new_test_user
|
|
|
|
|
|
class TestDocumentApprovals(TransactionCase):
|
|
|
|
@mute_logger('odoo.addons.base.models.ir_rule')
|
|
def test_documents_access(self):
|
|
approval_user = mail_new_test_user(
|
|
self.env,
|
|
"approval_user",
|
|
"approvals.group_approval_user,base.group_user",
|
|
)
|
|
internal_user_1 = mail_new_test_user(
|
|
self.env, "internal_user_1", "base.group_user"
|
|
)
|
|
internal_user_2 = mail_new_test_user(
|
|
self.env, "internal_user_2", "base.group_user"
|
|
)
|
|
self.env.company.documents_approvals_settings = True
|
|
self.env["documents.access"].create({
|
|
"document_id": self.env.company.approvals_folder_id.id,
|
|
"partner_id": approval_user.partner_id.id,
|
|
"role": "edit",
|
|
})
|
|
|
|
approval = self.env["approval.request"].create(
|
|
{
|
|
"request_owner_id": internal_user_1.id,
|
|
"category_id": self.env["approval.category"].create({"name": "cat"}).id,
|
|
}
|
|
)
|
|
|
|
attachment = self.env["ir.attachment"].with_user(approval_user).create({
|
|
"name": "Test document",
|
|
"res_id": approval.id,
|
|
"res_model": "approval.request",
|
|
})
|
|
document = self.env["documents.document"].search([("attachment_id", "=", attachment.id)])
|
|
self.assertEqual(len(document), 1)
|
|
self.assertEqual(len(document.access_ids), 2)
|
|
access_id_by_partner = document.access_ids.grouped('partner_id')
|
|
internal_user_1_access = access_id_by_partner.get(internal_user_1.partner_id)
|
|
self.assertTrue(internal_user_1_access)
|
|
self.assertEqual(internal_user_1_access.role, 'view')
|
|
access_id_approval_user = access_id_by_partner.get(approval_user.partner_id)
|
|
self.assertTrue(access_id_approval_user)
|
|
self.assertIn(access_id_approval_user.role, {'edit', False})
|
|
self.assertEqual(document.owner_id, approval_user)
|
|
|
|
document.with_user(internal_user_1).read()
|
|
document.with_user(approval_user).read()
|
|
|
|
with self.assertRaises(AccessError):
|
|
document.with_user(internal_user_2).read()
|