Пример #1
0
    def test_move_message_empty(self):
        sqs = boto3.client("sqs", region_name=self.region,
                           aws_access_key_id=self.access_key,
                           aws_secret_access_key=self.secret_key)

        sqs.create_queue(QueueName="queue_a")
        sqs.create_queue(QueueName="queue_b")

        main(self.args)
Пример #2
0
    def test_move_message_without_message_attributes(self, mock_get_pass):
        mock_get_pass.side_effect = [self.access_key, self.secret_key] * 2

        self.add_message(self.queue_a_url, with_message_attributes=False)

        result = main(self.args)

        self.assertEqual(result, ReasonStopEnum.EMPTY_RECEIVED)

        self.assertEqual(mock_get_pass.call_count, 2)

        dst_message = self.sqs.receive_message(
            QueueUrl=self.queue_b_url,
            MessageAttributeNames=["All"],
            AttributeNames=["All"],
            MaxNumberOfMessages=10,
        )

        self.assertIsNotNone(dst_message)
        self.assertIn("Messages", dst_message)
        self.assertTrue(len(dst_message["Messages"]) == 1)

        first_message = dst_message["Messages"][0]
        self.assertEqual(first_message["Body"],
                         json.dumps(dict(test="This is a test")))
        self.assertNotIn("MessagAttributes", dst_message)

        mock_get_pass.reset_mock()
Пример #3
0
    def test_move_message_empty(self, mock_get_pass):
        result = main(self.args)

        self.assertEqual(result, ReasonStopEnum.EMPTY_RECEIVED)

        mock_get_pass.assert_not_called()
        mock_get_pass.reset_mock()
Пример #4
0
    def test_move_message(self, mock_get_pass):
        self.add_message(self.queue_a_url)

        result = main(self.args)

        self.assertEquals(result, ReasonStopEnum.EMPTY_RECEIVED)
        mock_get_pass.assert_not_called()

        dst_message = self.sqs.receive_message(QueueUrl=self.queue_b_url,
                                               MessageAttributeNames=["All"],
                                               AttributeNames=['All'],
                                               MaxNumberOfMessages=10)

        self.assertIsNotNone(dst_message)

        self.assertIn("Messages", dst_message)
        self.assertTrue(len(dst_message["Messages"]) == 1)

        first_message = dst_message["Messages"][0]
        self.assertEqual(first_message["Body"],
                         json.dumps(dict(test="This is a test")))

        msg_attributes = first_message["MessageAttributes"]
        self.assertIn("Attribute1", msg_attributes)
        self.assertIn("Attribute2", msg_attributes)

        self.assertEqual(msg_attributes["Attribute1"]["StringValue"],
                         "Attribute Value")
        self.assertEqual(msg_attributes["Attribute1"]["DataType"], "String")
        self.assertEqual(msg_attributes["Attribute2"]["StringValue"],
                         "Attribute 2 Value")
        self.assertEqual(msg_attributes["Attribute2"]["DataType"], "String")

        mock_get_pass.reset_mock()
Пример #5
0
    def test_move_message_with_empty_queue(self, mock_get_pass):
        mock_get_pass.side_effect = [self.access_key, self.secret_key] * 2

        self._clean_queues([self.queue_a_url, self.queue_b_url])
        result = main(self.args)

        self.assertEqual(result, ReasonStopEnum.EMPTY_RECEIVED)

        self.assertEqual(mock_get_pass.call_count, 2)
        mock_get_pass.reset_mock()
Пример #6
0
    def test_move_message(self):
        sqs = boto3.client("sqs", region_name=self.region,
                           aws_access_key_id=self.access_key,
                           aws_secret_access_key=self.secret_key)

        sqs.create_queue(QueueName="queue_a")

        message = self.create_message()

        sqs.send_message(QueueUrl=sqs.get_queue_url(QueueName="queue_a")['QueueUrl'],
                         MessageBody=message['Body'],
                         MessageAttributes=message['MessageAttributes'])

        sqs.create_queue(QueueName="queue_b")

        main(self.args)

        dst_message = sqs.receive_message(QueueUrl=sqs.get_queue_url(QueueName="queue_b")['QueueUrl'],
                                          MessageAttributeNames=["All"],
                                          AttributeNames=['All'],
                                          MaxNumberOfMessages=10)

        self.assertIsNotNone(dst_message)
        self.assertIn("Messages", dst_message)
        self.assertTrue(len(dst_message["Messages"]) == 1)

        first_message = dst_message["Messages"][0]
        self.assertEqual(first_message["Body"], json.dumps(dict(test="This is a test")))

        msg_attributes = first_message["MessageAttributes"]
        self.assertIn("Attribute1", msg_attributes)
        self.assertIn("Attribute2", msg_attributes)

        self.assertEqual(msg_attributes["Attribute1"]["StringValue"], "Attribute Value")
        self.assertEqual(msg_attributes["Attribute1"]["DataType"], "String")

        self.assertEqual(msg_attributes["Attribute2"]["StringValue"], "Attribute 2 Value")
        self.assertEqual(msg_attributes["Attribute2"]["DataType"], "String")
    def test_move_messages(self, mock_get_pass):
        mock_get_pass.side_effect = [self.access_key, self.secret_key] * 2

        self.add_message(self.queue_a_url)
        self.add_message(self.queue_a_url)

        before_processing = self.get_number_of_message(self.queue_a_url)

        result = main(self.args)

        after_processing = self.get_number_of_message(self.queue_a_url)

        self.assertEqual(result, ReasonStopEnum.MAX_MESSAGES_RECEIVED)
        self.assertEqual(after_processing, before_processing - 1)
        self.assertEqual(mock_get_pass.call_count, 2)

        dst_message = self.sqs.receive_message(
            QueueUrl=self.queue_b_url,
            MessageAttributeNames=["All"],
            AttributeNames=["All"],
            MaxNumberOfMessages=10,
        )

        self.assertIsNotNone(dst_message)
        self.assertIn("Messages", dst_message)
        self.assertTrue(len(dst_message["Messages"]) == 1)

        first_message = dst_message["Messages"][0]
        self.assertEqual(first_message["Body"],
                         json.dumps(dict(test="This is a test")))

        msg_attributes = first_message["MessageAttributes"]
        self.assertIn("Attribute1", msg_attributes)
        self.assertIn("Attribute2", msg_attributes)

        self.assertEqual(msg_attributes["Attribute1"]["StringValue"],
                         "Attribute Value")
        self.assertEqual(msg_attributes["Attribute1"]["DataType"], "String")

        self.assertEqual(msg_attributes["Attribute2"]["StringValue"],
                         "Attribute 2 Value")
        self.assertEqual(msg_attributes["Attribute2"]["DataType"], "String")
        mock_get_pass.reset_mock()
Пример #8
0
    def test_move_message_without_args(self, mock_get_pass):
        with self.assertRaises(SystemExit) as cm:
            main([])

        self.assertEqual(cm.exception.code, 2)