[REF] various: use helper to create tests users

PURPOSE

Lessen use of mail-specific calls and variables

SPECIFICATIONS

Use mail_new_test_user tool in tests, lessening use of mail-specific context
keys in tests.

LINKS

Task ID-2326281 (context keys use cleaning)
PR odoo/odoo#56631
PR odoo/enterprise#12707

X-original-commit: 910559c092dc7dfa00b91339a5423e16cd4668e1
This commit is contained in:
Thibault Delavallée
2020-08-28 07:59:23 +00:00
parent f5c6f14bb1
commit 1404af789c
14 changed files with 156 additions and 173 deletions
+1 -14
View File
@@ -7,9 +7,7 @@ from unittest.mock import patch
from odoo import exceptions
from odoo.addons.iap.tools import iap_tools
from odoo.addons.crm_iap_lead_enrich.models.iap_enrich_api import IapEnrichAPI
from odoo.tests import common, new_test_user
crm_new_test_user = partial(new_test_user, context={'mail_create_nolog': True, 'mail_create_nosubscribe': True, 'mail_notrack': True, 'no_reset_password': True})
from odoo.tests import common
class MockIAPEnrich(common.BaseCase):
@@ -51,14 +49,3 @@ class MockIAPEnrich(common.BaseCase):
yield
finally:
pass
class CrmCase(common.SavepointCase):
@classmethod
def setUpClass(cls):
super(CrmCase, cls).setUpClass()
cls.sales_manager = crm_new_test_user(
cls.env, login='sales_manager', groups='base.group_user,sales_team.group_sale_manager',
name='Martine SalesManager', email='"Martine SalesManager" <martine@example.com>')
@@ -1,11 +1,12 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.addons.crm_iap_lead_enrich.tests import common as crm_iap_lead_enrich_common
from odoo.addons.crm.tests.common import TestCrmCommon
from odoo.addons.crm_iap_lead_enrich.tests.common import MockIAPEnrich
from odoo.tests.common import users
class TestLeadEnrich(crm_iap_lead_enrich_common.CrmCase, crm_iap_lead_enrich_common.MockIAPEnrich):
class TestLeadEnrich(TestCrmCommon, MockIAPEnrich):
@classmethod
def setUpClass(cls):
@@ -18,7 +19,7 @@ class TestLeadEnrich(crm_iap_lead_enrich_common.CrmCase, crm_iap_lead_enrich_com
'email_from': 'test_mail_%s@example.com' % x
})
@users('sales_manager')
@users('user_sales_manager')
def test_enrich_internals(self):
leads = self.env['crm.lead'].browse(self.leads.ids)
leads[0].write({'partner_name': 'Already set', 'email_from': 'test@test1'})
@@ -41,7 +42,7 @@ class TestLeadEnrich(crm_iap_lead_enrich_common.CrmCase, crm_iap_lead_enrich_com
# with self.mockIAPEnrichGateway(sim_error='credit'):
# leads.iap_enrich()
@users('sales_manager')
@users('user_sales_manager')
def test_enrich_error_jsonrpc_exception(self):
leads = self.env['crm.lead'].browse(self.leads.ids)
with self.mockIAPEnrichGateway(sim_error='jsonrpc_exception'):
@@ -6,6 +6,7 @@ from dateutil.relativedelta import relativedelta
from unittest.mock import patch
from odoo import exceptions, fields
from odoo.addons.mail.tests.common import mail_new_test_user
from odoo.tests import common
@@ -14,26 +15,24 @@ class TestKarmaTrackingCommon(common.SavepointCase):
@classmethod
def setUpClass(cls):
super(TestKarmaTrackingCommon, cls).setUpClass()
cls.test_user = cls.env['res.users'].with_context(no_reset_password=True, mail_create_nosubscribe=True).create({
'name': 'Test User',
'login': 'test',
'email': 'test@example.com',
'karma': 0,
'groups_id': [(4, cls.env.ref('base.group_user').id)]
})
cls.test_user_2 = cls.env['res.users'].with_context(no_reset_password=True, mail_create_nosubscribe=True).create({
'name': 'Test User 2',
'login': 'test2',
'email': 'test2@example.com',
'karma': 0,
'groups_id': [(4, cls.env.ref('base.group_user').id)]
})
cls.test_user = mail_new_test_user(
cls.env, login='test',
name='Test User', email='test@example.com',
karma=0,
groups='base.group_user',
)
cls.test_user_2 = mail_new_test_user(
cls.env, login='test2',
name='Test User 2', email='test2@example.com',
karma=0,
groups='base.group_user',
)
cls.env['gamification.karma.tracking'].search([]).unlink()
cls.test_date = fields.Date.today() + relativedelta(month=4, day=1)
@classmethod
def _create_trackings(cls, user, karma, steps, date, days_delta=1):
def _create_trackings(cls, user, karma, steps, track_date, days_delta=1):
old_value = user.karma
for step in range(steps):
new_value = old_value + karma
@@ -42,10 +41,10 @@ class TestKarmaTrackingCommon(common.SavepointCase):
'old_value': old_value,
'new_value': new_value,
'consolidated': False,
'tracking_date': fields.Date.to_string(date)
'tracking_date': fields.Date.to_string(track_date)
}])
old_value = new_value
date = date + relativedelta(days=days_delta)
track_date = track_date + relativedelta(days=days_delta)
def test_computation_gain(self):
self._create_trackings(self.test_user, 20, 2, self.test_date, days_delta=30)
@@ -209,11 +208,12 @@ class TestComputeRankCommon(common.SavepointCase):
cls.users = cls.env['res.users']
for k in range(-5, 1030, 30):
cls.users += cls.env['res.users'].with_context(no_reset_password=True, mail_create_nosubscribe=True).create({
'name': str(k),
'login': "test_recompute_rank_%s" % k,
'karma': k,
})
cls.users += mail_new_test_user(
cls.env,
name=str(k),
login="test_recompute_rank_%s" % k,
karma=k,
)
cls.env['gamification.karma.rank'].search([]).unlink()
+19 -18
View File
@@ -2,6 +2,7 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
from odoo.addons.mail.tests.common import mail_new_test_user
class TestExpenseCommon(AccountTestInvoicingCommon):
@@ -10,26 +11,26 @@ class TestExpenseCommon(AccountTestInvoicingCommon):
def setUpClass(cls, chart_template_ref=None):
super().setUpClass(chart_template_ref=chart_template_ref)
Users = cls.env['res.users'].with_context({'no_reset_password': True, 'mail_create_nosubscribe': True, 'mail_create_nolog': True})
group_user = cls.env.ref('base.group_user')
group_expense_manager = cls.env.ref('hr_expense.group_hr_expense_manager')
cls.expense_user_employee = Users.create({
'name': 'expense_user_employee',
'login': 'expense_user_employee',
'email': 'expense_user_employee@example.com',
'notification_type': 'email',
'groups_id': [(6, 0, group_user.ids)],
'company_ids': [(6, 0, cls.env.companies.ids)],
})
cls.expense_user_manager = Users.create({
'name': 'Expense manager',
'login': 'expense_manager_1',
'email': 'expense_manager_1@example.com',
'notification_type': 'email',
'groups_id': [(6, 0, (group_user + group_expense_manager).ids)],
'company_ids': [(6, 0, cls.env.companies.ids)],
})
cls.expense_user_employee = mail_new_test_user(
cls.env,
name='expense_user_employee',
login='expense_user_employee',
email='expense_user_employee@example.com',
notification_type='email',
groups='base.group_user',
company_ids=[(6, 0, cls.env.companies.ids)],
)
cls.expense_user_manager = mail_new_test_user(
cls.env,
name='Expense manager',
login='expense_manager_1',
email='expense_manager_1@example.com',
notification_type='email',
groups='base.group_user,hr_expense.group_hr_expense_manager',
company_ids=[(6, 0, cls.env.companies.ids)],
)
cls.expense_employee = cls.env['hr.employee'].create({
'name': 'expense_employee',
+17 -27
View File
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
from odoo.tests import Form
from odoo.addons.mail.tests.common import mail_new_test_user
from odoo.addons.stock.tests import common2
@@ -53,39 +54,28 @@ class TestMrpCommon(common2.TestStockCommon):
def setUpClass(cls):
super(TestMrpCommon, cls).setUpClass()
# Fetch mrp-related user groups
user_group_stock_user = cls.env.ref('stock.group_stock_user')
user_group_mrp_user = cls.env.ref('mrp.group_mrp_user')
user_group_mrp_manager = cls.env.ref('mrp.group_mrp_manager')
user_group_mrp_byproducts = cls.env.ref('mrp.group_mrp_byproducts')
# Update demo products
(cls.product_2 | cls.product_3 | cls.product_4 | cls.product_5 | cls.product_6 | cls.product_7_3 | cls.product_8).write({
'type': 'product',
})
# User Data: mrp user and mrp manager
Users = cls.env['res.users'].with_context({'no_reset_password': True, 'mail_create_nosubscribe': True})
cls.user_mrp_user = Users.create({
'name': 'Hilda Ferachwal',
'login': 'hilda',
'email': 'h.h@example.com',
'notification_type': 'inbox',
'groups_id': [(6, 0, [
user_group_mrp_user.id,
user_group_stock_user.id,
user_group_mrp_byproducts.id
])]})
cls.user_mrp_manager = Users.create({
'name': 'Gary Youngwomen',
'login': 'gary',
'email': 'g.g@example.com',
'notification_type': 'inbox',
'groups_id': [(6, 0, [
user_group_mrp_manager.id,
user_group_stock_user.id,
user_group_mrp_byproducts.id
])]})
cls.user_mrp_user = mail_new_test_user(
cls.env,
name='Hilda Ferachwal',
login='hilda',
email='h.h@example.com',
notification_type='inbox',
groups='mrp.group_mrp_user, stock.group_stock_user, mrp.group_mrp_byproducts',
)
cls.user_mrp_manager = mail_new_test_user(
cls.env,
name='Gary Youngwomen',
login='gary',
email='g.g@example.com',
notification_type='inbox',
groups='mrp.group_mrp_manager, stock.group_stock_user, mrp.group_mrp_byproducts',
)
cls.workcenter_1 = cls.env['mrp.workcenter'].create({
'name': 'Nuclear Workcenter',
@@ -3,7 +3,9 @@
from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
from odoo import fields
from odoo.addons.mail.tests.common import mail_new_test_user
from odoo.addons.stock.tests.common import TestStockCommon
from odoo.tests.common import Form
@@ -474,12 +476,13 @@ class TestStockProductionLot(TestStockCommon):
""" Try to edit removal_date with the inventory mode.
"""
user_group_stock_manager = self.env.ref('stock.group_stock_manager')
self.demo_user = self.env['res.users'].with_context({'no_reset_password': True, 'mail_create_nosubscribe': True}).create({
'name': 'Demo user',
'login': 'userdemo',
'email': 'd.d@example.com',
'groups_id': [(6, 0, [user_group_stock_manager.id])]
})
self.demo_user = mail_new_test_user(
self.env,
name='Demo user',
login='userdemo',
email='d.d@example.com',
groups='stock.group_stock_manager',
)
lot_form = Form(self.LotObj)
lot_form.name = 'LOT001'
lot_form.product_id = self.apple_product
@@ -3,6 +3,7 @@
from datetime import date, datetime, timedelta
from odoo.addons.mail.tests.common import mail_new_test_user
from odoo.addons.product.tests import common
from odoo.tests import Form
from odoo.tools import DEFAULT_SERVER_DATETIME_FORMAT
@@ -15,15 +16,15 @@ class TestCreatePicking(common.TestProductCommon):
self.partner_id = self.env['res.partner'].create({'name': 'Wood Corner Partner'})
self.product_id_1 = self.env['product.product'].create({'name': 'Large Desk'})
self.product_id_2 = self.env['product.product'].create({'name': 'Conference Chair'})
res_users_purchase_user = self.env.ref('purchase.group_purchase_user')
Users = self.env['res.users'].with_context({'no_reset_password': True, 'mail_create_nosubscribe': True})
self.user_purchase_user = Users.create({
'name': 'Pauline Poivraisselle',
'login': 'pauline',
'email': 'pur@example.com',
'notification_type': 'inbox',
'groups_id': [(6, 0, [res_users_purchase_user.id])]})
self.user_purchase_user = mail_new_test_user(
self.env,
name='Pauline Poivraisselle',
login='pauline',
email='pur@example.com',
notification_type='inbox',
groups='purchase.group_purchase_user',
)
self.po_vals = {
'partner_id': self.partner_id.id,
+5 -8
View File
@@ -1,14 +1,11 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.addons.mail.tests.common import mail_new_test_user
from odoo.exceptions import AccessError
from odoo.tests import tagged, common, new_test_user
from odoo.tools import mute_logger
from functools import partial
rating_new_test_user = partial(new_test_user, context={'mail_create_nolog': True, 'mail_create_nosubscribe': True, 'mail_notrack': True, 'no_reset_password': True})
@tagged('security')
class TestAccessRating(common.SavepointCase):
@@ -17,22 +14,22 @@ class TestAccessRating(common.SavepointCase):
def setUpClass(cls):
super(TestAccessRating, cls).setUpClass()
cls.user_manager_partner = rating_new_test_user(
cls.user_manager_partner = mail_new_test_user(
cls.env, name='Jean Admin', login='user_mana', email='admin@example.com',
groups='base.group_partner_manager,base.group_system'
)
cls.user_emp = rating_new_test_user(
cls.user_emp = mail_new_test_user(
cls.env, name='Eglantine Employee', login='user_emp', email='employee@example.com',
groups='base.group_user'
)
cls.user_portal = rating_new_test_user(
cls.user_portal = mail_new_test_user(
cls.env, name='Patrick Portal', login='user_portal', email='portal@example.com',
groups='base.group_portal'
)
cls.user_public = rating_new_test_user(
cls.user_public = mail_new_test_user(
cls.env, name='Pauline Public', login='user_public', email='public@example.com',
groups='base.group_public'
)
+21 -20
View File
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.addons.mail.tests.common import mail_new_test_user
from odoo.addons.sale.tests.common import TestSaleCommon
@@ -10,26 +11,26 @@ class TestCommonSaleTimesheet(TestSaleCommon):
def setUpClass(cls, chart_template_ref=None):
super().setUpClass(chart_template_ref=chart_template_ref)
group_employee = cls.env.ref('base.group_user')
Users = cls.env['res.users'].with_context({'no_reset_password': True, 'mail_create_nosubscribe': True, 'mail_create_nolog': True})
cls.user_employee_company_B = Users.create({
'name': 'Gregor Clegane Employee',
'login': 'gregor',
'email': 'gregor@example.com',
'notification_type': 'email',
'groups_id': [(6, 0, [group_employee.id])],
'company_id': cls.company_data_2['company'].id,
'company_ids': [cls.company_data_2['company'].id],
})
cls.user_manager_company_B = Users.create({
'name': 'Cersei Lannister Manager',
'login': 'cersei',
'email': 'cersei@example.com',
'notification_type': 'email',
'groups_id': [(6, 0, [group_employee.id])],
'company_id': cls.company_data_2['company'].id,
'company_ids': [cls.company_data_2['company'].id, cls.env.company.id],
})
cls.user_employee_company_B = mail_new_test_user(
cls.env,
name='Gregor Clegane Employee',
login='gregor',
email='gregor@example.com',
notification_type='email',
groups='base.group_user',
company_id=cls.company_data_2['company'].id,
company_ids=[cls.company_data_2['company'].id],
)
cls.user_manager_company_B = mail_new_test_user(
cls.env,
name='Cersei Lannister Manager',
login='cersei',
email='cersei@example.com',
notification_type='email',
groups='base.group_user',
company_id=cls.company_data_2['company'].id,
company_ids=[cls.company_data_2['company'].id, cls.env.company.id],
)
cls.employee_user = cls.env['hr.employee'].create({
'name': 'Employee User',
+17 -18
View File
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from odoo.addons.mail.tests.common import mail_new_test_user
from odoo.addons.product.tests import common
@@ -19,25 +20,23 @@ class TestStockCommon(common.TestProductCommon):
def setUpClass(cls):
super(TestStockCommon, cls).setUpClass()
# Fetch stock-related user groups
user_group_employee = cls.env.ref('base.group_user')
user_group_stock_user = cls.env.ref('stock.group_stock_user')
user_group_stock_manager = cls.env.ref('stock.group_stock_manager')
# User Data: stock user and stock manager
Users = cls.env['res.users'].with_context({'no_reset_password': True, 'mail_create_nosubscribe': True})
cls.user_stock_user = Users.create({
'name': 'Pauline Poivraisselle',
'login': 'pauline',
'email': 'p.p@example.com',
'notification_type': 'inbox',
'groups_id': [(6, 0, [user_group_stock_user.id])]})
cls.user_stock_manager = Users.create({
'name': 'Julie Tablier',
'login': 'julie',
'email': 'j.j@example.com',
'notification_type': 'inbox',
'groups_id': [(6, 0, [user_group_stock_manager.id])]})
cls.user_stock_user = mail_new_test_user(
cls.env,
name='Pauline Poivraisselle',
login='pauline',
email='p.p@example.com',
notification_type='inbox',
groups='stock.group_stock_user',
)
cls.user_stock_manager = mail_new_test_user(
cls.env,
name='Julie Tablier',
login='julie',
email='j.j@example.com',
notification_type='inbox',
groups='stock.group_stock_manager',
)
# Warehouses
cls.warehouse_1 = cls.env['stock.warehouse'].create({
+17 -15
View File
@@ -4,6 +4,7 @@
from contextlib import closing
from datetime import datetime, timedelta
from odoo.addons.mail.tests.common import mail_new_test_user
from odoo.exceptions import ValidationError
from odoo.tests.common import SavepointCase
from odoo.exceptions import AccessError, UserError
@@ -13,21 +14,22 @@ class StockQuant(SavepointCase):
@classmethod
def setUpClass(cls):
super(StockQuant, cls).setUpClass()
Users = cls.env['res.users'].with_context({'no_reset_password': True, 'mail_create_nosubscribe': True})
cls.demo_user = Users.create({
'name': 'Pauline Poivraisselle',
'login': 'pauline',
'email': 'p.p@example.com',
'notification_type': 'inbox',
'groups_id': [(6, 0, [cls.env.ref('base.group_user').id])]
})
cls.stock_user = Users.create({
'name': 'Pauline Poivraisselle',
'login': 'pauline2',
'email': 'p.p@example.com',
'notification_type': 'inbox',
'groups_id': [(6, 0, [cls.env.ref('stock.group_stock_user').id])]
})
cls.demo_user = mail_new_test_user(
cls.env,
name='Pauline Poivraisselle',
login='pauline',
email='p.p@example.com',
notification_type='inbox',
groups='base.group_user',
)
cls.stock_user = mail_new_test_user(
cls.env,
name='Pauline Poivraisselle',
login='pauline2',
email='p.p@example.com',
notification_type='inbox',
groups='stock.group_stock_user',
)
cls.product = cls.env['product.product'].create({
'name': 'Product A',
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.addons.mail.tests.common import mail_new_test_user
from odoo.tests.common import SavepointCase
from odoo.exceptions import AccessError, UserError
@@ -197,12 +198,13 @@ class TestEditableQuant(SavepointCase):
""" Try to edit a record without the inventory mode.
Must raise an error.
"""
self.demo_user = self.env['res.users'].with_context({'no_reset_password': True, 'mail_create_nosubscribe': True}).create({
'name': 'Pauline Poivraisselle',
'login': 'pauline',
'email': 'p.p@example.com',
'groups_id': [(6, 0, [self.env.ref('base.group_user').id])]
})
self.demo_user = mail_new_test_user(
self.env,
name='Pauline Poivraisselle',
login='pauline',
email='p.p@example.com',
groups='base.group_user',
)
user_admin = self.env.ref('base.user_admin')
quant = self.Quant.create({
'product_id': self.product.id,
@@ -1,10 +1,10 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from functools import partial
from datetime import datetime, timedelta
from odoo.tests import HttpCase, new_test_user, tagged
from odoo.addons.mail.tests.common import mail_new_test_user
from odoo.tests import HttpCase, tagged
from odoo.tools import mute_logger
@@ -29,18 +29,17 @@ class TestWebsiteEventAccess(HttpCase):
'date_end': datetime.today() + timedelta(days=1),
}])
event_new_test_user = partial(new_test_user, context={'mail_create_nolog': True, 'mail_create_nosubscribe': True, 'mail_notrack': True, 'no_reset_password': True})
self.event_manager = event_new_test_user(
self.event_manager = mail_new_test_user(
self.env, name='Gandalf le blanc', login='event_manager', password='event_manager', email='event.manager@example.com',
groups='event.group_event_manager,base.group_user'
)
self.event_user = event_new_test_user(
self.event_user = mail_new_test_user(
self.env, name='Frodon Sacquet', login='event_user', password='event_user', email='event.user@example.com',
groups='event.group_event_user,base.group_user'
)
self.portal_user = event_new_test_user(
self.portal_user = mail_new_test_user(
self.env, name='Smeagol', login='user_portal', password='user_portal', email='portal@example.com',
groups='base.group_portal'
)
+1 -1
View File
@@ -132,7 +132,7 @@ def new_test_user(env, login='', groups='base.group_user', context=None, **kwarg
if context is None:
context = {}
groups_id = [(6, 0, [env.ref(g).id for g in groups.split(',')])]
groups_id = [(6, 0, [env.ref(g.strip()).id for g in groups.split(',')])]
create_values = dict(kwargs, login=login, groups_id=groups_id)
if not create_values.get('name'):
create_values['name'] = '%s (%s)' % (login, groups)