diff --git a/.coveragerc b/.coveragerc index a83e456b..56f844c4 100644 --- a/.coveragerc +++ b/.coveragerc @@ -8,6 +8,8 @@ omit = exclude_lines = pragma: no cover def __repr__ + def __str__ + def __unicode__ raise NotImplementedError except AttributeError except ImportError diff --git a/mocket/__init__.py b/mocket/__init__.py index e8e9bb5a..bca67931 100644 --- a/mocket/__init__.py +++ b/mocket/__init__.py @@ -7,4 +7,4 @@ __all__ = (mocketize, Mocket, MocketEntry, Mocketizer) -__version__ = '2.2.1' +__version__ = '2.2.2' diff --git a/mocket/mocket.py b/mocket/mocket.py index 708c5dee..a57febd7 100644 --- a/mocket/mocket.py +++ b/mocket/mocket.py @@ -409,6 +409,7 @@ def disable(): ssl.SSLSocket = ssl.__dict__['SSLSocket'] = true_ssl_socket ssl.SSLContext = ssl.__dict__['SSLContext'] = true_ssl_context socket.inet_pton = socket.__dict__['inet_pton'] = true_inet_pton + Mocket.reset() @classmethod def get_namespace(cls): @@ -477,7 +478,6 @@ def __exit__(self, type, value, tb): if self.instance: self.check_and_call('mocketize_teardown') Mocket.disable() - Mocket.reset() def check_and_call(self, method): method = getattr(self.instance, method, None) diff --git a/mocket/mockhttp.py b/mocket/mockhttp.py index dd4eb3bd..e04d6c82 100644 --- a/mocket/mockhttp.py +++ b/mocket/mockhttp.py @@ -117,6 +117,9 @@ def __init__(self, uri, method, responses, match_querystring=True): def collect(self, data): self._sent_data += data + decoded_data = decode_from_bytes(data) + if not decoded_data.startswith(Entry.METHODS) and decoded_data.endswith(CRLF): + Mocket.remove_last_request() super(Entry, self).collect(self._sent_data) def can_handle(self, data): @@ -133,10 +136,7 @@ def can_handle(self, data): method, path, version = self._parse_requestline(requestline) except ValueError: try: - same_entry = self == Mocket._last_entry - if same_entry: - Mocket.remove_last_request() - return same_entry + return self == Mocket._last_entry except AttributeError: return False uri = urlsplit(path) diff --git a/mocket/plugins/pook_mock_engine.py b/mocket/plugins/pook_mock_engine.py index f4e47d65..b1059089 100644 --- a/mocket/plugins/pook_mock_engine.py +++ b/mocket/plugins/pook_mock_engine.py @@ -17,8 +17,12 @@ def can_handle(self, data): return can_handle @classmethod - def single_register(cls, method, uri, body='', status=200, headers=None): - entry = cls(uri, method, Response(body=body, status=status, headers=headers)) + def single_register(cls, method, uri, body='', status=200, headers=None, match_querystring=True): + entry = cls( + uri, method, Response( + body=body, status=status, headers=headers + ), match_querystring=match_querystring + ) Mocket.register(entry) return entry diff --git a/tests/tests35/test_http_aiohttp.py b/tests/tests35/test_http_aiohttp.py index 0edc3965..a5b85154 100644 --- a/tests/tests35/test_http_aiohttp.py +++ b/tests/tests35/test_http_aiohttp.py @@ -29,11 +29,13 @@ async def main(l): async with session.post(url, data=body * 6) as post_response: assert post_response.status == 201 assert await post_response.text() == body * 2 + assert Mocket.last_request().method == 'POST' assert Mocket.last_request().body == body * 6 loop = asyncio.get_event_loop() loop.set_debug(True) loop.run_until_complete(main(loop)) + self.assertEqual(len(Mocket._requests), 2) @mocketize def test_https_session(self): @@ -57,6 +59,7 @@ async def main(l): loop = asyncio.get_event_loop() loop.set_debug(True) loop.run_until_complete(main(loop)) + self.assertEqual(len(Mocket._requests), 2) @httprettified def test_httprettish_session(self):