diff --git a/apprise/plugins/NotifyPlivo.py b/apprise/plugins/NotifyPlivo.py index 167ddc392..2ec0c47e2 100644 --- a/apprise/plugins/NotifyPlivo.py +++ b/apprise/plugins/NotifyPlivo.py @@ -1,27 +1,34 @@ # -*- coding: utf-8 -*- +# BSD 3-Clause License # -# Copyright (C) 2019 Chris Caron -# All rights reserved. +# Apprise - Push Notification Library. +# Copyright (c) 2023, Chris Caron # -# This code is licensed under the MIT License. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files(the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and / or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions : +# 1. Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. # -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# 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. +# 3. Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. # Create an account https://messagebird.com if you don't already have one # @@ -81,13 +88,13 @@ class NotifyPlivo(NotifyBase): 'name': _('Auth ID'), 'type': 'string', 'required': True, - 'regex': (r'^[a-z0-9]{25}$', 'i'), + 'regex': (r'^[a-z0-9]{20,30}$', 'i'), }, 'token': { 'name': _('Auth Token'), 'type': 'string', 'required': True, - 'regex': (r'^[a-z0-9]{25}$', 'i'), + 'regex': (r'^[a-z0-9]{30,50}$', 'i'), }, 'source': { 'name': _('Source Phone No'), diff --git a/test/test_plugin_plivo.py b/test/test_plugin_plivo.py index 36500cd40..39281e439 100644 --- a/test/test_plugin_plivo.py +++ b/test/test_plugin_plivo.py @@ -1,27 +1,35 @@ # -*- coding: utf-8 -*- +# BSD 3-Clause License # -# Copyright (C) 2022 Chris Caron -# All rights reserved. +# Apprise - Push Notification Library. +# Copyright (c) 2023, Chris Caron # -# This code is licensed under the MIT License. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files(the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and / or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions : +# 1. Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. # -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. # -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# 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. +# 3. Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + from apprise.plugins.NotifyPlivo import NotifyPlivo from helpers import AppriseURLTester @@ -43,38 +51,38 @@ # invalid token 'instance': TypeError, }), - ('plivo://{}@{}/123'.format('a' * 25, 'a' * 25), { + ('plivo://{}@{}/123'.format('a' * 25, 'a' * 40), { # invalid phone number 'instance': TypeError, }), - ('plivo://{}@{}/abc'.format('a' * 25, 'a' * 25), { + ('plivo://{}@{}/abc'.format('a' * 25, 'a' * 40), { # invalid phone number 'instance': TypeError, }), - ('plivo://{}@{}/15551232000'.format('a' * 25, 'a' * 25), { + ('plivo://{}@{}/15551232000'.format('a' * 25, 'a' * 40), { # target phone number becomes who we text too; all is good 'instance': NotifyPlivo, }), - ('plivo://{}@{}/15551232000/abcd'.format('a' * 25, 'a' * 25), { + ('plivo://{}@{}/15551232000/abcd'.format('a' * 25, 'a' * 40), { # invalid target phone number; we fall back to texting ourselves 'instance': NotifyPlivo, }), - ('plivo://{}@{}/15551232000/123'.format('a' * 25, 'a' * 25), { + ('plivo://{}@{}/15551232000/123'.format('a' * 25, 'a' * 40), { # invalid target phone number; we fall back to texting ourselves 'instance': NotifyPlivo, }), ('plivo://{}@{}/?from=15551233000&to=15551232000'.format( - 'a' * 25, 'a' * 25), { + 'a' * 25, 'a' * 40), { # reference to to= and frome= 'instance': NotifyPlivo, }), - ('plivo://{}@{}/15551232000'.format('a' * 25, 'a' * 25), { + ('plivo://{}@{}/15551232000'.format('a' * 25, 'a' * 40), { 'instance': NotifyPlivo, # throw a bizzare code forcing us to fail to look it up 'response': False, 'requests_response_code': 999, }), - ('plivo://{}@{}/15551232000'.format('a' * 25, 'a' * 25), { + ('plivo://{}@{}/15551232000'.format('a' * 25, 'a' * 40), { 'instance': NotifyPlivo, # Throws a series of connection and transfer exceptions when this flag # is set and tests that we gracfully handle them