This repository was archived by the owner on Jan 13, 2021. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +46
-0
lines changed
Expand file tree Collapse file tree 2 files changed +46
-0
lines changed Original file line number Diff line number Diff line change @@ -98,6 +98,7 @@ def __init__(self,
9898 self .host = host
9999 self .port = port
100100 self .proxy_host = proxy_host
101+ self .secure = secure
101102 self .daemon = True
102103
103104 assert not self .secure , "HTTPS Proxies not supported"
Original file line number Diff line number Diff line change @@ -69,6 +69,51 @@ def socket_handler(listener):
6969
7070 assert c ._sock is None
7171
72+ def test_proxy (self ):
73+ self .set_up (secure = False , proxy = True )
74+
75+ send_event = threading .Event ()
76+
77+ def socket_handler (listener ):
78+ sock = listener .accept ()[0 ]
79+
80+ # We should get the initial request.
81+ data = b''
82+ while not data .endswith (b'\r \n \r \n ' ):
83+ data += sock .recv (65535 )
84+
85+ send_event .wait ()
86+
87+ # We need to send back a response.
88+ resp = (
89+ b'HTTP/1.1 201 No Content\r \n '
90+ b'Server: socket-level-server\r \n '
91+ b'Content-Length: 0\r \n '
92+ b'Connection: close\r \n '
93+ b'\r \n '
94+ )
95+ sock .send (resp )
96+
97+ sock .close ()
98+
99+ self ._start_server (socket_handler )
100+ c = self .get_connection ()
101+ c .request ('GET' , '/' )
102+ send_event .set ()
103+ r = c .get_response ()
104+
105+ assert r .status == 201
106+ assert r .reason == b'No Content'
107+ assert len (r .headers ) == 3
108+ assert r .headers [b'server' ] == [b'socket-level-server' ]
109+ assert r .headers [b'content-length' ] == [b'0' ]
110+ assert r .headers [b'connection' ] == [b'close' ]
111+
112+ assert r .read () == b''
113+
114+ assert c ._sock is None
115+
116+
72117 def test_closing_response (self ):
73118 self .set_up ()
74119
You can’t perform that action at this time.
0 commit comments