mirror of
https://github.com/caronc/apprise.git
synced 2024-11-25 01:24:03 +01:00
Refactor Test Code for Efficiency and Quality (#1100)
This commit is contained in:
parent
1f77254d71
commit
08cb018e11
@ -189,7 +189,7 @@ def test_apprise_config(tmpdir):
|
||||
assert isinstance(ac[0].url(), str)
|
||||
|
||||
# pop an entry from our list
|
||||
assert isinstance(ac.pop(0), ConfigBase) is True
|
||||
assert isinstance(ac.pop(0), ConfigBase)
|
||||
|
||||
# Determine we have no more configuration entries loaded
|
||||
assert len(ac) == 0
|
||||
@ -271,19 +271,13 @@ def test_apprise_multi_config_entries(tmpdir):
|
||||
assert ac.add(configs=object()) is False
|
||||
|
||||
# Try to pop an element out of range
|
||||
try:
|
||||
with pytest.raises(IndexError):
|
||||
ac.server_pop(len(ac.servers()))
|
||||
# We should have thrown an exception here
|
||||
assert False
|
||||
|
||||
except IndexError:
|
||||
# We expect to be here
|
||||
assert True
|
||||
|
||||
# Pop our elements
|
||||
while len(ac.servers()) > 0:
|
||||
assert isinstance(
|
||||
ac.server_pop(len(ac.servers()) - 1), NotifyBase) is True
|
||||
ac.server_pop(len(ac.servers()) - 1), NotifyBase)
|
||||
|
||||
|
||||
def test_apprise_add_config():
|
||||
@ -623,7 +617,7 @@ def test_apprise_config_with_apprise_obj(tmpdir):
|
||||
|
||||
# reference index 0 of our list
|
||||
ref = a[0]
|
||||
assert isinstance(ref, NotifyBase) is True
|
||||
assert isinstance(ref, NotifyBase)
|
||||
|
||||
# Our length is unchanged
|
||||
assert len(a) == 5
|
||||
@ -632,7 +626,7 @@ def test_apprise_config_with_apprise_obj(tmpdir):
|
||||
ref_popped = a.pop(0)
|
||||
|
||||
# Verify our response
|
||||
assert isinstance(ref_popped, NotifyBase) is True
|
||||
assert isinstance(ref_popped, NotifyBase)
|
||||
|
||||
# Our length drops by 1
|
||||
assert len(a) == 4
|
||||
@ -642,34 +636,21 @@ def test_apprise_config_with_apprise_obj(tmpdir):
|
||||
assert ref == ref_popped
|
||||
|
||||
# pop an index out of range
|
||||
try:
|
||||
with pytest.raises(IndexError):
|
||||
a.pop(len(a))
|
||||
# We'll thrown an IndexError and not make it this far
|
||||
assert False
|
||||
|
||||
except IndexError:
|
||||
# As expected
|
||||
assert True
|
||||
|
||||
# Our length remains unchanged
|
||||
assert len(a) == 4
|
||||
|
||||
# Reference content out of range
|
||||
try:
|
||||
with pytest.raises(IndexError):
|
||||
a[len(a)]
|
||||
|
||||
# We'll thrown an IndexError and not make it this far
|
||||
assert False
|
||||
|
||||
except IndexError:
|
||||
# As expected
|
||||
assert True
|
||||
|
||||
# reference index at the end of our list
|
||||
ref = a[len(a) - 1]
|
||||
|
||||
# Verify our response
|
||||
assert isinstance(ref, NotifyBase) is True
|
||||
assert isinstance(ref, NotifyBase)
|
||||
|
||||
# Our length stays the same
|
||||
assert len(a) == 4
|
||||
@ -678,7 +659,7 @@ def test_apprise_config_with_apprise_obj(tmpdir):
|
||||
ref_popped = a.pop(len(a) - 1)
|
||||
|
||||
# Verify our response
|
||||
assert isinstance(ref_popped, NotifyBase) is True
|
||||
assert isinstance(ref_popped, NotifyBase)
|
||||
|
||||
# Content popped is the same as one referenced by index
|
||||
# earlier
|
||||
@ -703,13 +684,13 @@ def test_apprise_config_with_apprise_obj(tmpdir):
|
||||
ref = a[len(a) - 1]
|
||||
|
||||
# Verify our response
|
||||
assert isinstance(ref, NotifyBase) is True
|
||||
assert isinstance(ref, NotifyBase)
|
||||
|
||||
# We can pop from the back of the list without a problem too
|
||||
ref_popped = a.pop(len(a) - 1)
|
||||
|
||||
# Verify our response
|
||||
assert isinstance(ref_popped, NotifyBase) is True
|
||||
assert isinstance(ref_popped, NotifyBase)
|
||||
|
||||
# Content popped is the same as one referenced by index
|
||||
# earlier
|
||||
@ -720,7 +701,7 @@ def test_apprise_config_with_apprise_obj(tmpdir):
|
||||
|
||||
# pop our list
|
||||
while len(a) > 0:
|
||||
assert isinstance(a.pop(len(a) - 1), NotifyBase) is True
|
||||
assert isinstance(a.pop(len(a) - 1), NotifyBase)
|
||||
|
||||
|
||||
def test_recursive_config_inclusion(tmpdir):
|
||||
|
@ -50,7 +50,7 @@ def test_parse_qsd():
|
||||
"utils: parse_qsd() testing """
|
||||
|
||||
result = utils.parse_qsd('a=1&b=&c&d=abcd')
|
||||
assert isinstance(result, dict) is True
|
||||
assert isinstance(result, dict)
|
||||
assert len(result) == 4
|
||||
assert 'qsd' in result
|
||||
assert 'qsd+' in result
|
||||
@ -2607,39 +2607,39 @@ def test_apply_templating():
|
||||
|
||||
result = utils.apply_template(
|
||||
template, **{'fname': 'Chris', 'whence': 'this morning'})
|
||||
assert isinstance(result, str) is True
|
||||
assert isinstance(result, str)
|
||||
assert result == "Hello Chris, How are you this morning?"
|
||||
|
||||
# In this example 'whence' isn't provided, so it isn't swapped
|
||||
result = utils.apply_template(
|
||||
template, **{'fname': 'Chris'})
|
||||
assert isinstance(result, str) is True
|
||||
assert isinstance(result, str)
|
||||
assert result == "Hello Chris, How are you {{whence}}?"
|
||||
|
||||
# white space won't cause any ill affects:
|
||||
template = "Hello {{ fname }}, How are you {{ whence}}?"
|
||||
result = utils.apply_template(
|
||||
template, **{'fname': 'Chris', 'whence': 'this morning'})
|
||||
assert isinstance(result, str) is True
|
||||
assert isinstance(result, str)
|
||||
assert result == "Hello Chris, How are you this morning?"
|
||||
|
||||
# No arguments won't cause any problems
|
||||
template = "Hello {{fname}}, How are you {{whence}}?"
|
||||
result = utils.apply_template(template)
|
||||
assert isinstance(result, str) is True
|
||||
assert isinstance(result, str)
|
||||
assert result == template
|
||||
|
||||
# Wrong elements are simply ignored
|
||||
result = utils.apply_template(
|
||||
template,
|
||||
**{'fname': 'l2g', 'whence': 'this evening', 'ignore': 'me'})
|
||||
assert isinstance(result, str) is True
|
||||
assert isinstance(result, str)
|
||||
assert result == "Hello l2g, How are you this evening?"
|
||||
|
||||
# Empty template makes things easy
|
||||
result = utils.apply_template(
|
||||
"", **{'fname': 'l2g', 'whence': 'this evening'})
|
||||
assert isinstance(result, str) is True
|
||||
assert isinstance(result, str)
|
||||
assert result == ""
|
||||
|
||||
# Regular expressions are safely escapped and act as normal
|
||||
|
@ -980,9 +980,9 @@ urls:
|
||||
assert asset.theme == AppriseAsset().theme
|
||||
|
||||
# Empty string assignment
|
||||
assert isinstance(asset.image_url_mask, str) is True
|
||||
assert isinstance(asset.image_url_mask, str)
|
||||
assert asset.image_url_mask == ""
|
||||
assert isinstance(asset.image_url_logo, str) is True
|
||||
assert isinstance(asset.image_url_logo, str)
|
||||
assert asset.image_url_logo == ""
|
||||
|
||||
# For on-lookers looking through this file; here is a perfectly formatted
|
||||
|
@ -48,8 +48,8 @@ def test_config_memory():
|
||||
assert len(cm) == 1
|
||||
|
||||
# Test general functions
|
||||
assert isinstance(cm.url(), str) is True
|
||||
assert isinstance(cm.read(), str) is True
|
||||
assert isinstance(cm.url(), str)
|
||||
assert isinstance(cm.read(), str)
|
||||
|
||||
# Test situation where an auto-detect is required:
|
||||
cm = ConfigMemory(content="json://localhost")
|
||||
@ -58,8 +58,8 @@ def test_config_memory():
|
||||
assert len(cm) == 1
|
||||
|
||||
# Test general functions
|
||||
assert isinstance(cm.url(), str) is True
|
||||
assert isinstance(cm.read(), str) is True
|
||||
assert isinstance(cm.url(), str)
|
||||
assert isinstance(cm.read(), str)
|
||||
|
||||
# Test situation where we can not detect the data
|
||||
assert len(ConfigMemory(content="garbage")) == 0
|
||||
|
@ -381,7 +381,7 @@ def test_apprise_secure_logging(mock_post):
|
||||
assert a.add("json://user:pass1$-3!@localhost") is True
|
||||
|
||||
# Our servers should carry this flag
|
||||
a[0].asset.secure_logging is True
|
||||
assert a[0].asset.secure_logging is True
|
||||
|
||||
logs = re.split(r'\r*\n', stream.getvalue().rstrip())
|
||||
assert len(logs) == 1
|
||||
|
@ -67,7 +67,7 @@ def test_notification_manager_general():
|
||||
N_MGR.unload_modules()
|
||||
assert bool(N_MGR) is False
|
||||
assert len([x for x in iter(N_MGR)]) > 0
|
||||
assert bool(N_MGR) is True
|
||||
assert bool(N_MGR)
|
||||
|
||||
N_MGR.unload_modules()
|
||||
assert isinstance(N_MGR.plugins(), types.GeneratorType)
|
||||
|
@ -64,15 +64,11 @@ def test_notify_base():
|
||||
assert isinstance(nb.url(), str)
|
||||
assert str(nb) == nb.url()
|
||||
|
||||
try:
|
||||
nb.send('test message')
|
||||
assert False
|
||||
|
||||
except NotImplementedError:
|
||||
with pytest.raises(NotImplementedError):
|
||||
# Each sub-module is that inherits this as a parent is required to
|
||||
# over-ride this function. So direct calls to this throws a not
|
||||
# implemented error intentionally
|
||||
assert True
|
||||
nb.send('test message')
|
||||
|
||||
# Throttle overrides..
|
||||
nb = NotifyBase()
|
||||
@ -208,13 +204,13 @@ def test_notify_base():
|
||||
|
||||
result = NotifyBase.parse_list(
|
||||
',path,?name=Dr%20Disrespect', unquote=False)
|
||||
assert isinstance(result, list) is True
|
||||
assert isinstance(result, list)
|
||||
assert len(result) == 2
|
||||
assert 'path' in result
|
||||
assert '?name=Dr%20Disrespect' in result
|
||||
|
||||
result = NotifyBase.parse_list(',path,?name=Dr%20Disrespect', unquote=True)
|
||||
assert isinstance(result, list) is True
|
||||
assert isinstance(result, list)
|
||||
assert len(result) == 2
|
||||
assert 'path' in result
|
||||
assert '?name=Dr Disrespect' in result
|
||||
@ -225,7 +221,7 @@ def test_notify_base():
|
||||
# eliminates duplicates in addition to unquoting content by default
|
||||
result = NotifyBase.parse_list(
|
||||
',%2F,%2F%2F, , , ,%2F%2F%2F, %2F', unquote=True)
|
||||
assert isinstance(result, list) is True
|
||||
assert isinstance(result, list)
|
||||
assert len(result) == 3
|
||||
assert '/' in result
|
||||
assert '//' in result
|
||||
@ -238,7 +234,7 @@ def test_notify_base():
|
||||
|
||||
result = NotifyBase.parse_phone_no(
|
||||
'+1-800-123-1234,(800) 123-4567', unquote=False)
|
||||
assert isinstance(result, list) is True
|
||||
assert isinstance(result, list)
|
||||
assert len(result) == 2
|
||||
assert '+1-800-123-1234' in result
|
||||
assert '(800) 123-4567' in result
|
||||
@ -246,7 +242,7 @@ def test_notify_base():
|
||||
# %2B == +
|
||||
result = NotifyBase.parse_phone_no(
|
||||
'%2B1-800-123-1234,%2B1%20800%20123%204567', unquote=True)
|
||||
assert isinstance(result, list) is True
|
||||
assert isinstance(result, list)
|
||||
assert len(result) == 2
|
||||
assert '+1-800-123-1234' in result
|
||||
assert '+1 800 123 4567' in result
|
||||
|
@ -187,7 +187,7 @@ def test_plugin_custom_json_edge_cases(mock_get, mock_post):
|
||||
assert results['query'] == 'command'
|
||||
assert results['schema'] == 'json'
|
||||
assert results['url'] == 'json://localhost:8080/command'
|
||||
assert isinstance(results['qsd:'], dict) is True
|
||||
assert isinstance(results['qsd:'], dict)
|
||||
assert results['qsd:']['message'] == 'msg'
|
||||
# empty special mapping
|
||||
assert results['qsd:']['type'] == ''
|
||||
@ -321,7 +321,7 @@ def test_plugin_custom_form_for_synology(mock_post):
|
||||
assert results['query'] == 'entry.cgi'
|
||||
assert results['schema'] == 'jsons'
|
||||
assert results['url'] == 'jsons://localhost:8081/webapi/entry.cgi'
|
||||
assert isinstance(results['qsd:'], dict) is True
|
||||
assert isinstance(results['qsd:'], dict)
|
||||
# Header Entries
|
||||
assert results['qsd-']['api'] == 'SYNO.Chat.External'
|
||||
assert results['qsd-']['method'] == 'incoming'
|
||||
|
@ -260,7 +260,7 @@ def test_plugin_custom_xml_edge_cases(mock_get, mock_post):
|
||||
assert results['query'] == 'command'
|
||||
assert results['schema'] == 'xml'
|
||||
assert results['url'] == 'xml://localhost:8080/command'
|
||||
assert isinstance(results['qsd:'], dict) is True
|
||||
assert isinstance(results['qsd:'], dict)
|
||||
assert results['qsd:']['Message'] == 'Body'
|
||||
assert results['qsd:']['Key'] == 'value'
|
||||
assert results['qsd:'][','] == 'invalid'
|
||||
@ -316,7 +316,7 @@ def test_plugin_custom_xml_edge_cases(mock_get, mock_post):
|
||||
assert results['query'] == 'command'
|
||||
assert results['schema'] == 'xml'
|
||||
assert results['url'] == 'xml://localhost:8081/command'
|
||||
assert isinstance(results['qsd:'], dict) is True
|
||||
assert isinstance(results['qsd:'], dict)
|
||||
assert results['qsd:']['New'] == 'Value'
|
||||
|
||||
instance = NotifyXML(**results)
|
||||
@ -364,7 +364,7 @@ def test_plugin_custom_xml_edge_cases(mock_get, mock_post):
|
||||
assert results['query'] is None
|
||||
assert results['schema'] == 'xmls'
|
||||
assert results['url'] == 'xmls://localhost'
|
||||
assert isinstance(results['qsd:'], dict) is True
|
||||
assert isinstance(results['qsd:'], dict)
|
||||
assert results['qsd:']['Version'] == ''
|
||||
assert results['qsd:']['Message'] == 'Body'
|
||||
assert results['qsd:']['Subject'] == 'Title'
|
||||
|
@ -346,14 +346,14 @@ def test_plugin_email(mock_smtp, mock_smtpssl):
|
||||
|
||||
if isinstance(obj, NotifyBase):
|
||||
# We loaded okay; now lets make sure we can reverse this url
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj.url(), str)
|
||||
|
||||
# Verify we can acquire a target count as an integer
|
||||
assert isinstance(len(obj), int)
|
||||
|
||||
# Test url() with privacy=True
|
||||
assert isinstance(
|
||||
obj.url(privacy=True), str) is True
|
||||
obj.url(privacy=True), str)
|
||||
|
||||
# Some Simple Invalid Instance Testing
|
||||
assert instance.parse_url(None) is None
|
||||
@ -379,12 +379,10 @@ def test_plugin_email(mock_smtp, mock_smtpssl):
|
||||
assert False
|
||||
|
||||
# Verify there is no change from the old and the new
|
||||
if len(obj) != len(obj_cmp):
|
||||
print('%d targets found in %s' % (
|
||||
len(obj), obj.url(privacy=True)))
|
||||
print('But %d targets found in %s' % (
|
||||
len(obj_cmp), obj_cmp.url(privacy=True)))
|
||||
raise AssertionError("Target miscount %d != %d")
|
||||
assert len(obj) == len(obj_cmp), (
|
||||
'%d targets found in %s, But %d targets found in %s'
|
||||
% (len(obj), obj.url(privacy=True), len(obj_cmp),
|
||||
obj_cmp.url(privacy=True)))
|
||||
|
||||
if self:
|
||||
# Iterate over our expected entries inside of our object
|
||||
@ -711,7 +709,7 @@ def test_plugin_email_url_escaping():
|
||||
obj = NotifyEmail.parse_url(
|
||||
'mailto://user:{}@gmail.com?format=text'.format(passwd))
|
||||
|
||||
assert isinstance(obj, dict) is True
|
||||
assert isinstance(obj, dict)
|
||||
assert 'password' in obj
|
||||
|
||||
# Escaping doesn't happen at this stage because we want to leave this to
|
||||
@ -721,7 +719,7 @@ def test_plugin_email_url_escaping():
|
||||
obj = Apprise.instantiate(
|
||||
'mailto://user:{}@gmail.com?format=text'.format(passwd),
|
||||
suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
|
||||
# The password is escaped only 'once'
|
||||
assert obj.password == ' %20'
|
||||
@ -739,7 +737,7 @@ def test_plugin_email_url_variations():
|
||||
user='apprise%40example21.ca',
|
||||
passwd='abcd123'),
|
||||
suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
|
||||
assert obj.password == 'abcd123'
|
||||
assert obj.user == 'apprise@example21.ca'
|
||||
@ -762,7 +760,7 @@ def test_plugin_email_url_variations():
|
||||
user='apprise%40example21.ca',
|
||||
passwd='abcd123'),
|
||||
suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
|
||||
assert obj.password == 'abcd123'
|
||||
assert obj.user == 'apprise@example21.ca'
|
||||
@ -784,7 +782,7 @@ def test_plugin_email_url_variations():
|
||||
user='apprise%40example21.ca',
|
||||
passwd='abcd123'),
|
||||
suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
|
||||
assert obj.password == 'abcd123'
|
||||
assert obj.user == 'apprise@example21.ca'
|
||||
@ -814,7 +812,7 @@ def test_plugin_email_url_variations():
|
||||
user='apprise%40example21.ca',
|
||||
passwd='abcd123'),
|
||||
suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
|
||||
assert obj.password == 'abcd123'
|
||||
assert obj.user == 'apprise@example21.ca'
|
||||
@ -848,7 +846,7 @@ def test_plugin_email_url_variations():
|
||||
that='to@example.jp',
|
||||
smtp_host='smtp.example.edu'),
|
||||
suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
|
||||
assert obj.password == 'abcd123'
|
||||
assert obj.user == 'apprise@example21.ca'
|
||||
@ -870,7 +868,7 @@ def test_plugin_email_url_variations():
|
||||
|
||||
obj = Apprise.instantiate(
|
||||
'mailto://user:pass@domain.com{}'.format(toaddr))
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
assert obj.password == 'pass'
|
||||
assert obj.user == 'user'
|
||||
assert obj.host == 'domain.com'
|
||||
@ -893,7 +891,7 @@ def test_plugin_email_dict_variations():
|
||||
'user': 'apprise@example.com',
|
||||
'password': 'abd123',
|
||||
'host': 'example.com'}, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
|
||||
|
||||
@mock.patch('smtplib.SMTP_SSL')
|
||||
@ -923,7 +921,7 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl):
|
||||
assert 'user2@yahoo.com' in results['targets']
|
||||
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
|
||||
assert mock_smtp.call_count == 0
|
||||
assert mock_smtp_ssl.call_count == 0
|
||||
@ -971,7 +969,7 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl):
|
||||
assert 'user2@yahoo.com' in results['targets']
|
||||
assert 'ssl' == results['secure_mode']
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
|
||||
assert mock_smtp.call_count == 0
|
||||
assert mock_smtp_ssl.call_count == 0
|
||||
@ -1017,7 +1015,7 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl):
|
||||
results = NotifyEmail.parse_url(
|
||||
'mailtos://user:pass123@hotmail.com')
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
assert obj.smtp_host == 'smtp-mail.outlook.com'
|
||||
# No entries in the reply_to
|
||||
assert not obj.reply_to
|
||||
@ -1043,7 +1041,7 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl):
|
||||
results = NotifyEmail.parse_url(
|
||||
'mailtos://user:pass123@outlook.com')
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
assert obj.smtp_host == 'smtp.outlook.com'
|
||||
# No entries in the reply_to
|
||||
assert not obj.reply_to
|
||||
@ -1069,7 +1067,7 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl):
|
||||
results = NotifyEmail.parse_url(
|
||||
'mailtos://user:pass123@outlook.com.au')
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
assert obj.smtp_host == 'smtp.outlook.com'
|
||||
# No entries in the reply_to
|
||||
assert not obj.reply_to
|
||||
@ -1097,7 +1095,7 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl):
|
||||
'mailtos://outlook.com?smtp=smtp.outlook.com'
|
||||
'&user=user@outlook.com&pass=app.pw')
|
||||
obj1 = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj1, NotifyEmail) is True
|
||||
assert isinstance(obj1, NotifyEmail)
|
||||
assert obj1.smtp_host == 'smtp.outlook.com'
|
||||
assert obj1.user == 'user@outlook.com'
|
||||
assert obj1.password == 'app.pw'
|
||||
@ -1125,7 +1123,7 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl):
|
||||
results = NotifyEmail.parse_url(
|
||||
'mailtos://user:app.pw@outlook.com')
|
||||
obj2 = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj2, NotifyEmail) is True
|
||||
assert isinstance(obj2, NotifyEmail)
|
||||
assert obj2.smtp_host == obj1.smtp_host
|
||||
assert obj2.user == obj1.user
|
||||
assert obj2.password == obj1.password
|
||||
@ -1153,7 +1151,7 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl):
|
||||
results = NotifyEmail.parse_url(
|
||||
'mailto://user:pass@comcast.net')
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
assert obj.smtp_host == 'smtp.comcast.net'
|
||||
assert obj.user == 'user@comcast.net'
|
||||
assert obj.password == 'pass'
|
||||
@ -1181,7 +1179,7 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl):
|
||||
results = NotifyEmail.parse_url(
|
||||
'mailtos://user:pass123@live.com')
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
# No entries in the reply_to
|
||||
assert not obj.reply_to
|
||||
|
||||
@ -1206,7 +1204,7 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl):
|
||||
results = NotifyEmail.parse_url(
|
||||
'mailtos://user:pass123@hotmail.com')
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
# No entries in the reply_to
|
||||
assert not obj.reply_to
|
||||
|
||||
@ -1235,7 +1233,7 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl):
|
||||
"mailtos://abc:password@xyz.cn:465?"
|
||||
"smtp=smtp.exmail.qq.com&mode=ssl")
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
|
||||
# Verify our over-rides are in place
|
||||
assert obj.smtp_host == 'smtp.exmail.qq.com'
|
||||
@ -1279,7 +1277,7 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl):
|
||||
"mailtos://abc:password@xyz.cn?"
|
||||
"smtp=smtp.exmail.qq.com&mode=ssl&port=465")
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
|
||||
# Verify our over-rides are in place
|
||||
assert obj.smtp_host == 'smtp.exmail.qq.com'
|
||||
@ -1314,7 +1312,7 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl):
|
||||
results = NotifyEmail.parse_url(
|
||||
"mailtos://user:pass@example.com?reply=noreply@example.com")
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
# Verify our over-rides are in place
|
||||
assert obj.smtp_host == 'example.com'
|
||||
assert obj.from_addr[0] == obj.app_id
|
||||
@ -1349,7 +1347,7 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl):
|
||||
results = NotifyEmail.parse_url(
|
||||
"mailtos://user:pass@example.com?reply=Chris<noreply@example.ca>")
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
# Verify our over-rides are in place
|
||||
assert obj.smtp_host == 'example.com'
|
||||
assert obj.from_addr[0] == obj.app_id
|
||||
@ -1397,7 +1395,7 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl):
|
||||
assert 'hello@concordium-explorer.nl' in results['targets']
|
||||
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
|
||||
assert mock_smtp.call_count == 0
|
||||
assert mock_smtp_ssl.call_count == 0
|
||||
@ -1447,7 +1445,7 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl):
|
||||
assert results['smtp_host'] == ''
|
||||
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
# During instantiation, our variables get detected
|
||||
assert obj.smtp_host == 'smtp.fastmail.com'
|
||||
assert obj.from_addr == ['Apprise', 'username@customdomain.com']
|
||||
@ -1498,7 +1496,7 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl):
|
||||
assert results['smtp_host'] == ''
|
||||
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
# During instantiation, our variables get detected
|
||||
assert obj.smtp_host == 'smtp.fastmail.com'
|
||||
assert obj.from_addr == ['Custom', 'username@customdomain.com']
|
||||
@ -1555,7 +1553,7 @@ def test_plugin_email_url_parsing(mock_smtp, mock_smtp_ssl):
|
||||
assert 'mail@mail-domain.com' in results['targets']
|
||||
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
|
||||
# Not that our from_address takes on 'admin@domain.subdomain.com'
|
||||
assert obj.from_addr == ['Apprise', 'admin@domain.subdomain.com']
|
||||
@ -1612,7 +1610,7 @@ def test_plugin_email_plus_in_toemail(mock_smtp, mock_smtp_ssl):
|
||||
assert 'Plus Support<test+notification@gmail.com>' in results['targets']
|
||||
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
|
||||
assert len(obj.targets) == 1
|
||||
assert ('Plus Support', 'test+notification@gmail.com') in obj.targets
|
||||
@ -1660,7 +1658,7 @@ def test_plugin_email_plus_in_toemail(mock_smtp, mock_smtp_ssl):
|
||||
assert 'test+notification@gmail.com' in results['targets']
|
||||
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
|
||||
assert len(obj.targets) == 1
|
||||
assert (False, 'test+notification@gmail.com') in obj.targets
|
||||
@ -1704,7 +1702,7 @@ def test_plugin_email_plus_in_toemail(mock_smtp, mock_smtp_ssl):
|
||||
assert 'test+notification@gmail.com' in results['targets']
|
||||
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
|
||||
assert len(obj.targets) == 1
|
||||
assert (False, 'test+notification@gmail.com') in obj.targets
|
||||
@ -1760,7 +1758,7 @@ def test_plugin_email_formatting_990(mock_smtp, mock_smtp_ssl):
|
||||
assert 'me@mydomain.com' in results['targets']
|
||||
|
||||
obj = Apprise.instantiate(results, suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyEmail) is True
|
||||
assert isinstance(obj, NotifyEmail)
|
||||
|
||||
assert len(obj.targets) == 1
|
||||
assert (False, 'me@mydomain.com') in obj.targets
|
||||
|
@ -873,13 +873,13 @@ def test_plugin_fcm_color_manager():
|
||||
|
||||
# We will be `true` because we can acquire a color based on what was
|
||||
# passed in
|
||||
assert bool(instance) is True
|
||||
assert bool(instance)
|
||||
|
||||
# Custom color
|
||||
instance = FCMColorManager('#A2B3A4')
|
||||
assert isinstance(instance.get(), str)
|
||||
assert instance.get() == '#a2b3a4'
|
||||
assert bool(instance) is True
|
||||
assert bool(instance)
|
||||
# str() response does not include hashtag
|
||||
assert str(instance) == 'a2b3a4'
|
||||
|
||||
@ -888,7 +888,7 @@ def test_plugin_fcm_color_manager():
|
||||
assert isinstance(instance.get(), str)
|
||||
# Hashtag is always part of output
|
||||
assert instance.get() == '#a2b3a4'
|
||||
assert bool(instance) is True
|
||||
assert bool(instance)
|
||||
# str() response does not include hashtag
|
||||
assert str(instance) == 'a2b3a4'
|
||||
|
||||
@ -897,7 +897,7 @@ def test_plugin_fcm_color_manager():
|
||||
assert isinstance(instance.get(), str)
|
||||
# Hashtag is always part of output
|
||||
assert instance.get() == '#aacc44'
|
||||
assert bool(instance) is True
|
||||
assert bool(instance)
|
||||
# str() response does not include hashtag
|
||||
assert str(instance) == 'aacc44'
|
||||
|
||||
|
@ -153,20 +153,20 @@ def test_plugin_dbus_general_success(mocker, dbus_glib_environment):
|
||||
|
||||
# Create our instance (identify all supported types)
|
||||
obj = apprise.Apprise.instantiate('dbus://', suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyDBus) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyDBus)
|
||||
assert isinstance(obj.url(), str)
|
||||
assert obj.url().startswith('dbus://_/')
|
||||
obj = apprise.Apprise.instantiate('kde://', suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyDBus) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyDBus)
|
||||
assert isinstance(obj.url(), str)
|
||||
assert obj.url().startswith('kde://_/')
|
||||
obj = apprise.Apprise.instantiate('qt://', suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyDBus) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyDBus)
|
||||
assert isinstance(obj.url(), str)
|
||||
assert obj.url().startswith('qt://_/')
|
||||
obj = apprise.Apprise.instantiate('glib://', suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyDBus) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyDBus)
|
||||
assert isinstance(obj.url(), str)
|
||||
assert obj.url().startswith('glib://_/')
|
||||
obj.duration = 0
|
||||
|
||||
@ -189,8 +189,8 @@ def test_plugin_dbus_general_success(mocker, dbus_glib_environment):
|
||||
# Test our arguments through the instantiate call
|
||||
obj = apprise.Apprise.instantiate(
|
||||
'dbus://_/?image=True', suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyDBus) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyDBus)
|
||||
assert isinstance(obj.url(), str)
|
||||
assert obj.url().startswith('dbus://_/')
|
||||
assert re.search('image=yes', obj.url())
|
||||
|
||||
@ -200,8 +200,8 @@ def test_plugin_dbus_general_success(mocker, dbus_glib_environment):
|
||||
|
||||
obj = apprise.Apprise.instantiate(
|
||||
'dbus://_/?image=False', suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyDBus) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyDBus)
|
||||
assert isinstance(obj.url(), str)
|
||||
assert obj.url().startswith('dbus://_/')
|
||||
assert re.search('image=no', obj.url())
|
||||
|
||||
@ -212,24 +212,24 @@ def test_plugin_dbus_general_success(mocker, dbus_glib_environment):
|
||||
# Test priority (alias to urgency) handling
|
||||
obj = apprise.Apprise.instantiate(
|
||||
'dbus://_/?priority=invalid', suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyDBus) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyDBus)
|
||||
assert isinstance(obj.url(), str)
|
||||
assert obj.notify(
|
||||
title='title', body='body',
|
||||
notify_type=apprise.NotifyType.INFO) is True
|
||||
|
||||
obj = apprise.Apprise.instantiate(
|
||||
'dbus://_/?priority=high', suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyDBus) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyDBus)
|
||||
assert isinstance(obj.url(), str)
|
||||
assert obj.notify(
|
||||
title='title', body='body',
|
||||
notify_type=apprise.NotifyType.INFO) is True
|
||||
|
||||
obj = apprise.Apprise.instantiate(
|
||||
'dbus://_/?priority=2', suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyDBus) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyDBus)
|
||||
assert isinstance(obj.url(), str)
|
||||
assert obj.notify(
|
||||
title='title', body='body',
|
||||
notify_type=apprise.NotifyType.INFO) is True
|
||||
@ -237,32 +237,32 @@ def test_plugin_dbus_general_success(mocker, dbus_glib_environment):
|
||||
# Test urgency handling
|
||||
obj = apprise.Apprise.instantiate(
|
||||
'dbus://_/?urgency=invalid', suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyDBus) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyDBus)
|
||||
assert isinstance(obj.url(), str)
|
||||
assert obj.notify(
|
||||
title='title', body='body',
|
||||
notify_type=apprise.NotifyType.INFO) is True
|
||||
|
||||
obj = apprise.Apprise.instantiate(
|
||||
'dbus://_/?urgency=high', suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyDBus) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyDBus)
|
||||
assert isinstance(obj.url(), str)
|
||||
assert obj.notify(
|
||||
title='title', body='body',
|
||||
notify_type=apprise.NotifyType.INFO) is True
|
||||
|
||||
obj = apprise.Apprise.instantiate(
|
||||
'dbus://_/?urgency=2', suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyDBus) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyDBus)
|
||||
assert isinstance(obj.url(), str)
|
||||
assert obj.notify(
|
||||
title='title', body='body',
|
||||
notify_type=apprise.NotifyType.INFO) is True
|
||||
|
||||
obj = apprise.Apprise.instantiate(
|
||||
'dbus://_/?urgency=', suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyDBus) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyDBus)
|
||||
assert isinstance(obj.url(), str)
|
||||
assert obj.notify(
|
||||
title='title', body='body',
|
||||
notify_type=apprise.NotifyType.INFO) is True
|
||||
@ -270,8 +270,8 @@ def test_plugin_dbus_general_success(mocker, dbus_glib_environment):
|
||||
# Test x/y
|
||||
obj = apprise.Apprise.instantiate(
|
||||
'dbus://_/?x=5&y=5', suppress_exceptions=False)
|
||||
assert isinstance(obj, NotifyDBus) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyDBus)
|
||||
assert isinstance(obj.url(), str)
|
||||
assert obj.notify(
|
||||
title='title', body='body',
|
||||
notify_type=apprise.NotifyType.INFO) is True
|
||||
|
@ -183,4 +183,4 @@ def test_plugin_guilded_general(mock_post):
|
||||
footer=True, thumbnail=False)
|
||||
|
||||
# Test that we get a string response
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj.url(), str)
|
||||
|
@ -150,7 +150,7 @@ def test_plugin_ifttt_edge_cases(mock_post, mock_get):
|
||||
NotifyIFTTT(webhook_id=webhook_id, events=None)
|
||||
|
||||
obj = NotifyIFTTT(webhook_id=webhook_id, events=events)
|
||||
assert isinstance(obj, NotifyIFTTT) is True
|
||||
assert isinstance(obj, NotifyIFTTT)
|
||||
|
||||
assert obj.notify(
|
||||
body='body', title='title', notify_type=NotifyType.INFO) is True
|
||||
@ -160,7 +160,7 @@ def test_plugin_ifttt_edge_cases(mock_post, mock_get):
|
||||
webhook_id=webhook_id, events=events,
|
||||
add_tokens={'Test': 'ValueA', 'Test2': 'ValueB'})
|
||||
|
||||
assert isinstance(obj, NotifyIFTTT) is True
|
||||
assert isinstance(obj, NotifyIFTTT)
|
||||
|
||||
assert obj.notify(
|
||||
body='body', title='title', notify_type=NotifyType.INFO) is True
|
||||
@ -171,7 +171,7 @@ def test_plugin_ifttt_edge_cases(mock_post, mock_get):
|
||||
webhook_id=webhook_id, events=events,
|
||||
del_tokens=NotifyIFTTT.ifttt_default_title_key)
|
||||
|
||||
assert isinstance(obj, NotifyIFTTT) is True
|
||||
assert isinstance(obj, NotifyIFTTT)
|
||||
|
||||
assert obj.notify(
|
||||
body='body', title='title', notify_type=NotifyType.INFO) is True
|
||||
@ -187,7 +187,7 @@ def test_plugin_ifttt_edge_cases(mock_post, mock_get):
|
||||
NotifyIFTTT.ifttt_default_body_key,
|
||||
NotifyIFTTT.ifttt_default_type_key))
|
||||
|
||||
assert isinstance(obj, NotifyIFTTT) is True
|
||||
assert isinstance(obj, NotifyIFTTT)
|
||||
|
||||
assert obj.notify(
|
||||
body='body', title='title', notify_type=NotifyType.INFO) is True
|
||||
@ -203,4 +203,4 @@ def test_plugin_ifttt_edge_cases(mock_post, mock_get):
|
||||
NotifyIFTTT.ifttt_default_body_key: None,
|
||||
NotifyIFTTT.ifttt_default_type_key: None})
|
||||
|
||||
assert isinstance(obj, NotifyIFTTT) is True
|
||||
assert isinstance(obj, NotifyIFTTT)
|
||||
|
@ -181,7 +181,7 @@ def test_plugin_custom_lunasea_edge_cases(mock_post):
|
||||
assert results['query'] is None
|
||||
assert results['schema'] == 'lsea'
|
||||
assert results['url'] == 'lsea://user:pass@userA,+device1,~~,,'
|
||||
assert isinstance(results['qsd:'], dict) is True
|
||||
assert isinstance(results['qsd:'], dict)
|
||||
|
||||
instance = NotifyLunaSea(**results)
|
||||
assert isinstance(instance, NotifyLunaSea)
|
||||
@ -245,7 +245,7 @@ def test_plugin_custom_lunasea_edge_cases(mock_post):
|
||||
results['url'] ==
|
||||
'lseas://user:pass@myhost:3222/%40userA%2C%2Bdevice1%2C%7E%7E%2C%2C'
|
||||
)
|
||||
assert isinstance(results['qsd:'], dict) is True
|
||||
assert isinstance(results['qsd:'], dict)
|
||||
|
||||
instance = NotifyLunaSea(**results)
|
||||
assert isinstance(instance, NotifyLunaSea)
|
||||
|
@ -331,7 +331,7 @@ def test_plugin_mailgun_header_check(mock_post):
|
||||
obj = Apprise.instantiate(
|
||||
'mailgun://user@localhost.localdomain/{}'.format(apikey))
|
||||
assert isinstance(obj, NotifyMailgun)
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj.url(), str)
|
||||
|
||||
# No calls made yet
|
||||
assert mock_post.call_count == 0
|
||||
@ -358,7 +358,7 @@ def test_plugin_mailgun_header_check(mock_post):
|
||||
'mailgun://user@localhost.localdomain/'
|
||||
'{}?from=Luke%20Skywalker'.format(apikey))
|
||||
assert isinstance(obj, NotifyMailgun)
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj.url(), str)
|
||||
|
||||
# No calls made yet
|
||||
assert mock_post.call_count == 0
|
||||
@ -381,7 +381,7 @@ def test_plugin_mailgun_header_check(mock_post):
|
||||
'mailgun://user@localhost.localdomain/{}'
|
||||
'?from=Luke%20Skywalker<luke@rebels.com>'.format(apikey))
|
||||
assert isinstance(obj, NotifyMailgun)
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj.url(), str)
|
||||
|
||||
# No calls made yet
|
||||
assert mock_post.call_count == 0
|
||||
@ -404,7 +404,7 @@ def test_plugin_mailgun_header_check(mock_post):
|
||||
'mailgun://user@localhost.localdomain/{}'
|
||||
'?from=luke@rebels.com'.format(apikey))
|
||||
assert isinstance(obj, NotifyMailgun)
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj.url(), str)
|
||||
|
||||
# No calls made yet
|
||||
assert mock_post.call_count == 0
|
||||
|
@ -190,8 +190,8 @@ def test_plugin_mastodon_general(mock_post, mock_get):
|
||||
# Instantiate our object
|
||||
obj = NotifyMastodon(token=token, host=host)
|
||||
|
||||
assert isinstance(obj, NotifyMastodon) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyMastodon)
|
||||
assert isinstance(obj.url(), str)
|
||||
|
||||
# apprise room was found
|
||||
assert obj.send(body="test") is True
|
||||
@ -268,7 +268,7 @@ def test_plugin_mastodon_general(mock_post, mock_get):
|
||||
|
||||
results = NotifyMastodon.parse_url(
|
||||
'mastodon://{}@{}/@user?visbility=direct'.format(token, host))
|
||||
assert isinstance(results, dict) is True
|
||||
assert isinstance(results, dict)
|
||||
assert '@user' in results['targets']
|
||||
|
||||
# cause a json parsing issue now
|
||||
|
@ -254,27 +254,27 @@ def test_plugin_matrix_general(mock_post, mock_get, mock_put):
|
||||
|
||||
# Variation Initializations
|
||||
obj = NotifyMatrix(host='host', targets='#abcd')
|
||||
assert isinstance(obj, NotifyMatrix) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyMatrix)
|
||||
assert isinstance(obj.url(), str)
|
||||
# Registration successful
|
||||
assert obj.send(body="test") is True
|
||||
|
||||
obj = NotifyMatrix(host='host', user='user', targets='#abcd')
|
||||
assert isinstance(obj, NotifyMatrix) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyMatrix)
|
||||
assert isinstance(obj.url(), str)
|
||||
# Registration successful
|
||||
assert obj.send(body="test") is True
|
||||
|
||||
obj = NotifyMatrix(host='host', password='passwd', targets='#abcd')
|
||||
assert isinstance(obj, NotifyMatrix) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyMatrix)
|
||||
assert isinstance(obj.url(), str)
|
||||
# A username gets automatically generated in these cases
|
||||
assert obj.send(body="test") is True
|
||||
|
||||
obj = NotifyMatrix(
|
||||
host='host', user='user', password='passwd', targets='#abcd')
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyMatrix) is True
|
||||
assert isinstance(obj.url(), str)
|
||||
assert isinstance(obj, NotifyMatrix)
|
||||
# Registration Successful
|
||||
assert obj.send(body="test") is True
|
||||
|
||||
@ -282,23 +282,23 @@ def test_plugin_matrix_general(mock_post, mock_get, mock_put):
|
||||
kwargs = NotifyMatrix.parse_url(
|
||||
'matrix://user:passwd@hostname/#abcd?format=html')
|
||||
obj = NotifyMatrix(**kwargs)
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyMatrix) is True
|
||||
obj.send(body="test") is True
|
||||
obj.send(title="title", body="test") is True
|
||||
assert isinstance(obj.url(), str)
|
||||
assert isinstance(obj, NotifyMatrix)
|
||||
assert obj.send(body="test") is True
|
||||
assert obj.send(title="title", body="test") is True
|
||||
|
||||
kwargs = NotifyMatrix.parse_url(
|
||||
'matrix://user:passwd@hostname/#abcd/#abcd:localhost?format=markdown')
|
||||
obj = NotifyMatrix(**kwargs)
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyMatrix) is True
|
||||
obj.send(body="test") is True
|
||||
obj.send(title="title", body="test") is True
|
||||
assert isinstance(obj.url(), str)
|
||||
assert isinstance(obj, NotifyMatrix)
|
||||
assert obj.send(body="test") is True
|
||||
assert obj.send(title="title", body="test") is True
|
||||
|
||||
kwargs = NotifyMatrix.parse_url(
|
||||
'matrix://user:passwd@hostname/#abcd/!abcd:localhost?format=text')
|
||||
obj = NotifyMatrix(**kwargs)
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj.url(), str)
|
||||
assert isinstance(obj, NotifyMatrix) is True
|
||||
obj.send(body="test") is True
|
||||
obj.send(title="title", body="test") is True
|
||||
@ -309,8 +309,8 @@ def test_plugin_matrix_general(mock_post, mock_get, mock_put):
|
||||
obj = NotifyMatrix(**kwargs)
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyMatrix) is True
|
||||
obj.send(body="test") is True
|
||||
obj.send(title="title", body="test") is True
|
||||
assert obj.send(body="test") is True
|
||||
assert obj.send(title="title", body="test") is True
|
||||
|
||||
with pytest.raises(TypeError):
|
||||
# invalid message type specified
|
||||
|
@ -163,8 +163,8 @@ def test_plugin_msg91_keywords(mock_post):
|
||||
obj = Apprise.instantiate(
|
||||
'msg91://{}@{}/{}?:key=value&:mobiles=ignored'
|
||||
.format(template, authkey, target))
|
||||
assert isinstance(obj, NotifyMSG91) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyMSG91)
|
||||
assert isinstance(obj.url(), str)
|
||||
|
||||
# Send Notification
|
||||
assert obj.send(body=message_contents) is True
|
||||
@ -192,8 +192,8 @@ def test_plugin_msg91_keywords(mock_post):
|
||||
# Play with mapping
|
||||
obj = Apprise.instantiate(
|
||||
'msg91://{}@{}/{}?:body&:type=cat'.format(template, authkey, target))
|
||||
assert isinstance(obj, NotifyMSG91) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyMSG91)
|
||||
assert isinstance(obj.url(), str)
|
||||
|
||||
# Send Notification
|
||||
assert obj.send(body=message_contents) is True
|
||||
|
@ -110,8 +110,8 @@ def test_plugin_pushdeer_general(mock_post):
|
||||
|
||||
# Variation Initializations
|
||||
obj = Apprise.instantiate('pushdeer://localhost/pushKey')
|
||||
assert isinstance(obj, NotifyPushDeer) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyPushDeer)
|
||||
assert isinstance(obj.url(), str)
|
||||
|
||||
# Send Notification
|
||||
assert obj.send(body="test") is True
|
||||
|
@ -340,7 +340,7 @@ def test_plugin_pushover_edge_cases(mock_post):
|
||||
|
||||
obj = NotifyPushover(
|
||||
user_key=user_key, token=token, targets=devices)
|
||||
assert isinstance(obj, NotifyPushover) is True
|
||||
assert isinstance(obj, NotifyPushover)
|
||||
# Our invalid device is ignored
|
||||
assert len(obj.targets) == 2
|
||||
|
||||
@ -350,7 +350,7 @@ def test_plugin_pushover_edge_cases(mock_post):
|
||||
notify_type=apprise.NotifyType.INFO) is True
|
||||
|
||||
obj = NotifyPushover(user_key=user_key, token=token)
|
||||
assert isinstance(obj, NotifyPushover) is True
|
||||
assert isinstance(obj, NotifyPushover)
|
||||
# Default is to send to all devices, so there will be a
|
||||
# device defined here
|
||||
assert len(obj.targets) == 1
|
||||
@ -362,7 +362,7 @@ def test_plugin_pushover_edge_cases(mock_post):
|
||||
|
||||
obj = NotifyPushover(
|
||||
user_key=user_key, token=token, targets=set())
|
||||
assert isinstance(obj, NotifyPushover) is True
|
||||
assert isinstance(obj, NotifyPushover)
|
||||
# Default is to send to all devices, so there will be a
|
||||
# device defined here
|
||||
assert len(obj.targets) == 1
|
||||
|
@ -274,8 +274,8 @@ def test_plugin_reddit_general(mock_post):
|
||||
|
||||
# Variation Initializations
|
||||
obj = NotifyReddit(**kwargs)
|
||||
assert isinstance(obj, NotifyReddit) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyReddit)
|
||||
assert isinstance(obj.url(), str)
|
||||
|
||||
# Dynamically pick up on a link
|
||||
assert obj.send(body="http://hostname") is True
|
||||
|
@ -319,7 +319,7 @@ def test_plugin_revolt_general(mock_sleep, mock_post):
|
||||
assert obj.ratelimit_remaining == 1
|
||||
|
||||
# Test that we get a string response
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj.url(), str)
|
||||
|
||||
# This call includes an image with it's payload:
|
||||
assert obj.notify(
|
||||
|
@ -113,7 +113,7 @@ def test_plugin_sns_edge_cases(mock_post):
|
||||
NotifySNS() Edge Cases
|
||||
|
||||
"""
|
||||
|
||||
target = '+1800555999'
|
||||
# Initializes the plugin with a valid access, but invalid access key
|
||||
with pytest.raises(TypeError):
|
||||
# No access_key_id specified
|
||||
@ -121,7 +121,7 @@ def test_plugin_sns_edge_cases(mock_post):
|
||||
access_key_id=None,
|
||||
secret_access_key=TEST_ACCESS_KEY_SECRET,
|
||||
region_name=TEST_REGION,
|
||||
targets='+1800555999',
|
||||
targets=target,
|
||||
)
|
||||
|
||||
with pytest.raises(TypeError):
|
||||
@ -130,7 +130,7 @@ def test_plugin_sns_edge_cases(mock_post):
|
||||
access_key_id=TEST_ACCESS_KEY_ID,
|
||||
secret_access_key=None,
|
||||
region_name=TEST_REGION,
|
||||
targets='+1800555999',
|
||||
targets=target,
|
||||
)
|
||||
|
||||
with pytest.raises(TypeError):
|
||||
@ -139,7 +139,7 @@ def test_plugin_sns_edge_cases(mock_post):
|
||||
access_key_id=TEST_ACCESS_KEY_ID,
|
||||
secret_access_key=TEST_ACCESS_KEY_SECRET,
|
||||
region_name=None,
|
||||
targets='+1800555999',
|
||||
targets=target,
|
||||
)
|
||||
|
||||
# No recipients
|
||||
@ -200,20 +200,22 @@ def test_plugin_sns_url_parsing():
|
||||
assert 'secret_access_key' in results
|
||||
assert TEST_ACCESS_KEY_SECRET == results['secret_access_key']
|
||||
|
||||
target = '+18001234567'
|
||||
topic = 'MyTopic'
|
||||
# Detect recipients
|
||||
results = NotifySNS.parse_url('sns://%s/%s/%s/%s/%s/' % (
|
||||
TEST_ACCESS_KEY_ID,
|
||||
TEST_ACCESS_KEY_SECRET,
|
||||
# Uppercase Region won't break anything
|
||||
TEST_REGION.upper(),
|
||||
'+18001234567',
|
||||
'MyTopic')
|
||||
target,
|
||||
topic)
|
||||
)
|
||||
|
||||
# Confirm that our recipients were found
|
||||
assert len(results['targets']) == 2
|
||||
assert '+18001234567' in results['targets']
|
||||
assert 'MyTopic' in results['targets']
|
||||
assert target in results['targets']
|
||||
assert topic in results['targets']
|
||||
assert 'region_name' in results
|
||||
assert TEST_REGION == results['region_name']
|
||||
assert 'access_key_id' in results
|
||||
|
@ -57,7 +57,7 @@ def test_plugin_syslog_by_url(openlog, syslog):
|
||||
assert NotifySyslog.parse_url(None) is None
|
||||
|
||||
obj = apprise.Apprise.instantiate('syslog://')
|
||||
assert obj.url().startswith('syslog://user') is True
|
||||
assert obj.url().startswith('syslog://user')
|
||||
assert re.search(r'logpid=yes', obj.url()) is not None
|
||||
assert re.search(r'logperror=no', obj.url()) is not None
|
||||
|
||||
@ -67,7 +67,7 @@ def test_plugin_syslog_by_url(openlog, syslog):
|
||||
|
||||
obj = apprise.Apprise.instantiate('syslog://?logpid=no&logperror=yes')
|
||||
assert isinstance(obj, NotifySyslog)
|
||||
assert obj.url().startswith('syslog://user') is True
|
||||
assert obj.url().startswith('syslog://user')
|
||||
assert re.search(r'logpid=no', obj.url()) is not None
|
||||
assert re.search(r'logperror=yes', obj.url()) is not None
|
||||
|
||||
@ -80,7 +80,7 @@ def test_plugin_syslog_by_url(openlog, syslog):
|
||||
|
||||
obj = apprise.Apprise.instantiate('syslog://_/?facility=local5')
|
||||
assert isinstance(obj, NotifySyslog)
|
||||
assert obj.url().startswith('syslog://local5') is True
|
||||
assert obj.url().startswith('syslog://local5')
|
||||
assert re.search(r'logpid=yes', obj.url()) is not None
|
||||
assert re.search(r'logperror=no', obj.url()) is not None
|
||||
|
||||
@ -90,21 +90,21 @@ def test_plugin_syslog_by_url(openlog, syslog):
|
||||
# j will cause a search to take place and match to daemon
|
||||
obj = apprise.Apprise.instantiate('syslog://_/?facility=d')
|
||||
assert isinstance(obj, NotifySyslog)
|
||||
assert obj.url().startswith('syslog://daemon') is True
|
||||
assert obj.url().startswith('syslog://daemon')
|
||||
assert re.search(r'logpid=yes', obj.url()) is not None
|
||||
assert re.search(r'logperror=no', obj.url()) is not None
|
||||
|
||||
# Facility can also be specified on the url as a hostname
|
||||
obj = apprise.Apprise.instantiate('syslog://kern?logpid=no&logperror=y')
|
||||
assert isinstance(obj, NotifySyslog)
|
||||
assert obj.url().startswith('syslog://kern') is True
|
||||
assert obj.url().startswith('syslog://kern')
|
||||
assert re.search(r'logpid=no', obj.url()) is not None
|
||||
assert re.search(r'logperror=yes', obj.url()) is not None
|
||||
|
||||
# Facilities specified as an argument always over-ride host
|
||||
obj = apprise.Apprise.instantiate('syslog://kern?facility=d')
|
||||
assert isinstance(obj, NotifySyslog)
|
||||
assert obj.url().startswith('syslog://daemon') is True
|
||||
assert obj.url().startswith('syslog://daemon')
|
||||
|
||||
|
||||
@mock.patch('syslog.syslog')
|
||||
@ -118,7 +118,7 @@ def test_plugin_syslog_edge_cases(openlog, syslog):
|
||||
# Default
|
||||
obj = NotifySyslog(facility=None)
|
||||
assert isinstance(obj, NotifySyslog)
|
||||
assert obj.url().startswith('syslog://user') is True
|
||||
assert obj.url().startswith('syslog://user')
|
||||
assert re.search(r'logpid=yes', obj.url()) is not None
|
||||
assert re.search(r'logperror=no', obj.url()) is not None
|
||||
|
||||
|
@ -153,9 +153,9 @@ def test_plugin_threema_edge_cases(mock_post):
|
||||
assert results['query'] is None
|
||||
assert results['schema'] == 'threema'
|
||||
assert results['url'] == 'threema:///'
|
||||
assert isinstance(results['targets'], list) is True
|
||||
assert isinstance(results['targets'], list)
|
||||
assert len(results['targets']) == 1
|
||||
assert results['targets'][0] == '+1 (555) 123-9876'
|
||||
assert results['targets'][0] == targets
|
||||
|
||||
instance = NotifyThreema(**results)
|
||||
assert len(instance.targets) == 1
|
||||
|
@ -158,8 +158,8 @@ def test_plugin_twilio_auth(mock_post):
|
||||
obj = Apprise.instantiate(
|
||||
'twilio://{}:{}@{}/{}'
|
||||
.format(account_sid, auth_token, source, dest))
|
||||
assert isinstance(obj, NotifyTwilio) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyTwilio)
|
||||
assert isinstance(obj.url(), str)
|
||||
|
||||
# Send Notification
|
||||
assert obj.send(body=message_contents) is True
|
||||
@ -168,8 +168,8 @@ def test_plugin_twilio_auth(mock_post):
|
||||
obj = Apprise.instantiate(
|
||||
'twilio://{}:{}@{}/{}?apikey={}'
|
||||
.format(account_sid, auth_token, source, dest, apikey))
|
||||
assert isinstance(obj, NotifyTwilio) is True
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj, NotifyTwilio)
|
||||
assert isinstance(obj.url(), str)
|
||||
|
||||
# Send Notification
|
||||
assert obj.send(body=message_contents) is True
|
||||
|
@ -28,6 +28,7 @@
|
||||
|
||||
from unittest import mock
|
||||
|
||||
import pytest
|
||||
import requests
|
||||
from json import dumps
|
||||
from apprise import Apprise
|
||||
@ -111,19 +112,11 @@ def test_plugin_twist_init():
|
||||
NotifyTwist() init()
|
||||
|
||||
"""
|
||||
try:
|
||||
with pytest.raises(TypeError):
|
||||
NotifyTwist(email='invalid', targets=None)
|
||||
assert False
|
||||
except TypeError:
|
||||
# Invalid email address
|
||||
assert True
|
||||
|
||||
try:
|
||||
with pytest.raises(TypeError):
|
||||
NotifyTwist(email='user@domain', targets=None)
|
||||
assert False
|
||||
except TypeError:
|
||||
# No password was specified
|
||||
assert True
|
||||
|
||||
# Simple object initialization
|
||||
result = NotifyTwist(
|
||||
|
@ -109,7 +109,7 @@ def test_plugin_windows_mocked():
|
||||
obj.duration = 0
|
||||
|
||||
# Test URL functionality
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj.url(), str)
|
||||
|
||||
# Check that it found our mocked environments
|
||||
assert obj.enabled is True
|
||||
@ -125,7 +125,7 @@ def test_plugin_windows_mocked():
|
||||
obj = apprise.Apprise.instantiate(
|
||||
'windows://_/?image=True', suppress_exceptions=False)
|
||||
obj.duration = 0
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj.url(), str)
|
||||
assert obj.notify(
|
||||
title='title', body='body',
|
||||
notify_type=apprise.NotifyType.INFO) is True
|
||||
@ -133,14 +133,14 @@ def test_plugin_windows_mocked():
|
||||
obj = apprise.Apprise.instantiate(
|
||||
'windows://_/?image=False', suppress_exceptions=False)
|
||||
obj.duration = 0
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj.url(), str)
|
||||
assert obj.notify(
|
||||
title='title', body='body',
|
||||
notify_type=apprise.NotifyType.INFO) is True
|
||||
|
||||
obj = apprise.Apprise.instantiate(
|
||||
'windows://_/?duration=1', suppress_exceptions=False)
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj.url(), str)
|
||||
# loads okay
|
||||
assert obj.duration == 1
|
||||
assert obj.notify(
|
||||
@ -211,7 +211,7 @@ def test_plugin_windows_native(mock_loadimage,
|
||||
obj.duration = 0
|
||||
|
||||
# Test URL functionality
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj.url(), str)
|
||||
|
||||
# Check that it found our mocked environments
|
||||
assert obj.enabled is True
|
||||
@ -227,7 +227,7 @@ def test_plugin_windows_native(mock_loadimage,
|
||||
obj = apprise.Apprise.instantiate(
|
||||
'windows://_/?image=True', suppress_exceptions=False)
|
||||
obj.duration = 0
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj.url(), str)
|
||||
assert obj.notify(
|
||||
title='title', body='body',
|
||||
notify_type=apprise.NotifyType.INFO) is True
|
||||
@ -235,14 +235,14 @@ def test_plugin_windows_native(mock_loadimage,
|
||||
obj = apprise.Apprise.instantiate(
|
||||
'windows://_/?image=False', suppress_exceptions=False)
|
||||
obj.duration = 0
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj.url(), str)
|
||||
assert obj.notify(
|
||||
title='title', body='body',
|
||||
notify_type=apprise.NotifyType.INFO) is True
|
||||
|
||||
obj = apprise.Apprise.instantiate(
|
||||
'windows://_/?duration=1', suppress_exceptions=False)
|
||||
assert isinstance(obj.url(), str) is True
|
||||
assert isinstance(obj.url(), str)
|
||||
assert obj.notify(
|
||||
title='title', body='body',
|
||||
notify_type=apprise.NotifyType.INFO) is True
|
||||
|
Loading…
Reference in New Issue
Block a user