-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[IMP] test_mass_mailing: add blacklist tests
Purpose of this commit is to enforce blacklist use and base mechanisms. This commit may break on runbot as fixes will come after having introduced tests. It notably add tests for a8ce59c. This commit is related to task ID 33224 (original blacklist implementation done for v12) and its PR odoo#25966 as well as task ID 1889703 (tests and fixes) and its PR odoo#27330. Done with collaboration of @dbeguin.
- Loading branch information
1 parent
fca1654
commit 3922832
Showing
2 changed files
with
116 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,4 @@ | ||
# -*- coding: utf-8 -*- | ||
# Part of Odoo. See LICENSE file for full copyright and licensing details. | ||
|
||
from . import test_blacklist |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
# -*- coding: utf-8 -*- | ||
# Part of Odoo. See LICENSE file for full copyright and licensing details. | ||
|
||
from odoo.tests.common import users | ||
from odoo.addons.test_mass_mailing.tests import common | ||
from odoo.exceptions import AccessError | ||
|
||
|
||
class TestBLAccessRights(common.MassMailingCase): | ||
|
||
@users('emp') | ||
def test_bl_create_employee(self): | ||
with self.assertRaises(AccessError): | ||
self.env['mail.blacklist'].create([{'email': '[email protected]'}]) | ||
|
||
@users('marketing') | ||
def test_bl_create_marketing(self): | ||
self.env['mail.blacklist'].create([{'email': '[email protected]'}]) | ||
|
||
|
||
class TestBLConsistency(common.MassMailingCase): | ||
_base_list = ['[email protected]', '[email protected]'] | ||
|
||
def setUp(self): | ||
super(TestBLConsistency, self).setUp() | ||
self.bl_rec = self.env['mail.blacklist'].create([ | ||
{'email': 'Not A Stark <[email protected]>'}, | ||
]) | ||
|
||
self.bl_previous = self.env['mail.blacklist'].search([]) | ||
|
||
@users('marketing') | ||
def test_bl_check_case_add(self): | ||
""" Test emails case when adding through _add """ | ||
bl_sudo = self.env['mail.blacklist'].sudo() | ||
existing = bl_sudo.create({ | ||
'email': '[email protected]', | ||
'active': False, | ||
}) | ||
|
||
added = self.env['mail.blacklist']._add('[email protected]') | ||
self.assertEqual(existing, added) | ||
self.assertTrue(existing.active) | ||
|
||
@users('marketing') | ||
def test_bl_check_case_remove(self): | ||
""" Test emails case when deactivating through _remove """ | ||
bl_sudo = self.env['mail.blacklist'].sudo() | ||
existing = bl_sudo.create({ | ||
'email': '[email protected]', | ||
'active': True, | ||
}) | ||
|
||
added = self.env['mail.blacklist']._remove('[email protected]') | ||
self.assertEqual(existing, added) | ||
self.assertFalse(existing.active) | ||
|
||
@users('marketing') | ||
def test_bl_create_duplicate(self): | ||
""" Test emails are inserted only once if duplicated """ | ||
bl_sudo = self.env['mail.blacklist'].sudo() | ||
self.env['mail.blacklist'].create([ | ||
{'email': self._base_list[0]}, | ||
{'email': self._base_list[1]}, | ||
{'email': 'Another Ned Stark <%s>' % self._base_list[1]}, | ||
]) | ||
|
||
new_bl = bl_sudo.search([('id', 'not in', self.bl_previous.ids)]) | ||
|
||
self.assertEqual(len(new_bl), 2) | ||
self.assertEqual( | ||
set(v.lower() for v in self._base_list), | ||
set(v.lower() for v in new_bl.mapped('email')) | ||
) | ||
|
||
@users('marketing') | ||
def test_bl_create_parsing(self): | ||
""" Test email is correctly extracted from given entries """ | ||
bl_sudo = self.env['mail.blacklist'].sudo() | ||
self.env['mail.blacklist'].create([ | ||
{'email': self._base_list[0]}, | ||
{'email': self._base_list[1]}, | ||
{'email': 'Not Ned Stark <[email protected]>'}, | ||
]) | ||
|
||
new_bl = bl_sudo.search([('id', 'not in', self.bl_previous.ids)]) | ||
|
||
self.assertEqual(len(new_bl), 3) | ||
self.assertEqual( | ||
set(v.lower() for v in self._base_list + ['[email protected]']), | ||
set(v.lower() for v in new_bl.mapped('email')) | ||
) | ||
|
||
@users('marketing') | ||
def test_bl_search_exact(self): | ||
search_res = self.env['mail.blacklist'].search([('email', '=', '[email protected]')]) | ||
self.assertEqual(search_res, self.bl_rec) | ||
|
||
@users('marketing') | ||
def test_bl_search_parsing(self): | ||
search_res = self.env['mail.blacklist'].search([('email', '=', 'Not A Stark <[email protected]>')]) | ||
self.assertEqual(search_res, self.bl_rec) | ||
|
||
@users('marketing') | ||
def test_bl_search_case(self): | ||
search_res = self.env['mail.blacklist'].search([('email', '=', '[email protected]>')]) | ||
self.assertEqual(search_res, self.bl_rec) | ||
|
||
@users('marketing') | ||
def test_bl_search_partial(self): | ||
search_res = self.env['mail.blacklist'].search([('email', 'ilike', 'John')]) | ||
self.assertEqual(search_res, self.bl_rec) | ||
search_res = self.env['mail.blacklist'].search([('email', 'ilike', '[email protected]>')]) | ||
self.assertEqual(search_res, self.bl_rec) |