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,
98
98
self .host = host
99
99
self .port = port
100
100
self .proxy_host = proxy_host
101
+ self .secure = secure
101
102
self .daemon = True
102
103
103
104
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):
69
69
70
70
assert c ._sock is None
71
71
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
+
72
117
def test_closing_response (self ):
73
118
self .set_up ()
74
119
You can’t perform that action at this time.
0 commit comments