mirror of
https://github.com/caronc/apprise.git
synced 2025-08-28 00:36:21 +02:00
Resolve ambiguity with apprise.plugins
module namespace
While the namespace is physically made of modules, it has been amended to be the namespace home for the corresponding notifier classes as well. This turned out to confuse both humans and machines on various ends. While it has apparently worked for a while, it croaks on Python 3.11 now, and is not considered to have been a good idea in general.
This commit is contained in:
@@ -26,8 +26,8 @@ import pytest
|
||||
from unittest import mock
|
||||
|
||||
import requests
|
||||
from apprise import plugins
|
||||
from apprise import NotifyType
|
||||
from apprise.plugins.NotifyIFTTT import NotifyIFTTT
|
||||
from helpers import AppriseURLTester
|
||||
|
||||
# Disable logging for a cleaner testing output
|
||||
@@ -48,22 +48,22 @@ apprise_url_tests = (
|
||||
}),
|
||||
# A nicely formed ifttt url with 1 event and a new key/value store
|
||||
('ifttt://WebHookID@EventID/?+TemplateKey=TemplateVal', {
|
||||
'instance': plugins.NotifyIFTTT,
|
||||
'instance': NotifyIFTTT,
|
||||
|
||||
# Our expected url(privacy=True) startswith() response:
|
||||
'privacy_url': 'ifttt://W...D',
|
||||
}),
|
||||
# Test to= in which case we set the host to the webhook id
|
||||
('ifttt://WebHookID?to=EventID,EventID2', {
|
||||
'instance': plugins.NotifyIFTTT,
|
||||
'instance': NotifyIFTTT,
|
||||
}),
|
||||
# Removing certain keys:
|
||||
('ifttt://WebHookID@EventID/?-Value1=&-Value2', {
|
||||
'instance': plugins.NotifyIFTTT,
|
||||
'instance': NotifyIFTTT,
|
||||
}),
|
||||
# A nicely formed ifttt url with 2 events defined:
|
||||
('ifttt://WebHookID@EventID/EventID2/', {
|
||||
'instance': plugins.NotifyIFTTT,
|
||||
'instance': NotifyIFTTT,
|
||||
}),
|
||||
# Support Native URL references
|
||||
('https://maker.ifttt.com/use/WebHookID/', {
|
||||
@@ -71,27 +71,27 @@ apprise_url_tests = (
|
||||
'instance': TypeError,
|
||||
}),
|
||||
('https://maker.ifttt.com/use/WebHookID/EventID/', {
|
||||
'instance': plugins.NotifyIFTTT,
|
||||
'instance': NotifyIFTTT,
|
||||
}),
|
||||
# Native URL with arguments
|
||||
('https://maker.ifttt.com/use/WebHookID/EventID/?-Value1=', {
|
||||
'instance': plugins.NotifyIFTTT,
|
||||
'instance': NotifyIFTTT,
|
||||
}),
|
||||
# Test website connection failures
|
||||
('ifttt://WebHookID@EventID', {
|
||||
'instance': plugins.NotifyIFTTT,
|
||||
'instance': NotifyIFTTT,
|
||||
# force a failure
|
||||
'response': False,
|
||||
'requests_response_code': requests.codes.internal_server_error,
|
||||
}),
|
||||
('ifttt://WebHookID@EventID', {
|
||||
'instance': plugins.NotifyIFTTT,
|
||||
'instance': NotifyIFTTT,
|
||||
# throw a bizzare code forcing us to fail to look it up
|
||||
'response': False,
|
||||
'requests_response_code': 999,
|
||||
}),
|
||||
('ifttt://WebHookID@EventID', {
|
||||
'instance': plugins.NotifyIFTTT,
|
||||
'instance': NotifyIFTTT,
|
||||
# Throws a series of connection and transfer exceptions when this flag
|
||||
# is set and tests that we gracfully handle them
|
||||
'test_requests_exceptions': True,
|
||||
@@ -131,72 +131,72 @@ def test_plugin_ifttt_edge_cases(mock_post, mock_get, no_throttling):
|
||||
|
||||
# No webhook_id specified
|
||||
with pytest.raises(TypeError):
|
||||
plugins.NotifyIFTTT(webhook_id=None, events=None)
|
||||
NotifyIFTTT(webhook_id=None, events=None)
|
||||
|
||||
# Initializes the plugin with an invalid webhook id
|
||||
with pytest.raises(TypeError):
|
||||
plugins.NotifyIFTTT(webhook_id=None, events=events)
|
||||
NotifyIFTTT(webhook_id=None, events=events)
|
||||
|
||||
# Whitespace also acts as an invalid webhook id
|
||||
with pytest.raises(TypeError):
|
||||
plugins.NotifyIFTTT(webhook_id=" ", events=events)
|
||||
NotifyIFTTT(webhook_id=" ", events=events)
|
||||
|
||||
# No events specified
|
||||
with pytest.raises(TypeError):
|
||||
plugins.NotifyIFTTT(webhook_id=webhook_id, events=None)
|
||||
NotifyIFTTT(webhook_id=webhook_id, events=None)
|
||||
|
||||
obj = plugins.NotifyIFTTT(webhook_id=webhook_id, events=events)
|
||||
assert isinstance(obj, plugins.NotifyIFTTT) is True
|
||||
obj = NotifyIFTTT(webhook_id=webhook_id, events=events)
|
||||
assert isinstance(obj, NotifyIFTTT) is True
|
||||
|
||||
assert obj.notify(
|
||||
body='body', title='title', notify_type=NotifyType.INFO) is True
|
||||
|
||||
# Test the addition of tokens
|
||||
obj = plugins.NotifyIFTTT(
|
||||
obj = NotifyIFTTT(
|
||||
webhook_id=webhook_id, events=events,
|
||||
add_tokens={'Test': 'ValueA', 'Test2': 'ValueB'})
|
||||
|
||||
assert isinstance(obj, plugins.NotifyIFTTT) is True
|
||||
assert isinstance(obj, NotifyIFTTT) is True
|
||||
|
||||
assert obj.notify(
|
||||
body='body', title='title', notify_type=NotifyType.INFO) is True
|
||||
|
||||
# Invalid del_tokens entry
|
||||
with pytest.raises(TypeError):
|
||||
plugins.NotifyIFTTT(
|
||||
NotifyIFTTT(
|
||||
webhook_id=webhook_id, events=events,
|
||||
del_tokens=plugins.NotifyIFTTT.ifttt_default_title_key)
|
||||
del_tokens=NotifyIFTTT.ifttt_default_title_key)
|
||||
|
||||
assert isinstance(obj, plugins.NotifyIFTTT) is True
|
||||
assert isinstance(obj, NotifyIFTTT) is True
|
||||
|
||||
assert obj.notify(
|
||||
body='body', title='title', notify_type=NotifyType.INFO) is True
|
||||
|
||||
# Test removal of tokens by a list
|
||||
obj = plugins.NotifyIFTTT(
|
||||
obj = NotifyIFTTT(
|
||||
webhook_id=webhook_id, events=events,
|
||||
add_tokens={
|
||||
'MyKey': 'MyValue'
|
||||
},
|
||||
del_tokens=(
|
||||
plugins.NotifyIFTTT.ifttt_default_title_key,
|
||||
plugins.NotifyIFTTT.ifttt_default_body_key,
|
||||
plugins.NotifyIFTTT.ifttt_default_type_key))
|
||||
NotifyIFTTT.ifttt_default_title_key,
|
||||
NotifyIFTTT.ifttt_default_body_key,
|
||||
NotifyIFTTT.ifttt_default_type_key))
|
||||
|
||||
assert isinstance(obj, plugins.NotifyIFTTT) is True
|
||||
assert isinstance(obj, NotifyIFTTT) is True
|
||||
|
||||
assert obj.notify(
|
||||
body='body', title='title', notify_type=NotifyType.INFO) is True
|
||||
|
||||
# Test removal of tokens as dict
|
||||
obj = plugins.NotifyIFTTT(
|
||||
obj = NotifyIFTTT(
|
||||
webhook_id=webhook_id, events=events,
|
||||
add_tokens={
|
||||
'MyKey': 'MyValue'
|
||||
},
|
||||
del_tokens={
|
||||
plugins.NotifyIFTTT.ifttt_default_title_key: None,
|
||||
plugins.NotifyIFTTT.ifttt_default_body_key: None,
|
||||
plugins.NotifyIFTTT.ifttt_default_type_key: None})
|
||||
NotifyIFTTT.ifttt_default_title_key: None,
|
||||
NotifyIFTTT.ifttt_default_body_key: None,
|
||||
NotifyIFTTT.ifttt_default_type_key: None})
|
||||
|
||||
assert isinstance(obj, plugins.NotifyIFTTT) is True
|
||||
assert isinstance(obj, NotifyIFTTT) is True
|
||||
|
Reference in New Issue
Block a user