From 67261d312525dd1eb10b28e4761ca1a268f84e25 Mon Sep 17 00:00:00 2001 From: Steve Pulec Date: Sat, 23 Feb 2013 22:35:05 -0500 Subject: [PATCH] add set_queue_attributes --- moto/sqs/models.py | 4 ++++ moto/sqs/responses.py | 17 ++++++++++++++++- tests/test_sqs/test_sqs.py | 13 +++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/moto/sqs/models.py b/moto/sqs/models.py index f90aee57..42e9d865 100644 --- a/moto/sqs/models.py +++ b/moto/sqs/models.py @@ -38,5 +38,9 @@ class SQSBackend(BaseBackend): return self.queues.pop(queue_name) return False + def set_queue_attribute(self, queue_name, key, value): + queue = self.get_queue(queue_name) + setattr(queue, key, value) + return queue sqs_backend = SQSBackend() diff --git a/moto/sqs/responses.py b/moto/sqs/responses.py index a4f4c735..126dd1ff 100644 --- a/moto/sqs/responses.py +++ b/moto/sqs/responses.py @@ -51,6 +51,13 @@ class QueueResponse(BaseResponse): template = Template(GET_QUEUE_ATTRIBUTES_RESPONSE) return template.render(queue=queue) + def set_queue_attributes(self): + queue_name = self.path.split("/")[-1] + key = camelcase_to_underscores(self.querystring.get('Attribute.Name')[0]) + value = self.querystring.get('Attribute.Value')[0] + queue = sqs_backend.set_queue_attribute(queue_name, key, value) + return SET_QUEUE_ATTRIBUTE_RESPONSE + def delete_queue(self): queue_name = self.path.split("/")[-1] queue = sqs_backend.delete_queue(queue_name) @@ -107,4 +114,12 @@ GET_QUEUE_ATTRIBUTES_RESPONSE = """ 1ea71be5-b5a2-4f9d-b85a-945d8d08cd0b -""" \ No newline at end of file +""" + +SET_QUEUE_ATTRIBUTE_RESPONSE = """ + + + e5cca473-4fc0-4198-a451-8abb94d02c75 + + +""" diff --git a/tests/test_sqs/test_sqs.py b/tests/test_sqs/test_sqs.py index c3dce18f..7fd1d544 100644 --- a/tests/test_sqs/test_sqs.py +++ b/tests/test_sqs/test_sqs.py @@ -28,3 +28,16 @@ def test_delete_queue(): conn.get_all_queues().should.have.length_of(0) queue.delete.when.called_with().should.throw(SQSError) + + +@mock_sqs +def test_set_queue_attribute(): + conn = boto.connect_sqs('the_key', 'the_secret') + conn.create_queue("test-queue", visibility_timeout=60) + + queue = conn.get_all_queues()[0] + queue.get_timeout().should.equal(60) + + queue.set_attribute("VisibilityTimeout", 45) + queue = conn.get_all_queues()[0] + queue.get_timeout().should.equal(45)