Odoo18-Base/addons/mass_mailing_sms/tests/test_mailing_controllers.py
2025-01-06 10:57:38 +07:00

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')