# Path: ntfy/backends/pushover.py
# def notify(title,
#            message,
#            user_key,
#            api_token='aUnsraBiEZVsmrG89AZp47K3S2dX2a',
#            device=None,
#            sound=None,
#            priority=0,
#            expire=None,
#            retry=None,
#            callback=None,
#            url=None,
#            url_title=None,
#            html=False,
#            retcode=None):
#     """
#     Required parameters:
#         * ``user_key``
# 
#     Optional parameters:
#         * ``sound``
#         * ``priority``
#         * ``expire``
#         * ``retry``
#         * ``callback``
#         * ``api_token`` - use your own application token
#         * ``device`` - target a device, if omitted, target all devices
#         * ``url``
#         * ``url_title``
#         * ``html``
#     """
# 
#     data = {
#         'message': message,
#         'token': api_token,
#         'user': user_key,
#         'title': title,
#     }
#     if device:
#         data['device'] = device
# 
#     if sound:
#         data['sound'] = sound
# 
#     if url:
#         data['url'] = url
# 
#     if url_title:
#         if not url:
#             logging.getLogger(__name__).warning(
#                 'url_title specified without specifying url')
#         else:
#             data['url_title'] = url_title
# 
#     if html:
#         data['html'] = 1
# 
#     priority = int(priority)
#     if priority <= 2 and priority >= -2:
#         if priority != 0:
#             data['priority'] = priority
# 
#         # Expire, Retry, and Callback only apply to an Emergency Priority
#         if priority == 2:
#             # Retry can not be less than 30 per the API
#             if not retry or retry < 30:
#                 logging.getLogger(__name__).error(
#                     'retry is less than 30 or is not set, '
#                     'setting retry to 30 to comply with '
#                     'pushover API requirements')
#                 data['retry'] = 30
#             else:
#                 data['retry'] = retry
# 
#             # Expire can not be more than 86400 (24 hours)
#             if not expire or expire > 86400:
#                 logging.getLogger(__name__).error(
#                     'expire is greater than 86400 seconds or is not set,'
#                     'setting expire to 86400 to comply with'
#                     'pushover API requirements')
#                 data['expire'] = 86400
#             elif expire <= 86400:
#                 data['expire'] = expire
# 
#             if callback:
#                 data['callback'] = callback
#         else:
#             if retry:
#                 logging.getLogger(__name__).warning(
#                     'Non-emergency, ignoring retry set in config')
#             if expire:
#                 logging.getLogger(__name__).warning(
#                     'Non-emergency, ignoring expire set in config')
#             if callback:
#                 logging.getLogger(__name__).warning(
#                     'Non-emergency, ignoring callback set in config')
# 
#     else:
#         raise ValueError('priority must be an integer from -2 to 2')
# 
#     resp = requests.post(
#         'https://api.pushover.net/1/messages.json',
#         data=data,
#         headers={
#             'User-Agent': USER_AGENT,
#         })
# 
#     if resp.status_code == 429:
#         print("ntfy's default api_token has reached pushover's rate limit")
#         print("create your own app at https://pushover.net/apps/clone/ntfy")
#         print("and set api_token in your config file.")
#         return 1
# 
#     resp.raise_for_status()
# 
# Path: ntfy/config.py
# USER_AGENT = 'ntfy/{version} {default_user_agent}'.format(
#     version=__version__,
#     default_user_agent=requests.utils.default_user_agent())


from unittest import TestCase, main
from mock import patch
from ntfy.backends.pushover import notify
from ntfy.config import USER_AGENT



class TestPushover(TestCase):
    @patch('requests.post')
    def test_basic(self, mock_post):

# Path: ntfy/backends/pushover.py
# def notify(title,
#            message,
#            user_key,
#            api_token='aUnsraBiEZVsmrG89AZp47K3S2dX2a',
#            device=None,
#            sound=None,
#            priority=0,
#            expire=None,
#            retry=None,
#            callback=None,
#            url=None,
#            url_title=None,
#            html=False,
#            retcode=None):
#     """
#     Required parameters:
#         * ``user_key``
# 
#     Optional parameters:
#         * ``sound``
#         * ``priority``
#         * ``expire``
#         * ``retry``
#         * ``callback``
#         * ``api_token`` - use your own application token
#         * ``device`` - target a device, if omitted, target all devices
#         * ``url``
#         * ``url_title``
#         * ``html``
#     """
# 
#     data = {
#         'message': message,
#         'token': api_token,
#         'user': user_key,
#         'title': title,
#     }
#     if device:
#         data['device'] = device
# 
#     if sound:
#         data['sound'] = sound
# 
#     if url:
#         data['url'] = url
# 
#     if url_title:
#         if not url:
#             logging.getLogger(__name__).warning(
#                 'url_title specified without specifying url')
#         else:
#             data['url_title'] = url_title
# 
#     if html:
#         data['html'] = 1
# 
#     priority = int(priority)
#     if priority <= 2 and priority >= -2:
#         if priority != 0:
#             data['priority'] = priority
# 
#         # Expire, Retry, and Callback only apply to an Emergency Priority
#         if priority == 2:
#             # Retry can not be less than 30 per the API
#             if not retry or retry < 30:
#                 logging.getLogger(__name__).error(
#                     'retry is less than 30 or is not set, '
#                     'setting retry to 30 to comply with '
#                     'pushover API requirements')
#                 data['retry'] = 30
#             else:
#                 data['retry'] = retry
# 
#             # Expire can not be more than 86400 (24 hours)
#             if not expire or expire > 86400:
#                 logging.getLogger(__name__).error(
#                     'expire is greater than 86400 seconds or is not set,'
#                     'setting expire to 86400 to comply with'
#                     'pushover API requirements')
#                 data['expire'] = 86400
#             elif expire <= 86400:
#                 data['expire'] = expire
# 
#             if callback:
#                 data['callback'] = callback
#         else:
#             if retry:
#                 logging.getLogger(__name__).warning(
#                     'Non-emergency, ignoring retry set in config')
#             if expire:
#                 logging.getLogger(__name__).warning(
#                     'Non-emergency, ignoring expire set in config')
#             if callback:
#                 logging.getLogger(__name__).warning(
#                     'Non-emergency, ignoring callback set in config')
# 
#     else:
#         raise ValueError('priority must be an integer from -2 to 2')
# 
#     resp = requests.post(
#         'https://api.pushover.net/1/messages.json',
#         data=data,
#         headers={
#             'User-Agent': USER_AGENT,
#         })
# 
#     if resp.status_code == 429:
#         print("ntfy's default api_token has reached pushover's rate limit")
#         print("create your own app at https://pushover.net/apps/clone/ntfy")
#         print("and set api_token in your config file.")
#         return 1
# 
#     resp.raise_for_status()
# 
# Path: ntfy/config.py
# USER_AGENT = 'ntfy/{version} {default_user_agent}'.format(
#     version=__version__,
#     default_user_agent=requests.utils.default_user_agent())


# Path: tests/test_pushover.py
from unittest import TestCase, main
from mock import patch
from ntfy.backends.pushover import notify
from ntfy.config import USER_AGENT




class TestPushover(TestCase):
    @patch('requests.post')
    def test_basic(self, mock_post):

        notify('title', 'message', user_key='user_key')