|
1 | 1 | import datetime
|
2 | 2 | import json
|
3 | 3 | import os
|
| 4 | +import random |
4 | 5 | import time
|
5 | 6 | import unittest
|
6 | 7 |
|
|
58 | 59 |
|
59 | 60 | THIS_FOLDER = os.path.dirname(os.path.realpath(__file__))
|
60 | 61 | TEST_LAMBDA_ECHO_FILE = os.path.join(THIS_FOLDER, "lambdas", "lambda_echo.py")
|
| 62 | +TEST_LAMBDA_TAGS = {"tag1": "value1", "tag2": "value2", "tag3": ""} |
61 | 63 |
|
62 | 64 | TEST_MESSAGE_ATTRIBUTES = {
|
63 | 65 | "City": {
|
@@ -461,7 +463,8 @@ def test_get_specific_queue_attribute_response(self):
|
461 | 463 | AttributeNames=["MessageRetentionPeriod", "RedrivePolicy"],
|
462 | 464 | )
|
463 | 465 | supported_attribute_get = self.client.get_queue_attributes(
|
464 |
| - QueueUrl=queue_url, AttributeNames=["QueueArn"] |
| 466 | + QueueUrl=queue_url, |
| 467 | + AttributeNames=["QueueArn"], |
465 | 468 | )
|
466 | 469 | # assertion
|
467 | 470 | self.assertTrue("MessageRetentionPeriod" in unsupported_attribute_get["Attributes"].keys())
|
@@ -895,31 +898,25 @@ def test_fifo_queue_send_multiple_messages_multiple_single_receives(self):
|
895 | 898 | # clean up
|
896 | 899 | self.client.delete_queue(QueueUrl=queue_url)
|
897 | 900 |
|
| 901 | + # Not the same to create a queue with tags than tagging an existing queue |
| 902 | + def test_create_queue_with_tags(self): |
| 903 | + queue_name = "queue-{}".format(short_uid()) |
| 904 | + response = self.client.create_queue( |
| 905 | + QueueName=queue_name, |
| 906 | + tags=TEST_LAMBDA_TAGS, |
| 907 | + ) |
| 908 | + self.assertEqual(200, response["ResponseMetadata"]["HTTPStatusCode"]) |
| 909 | + self.check_tagged_queue(response["QueueUrl"]) |
| 910 | + |
898 | 911 | def test_tag_untag_queue(self):
|
899 | 912 | queue_name = "queue-{}".format(short_uid())
|
900 | 913 | queue_url = self.client.create_queue(QueueName=queue_name)["QueueUrl"]
|
901 |
| - |
902 | 914 | response = self.client.tag_queue(
|
903 |
| - QueueUrl=queue_url, Tags={"tag1": "value1", "tag2": "value2"} |
| 915 | + QueueUrl=queue_url, |
| 916 | + Tags=TEST_LAMBDA_TAGS, |
904 | 917 | )
|
905 | 918 | self.assertEqual(200, response["ResponseMetadata"]["HTTPStatusCode"])
|
906 |
| - |
907 |
| - response = self.client.list_queue_tags(QueueUrl=queue_url) |
908 |
| - self.assertEqual(200, response["ResponseMetadata"]["HTTPStatusCode"]) |
909 |
| - self.assertIn("tag1", response["Tags"]) |
910 |
| - self.assertIn("tag2", response["Tags"]) |
911 |
| - |
912 |
| - response = self.client.untag_queue(QueueUrl=queue_url, TagKeys=["tag2"]) |
913 |
| - self.assertEqual(200, response["ResponseMetadata"]["HTTPStatusCode"]) |
914 |
| - |
915 |
| - response = self.client.list_queue_tags(QueueUrl=queue_url) |
916 |
| - self.assertIn("tag1", response["Tags"]) |
917 |
| - self.assertNotIn("tag2", response["Tags"]) |
918 |
| - self.assertEqual(200, response["ResponseMetadata"]["HTTPStatusCode"]) |
919 |
| - |
920 |
| - # clean up |
921 |
| - self.client.untag_queue(QueueUrl=queue_url, TagKeys=["tag1"]) |
922 |
| - self.client.delete_queue(QueueUrl=queue_url) |
| 919 | + self.check_tagged_queue(queue_url) |
923 | 920 |
|
924 | 921 | def test_posting_to_queue_with_trailing_slash(self):
|
925 | 922 | queue_name = "queue-{}".format(short_uid())
|
@@ -1029,3 +1026,32 @@ def receive_dlq(self, queue_url, assert_error_details=False, assert_receive_coun
|
1029 | 1026 | # probably in or around this commit:
|
1030 | 1027 | # https://github.com/spulec/moto/commit/6da4905da940e25e317db60b7657ea632f58ef1d
|
1031 | 1028 | # self.assertEqual(str(assert_receive_count), msg_attrs.get('ApproximateReceiveCount'))
|
| 1029 | + |
| 1030 | + def check_tagged_queue(self, queue_url): |
| 1031 | + response = self.client.list_queue_tags(QueueUrl=queue_url) |
| 1032 | + self.assertEqual(200, response["ResponseMetadata"]["HTTPStatusCode"]) |
| 1033 | + tags_keys_as_list = list(TEST_LAMBDA_TAGS.keys()) |
| 1034 | + |
| 1035 | + for key in tags_keys_as_list: |
| 1036 | + self.assertIn(key, response["Tags"]) |
| 1037 | + |
| 1038 | + random_tag_key = random.choice(tags_keys_as_list) |
| 1039 | + # Pop random chosen tag key from list |
| 1040 | + tags_keys_as_list.pop(tags_keys_as_list.index(random_tag_key)) |
| 1041 | + |
| 1042 | + response = self.client.untag_queue(QueueUrl=queue_url, TagKeys=[random_tag_key]) |
| 1043 | + self.assertEqual(200, response["ResponseMetadata"]["HTTPStatusCode"]) |
| 1044 | + |
| 1045 | + response = self.client.list_queue_tags(QueueUrl=queue_url) |
| 1046 | + self.assertEqual(200, response["ResponseMetadata"]["HTTPStatusCode"]) |
| 1047 | + self.assertNotIn(random_tag_key, response["Tags"]) |
| 1048 | + |
| 1049 | + for key in tags_keys_as_list: |
| 1050 | + self.assertIn(key, response["Tags"]) |
| 1051 | + |
| 1052 | + # Clean up |
| 1053 | + self.client.untag_queue( |
| 1054 | + QueueUrl=queue_url, |
| 1055 | + TagKeys=tags_keys_as_list, |
| 1056 | + ) |
| 1057 | + self.client.delete_queue(QueueUrl=queue_url) |
0 commit comments