40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
import werkzeug.urls
|
|
|
|
from odoo.tests.common import users
|
|
from odoo.addons.mass_mailing_sms.tests.common import MassSMSCommon
|
|
from odoo.tests import HttpCase
|
|
|
|
class TestMailingListSms(HttpCase, MassSMSCommon):
|
|
|
|
@users('user_marketing')
|
|
def test_controller_unsubscribe(self):
|
|
""" Test unsubscribe controller from a phone number, including phone
|
|
formatting and validation """
|
|
partner = self.env['res.partner'].create({
|
|
'name': 'Test Partner',
|
|
'phone': '+91 1234657890',
|
|
})
|
|
|
|
mailing = self.env['mailing.mailing'].create({
|
|
'name': 'TestMailing',
|
|
'body_plaintext': 'Coucou hibou',
|
|
'mailing_type': 'sms',
|
|
'mailing_model_id': self.env['ir.model']._get_id('res.partner'),
|
|
'mailing_domain': [('id', '=', partner.id)],
|
|
'subject': 'Test',
|
|
'sms_allow_unsubscribe': True,
|
|
})
|
|
mailing.action_send_sms()
|
|
|
|
trace = mailing.mailing_trace_ids.filtered(lambda t: t.res_id == partner.id)
|
|
self.assertTrue(trace, 'Trace not found for the partner')
|
|
|
|
unsubscribe_url = werkzeug.urls.url_join(mailing.get_base_url(), f'/sms/{mailing.id}/unsubscribe/{trace.sms_code}')
|
|
response = self.opener.get(url=unsubscribe_url, data={'sms_number': trace.sms_number})
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
self.assertTrue(partner.phone_blacklisted, 'Partner not unsubscribed')
|