Techdebt: Replace sure with regular assertions in SQS (#6634)

This commit is contained in:
kbalk 2023-08-12 03:10:50 -04:00 committed by GitHub
parent f297c4216f
commit 1626c35ac5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 639 additions and 630 deletions

View File

@ -1,22 +1,18 @@
"""Test different server responses."""
import datetime
import re
import sure # noqa # pylint: disable=unused-import
import threading
import time
import moto.server as server
"""
Test the different server responses
"""
def test_sqs_list_identities():
backend = server.create_backend_app("sqs")
test_client = backend.test_client()
res = test_client.get("/?Action=ListQueues")
res.data.should.contain(b"ListQueuesResponse")
assert b"ListQueuesResponse" in res.data
# Make sure that we can receive messages from queues whose name contains dots (".")
# The AWS API mandates that the names of FIFO queues use the suffix ".fifo"
@ -35,11 +31,11 @@ def test_sqs_list_identities():
)
message = re.search("<Body>(.*?)</Body>", res.data.decode("utf-8")).groups()[0]
message.should.equal("test-message")
assert message == "test-message"
res = test_client.get("/?Action=ListQueues&QueueNamePrefix=other")
res.data.should.contain(b"otherqueue.fifo")
res.data.should_not.contain(b"testqueue")
assert b"otherqueue.fifo" in res.data
assert b"testqueue" not in res.data
def test_messages_polling():
@ -91,7 +87,8 @@ def test_no_messages_polling_timeout():
wait_seconds = 5
start = datetime.datetime.utcnow()
test_client.get(
f"/123/{queue_name}?Action=ReceiveMessage&MaxNumberOfMessages=1&WaitTimeSeconds={wait_seconds}"
f"/123/{queue_name}?Action=ReceiveMessage&"
f"MaxNumberOfMessages=1&WaitTimeSeconds={wait_seconds}"
)
end = datetime.datetime.utcnow()
duration = end - start

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,13 @@
import boto3
import json
import sure # noqa # pylint: disable=unused-import
from moto import mock_sqs, mock_cloudformation
from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
from string import Template
from random import randint
from uuid import uuid4
import boto3
from moto import mock_sqs, mock_cloudformation
from moto.core import DEFAULT_ACCOUNT_ID as ACCOUNT_ID
simple_queue = Template(
"""{
"AWSTemplateFormatVersion": "2010-09-09",
@ -56,13 +56,13 @@ def test_describe_stack_subresources():
cf.create_stack(StackName=stack_name, TemplateBody=template_body)
queue_urls = client.list_queues(QueueNamePrefix=q_name)["QueueUrls"]
assert any([f"{ACCOUNT_ID}/{q_name}" in url for url in queue_urls])
assert any({f"{ACCOUNT_ID}/{q_name}" in url for url in queue_urls})
stack = res.Stack(stack_name)
for s in stack.resource_summaries.all():
s.resource_type.should.equal("AWS::SQS::Queue")
s.logical_id.should.equal("QueueGroup")
s.physical_resource_id.should.contain(f"/{q_name}")
assert s.resource_type == "AWS::SQS::Queue"
assert s.logical_id == "QueueGroup"
assert f"/{q_name}" in s.physical_resource_id
@mock_sqs
@ -77,14 +77,14 @@ def test_list_stack_resources():
cf.create_stack(StackName=stack_name, TemplateBody=template_body)
queue_urls = client.list_queues(QueueNamePrefix=q_name)["QueueUrls"]
assert any([f"{ACCOUNT_ID}/{q_name}" in url for url in queue_urls])
assert any({f"{ACCOUNT_ID}/{q_name}" in url for url in queue_urls})
queue = cf.list_stack_resources(StackName=stack_name)["StackResourceSummaries"][0]
queue.should.have.key("ResourceType").equal("AWS::SQS::Queue")
queue.should.have.key("LogicalResourceId").should.equal("QueueGroup")
assert queue["ResourceType"] == "AWS::SQS::Queue"
assert queue["LogicalResourceId"] == "QueueGroup"
expected_url = f"https://sqs.us-east-1.amazonaws.com/{ACCOUNT_ID}/{q_name}"
queue.should.have.key("PhysicalResourceId").should.equal(expected_url)
assert queue["PhysicalResourceId"] == expected_url
@mock_sqs
@ -103,7 +103,7 @@ def test_create_from_cloudformation_json_with_tags():
queue_url = [url for url in all_urls if url.endswith(q_name)][0]
queue_tags = client.list_queue_tags(QueueUrl=queue_url)["Tags"]
queue_tags.should.equal({"keyname1": "value1", "keyname2": "value2"})
assert queue_tags == {"keyname1": "value1", "keyname2": "value2"}
@mock_cloudformation
@ -127,11 +127,11 @@ def test_update_stack():
client = boto3.client("sqs", region_name="us-west-1")
queues = client.list_queues(QueueNamePrefix=q_name)["QueueUrls"]
queues.should.have.length_of(1)
assert len(queues) == 1
attrs = client.get_queue_attributes(QueueUrl=queues[0], AttributeNames=["All"])[
"Attributes"
]
attrs["VisibilityTimeout"].should.equal("60")
assert attrs["VisibilityTimeout"] == "60"
# when updating
sqs_template["Resources"]["QueueGroup"]["Properties"]["VisibilityTimeout"] = 100
@ -140,11 +140,11 @@ def test_update_stack():
# then the attribute should be updated
queues = client.list_queues(QueueNamePrefix=q_name)["QueueUrls"]
queues.should.have.length_of(1)
assert len(queues) == 1
attrs = client.get_queue_attributes(QueueUrl=queues[0], AttributeNames=["All"])[
"Attributes"
]
attrs["VisibilityTimeout"].should.equal("100")
assert attrs["VisibilityTimeout"] == "100"
@mock_cloudformation
@ -167,14 +167,14 @@ def test_update_stack_and_remove_resource():
cf.create_stack(StackName=stack_name, TemplateBody=sqs_template_json)
client = boto3.client("sqs", region_name="us-west-1")
client.list_queues(QueueNamePrefix=q_name)["QueueUrls"].should.have.length_of(1)
assert len(client.list_queues(QueueNamePrefix=q_name)["QueueUrls"]) == 1
sqs_template["Resources"].pop("QueueGroup")
sqs_template_json = json.dumps(sqs_template)
cf.update_stack(StackName=stack_name, TemplateBody=sqs_template_json)
# No queues exist, so the key is not passed through
client.list_queues(QueueNamePrefix=q_name).shouldnt.have.key("QueueUrls")
assert "QueueUrls" not in client.list_queues(QueueNamePrefix=q_name)
@mock_cloudformation
@ -190,7 +190,7 @@ def test_update_stack_and_add_resource():
cf.create_stack(StackName=stack_name, TemplateBody=sqs_template_json)
client = boto3.client("sqs", region_name="us-west-1")
client.list_queues(QueueNamePrefix=q_name).shouldnt.have.key("QueueUrls")
assert "QueueUrls" not in client.list_queues(QueueNamePrefix=q_name)
sqs_template = {
"AWSTemplateFormatVersion": "2010-09-09",
@ -204,7 +204,7 @@ def test_update_stack_and_add_resource():
sqs_template_json = json.dumps(sqs_template)
cf.update_stack(StackName=stack_name, TemplateBody=sqs_template_json)
client.list_queues(QueueNamePrefix=q_name)["QueueUrls"].should.have.length_of(1)
assert len(client.list_queues(QueueNamePrefix=q_name)["QueueUrls"]) == 1
@mock_sqs
@ -223,4 +223,4 @@ def test_create_queue_passing_integer_as_name():
cf.create_stack(StackName=stack_name, TemplateBody=template_body)
queue_urls = client.list_queues(QueueNamePrefix=q_name[0:6])["QueueUrls"]
queue_urls.should.have.length_of(1)
assert len(queue_urls) == 1

View File

@ -1,8 +1,9 @@
import boto3
import json
import time
import uuid
import boto3
from moto import mock_lambda, mock_sqs, mock_logs
from tests.markers import requires_docker
from tests.test_awslambda.test_lambda import get_test_zip_file1, get_role_name
@ -132,8 +133,8 @@ def test_invoke_function_from_sqs_fifo_queue():
try:
body = json.loads(event.get("message"))
atts = body["Records"][0]["attributes"]
atts.should.have.key("MessageGroupId").equals("mg1")
atts.should.have.key("MessageDeduplicationId")
assert atts["MessageGroupId"] == "mg1"
assert "MessageDeduplicationId" in atts
return
except: # noqa: E722 Do not use bare except
pass

View File

@ -1,8 +1,10 @@
import unittest
import boto3
from moto import mock_sts, mock_sqs
from uuid import uuid4
import boto3
from moto import mock_sts, mock_sqs
class TestStsAssumeRole(unittest.TestCase):
@mock_sqs
@ -14,7 +16,7 @@ class TestStsAssumeRole(unittest.TestCase):
# verify function exists
all_urls = sqs.list_queues()["QueueUrls"]
all_urls.should.contain(queue_url)
assert queue_url in all_urls
# assume role to another aws account
account_b = "111111111111"
@ -33,4 +35,4 @@ class TestStsAssumeRole(unittest.TestCase):
)
# client2 belongs to another account, where there are no queues
client2.list_queues().shouldnt.have.key("QueueUrls")
assert "QueueUrls" not in client2.list_queues()