@@ -169,6 +169,26 @@ func testProxy(t *testing.T, front net.Listener) *Proxy {
169
169
}
170
170
}
171
171
172
+ func testRouteToBackendWithExpected (t * testing.T , front net.Conn , back net.Listener , msg string , expected string ) {
173
+ io .WriteString (front , msg )
174
+ fromProxy , err := back .Accept ()
175
+ if err != nil {
176
+ t .Fatal (err )
177
+ }
178
+
179
+ buf := make ([]byte , len (msg ))
180
+ if _ , err := io .ReadFull (fromProxy , buf ); err != nil {
181
+ t .Fatal (err )
182
+ }
183
+ if string (buf ) != expected {
184
+ t .Fatalf ("got %q; want %q" , buf , expected )
185
+ }
186
+ }
187
+
188
+ func testRouteToBackend (t * testing.T , front net.Conn , back net.Listener , msg string ) {
189
+ testRouteToBackendWithExpected (t , front , back , msg , msg )
190
+ }
191
+
172
192
func TestProxyAlwaysMatch (t * testing.T ) {
173
193
front := newLocalListener (t )
174
194
defer front .Close ()
@@ -187,20 +207,7 @@ func TestProxyAlwaysMatch(t *testing.T) {
187
207
}
188
208
defer toFront .Close ()
189
209
190
- fromProxy , err := back .Accept ()
191
- if err != nil {
192
- t .Fatal (err )
193
- }
194
- const msg = "message"
195
- io .WriteString (toFront , msg )
196
-
197
- buf := make ([]byte , len (msg ))
198
- if _ , err := io .ReadFull (fromProxy , buf ); err != nil {
199
- t .Fatal (err )
200
- }
201
- if string (buf ) != msg {
202
- t .Fatalf ("got %q; want %q" , buf , msg )
203
- }
210
+ testRouteToBackend (t , toFront , back , "message" )
204
211
}
205
212
206
213
func TestProxyHTTP (t * testing.T ) {
@@ -226,20 +233,7 @@ func TestProxyHTTP(t *testing.T) {
226
233
defer toFront .Close ()
227
234
228
235
const msg = "GET / HTTP/1.1\r \n Host: bar.com\r \n \r \n "
229
- io .WriteString (toFront , msg )
230
-
231
- fromProxy , err := backBar .Accept ()
232
- if err != nil {
233
- t .Fatal (err )
234
- }
235
-
236
- buf := make ([]byte , len (msg ))
237
- if _ , err := io .ReadFull (fromProxy , buf ); err != nil {
238
- t .Fatal (err )
239
- }
240
- if string (buf ) != msg {
241
- t .Fatalf ("got %q; want %q" , buf , msg )
242
- }
236
+ testRouteToBackend (t , toFront , backBar , msg )
243
237
}
244
238
245
239
func TestProxySNI (t * testing.T ) {
@@ -264,6 +258,9 @@ func TestProxySNI(t *testing.T) {
264
258
}
265
259
defer toFront .Close ()
266
260
261
+ msg := clientHelloRecord (t , "bar.com" )
262
+ testRouteToBackend (t , toFront , backBar , msg )
263
+ }
267
264
msg := clientHelloRecord (t , "bar.com" )
268
265
io .WriteString (toFront , msg )
269
266
@@ -301,23 +298,8 @@ func TestProxyPROXYOut(t *testing.T) {
301
298
t .Fatal (err )
302
299
}
303
300
304
- io .WriteString (toFront , "foo" )
305
- toFront .Close ()
306
-
307
- fromProxy , err := back .Accept ()
308
- if err != nil {
309
- t .Fatal (err )
310
- }
311
-
312
- bs , err := ioutil .ReadAll (fromProxy )
313
- if err != nil {
314
- t .Fatal (err )
315
- }
316
-
317
301
want := fmt .Sprintf ("PROXY TCP4 %s %d %s %d\r \n foo" , toFront .LocalAddr ().(* net.TCPAddr ).IP , toFront .LocalAddr ().(* net.TCPAddr ).Port , toFront .RemoteAddr ().(* net.TCPAddr ).IP , toFront .RemoteAddr ().(* net.TCPAddr ).Port )
318
- if string (bs ) != want {
319
- t .Fatalf ("got %q; want %q" , bs , want )
320
- }
302
+ testRouteToBackendWithExpected (t , toFront , back , "foo" , want )
321
303
}
322
304
323
305
type tlsServer struct {
0 commit comments