11# Copyright 2025 Therp BV <https://therp.nl>.
22# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
3+ from email .utils import parseaddr
4+
35from .common import CompanyAwareSenderCase
46
57
68class TestCompanyAwareSender (CompanyAwareSenderCase ):
9+ def _assert_email (self , email_from , expected_email , expected_name = None ):
10+ """Assert email_from matches expected parts, tolerant to quoting differences."""
11+ name , email = parseaddr (email_from or "" )
12+ self .assertEqual (email , expected_email )
13+ if expected_name is not None :
14+ self .assertEqual (name , expected_name )
15+
716 def test_nothing_changed (self ):
817 # Check with default user and author (current user).
918 mail_thread = (
@@ -13,12 +22,12 @@ def test_nothing_changed(self):
1322 )
1423 author_id , email_from = mail_thread ._message_compute_author (None , None )
1524 self .assertEqual (author_id , self .partner_charles .id )
16- self .assertEqual (email_from , '" Charles Le Magne" <charlemagne@therp.nl>' )
25+ self ._assert_email (email_from , "charlemagne@therp.nl" , " Charles Le Magne" )
1726 author_id , email_from = mail_thread ._message_compute_author (
1827 None , '"Unknown Person" <unknown.person@example.com>'
1928 )
2029 self .assertEqual (author_id , False )
21- self .assertEqual (email_from , '"Unknown Person" < unknown.person@example.com>' )
30+ self ._assert_email (email_from , " unknown.person@example.com" , "Unknown Person" )
2231
2332 def test_company_overwrite (self ):
2433 # Check with default user and author (current user).
@@ -30,25 +39,25 @@ def test_company_overwrite(self):
3039 # Should not work if domain not whitelisted.
3140 author_id , email_from = mail_thread ._message_compute_author (None , None )
3241 self .assertEqual (author_id , self .partner_charles .id )
33- self .assertEqual (email_from , '" Charles Le Magne" <charlemagne@therp.nl>' )
42+ self ._assert_email (email_from , "charlemagne@therp.nl" , " Charles Le Magne" )
3443 # Whitelist domain.
3544 self .mail_server .write (
3645 {"domain_whitelist" : "therp.nl,kingdom.fr,imperiumromanum.org" }
3746 )
3847 author_id , email_from = mail_thread ._message_compute_author (None , None )
3948 self .assertEqual (author_id , self .partner_charles .id )
40- self .assertEqual (email_from , "charlemagne@imperiumromanum.org" )
49+ self ._assert_email (email_from , "charlemagne@imperiumromanum.org" )
4150 self .company_imperium .write ({"format_email" : True })
4251 author_id , email_from = mail_thread ._message_compute_author (None , None )
4352 self .assertEqual (author_id , self .partner_charles .id )
44- self .assertEqual (
45- email_from , '" Charles Le Magne" <charlemagne@imperiumromanum.org>'
53+ self ._assert_email (
54+ email_from , "charlemagne@imperiumromanum.org" , " Charles Le Magne"
4655 )
4756 # Now opt out for the override.
4857 self .partner_charles .write ({"fixed_email" : True })
4958 author_id , email_from = mail_thread ._message_compute_author (None , None )
5059 self .assertEqual (author_id , self .partner_charles .id )
51- self .assertEqual (email_from , '" Charles Le Magne" <charlemagne@therp.nl>' )
60+ self ._assert_email (email_from , "charlemagne@therp.nl" , " Charles Le Magne" )
5261
5362 def test_get_sender_from_object (self ):
5463 # Whitelist domain.
@@ -60,4 +69,4 @@ def test_get_sender_from_object(self):
6069 himiltrude = self .partner_himiltrude .sudo ().with_company (main_company )
6170 # Make sure user and company from object used.
6271 email_from = self .env .user .sudo ().get_company_aware_email (himiltrude )
63- self .assertEqual (email_from , "charlemagne@imperiumromanum.org" )
72+ self ._assert_email (email_from , "charlemagne@imperiumromanum.org" )
0 commit comments