123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- # -*- coding: utf-8 -*-
- # © 2015 Therp BV <http://therp.nl>
- # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
- from openerp.tests.common import TransactionCase
- class TestAuditlog(object):
- def test_LogCreation(self):
- """First test, caching some data."""
- auditlog_log = self.env['auditlog.log']
- group = self.env['res.groups'].create({
- 'name': 'testgroup1',
- })
- self.assertTrue(auditlog_log.search([
- ('model_id', '=', self.groups_model_id),
- ('method', '=', 'create'),
- ('res_id', '=', group.id),
- ]).ensure_one())
- group.write({'name': 'Testgroup1'})
- self.assertTrue(auditlog_log.search([
- ('model_id', '=', self.groups_model_id),
- ('method', '=', 'write'),
- ('res_id', '=', group.id),
- ]).ensure_one())
- group.unlink()
- self.assertTrue(auditlog_log.search([
- ('model_id', '=', self.groups_model_id),
- ('method', '=', 'unlink'),
- ('res_id', '=', group.id),
- ]).ensure_one())
- def test_LogCreation2(self):
- """Second test, using cached data of the first one."""
- auditlog_log = self.env['auditlog.log']
- testgroup2 = self.env['res.groups'].create({
- 'name': 'testgroup2',
- })
- self.assertTrue(auditlog_log.search([
- ('model_id', '=', self.groups_model_id),
- ('method', '=', 'create'),
- ('res_id', '=', testgroup2.id),
- ]).ensure_one())
- def test_LogCreation3(self):
- """Third test, two groups, the latter being the parent of the former.
- Then we remove it right after (with (2, X) tuple) to test the creation
- of a 'write' log with a deleted resource (so with no text
- representation).
- """
- auditlog_log = self.env['auditlog.log']
- testgroup3 = testgroup3 = self.env['res.groups'].create({
- 'name': 'testgroup3',
- })
- testgroup4 = self.env['res.groups'].create({
- 'name': 'testgroup4',
- 'implied_ids': [(4, testgroup3.id)],
- })
- testgroup4.write({'implied_ids': [(2, testgroup3.id)]})
- self.assertTrue(auditlog_log.search([
- ('model_id', '=', self.groups_model_id),
- ('method', '=', 'create'),
- ('res_id', '=', testgroup3.id),
- ]).ensure_one())
- self.assertTrue(auditlog_log.search([
- ('model_id', '=', self.groups_model_id),
- ('method', '=', 'create'),
- ('res_id', '=', testgroup4.id),
- ]).ensure_one())
- self.assertTrue(auditlog_log.search([
- ('model_id', '=', self.groups_model_id),
- ('method', '=', 'write'),
- ('res_id', '=', testgroup4.id),
- ]).ensure_one())
- class TestAuditlogFull(TransactionCase, TestAuditlog):
- def setUp(self):
- super(TestAuditlogFull, self).setUp()
- self.groups_model_id = self.env.ref('base.model_res_groups').id
- self.groups_rule = self.env['auditlog.rule'].create({
- 'name': 'testrule for groups',
- 'model_id': self.groups_model_id,
- 'log_read': True,
- 'log_create': True,
- 'log_write': True,
- 'log_unlink': True,
- 'state': 'subscribed',
- 'log_type': 'full',
- })
- def tearDown(self):
- self.groups_rule.unlink()
- super(TestAuditlogFull, self).tearDown()
- class TestAuditlogFast(TransactionCase, TestAuditlog):
- def setUp(self):
- super(TestAuditlogFast, self).setUp()
- self.groups_model_id = self.env.ref('base.model_res_groups').id
- self.groups_rule = self.env['auditlog.rule'].create({
- 'name': 'testrule for groups',
- 'model_id': self.groups_model_id,
- 'log_read': True,
- 'log_create': True,
- 'log_write': True,
- 'log_unlink': True,
- 'state': 'subscribed',
- 'log_type': 'fast',
- })
- def tearDown(self):
- self.groups_rule.unlink()
- super(TestAuditlogFast, self).tearDown()
- class TestMethods(TransactionCase):
- def setUp(self):
- super(TestMethods, self).setUp()
- # Clear all existing logging lines
- existing_audit_logs = self.env['auditlog.log'].search([])
- existing_audit_logs.unlink()
- # Get partner to test
- self.partner = self.env['res.partner'].search([], limit=1)
- self.partner_model = self.env['ir.model'].search([
- ('model', '=', 'res.partner')])
- # Setup auditlog rules
- self.auditlog_rule = self.env['auditlog.rule'].create({
- 'name': 'res.partner',
- 'model_id': self.partner_model.id,
- 'log_type': 'fast',
- 'log_read': False,
- 'log_create': False,
- 'log_write': False,
- 'log_unlink': False,
- 'log_custom_method': True,
- 'custom_method_ids': [(0, 0, {
- 'name': 'onchange_type',
- 'message': 'onchange_type',
- })]
- })
- self.auditlog_rule.subscribe()
- def tearDown(self):
- self.auditlog_rule.unsubscribe()
- super(TestMethods, self).tearDown()
- def test_01_subscribe_unsubscribe(self):
- """The test is subscribed by default, so let's try both"""
- self.auditlog_rule.unsubscribe()
- self.auditlog_rule.subscribe()
- def test_02_copy_res_partner_logging(self):
- """ Copy partner and see if the action gets logged """
- self.partner.onchange_type(False)
- logs = self.env['auditlog.log'].search([
- ('res_id', '=', self.partner.id),
- ('model_id', '=', self.partner_model.id),
- ('method', '=', 'onchange_type')
- ])
- self.assertEqual(len(logs), 1)
- def test_03_copy_res_partner_logging_old_api(self):
- """ Perform the same test as 02 but with the old API """
- self.registry('res.partner').onchange_type(
- self.cr, self.uid, self.partner.id, False)
- logs = self.env['auditlog.log'].search([
- ('res_id', '=', self.partner.id),
- ('model_id', '=', self.partner_model.id),
- ('method', '=', 'onchange_type')
- ])
- self.assertEqual(len(logs), 1)
|