Merge pull request #73 from andresriancho/feature/fix_nested_decorators_72

Feature/fix nested decorators 72
This commit is contained in:
Steve Pulec 2013-12-28 16:33:13 -08:00
commit 5f7e60194f
3 changed files with 47 additions and 3 deletions

3
.gitignore vendored
View File

@ -3,5 +3,8 @@ dist/*
.tox
.coverage
*.pyc
*~
.noseids
build/
.idea/

View File

@ -7,9 +7,13 @@ from .utils import convert_regex_to_flask_path
class MockAWS(object):
nested_count = 0
def __init__(self, backend):
self.backend = backend
HTTPretty.reset()
if self.__class__.nested_count == 0:
HTTPretty.reset()
def __call__(self, func):
return self.decorate_callable(func)
@ -21,8 +25,11 @@ class MockAWS(object):
self.stop()
def start(self):
self.__class__.nested_count += 1
self.backend.reset()
HTTPretty.enable()
if not HTTPretty.is_enabled():
HTTPretty.enable()
for method in HTTPretty.METHODS:
for key, value in self.backend.urls.iteritems():
@ -40,7 +47,13 @@ class MockAWS(object):
)
def stop(self):
HTTPretty.disable()
self.__class__.nested_count -= 1
if self.__class__.nested_count < 0:
raise RuntimeError('Called stop() before start().')
if self.__class__.nested_count == 0:
HTTPretty.disable()
def decorate_callable(self, func):
def wrapper(*args, **kwargs):

View File

@ -0,0 +1,28 @@
import unittest
from boto.sqs.connection import SQSConnection
from boto.sqs.message import Message
from boto.ec2 import EC2Connection
from moto import mock_sqs, mock_ec2
class TestNestedDecorators(unittest.TestCase):
@mock_sqs
def setup_sqs_queue(self):
conn = SQSConnection()
q = conn.create_queue('some-queue')
m = Message()
m.set_body('This is my first message.')
q.write(m)
self.assertEqual(q.count(), 1)
@mock_ec2
def test_nested(self):
self.setup_sqs_queue()
conn = EC2Connection()
conn.run_instances('ami-123456')