From 378a4999deea2e17c836fa892ddf87369ae3ccc0 Mon Sep 17 00:00:00 2001 From: Christophe Monniez Date: Fri, 10 Sep 2021 16:17:00 +0200 Subject: [PATCH] [FIX] runbot: allow a runbot admin to create runbot batch log When a runbot admin creates a cron for e.g. nightly builds, the cron may fails if a runbot.batch.log is written. With this commit, a runbot admin can create such a log. --- runbot/security/ir.model.access.csv | 1 + runbot/tests/__init__.py | 1 + runbot/tests/test_batch.py | 31 +++++++++++++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 runbot/tests/test_batch.py diff --git a/runbot/security/ir.model.access.csv b/runbot/security/ir.model.access.csv index 6cada880d..cd20b50a4 100644 --- a/runbot/security/ir.model.access.csv +++ b/runbot/security/ir.model.access.csv @@ -90,6 +90,7 @@ access_runbot_category_runbot_user,access_runbot_category_runbot_user,runbot.mod access_runbot_category_runbot_admin,access_runbot_category_runbot_admin,runbot.model_runbot_category,runbot.group_runbot_admin,1,1,1,1 access_runbot_batch_log_runbot_user,access_runbot_batch_log_runbot_user,runbot.model_runbot_batch_log,runbot.group_user,1,0,0,0 +access_runbot_batch_log_runbot_admin,access_runbot_batch_log_runbot_admin,runbot.model_runbot_batch_log,runbot.group_runbot_admin,1,1,1,1 access_runbot_warning_user,access_runbot_warning_user,runbot.model_runbot_warning,runbot.group_user,1,0,0,0 access_runbot_warning_admin,access_runbot_warning_admin,runbot.model_runbot_warning,runbot.group_runbot_admin,1,1,1,1 diff --git a/runbot/tests/__init__.py b/runbot/tests/__init__.py index 810e0b477..f6f5934f9 100644 --- a/runbot/tests/__init__.py +++ b/runbot/tests/__init__.py @@ -14,3 +14,4 @@ from . import test_commit from . import test_upgrade from . import test_dockerfile +from . import test_batch diff --git a/runbot/tests/test_batch.py b/runbot/tests/test_batch.py new file mode 100644 index 000000000..37cb632da --- /dev/null +++ b/runbot/tests/test_batch.py @@ -0,0 +1,31 @@ +from odoo.exceptions import AccessError +from odoo.tests.common import new_test_user + +from .common import RunbotCase + + +class TestBatchLog(RunbotCase): + + def test_batch_log_write(self): + """ test that a runbot manager can write a batch log """ + self.additionnal_setup() + + create_context = {'no_reset_password': True, 'mail_create_nolog': True, 'mail_create_nosubscribe': True, 'mail_notrack': True} + simple_user = new_test_user(self.env, login='simple', name='simple', password='simple', context=create_context) + runbot_admin = new_test_user(self.env, groups='runbot.group_runbot_admin,base.group_user', login='runbot_admin', name='runbot_admin', password='admin', context=create_context) + + # Ensure that a simple user cannot interfere in batch logs + with self.assertRaises(AccessError): + self.env['runbot.batch.log'].with_user(simple_user).create({ + 'batch_id': self.branch_server.bundle_id.last_batch.id, + 'message': 'test_message', + 'level': 'INFO' + }) + + test_batch_log = self.env['runbot.batch.log'].with_user(runbot_admin).create({ + 'batch_id': self.branch_server.bundle_id.last_batch.id, + 'message': 'test_message', + 'level': 'INFO' + }) + + self.assertEqual(test_batch_log.message, 'test_message')