Skip to content

Commit 8552563

Browse files
authored
Fix for asyncio.open_connection() (#144)
* fix for asyncio.open_connection() * fix UT for 3.5 support * Moved test to 3.7
1 parent 455513b commit 8552563

File tree

3 files changed

+49
-1
lines changed

3 files changed

+49
-1
lines changed

mocket/mocket.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ def true_sendall(self, data, *args, **kwargs):
373373

374374
def send(self, data, *args, **kwargs): # pragma: no cover
375375
entry = self.get_entry(data)
376-
if entry and self._entry != entry:
376+
if not entry or (entry and self._entry != entry):
377377
self.sendall(data, entry=entry, *args, **kwargs)
378378
else:
379379
req = Mocket.last_request()

run_tests.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ def main(args=None):
1515
args.append("mocket")
1616
args.append("tests/tests35")
1717

18+
if major == 3 and minor >= 7:
19+
args.append("tests/tests37")
20+
1821
if major == 3 and minor >= 8:
1922
args.append("tests/tests38")
2023

tests/tests37/test_asyncio.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import asyncio
2+
import json
3+
from unittest import TestCase
4+
import socket
5+
import io
6+
7+
from mocket.mocket import Mocket, mocketize
8+
9+
10+
class AsyncIoRecordTestCase(TestCase):
11+
def test_asyncio_record_replay(self):
12+
async def test_asyncio_connection():
13+
mock_out = b'HTTP/1.1 301 Moved Permanently\r\n'
14+
reader, writer = await asyncio.open_connection(
15+
host='google.com',
16+
port=80,
17+
family=socket.AF_INET,
18+
proto=socket.IPPROTO_TCP,
19+
ssl=None,
20+
server_hostname=None,
21+
)
22+
23+
buf = 'GET / HTTP/1.1\r\nHost: google.com\r\n\r\n'
24+
writer.write(buf.encode())
25+
await writer.drain()
26+
27+
r = await reader.readline()
28+
writer.close()
29+
await writer.wait_closed()
30+
31+
mock_out = b'HTTP/1.1 301 Moved Permanently\r\n'
32+
33+
test_name = 'test_asyncio_record'
34+
# This enables mocket to record the response
35+
Mocket.enable(test_name, ".")
36+
37+
loop = asyncio.get_event_loop()
38+
loop.set_debug(True)
39+
loop.run_until_complete(test_asyncio_connection())
40+
41+
dump_filename = f'./{test_name}.json'
42+
with io.open(dump_filename) as f:
43+
responses = json.load(f)
44+
45+
assert len(responses["google.com"]["80"].keys()) == 1

0 commit comments

Comments
 (0)