diff --git a/moto/sqs/models.py b/moto/sqs/models.py index bd4129dc2..bc0a5a4c6 100644 --- a/moto/sqs/models.py +++ b/moto/sqs/models.py @@ -106,9 +106,10 @@ class Queue(object): 'VisibilityTimeout', 'WaitTimeSeconds'] - def __init__(self, name, visibility_timeout, wait_time_seconds): + def __init__(self, name, visibility_timeout, wait_time_seconds, region): self.name = name self.visibility_timeout = visibility_timeout or 30 + self.region = region # wait_time_seconds will be set to immediate return messages self.wait_time_seconds = wait_time_seconds or 0 @@ -179,6 +180,10 @@ class Queue(object): result[attribute] = getattr(self, camelcase_to_underscores(attribute)) return result + @property + def url(self): + return "http://sqs.{0}.amazonaws.com/123456789012/{1}".format(self.region, self.name) + @property def messages(self): return [message for message in self._messages if message.visible and not message.delayed] @@ -196,14 +201,20 @@ class Queue(object): class SQSBackend(BaseBackend): - def __init__(self): + def __init__(self, region_name): + self.region_name = region_name self.queues = {} super(SQSBackend, self).__init__() + def reset(self): + region_name = self.region_name + self.__dict__ = {} + self.__init__(region_name) + def create_queue(self, name, visibility_timeout, wait_time_seconds): queue = self.queues.get(name) if queue is None: - queue = Queue(name, visibility_timeout, wait_time_seconds) + queue = Queue(name, visibility_timeout, wait_time_seconds, self.region_name) self.queues[name] = queue return queue @@ -314,4 +325,4 @@ class SQSBackend(BaseBackend): sqs_backends = {} for region in boto.sqs.regions(): - sqs_backends[region.name] = SQSBackend() + sqs_backends[region.name] = SQSBackend(region.name) diff --git a/moto/sqs/responses.py b/moto/sqs/responses.py index 648e939d2..abae83fed 100644 --- a/moto/sqs/responses.py +++ b/moto/sqs/responses.py @@ -232,7 +232,7 @@ class SQSResponse(BaseResponse): CREATE_QUEUE_RESPONSE = """ - http://sqs.us-east-1.amazonaws.com/123456789012/{{ queue.name }} + {{ queue.url }} {{ queue.visibility_timeout }} @@ -244,7 +244,7 @@ CREATE_QUEUE_RESPONSE = """ GET_QUEUE_URL_RESPONSE = """ - http://sqs.us-east-1.amazonaws.com/123456789012/{{ queue.name }} + {{ queue.url }} 470a6f13-2ed9-4181-ad8a-2fdea142988e @@ -254,7 +254,7 @@ GET_QUEUE_URL_RESPONSE = """ LIST_QUEUES_RESPONSE = """ {% for queue in queues %} - http://sqs.us-east-1.amazonaws.com/123456789012/{{ queue.name }} + {{ queue.url }} {% endfor %} diff --git a/tests/test_sqs/test_sqs.py b/tests/test_sqs/test_sqs.py index ba1e11e52..a23545dcc 100644 --- a/tests/test_sqs/test_sqs.py +++ b/tests/test_sqs/test_sqs.py @@ -34,6 +34,8 @@ def test_create_queues_in_multiple_region(): list(west1_conn.get_all_queues()).should.have.length_of(1) list(west2_conn.get_all_queues()).should.have.length_of(1) + west1_conn.get_all_queues()[0].url.should.equal('http://sqs.us-west-1.amazonaws.com/123456789012/test-queue') + @mock_sqs def test_get_queue():