import requests from apprise.plugins.lark import NotifyLark from helpers import AppriseURLTester # Disable logging for a cleaner testing output import logging logging.disable(logging.CRITICAL) # Our Testing URLs apprise_url_tests = ( ('lark://', { # Teams Token missing 'instance': TypeError, }), ('lark://:@/', { # We don't have strict host checking on for lark, so this URL # actually becomes parseable and :@ becomes a hostname. # The below errors because a second token wasn't found 'instance': TypeError, }), ('lark://{}'.format('abcd-1234'), { # token provided - we're good 'instance': NotifyLark, # Our expected url(privacy=True) startswith() response: 'privacy_url': 'lark://****/', }), ('lark://{}'.format('abcd-1234'), { # token provided - we're good 'instance': NotifyLark, # Our expected url(privacy=True) startswith() response: 'privacy_url': 'lark://****/', }), ('lark://?token={}'.format('abcd-1234'), { # token provided - we're good 'instance': NotifyLark, # Our expected url(privacy=True) startswith() response: 'privacy_url': 'lark://****/', }), # Support Native URLs with arguments ('https://open.larksuite.com/open-apis/bot/v2/hook/{}'.format( 'abcd-1234'), { # token provided - we're good 'instance': NotifyLark, }), ('lark://{}'.format('abcd-1234'), { 'instance': NotifyLark, # force a failure 'response': False, 'requests_response_code': requests.codes.internal_server_error, }), ('lark://{}'.format('abcd-1234'), { 'instance': NotifyLark, # throw a bizzare code forcing us to fail to look it up 'response': False, 'requests_response_code': 999, }), ('lark://{}'.format('a' * 80), { 'instance': NotifyLark, # Throws a series of connection and transfer exceptions when this flag # is set and tests that we gracfully handle them 'test_requests_exceptions': True, }), ) def test_plugin_lark_urls(): """ NotifyLark() Apprise URLs """ # Run our general tests AppriseURLTester(tests=apprise_url_tests).run_all()