Adjust XMPP tests again

pull/217/head
Andreas Motl 2020-03-20 19:02:58 +01:00
parent 4e86b44fa7
commit de1e6a35da
1 changed files with 34 additions and 2 deletions

View File

@ -26,9 +26,21 @@
import six
import sys
import ssl
import mock
import apprise
try:
# Python v3.4+
from importlib import reload
except ImportError:
try:
# Python v3.0-v3.3
from imp import reload
except ImportError:
# Python v2.7
pass
# Disable logging for a cleaner testing output
import logging
logging.disable(logging.CRITICAL)
@ -39,13 +51,33 @@ def test_xmpp_plugin(tmpdir):
API: NotifyXMPP Plugin()
"""
class MockedSleekXmppAdapter(apprise.plugins.NotifyXMPP.SleekXmppAdapter):
# Mock the sleekxmpp module completely.
sys.modules['sleekxmpp'] = mock.MagicMock()
# The following libraries need to be reloaded to prevent
# TypeError: super(type, obj): obj must be an instance or subtype of type
# This is better explained in this StackOverflow post:
# https://stackoverflow.com/questions/31363311/\
# any-way-to-manually-fix-operation-of-\
# super-after-ipython-reload-avoiding-ty
#
reload(sys.modules['apprise.plugins.NotifyXMPP'])
reload(sys.modules['apprise.plugins'])
reload(sys.modules['apprise.Apprise'])
reload(sys.modules['apprise'])
# Mock the XMPP adapter to override "self.success".
# This will signal a successful message delivery.
from apprise.plugins.NotifyXMPP import SleekXmppAdapter
class MockedSleekXmppAdapter(SleekXmppAdapter):
def __init__(self, *args, **kwargs):
super(MockedSleekXmppAdapter, self).__init__(*args, **kwargs)
# Mock the XMPP adapter to override "self.success".
self.success = True
NotifyXMPP = sys.modules['apprise.plugins.NotifyXMPP']
NotifyXMPP.SleekXmppAdapter = MockedSleekXmppAdapter
# Disable Throttling to speed testing
apprise.plugins.NotifyBase.request_rate_per_sec = 0