Skip to content
This repository was archived by the owner on Jan 13, 2021. It is now read-only.

Commit 60fc238

Browse files
committed
Basic test of requests adapter.
1 parent 22a13bd commit 60fc238

File tree

3 files changed

+53
-1
lines changed

3 files changed

+53
-1
lines changed

.travis.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,7 @@ language: python
22
python:
33
- "3.3"
44

5+
install:
6+
- "pip install ."
7+
- "pip install -r test_requirements.txt"
58
script: py.test test/

test/test_integration.py

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@
66
This file defines integration-type tests for hyper. These are still not fully
77
hitting the network, so that's alright.
88
"""
9+
import requests
910
import ssl
1011
import threading
1112
import hyper
1213
from hyper import HTTP20Connection
14+
from hyper.contrib import HTTP20Adapter
1315
from hyper.http20.frame import (
14-
Frame, SettingsFrame, WindowUpdateFrame, DataFrame
16+
Frame, SettingsFrame, WindowUpdateFrame, DataFrame, HeadersFrame
1517
)
1618
from server import SocketLevelTest
1719

@@ -197,3 +199,49 @@ def socket_handler(listener):
197199
assert conn._sock == None
198200

199201
self.tear_down()
202+
203+
204+
class TestRequestsAdapter(SocketLevelTest):
205+
def test_adapter_received_values(self):
206+
self.set_up()
207+
208+
data = []
209+
send_event = threading.Event()
210+
211+
def socket_handler(listener):
212+
sock = listener.accept()[0]
213+
214+
# Do the handshake: conn header, settings, send settings, recv ack.
215+
sock.recv(65535)
216+
sock.recv(65535)
217+
sock.send(SettingsFrame(0).serialize())
218+
sock.recv(65535)
219+
220+
# Now expect some data. One headers frame.
221+
data.append(sock.recv(65535))
222+
223+
# Respond!
224+
h = HeadersFrame(1)
225+
h.data = self.get_encoder().encode({':status': 200, 'Content-Type': 'not/real', 'Content-Length': 20})
226+
h.flags.add('END_HEADERS')
227+
sock.send(h.serialize())
228+
d = DataFrame(1)
229+
d.data = b'1234567890' * 2
230+
d.flags.add('END_STREAM')
231+
sock.send(d.serialize())
232+
233+
send_event.set()
234+
sock.close()
235+
236+
self._start_server(socket_handler)
237+
238+
s = requests.Session()
239+
s.mount('https://%s' % self.host, HTTP20Adapter())
240+
r = s.get('https://%s:%s/some/path' % (self.host, self.port))
241+
242+
# Assert about the received values.
243+
assert r.status_code == 200
244+
assert r.headers['Content-Type'] == 'not/real'
245+
assert r.content == b'1234567890' * 2
246+
247+
self.tear_down()

test_requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
py==1.4.19
22
pytest==2.5.1
3+
requests

0 commit comments

Comments
 (0)