Add error handling for sqs.tag_queue
This commit is contained in:
parent
65c5502a62
commit
dbfb319def
@ -439,6 +439,20 @@ class SQSResponse(BaseResponse):
|
|||||||
queue_name = self._get_queue_name()
|
queue_name = self._get_queue_name()
|
||||||
tags = self._get_map_prefix('Tag', key_end='.Key', value_end='.Value')
|
tags = self._get_map_prefix('Tag', key_end='.Key', value_end='.Value')
|
||||||
|
|
||||||
|
try:
|
||||||
|
self.sqs_backend.get_queue(queue_name)
|
||||||
|
except QueueDoesNotExist as e:
|
||||||
|
return self._error('AWS.SimpleQueueService.NonExistentQueue',
|
||||||
|
e.description)
|
||||||
|
|
||||||
|
if len(tags) == 0:
|
||||||
|
return self._error('MissingParameter',
|
||||||
|
'The request must contain the parameter Tags.')
|
||||||
|
|
||||||
|
if len(tags) > 50:
|
||||||
|
return self._error('InvalidParameterValue',
|
||||||
|
'Too many tags added for queue {}.'.format(queue_name))
|
||||||
|
|
||||||
self.sqs_backend.tag_queue(queue_name, tags)
|
self.sqs_backend.tag_queue(queue_name, tags)
|
||||||
|
|
||||||
template = self.response_template(TAG_QUEUE_RESPONSE)
|
template = self.response_template(TAG_QUEUE_RESPONSE)
|
||||||
|
@ -1108,6 +1108,53 @@ def test_tags():
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@mock_sqs
|
||||||
|
def test_tag_queue_errors():
|
||||||
|
client = boto3.client('sqs', region_name='us-east-1')
|
||||||
|
|
||||||
|
response = client.create_queue(
|
||||||
|
QueueName='test-queue-with-tags',
|
||||||
|
tags={
|
||||||
|
'tag_key_1': 'tag_value_X'
|
||||||
|
}
|
||||||
|
)
|
||||||
|
queue_url = response['QueueUrl']
|
||||||
|
|
||||||
|
client.tag_queue.when.called_with(
|
||||||
|
QueueUrl=queue_url + '-not-existing',
|
||||||
|
Tags={
|
||||||
|
'tag_key_1': 'tag_value_1'
|
||||||
|
}
|
||||||
|
).should.throw(
|
||||||
|
ClientError,
|
||||||
|
'The specified queue does not exist for this wsdl version.'
|
||||||
|
)
|
||||||
|
|
||||||
|
client.tag_queue.when.called_with(
|
||||||
|
QueueUrl=queue_url,
|
||||||
|
Tags={}
|
||||||
|
).should.throw(
|
||||||
|
ClientError,
|
||||||
|
'The request must contain the parameter Tags.'
|
||||||
|
)
|
||||||
|
|
||||||
|
too_many_tags = {'tag_key_{}'.format(i): 'tag_value_{}'.format(i) for i in range(51)}
|
||||||
|
client.tag_queue.when.called_with(
|
||||||
|
QueueUrl=queue_url,
|
||||||
|
Tags=too_many_tags
|
||||||
|
).should.throw(
|
||||||
|
ClientError,
|
||||||
|
'Too many tags added for queue test-queue-with-tags.'
|
||||||
|
)
|
||||||
|
|
||||||
|
# when the request fails, the tags should not be updated
|
||||||
|
client.list_queue_tags(QueueUrl=queue_url)['Tags'].should.equal(
|
||||||
|
{
|
||||||
|
'tag_key_1': 'tag_value_X'
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@mock_sqs
|
@mock_sqs
|
||||||
def test_untag_queue_errors():
|
def test_untag_queue_errors():
|
||||||
client = boto3.client('sqs', region_name='us-east-1')
|
client = boto3.client('sqs', region_name='us-east-1')
|
||||||
@ -1127,7 +1174,7 @@ def test_untag_queue_errors():
|
|||||||
]
|
]
|
||||||
).should.throw(
|
).should.throw(
|
||||||
ClientError,
|
ClientError,
|
||||||
"The specified queue does not exist for this wsdl version."
|
'The specified queue does not exist for this wsdl version.'
|
||||||
)
|
)
|
||||||
|
|
||||||
client.untag_queue.when.called_with(
|
client.untag_queue.when.called_with(
|
||||||
|
Loading…
Reference in New Issue
Block a user