summaryrefslogtreecommitdiff
path: root/addons/test_mass_mailing/tests/test_blacklist.py
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/test_mass_mailing/tests/test_blacklist.py
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/test_mass_mailing/tests/test_blacklist.py')
-rw-r--r--addons/test_mass_mailing/tests/test_blacklist.py165
1 files changed, 165 insertions, 0 deletions
diff --git a/addons/test_mass_mailing/tests/test_blacklist.py b/addons/test_mass_mailing/tests/test_blacklist.py
new file mode 100644
index 00000000..c00a752c
--- /dev/null
+++ b/addons/test_mass_mailing/tests/test_blacklist.py
@@ -0,0 +1,165 @@
+# -*- 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.TestMassMailCommon):
+
+ @classmethod
+ def setUpClass(cls):
+ super(TestBLAccessRights, cls).setUpClass()
+ cls._create_portal_user()
+
+ cls.bl_rec = cls.env['mail.blacklist'].create([
+ {'email': 'Not A Stark <john.snow@example.com>'},
+ ])
+ cls.bl_previous = cls.env['mail.blacklist'].search([])
+
+ @users('employee')
+ def test_bl_crud_employee(self):
+ with self.assertRaises(AccessError):
+ self.env['mail.blacklist'].create([{'email': 'Arya.Stark@example.com'}])
+
+ with self.assertRaises(AccessError):
+ self.bl_rec.with_user(self.env.user).read([])
+
+ with self.assertRaises(AccessError):
+ self.bl_rec.with_user(self.env.user).write({'email': 'jaimie.lannister@example.com'})
+
+ with self.assertRaises(AccessError):
+ self.bl_rec.with_user(self.env.user).unlink()
+
+ @users('portal_test')
+ def test_bl_crud_portal(self):
+ with self.assertRaises(AccessError):
+ self.env['mail.blacklist'].create([{'email': 'Arya.Stark@example.com'}])
+
+ with self.assertRaises(AccessError):
+ self.bl_rec.with_user(self.env.user).read([])
+
+ with self.assertRaises(AccessError):
+ self.bl_rec.with_user(self.env.user).write({'email': 'jaimie.lannister@example.com'})
+
+ with self.assertRaises(AccessError):
+ self.bl_rec.with_user(self.env.user).unlink()
+
+ @users('user_marketing')
+ def test_bl_crud_marketing(self):
+ self.env['mail.blacklist'].create([{'email': 'Arya.Stark@example.com'}])
+
+ read_res = self.bl_rec.with_user(self.env.user).read([])
+ self.assertEqual(read_res[0]['id'], self.bl_rec.id)
+
+ self.bl_rec.with_user(self.env.user).write({'email': 'jaimie.lannister@example.com'})
+ self.assertEqual(self.bl_rec.email, 'jaimie.lannister@example.com')
+
+ self.bl_rec.with_user(self.env.user).unlink()
+
+
+class TestBLConsistency(common.TestMassMailCommon):
+ _base_list = ['Arya.Stark@example.com', 'ned.stark@example.com']
+
+ def setUp(self):
+ super(TestBLConsistency, self).setUp()
+ self.bl_rec = self.env['mail.blacklist'].create([
+ {'email': 'Not A Stark <john.snow@example.com>'},
+ ])
+
+ self.bl_previous = self.env['mail.blacklist'].search([])
+
+ @users('user_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': 'arya.stark@example.com',
+ 'active': False,
+ })
+
+ added = self.env['mail.blacklist']._add('Arya.Stark@EXAMPLE.com')
+ self.assertEqual(existing, added)
+ self.assertTrue(existing.active)
+
+ @users('user_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': 'arya.stark@example.com',
+ 'active': True,
+ })
+
+ added = self.env['mail.blacklist']._remove('Arya.Stark@EXAMPLE.com')
+ self.assertEqual(existing, added)
+ self.assertFalse(existing.active)
+
+ @users('user_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('user_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 <jaimie.lannister@example.com>'},
+ ])
+
+ 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 + ['jaimie.lannister@example.com']),
+ set(v.lower() for v in new_bl.mapped('email'))
+ )
+
+ @users('user_marketing')
+ def test_bl_search_exact(self):
+ search_res = self.env['mail.blacklist'].search([('email', '=', 'john.snow@example.com')])
+ self.assertEqual(search_res, self.bl_rec)
+
+ @users('user_marketing')
+ def test_bl_search_parsing(self):
+ search_res = self.env['mail.blacklist'].search([('email', '=', 'Not A Stark <john.snow@example.com>')])
+
+ self.assertEqual(search_res, self.bl_rec)
+
+ search_res = self.env['mail.blacklist'].search([('email', '=', '"John J. Snow" <john.snow@example.com>')])
+ self.assertEqual(search_res, self.bl_rec)
+
+ search_res = self.env['mail.blacklist'].search([('email', '=', 'Aegon? <john.snow@example.com>')])
+ self.assertEqual(search_res, self.bl_rec)
+
+ search_res = self.env['mail.blacklist'].search([('email', '=', '"John; \"You know Nothing\" Snow" <john.snow@example.com>')])
+ self.assertEqual(search_res, self.bl_rec)
+
+ @users('user_marketing')
+ def test_bl_search_case(self):
+ search_res = self.env['mail.blacklist'].search([('email', '=', 'john.SNOW@example.COM>')])
+ self.assertEqual(search_res, self.bl_rec)
+
+ @users('user_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', 'n.SNOW@example.cO>')])
+ self.assertEqual(search_res, self.bl_rec)