From 3f099930b7b4937eb25020c290bff5fdc88907f2 Mon Sep 17 00:00:00 2001 From: Chris Caron Date: Tue, 27 Aug 2024 19:56:34 -0400 Subject: [PATCH] test coverage --- apprise/plugins/octopush.py | 23 ++++++++++++++++++----- test/test_plugin_octopush.py | 22 +++++++++++----------- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/apprise/plugins/octopush.py b/apprise/plugins/octopush.py index 85f63834..e721fd20 100644 --- a/apprise/plugins/octopush.py +++ b/apprise/plugins/octopush.py @@ -28,15 +28,15 @@ # import requests -from .NotifyBase import NotifyBase -from ..URLBase import PrivacyMode +from .base import NotifyBase +from ..url import PrivacyMode from ..common import NotifyType from ..utils import is_phone_no from ..utils import is_email from ..utils import parse_phone_no from ..utils import parse_bool from ..utils import validate_regex -from ..AppriseLocale import gettext_lazy as _ +from ..locale import gettext_lazy as _ # Octopush Message Types @@ -293,7 +293,7 @@ class NotifyOctopush(NotifyBase): # Prepare our headers headers = { 'User-Agent': self.app_id, - 'Accept': 'application/json', + 'Content-Type': 'application/json', 'api-key': self.api_key, 'api-login': self.api_login, 'cache-control': 'no-cache', @@ -341,7 +341,9 @@ class NotifyOctopush(NotifyBase): timeout=self.request_timeout, ) - if r.status_code != requests.codes.ok: + if r.status_code not in ( + requests.codes.ok, requests.codes.created): + # We had a problem status_str = \ NotifyBase.http_response_code_lookup( @@ -380,6 +382,17 @@ class NotifyOctopush(NotifyBase): return not has_error + @property + def url_identifier(self): + """ + Returns all of the identifiers that make this URL unique from + another simliar one. Targets or end points should never be identified + here. + """ + return ( + self.secure_protocol, self.api_login, self.api_key, self.mtype, + ) + def url(self, privacy=False, *args, **kwargs): """ Returns the URL built dynamically based on specified arguments. diff --git a/test/test_plugin_octopush.py b/test/test_plugin_octopush.py index 0cfdee29..b3ff7eeb 100644 --- a/test/test_plugin_octopush.py +++ b/test/test_plugin_octopush.py @@ -22,7 +22,7 @@ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -from apprise import plugins +from apprise.plugins.octopush import NotifyOctopush from helpers import AppriseURLTester # Disable logging for a cleaner testing output @@ -57,25 +57,25 @@ apprise_url_tests = ( }), ('octopush://user@myaccount.com/apikey', { # All valid entries, but no target phone numbers defined - 'instance': plugins.NotifyOctopush.NotifyOctopush, + 'instance': NotifyOctopush, 'response': False, }), ('octopush://user@myaccount.com/apikey/+0987654321', { # A valid url - 'instance': plugins.NotifyOctopush.NotifyOctopush, + 'instance': NotifyOctopush, # Our expected url(privacy=True) startswith() response: 'privacy_url': 'octopush://u...m/****/+0987654321', }), ('octopush://sender:user@myaccount.com/apikey/+1111111111', { # A valid url with sender - 'instance': plugins.NotifyOctopush.NotifyOctopush, + 'instance': NotifyOctopush, # Our expected url(privacy=True) startswith() response: 'privacy_url': 'octopush://sender:u...m/****/+1111111111', }), ('octopush://?login=user@myaccount.com&key=key&to=9999999999' '&purpose=wholesale', { # Testing valid purpose change - 'instance': plugins.NotifyOctopush.NotifyOctopush}), + 'instance': NotifyOctopush}), ('octopush://?login=user@myaccount.com&key=key&to=9999999999' '&purpose=invalid', { # Testing invalid purpose change @@ -83,33 +83,33 @@ apprise_url_tests = ( ('octopush://?login=user@myaccount.com&key=key&to=9999999999' '&type=premium', { # Testing valid type change - 'instance': plugins.NotifyOctopush.NotifyOctopush}), + 'instance': NotifyOctopush}), ('octopush://?login=user@myaccount.com&key=key&to=9999999999' '&type=invalid', { # Testing invalid type change 'instance': TypeError}), ('octopush://user@myaccount.com/apikey/+3333333333?replies=yes', { # Test replies - 'instance': plugins.NotifyOctopush.NotifyOctopush, + 'instance': NotifyOctopush, }), ('octopush://sender:user@myaccount.com/apikey/{}/{}/{}/?batch=yes'.format( '1' * 10, '2' * 3, '3' * 11), { # batch mode, 2 valid targets (1 is invalid and skipped) - 'instance': plugins.NotifyOctopush.NotifyOctopush}), + 'instance': NotifyOctopush}), ('octopush://_?key=abc123&login=user@myaccount&sender=abc&to=2222222222', { # use get args to acomplish the same thing - 'instance': plugins.NotifyOctopush.NotifyOctopush, + 'instance': NotifyOctopush, # Our expected url(privacy=True) startswith() response: 'privacy_url': 'octopush://abc:u...t/****/+2222222222', }), ('octopush://user@myaccount.com/apikey/1234567890', { - 'instance': plugins.NotifyOctopush.NotifyOctopush, + 'instance': NotifyOctopush, # throw a bizzare code forcing us to fail to look it up 'response': False, 'requests_response_code': 999, }), ('octopush://user@myaccount.com/apikey/1234567890', { - 'instance': plugins.NotifyOctopush.NotifyOctopush, + 'instance': NotifyOctopush, # Throws a series of connection and transfer exceptions when this flag # is set and tests that we gracfully handle them 'test_requests_exceptions': True,