예제 #1
0
    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)
예제 #2
0
    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()
예제 #3
0
    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()
예제 #4
0
    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)