mirror of
https://github.com/caronc/apprise.git
synced 2024-11-21 23:53:23 +01:00
Added test cases to verify +/plus is supported in to emails (#779)
This commit is contained in:
parent
5f0e9e4c74
commit
647962b3d6
@ -1360,3 +1360,144 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl):
|
||||
user, pw = response.login.call_args[0]
|
||||
assert pw == 'abc123'
|
||||
assert user == 'joe@mydomain.nl'
|
||||
|
||||
|
||||
@mock.patch('smtplib.SMTP_SSL')
|
||||
@mock.patch('smtplib.SMTP')
|
||||
def test_plugin_email_plus_in_toemail(mock_smtp, mock_smtp_ssl):
|
||||
"""
|
||||
NotifyEmail() support + in To Email address
|
||||
|
||||
"""
|
||||
|
||||
response = mock.Mock()
|
||||
mock_smtp_ssl.return_value = response
|
||||
mock_smtp.return_value = response
|
||||
|
||||
# We want to test the case where a + is found in the To address; we want to
|
||||
# ensure that it is supported
|
||||
results = NotifyEmail.parse_url(
|
||||
'mailtos://user:pass123@gmail.com'
|
||||
'?to=Plus Support<test+notification@gmail.com>')
|
||||
assert isinstance(results, dict)
|
||||
assert 'user' == results['user']
|
||||
assert 'gmail.com' == results['host']
|
||||
assert 'pass123' == results['password']
|
||||
assert results['port'] is None
|
||||
assert 'Plus Support<test+notification@gmail.com>' in results['targets']
|
||||
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
|
||||
assert len(obj.targets) == 1
|
||||
assert ('Plus Support', 'test+notification@gmail.com') in obj.targets
|
||||
|
||||
assert mock_smtp.call_count == 0
|
||||
assert mock_smtp_ssl.call_count == 0
|
||||
assert obj.notify("test") is True
|
||||
assert mock_smtp.call_count == 1
|
||||
assert mock_smtp_ssl.call_count == 0
|
||||
assert response.starttls.call_count == 1
|
||||
assert response.login.call_count == 1
|
||||
assert response.sendmail.call_count == 1
|
||||
# Store our Sent Arguments
|
||||
# Syntax is:
|
||||
# sendmail(from_addr, to_addrs, msg, mail_options=(), rcpt_options=())
|
||||
# [0] [1] [2]
|
||||
_from = response.sendmail.call_args[0][0]
|
||||
_to = response.sendmail.call_args[0][1]
|
||||
_msg = response.sendmail.call_args[0][2]
|
||||
assert _from == 'user@gmail.com'
|
||||
assert isinstance(_to, list)
|
||||
assert len(_to) == 1
|
||||
assert _to[0] == 'test+notification@gmail.com'
|
||||
assert _msg.split('\n')[-3] == 'test'
|
||||
|
||||
mock_smtp.reset_mock()
|
||||
mock_smtp_ssl.reset_mock()
|
||||
response.reset_mock()
|
||||
|
||||
#
|
||||
# Perform the same test where the To field jsut contains the + in the
|
||||
# address
|
||||
#
|
||||
results = NotifyEmail.parse_url(
|
||||
'mailtos://user:pass123@gmail.com'
|
||||
'?to=test+notification@gmail.com')
|
||||
assert isinstance(results, dict)
|
||||
assert 'user' == results['user']
|
||||
assert 'gmail.com' == results['host']
|
||||
assert 'pass123' == results['password']
|
||||
assert results['port'] is None
|
||||
assert 'test+notification@gmail.com' in results['targets']
|
||||
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
|
||||
assert len(obj.targets) == 1
|
||||
assert (False, 'test+notification@gmail.com') in obj.targets
|
||||
|
||||
assert mock_smtp.call_count == 0
|
||||
assert mock_smtp_ssl.call_count == 0
|
||||
assert obj.notify("test") is True
|
||||
assert mock_smtp.call_count == 1
|
||||
assert mock_smtp_ssl.call_count == 0
|
||||
assert response.starttls.call_count == 1
|
||||
assert response.login.call_count == 1
|
||||
assert response.sendmail.call_count == 1
|
||||
# Store our Sent Arguments
|
||||
# Syntax is:
|
||||
# sendmail(from_addr, to_addrs, msg, mail_options=(), rcpt_options=())
|
||||
# [0] [1] [2]
|
||||
_from = response.sendmail.call_args[0][0]
|
||||
_to = response.sendmail.call_args[0][1]
|
||||
_msg = response.sendmail.call_args[0][2]
|
||||
assert _from == 'user@gmail.com'
|
||||
assert isinstance(_to, list)
|
||||
assert len(_to) == 1
|
||||
assert _to[0] == 'test+notification@gmail.com'
|
||||
assert _msg.split('\n')[-3] == 'test'
|
||||
|
||||
mock_smtp.reset_mock()
|
||||
mock_smtp_ssl.reset_mock()
|
||||
response.reset_mock()
|
||||
|
||||
#
|
||||
# Perform the same test where the To field is in the URL itself
|
||||
#
|
||||
results = NotifyEmail.parse_url(
|
||||
'mailtos://user:pass123@gmail.com'
|
||||
'/test+notification@gmail.com')
|
||||
assert isinstance(results, dict)
|
||||
assert 'user' == results['user']
|
||||
assert 'gmail.com' == results['host']
|
||||
assert 'pass123' == results['password']
|
||||
assert results['port'] is None
|
||||
assert 'test+notification@gmail.com' in results['targets']
|
||||
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
|
||||
assert len(obj.targets) == 1
|
||||
assert (False, 'test+notification@gmail.com') in obj.targets
|
||||
|
||||
assert mock_smtp.call_count == 0
|
||||
assert mock_smtp_ssl.call_count == 0
|
||||
assert obj.notify("test") is True
|
||||
assert mock_smtp.call_count == 1
|
||||
assert mock_smtp_ssl.call_count == 0
|
||||
assert response.starttls.call_count == 1
|
||||
assert response.login.call_count == 1
|
||||
assert response.sendmail.call_count == 1
|
||||
# Store our Sent Arguments
|
||||
# Syntax is:
|
||||
# sendmail(from_addr, to_addrs, msg, mail_options=(), rcpt_options=())
|
||||
# [0] [1] [2]
|
||||
_from = response.sendmail.call_args[0][0]
|
||||
_to = response.sendmail.call_args[0][1]
|
||||
_msg = response.sendmail.call_args[0][2]
|
||||
assert _from == 'user@gmail.com'
|
||||
assert isinstance(_to, list)
|
||||
assert len(_to) == 1
|
||||
assert _to[0] == 'test+notification@gmail.com'
|
||||
assert _msg.split('\n')[-3] == 'test'
|
||||
|
Loading…
Reference in New Issue
Block a user