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)
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()
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()
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()
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()
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()
def test_move_message_without_args(self, mock_get_pass): with self.assertRaises(SystemExit) as cm: main([]) self.assertEqual(cm.exception.code, 2)