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
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") ]
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") ]