Beispiel #1
0
 def test_init(self):
     cls = Pushover('mykey')
     assert cls.api_token == 'aB5D3uoGZuVQg4QMJMm8817sJFn7Up'
     assert cls.user_key == 'mykey'
     assert cls.title == 'piface input change'
     assert cls.url is None
     assert cls.priority == 0
     assert cls.sound is None
Beispiel #2
0
 def test_init_options(self):
     cls = Pushover('mykey',
                    title='foo',
                    url='myurl',
                    priority=2,
                    sound='mysound')
     assert cls.api_token == 'aB5D3uoGZuVQg4QMJMm8817sJFn7Up'
     assert cls.user_key == 'mykey'
     assert cls.title == 'foo'
     assert cls.url == 'myurl'
     assert cls.priority == 2
     assert cls.sound == 'mysound'
 def setup(self):
     self.cls = Pushover('mykey')
class TestPushover(object):

    def setup(self):
        self.cls = Pushover('mykey')

    def test_send(self):
        with patch('%s.Pushover._pushover_send' % pbm) as mock_p_send:
            self.cls.send(datetime(2015, 2, 13, 1, 2, 3, 123456),
                          2, 0, 'pin2', 'pin2state0')
        assert mock_p_send.mock_calls == [
            call('pin2 (2) changed to pin2state0 (0) at 2015-02-13T01:02:03',
                 datetime(2015, 2, 13, 1, 2, 3, 123456))
        ]

    def test_pushover_send(self):
        expected = {
            'user': '******',
            'timestamp': 1423807323,
            'title': 'piface input change',
            'token': 'aB5D3uoGZuVQg4QMJMm8817sJFn7Up',
            'message': 'mymsg',
            'priority': 0
        }
        with patch('%s.requests.post' % pbm) as mock_post:
            with patch('%s.logger' % pbm) as mock_logger:
                type(mock_post.return_value).status_code = 200
                mock_post.return_value.json.return_value = {'status': 1}
                self.cls._pushover_send('mymsg',
                                        datetime(2015, 2, 13, 1, 2, 3, 123456))
        assert mock_post.mock_calls == [
            call('https://api.pushover.net/1/messages.json', data=expected),
            call().json()
        ]
        assert mock_logger.mock_calls == [
            call.debug("Sending POST to Pushover; data: %s", expected)
        ]

    def test_pushover_send_with_opts(self):
        self.cls.priority = 2
        self.cls.sound = 'falling'
        self.cls.url = 'myurl'
        expected = {
            'user': '******',
            'timestamp': 1423807323,
            'title': 'piface input change',
            'token': 'aB5D3uoGZuVQg4QMJMm8817sJFn7Up',
            'message': 'mymsg',
            'priority': 2,
            'sound': 'falling',
            'url': 'myurl'
        }
        with patch('%s.requests.post' % pbm) as mock_post:
            with patch('%s.logger' % pbm) as mock_logger:
                type(mock_post.return_value).status_code = 200
                mock_post.return_value.json.return_value = {'status': 1}
                self.cls._pushover_send('mymsg',
                                        datetime(2015, 2, 13, 1, 2, 3, 123456))
        assert mock_post.mock_calls == [
            call('https://api.pushover.net/1/messages.json', data=expected),
            call().json()
        ]
        assert mock_logger.mock_calls == [
            call.debug("Sending POST to Pushover; data: %s", expected)
        ]

    def test_pushover_send_error(self):
        expected = {
            'user': '******',
            'timestamp': 1423807323,
            'title': 'piface input change',
            'token': 'aB5D3uoGZuVQg4QMJMm8817sJFn7Up',
            'message': 'mymsg',
            'priority': 0
        }
        resp_json = {
            'status': 0, 'user': '******',
            'errors': ['user identifier is invalid']
        }
        with patch('%s.requests.post' % pbm) as mock_post:
            with patch('%s.logger' % pbm) as mock_logger:
                type(mock_post.return_value).status_code = 401
                mock_post.return_value.json.return_value = resp_json
                self.cls._pushover_send('mymsg',
                                        datetime(2015, 2, 13, 1, 2, 3, 123456))
        assert mock_post.mock_calls == [
            call('https://api.pushover.net/1/messages.json', data=expected),
            call().json()
        ]
        assert mock_logger.mock_calls == [
            call.debug("Sending POST to Pushover; data: %s", expected),
            call.critical("POST to Pushover returned %s", 401),
            call.critical("POST to Pushover returned bad status: %s", resp_json)
        ]

    def test_pushover_cant_decode_json(self):
        expected = {
            'user': '******',
            'timestamp': 1423807323,
            'title': 'piface input change',
            'token': 'aB5D3uoGZuVQg4QMJMm8817sJFn7Up',
            'message': 'mymsg',
            'priority': 0
        }

        def se_exc():
            raise Exception("foo")

        with patch('%s.requests.post' % pbm) as mock_post:
            with patch('%s.logger' % pbm) as mock_logger:
                type(mock_post.return_value).status_code = 200
                mock_post.return_value.json.side_effect = se_exc
                self.cls._pushover_send('mymsg',
                                        datetime(2015, 2, 13, 1, 2, 3, 123456))
        assert mock_post.mock_calls == [
            call('https://api.pushover.net/1/messages.json', data=expected),
            call().json()
        ]
        assert mock_logger.mock_calls == [
            call.debug("Sending POST to Pushover; data: %s", expected),
            call.critical("POST to Pushover - response could not be decoded")
        ]

    def test_pushover_no_status(self):
        expected = {
            'user': '******',
            'timestamp': 1423807323,
            'title': 'piface input change',
            'token': 'aB5D3uoGZuVQg4QMJMm8817sJFn7Up',
            'message': 'mymsg',
            'priority': 0
        }
        resp_json = {
            'foo': 'bar'
        }
        with patch('%s.requests.post' % pbm) as mock_post:
            with patch('%s.logger' % pbm) as mock_logger:
                type(mock_post.return_value).status_code = 200
                mock_post.return_value.json.return_value = resp_json
                self.cls._pushover_send('mymsg',
                                        datetime(2015, 2, 13, 1, 2, 3, 123456))
        assert mock_post.mock_calls == [
            call('https://api.pushover.net/1/messages.json', data=expected),
            call().json()
        ]
        assert mock_logger.mock_calls == [
            call.debug("Sending POST to Pushover; data: %s", expected),
            call.critical("POST to Pushover - response lacks status element")
        ]
