def test_valid_single_send_messages(self, client): """Validate message is sent via the SQS backend""" messages = [{'type': 'echo', 'body': 'yes'}] backend = SQSMessagingBackend() backend.send_messages(messages) put = client.return_value.__enter__.return_value.send_messages self.assertIn(json.dumps(messages[0]), str(put.mock_calls[0])) self.assertEquals(put.call_count, 1)
def test_exception_during_receive_messages(self, client): """Validate exception handling during message consumption from SQS backend""" message = MagicMock() value = {'test': 'thing'} message.body = json.dumps(value) get_func = MagicMock(return_value=[message]) client.return_value.__enter__.return_value.receive_messages = get_func backend = SQSMessagingBackend() generator = backend.receive_messages(10) results = [] try: results = [generator.next()] while True: results.append(generator.send(False)) except StopIteration: pass self.assertEquals(results, [value]) message.delete.assert_not_called()
def test_valid_receive_messages(self, client): """Validate successful message retrieval via SQS backend""" message1 = MagicMock(body=json.dumps({'type': 'echo', 'body': '1'})) message2 = MagicMock(body=json.dumps({'type': 'echo', 'body': '2'})) get_func = MagicMock(return_value=[message1, message2]) client.return_value.__enter__.return_value.receive_messages = get_func backend = SQSMessagingBackend() generator = backend.receive_messages(5) results = [] try: results = [generator.next()] while True: results.append(generator.send(True)) except StopIteration: pass # wrap result in list to force generator iteration self.assertEqual(len(results), 2) message1.delete.assert_called() message2.delete.assert_called()
def test_valid_init(self, details): """Validate initialization specific to SQS backend is completed""" region_name = 'us-east-1' user_name = 'user' password = '******' details.return_value.get_address.return_value = region_name = 'us-east-1' details.return_value.get_user_name.return_value = user_name = 'user' details.return_value.get_password.return_value = password = '******' backend = SQSMessagingBackend() self.assertEqual(backend.type, 'sqs') self.assertEqual(backend._region_name, region_name) self.assertEqual(backend._credentials.access_key_id, user_name) self.assertEqual(backend._credentials.secret_access_key, password)