SQS add missing validation to ReceiveMessage (#1595)

* SQS receive_message - enforce bounds on MaxNumberOfMessages as AWS does

* SQS receive_message - enforce bounds on WaitTimeSeconds as AWS does
This commit is contained in:
Iain Bullard 2018-04-24 17:51:49 +01:00 committed by Jack Danger
commit fad4394474
2 changed files with 44 additions and 12 deletions

View file

@ -378,6 +378,36 @@ def test_send_receive_message_timestamps():
int.when.called_with(approximate_first_receive_timestamp).shouldnt.throw(ValueError)
@mock_sqs
def test_max_number_of_messages_invalid_param():
sqs = boto3.resource('sqs', region_name='us-east-1')
queue = sqs.create_queue(QueueName='test-queue')
with assert_raises(ClientError):
queue.receive_messages(MaxNumberOfMessages=11)
with assert_raises(ClientError):
queue.receive_messages(MaxNumberOfMessages=0)
# no error but also no messages returned
queue.receive_messages(MaxNumberOfMessages=1, WaitTimeSeconds=0)
@mock_sqs
def test_wait_time_seconds_invalid_param():
sqs = boto3.resource('sqs', region_name='us-east-1')
queue = sqs.create_queue(QueueName='test-queue')
with assert_raises(ClientError):
queue.receive_messages(WaitTimeSeconds=-1)
with assert_raises(ClientError):
queue.receive_messages(WaitTimeSeconds=21)
# no error but also no messages returned
queue.receive_messages(WaitTimeSeconds=0)
@mock_sqs
def test_receive_messages_with_wait_seconds_timeout_of_zero():
"""
@ -393,20 +423,6 @@ def test_receive_messages_with_wait_seconds_timeout_of_zero():
messages.should.equal([])
@mock_sqs
def test_receive_messages_with_wait_seconds_timeout_of_negative_one():
"""
test that zero messages is returned with a wait_seconds_timeout of negative 1
:return:
"""
sqs = boto3.resource('sqs', region_name='us-east-1')
queue = sqs.create_queue(QueueName="blah")
messages = queue.receive_messages(WaitTimeSeconds=-1)
messages.should.equal([])
@mock_sqs_deprecated
def test_send_message_with_xml_characters():
conn = boto.connect_sqs('the_key', 'the_secret')