Beispiel #5
0
 def setup(self):
     self.cls = Pushover('mykey')
Beispiel #6
0
class TestPushover(object):
    def setup(self):
        self.cls = Pushover('mykey')

    def test_send(self):
        with patch('%s.Pushover._pushover_send' % pbm) as mock_p_send:
            self.cls.send(datetime(2015, 2, 13, 1, 2, 3, 123456), 2, 0, 'pin2',
                          'pin2state0')
        assert mock_p_send.mock_calls == [
            call('pin2 (2) changed to pin2state0 (0) at 2015-02-13T01:02:03',
                 datetime(2015, 2, 13, 1, 2, 3, 123456))
        ]

    def test_pushover_send(self):
        expected = {
            'user': '******',
            'timestamp': 1423807323,
            'title': 'piface input change',
            'token': 'aB5D3uoGZuVQg4QMJMm8817sJFn7Up',
            'message': 'mymsg',
            'priority': 0
        }
        with patch('%s.requests.post' % pbm) as mock_post:
            with patch('%s.logger' % pbm) as mock_logger:
                type(mock_post.return_value).status_code = 200
                mock_post.return_value.json.return_value = {'status': 1}
                self.cls._pushover_send('mymsg',
                                        datetime(2015, 2, 13, 1, 2, 3, 123456))
        assert mock_post.mock_calls == [
            call('https://api.pushover.net/1/messages.json', data=expected),
            call().json()
        ]
        assert mock_logger.mock_calls == [
            call.debug("Sending POST to Pushover; data: %s", expected)
        ]

    def test_pushover_send_with_opts(self):
        self.cls.priority = 2
        self.cls.sound = 'falling'
        self.cls.url = 'myurl'
        expected = {
            'user': '******',
            'timestamp': 1423807323,
            'title': 'piface input change',
            'token': 'aB5D3uoGZuVQg4QMJMm8817sJFn7Up',
            'message': 'mymsg',
            'priority': 2,
            'sound': 'falling',
            'url': 'myurl'
        }
        with patch('%s.requests.post' % pbm) as mock_post:
            with patch('%s.logger' % pbm) as mock_logger:
                type(mock_post.return_value).status_code = 200
                mock_post.return_value.json.return_value = {'status': 1}
                self.cls._pushover_send('mymsg',
                                        datetime(2015, 2, 13, 1, 2, 3, 123456))
        assert mock_post.mock_calls == [
            call('https://api.pushover.net/1/messages.json', data=expected),
            call().json()
        ]
        assert mock_logger.mock_calls == [
            call.debug("Sending POST to Pushover; data: %s", expected)
        ]

    def test_pushover_send_error(self):
        expected = {
            'user': '******',
            'timestamp': 1423807323,
            'title': 'piface input change',
            'token': 'aB5D3uoGZuVQg4QMJMm8817sJFn7Up',
            'message': 'mymsg',
            'priority': 0
        }
        resp_json = {
            'status': 0,
            'user': '******',
            'errors': ['user identifier is invalid']
        }
        with patch('%s.requests.post' % pbm) as mock_post:
            with patch('%s.logger' % pbm) as mock_logger:
                type(mock_post.return_value).status_code = 401
                mock_post.return_value.json.return_value = resp_json
                self.cls._pushover_send('mymsg',
                                        datetime(2015, 2, 13, 1, 2, 3, 123456))
        assert mock_post.mock_calls == [
            call('https://api.pushover.net/1/messages.json', data=expected),
            call().json()
        ]
        assert mock_logger.mock_calls == [
            call.debug("Sending POST to Pushover; data: %s", expected),
            call.critical("POST to Pushover returned %s", 401),
            call.critical("POST to Pushover returned bad status: %s",
                          resp_json)
        ]

    def test_pushover_cant_decode_json(self):
        expected = {
            'user': '******',
            'timestamp': 1423807323,
            'title': 'piface input change',
            'token': 'aB5D3uoGZuVQg4QMJMm8817sJFn7Up',
            'message': 'mymsg',
            'priority': 0
        }

        def se_exc():
            raise Exception("foo")

        with patch('%s.requests.post' % pbm) as mock_post:
            with patch('%s.logger' % pbm) as mock_logger:
                type(mock_post.return_value).status_code = 200
                mock_post.return_value.json.side_effect = se_exc
                self.cls._pushover_send('mymsg',
                                        datetime(2015, 2, 13, 1, 2, 3, 123456))
        assert mock_post.mock_calls == [
            call('https://api.pushover.net/1/messages.json', data=expected),
            call().json()
        ]
        assert mock_logger.mock_calls == [
            call.debug("Sending POST to Pushover; data: %s", expected),
            call.critical("POST to Pushover - response could not be decoded")
        ]

    def test_pushover_no_status(self):
        expected = {
            'user': '******',
            'timestamp': 1423807323,
            'title': 'piface input change',
            'token': 'aB5D3uoGZuVQg4QMJMm8817sJFn7Up',
            'message': 'mymsg',
            'priority': 0
        }
        resp_json = {'foo': 'bar'}
        with patch('%s.requests.post' % pbm) as mock_post:
            with patch('%s.logger' % pbm) as mock_logger:
                type(mock_post.return_value).status_code = 200
                mock_post.return_value.json.return_value = resp_json
                self.cls._pushover_send('mymsg',
                                        datetime(2015, 2, 13, 1, 2, 3, 123456))
        assert mock_post.mock_calls == [
            call('https://api.pushover.net/1/messages.json', data=expected),
            call().json()
        ]
        assert mock_logger.mock_calls == [
            call.debug("Sending POST to Pushover; data: %s", expected),
            call.critical("POST to Pushover - response lacks status element")
        ]