From 308712841cb1e9021fce9615d035017421d953b4 Mon Sep 17 00:00:00 2001 From: Steve Pulec Date: Tue, 9 Jul 2019 20:31:43 -0500 Subject: [PATCH 1/3] Have context manager return mock. --- moto/core/models.py | 1 + tests/test_core/test_context_manager.py | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 tests/test_core/test_context_manager.py diff --git a/moto/core/models.py b/moto/core/models.py index 9fe1e96bd..75a5ecce1 100644 --- a/moto/core/models.py +++ b/moto/core/models.py @@ -52,6 +52,7 @@ class BaseMockAWS(object): def __enter__(self): self.start() + return self def __exit__(self, *args): self.stop() diff --git a/tests/test_core/test_context_manager.py b/tests/test_core/test_context_manager.py new file mode 100644 index 000000000..c5a22558f --- /dev/null +++ b/tests/test_core/test_context_manager.py @@ -0,0 +1,10 @@ +import sure # noqa +import boto3 +from moto import mock_sqs + +def test_reset_api(): + with mock_sqs() as sqs_mock: + conn = boto3.client("sqs", region_name='us-west-1') + conn.create_queue(QueueName="queue1") + + list(sqs_mock.backends['us-west-1'].queues.keys()).should.equal(['queue1']) From b19c201975a1cf243d6441fbe7def08466b099e1 Mon Sep 17 00:00:00 2001 From: Steve Pulec Date: Wed, 10 Jul 2019 21:16:11 -0500 Subject: [PATCH 2/3] Cleanup model ref resetting. --- moto/core/models.py | 6 +++++- moto/sqs/models.py | 1 + tests/test_core/test_context_manager.py | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/moto/core/models.py b/moto/core/models.py index 75a5ecce1..1b0f2d0dd 100644 --- a/moto/core/models.py +++ b/moto/core/models.py @@ -466,10 +466,14 @@ class BaseModel(object): class BaseBackend(object): - def reset(self): + def _reset_model_refs(self): + # Remove all references to the models stored for service, models in model_data.items(): for model_name, model in models.items(): model.instances = [] + + def reset(self): + self._reset_model_refs() self.__dict__ = {} self.__init__() diff --git a/moto/sqs/models.py b/moto/sqs/models.py index 1404ded75..f2e3ed400 100644 --- a/moto/sqs/models.py +++ b/moto/sqs/models.py @@ -379,6 +379,7 @@ class SQSBackend(BaseBackend): def reset(self): region_name = self.region_name + self._reset_model_refs() self.__dict__ = {} self.__init__(region_name) diff --git a/tests/test_core/test_context_manager.py b/tests/test_core/test_context_manager.py index c5a22558f..96d2bec9a 100644 --- a/tests/test_core/test_context_manager.py +++ b/tests/test_core/test_context_manager.py @@ -2,7 +2,7 @@ import sure # noqa import boto3 from moto import mock_sqs -def test_reset_api(): +def test_context_manager_returns_mock(): with mock_sqs() as sqs_mock: conn = boto3.client("sqs", region_name='us-west-1') conn.create_queue(QueueName="queue1") From c2e382f537b87cdc898924eeea2ef66a2d4f1741 Mon Sep 17 00:00:00 2001 From: Steve Pulec Date: Wed, 10 Jul 2019 21:40:49 -0500 Subject: [PATCH 3/3] Dont test context manager in server mode. --- tests/test_core/test_context_manager.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/test_core/test_context_manager.py b/tests/test_core/test_context_manager.py index 96d2bec9a..4824e021f 100644 --- a/tests/test_core/test_context_manager.py +++ b/tests/test_core/test_context_manager.py @@ -1,10 +1,12 @@ import sure # noqa import boto3 -from moto import mock_sqs +from moto import mock_sqs, settings + def test_context_manager_returns_mock(): with mock_sqs() as sqs_mock: conn = boto3.client("sqs", region_name='us-west-1') conn.create_queue(QueueName="queue1") - list(sqs_mock.backends['us-west-1'].queues.keys()).should.equal(['queue1']) + if not settings.TEST_SERVER_MODE: + list(sqs_mock.backends['us-west-1'].queues.keys()).should.equal(['queue1'])