12
12
*/
13
13
package org .asynchttpclient .proxy ;
14
14
15
+ import java .util .ArrayList ;
16
+ import java .util .List ;
15
17
import org .asynchttpclient .*;
16
18
import org .asynchttpclient .request .body .generator .ByteArrayBodyGenerator ;
17
19
import org .asynchttpclient .test .EchoHandler ;
18
20
import org .eclipse .jetty .proxy .ConnectHandler ;
21
+ import org .eclipse .jetty .server .Handler ;
19
22
import org .eclipse .jetty .server .Server ;
20
23
import org .eclipse .jetty .server .ServerConnector ;
21
24
import org .eclipse .jetty .server .handler .AbstractHandler ;
22
25
import org .testng .annotations .AfterClass ;
23
26
import org .testng .annotations .BeforeClass ;
27
+ import org .testng .annotations .DataProvider ;
24
28
import org .testng .annotations .Test ;
25
29
26
30
import static org .asynchttpclient .Dsl .*;
34
38
*/
35
39
public class HttpsProxyTest extends AbstractBasicTest {
36
40
37
- private Server server2 ;
41
+ private List <Server > servers ;
42
+ private int httpsProxyPort ;
38
43
39
44
public AbstractHandler configureHandler () throws Exception {
40
45
return new ConnectHandler ();
41
46
}
47
+
48
+ @ DataProvider (name = "serverPorts" )
49
+ public Object [][] serverPorts () {
50
+ return new Object [][] {{port1 , ProxyType .HTTP }, {httpsProxyPort , ProxyType .HTTPS }};
51
+ }
52
+
42
53
43
54
@ BeforeClass (alwaysRun = true )
44
55
public void setUpGlobal () throws Exception {
45
- server = new Server ();
46
- ServerConnector connector = addHttpConnector (server );
47
- server .setHandler (configureHandler ());
48
- server .start ();
49
- port1 = connector .getLocalPort ();
56
+ servers = new ArrayList <>();
57
+ port1 = startServer (configureHandler (), false );
58
+
59
+ port2 = startServer (new EchoHandler (), true );
50
60
51
- server2 = new Server ();
52
- ServerConnector connector2 = addHttpsConnector (server2 );
53
- server2 .setHandler (new EchoHandler ());
54
- server2 .start ();
55
- port2 = connector2 .getLocalPort ();
61
+ httpsProxyPort = startServer (configureHandler (), true );
56
62
57
63
logger .info ("Local HTTP server started successfully" );
58
64
}
65
+
66
+ private int startServer (Handler handler , boolean secure ) throws Exception {
67
+ Server server = new Server ();
68
+ @ SuppressWarnings ("resource" )
69
+ ServerConnector connector = secure ? addHttpsConnector (server ) : addHttpConnector (server );
70
+ server .setHandler (handler );
71
+ server .start ();
72
+ servers .add (server );
73
+ return connector .getLocalPort ();
74
+ }
59
75
60
76
@ AfterClass (alwaysRun = true )
61
- public void tearDownGlobal () throws Exception {
62
- server .stop ();
63
- server2 .stop ();
77
+ public void tearDownGlobal () {
78
+ servers .forEach (t -> {
79
+ try {
80
+ t .stop ();
81
+ } catch (Exception e ) {
82
+ // couldn't stop server
83
+ }
84
+ });
64
85
}
65
86
66
- @ Test
67
- public void testRequestProxy () throws Exception {
87
+ @ Test ( dataProvider = "serverPorts" )
88
+ public void testRequestProxy (int proxyPort , ProxyType type ) throws Exception {
68
89
69
90
try (AsyncHttpClient asyncHttpClient = asyncHttpClient (config ().setFollowRedirect (true ).setUseInsecureTrustManager (true ))) {
70
- RequestBuilder rb = get (getTargetUrl2 ()).setProxyServer (proxyServer ("localhost" , port1 ));
91
+ RequestBuilder rb = get (getTargetUrl2 ()).setProxyServer (proxyServer ("localhost" , proxyPort ). setProxyType ( type ));
71
92
Response r = asyncHttpClient .executeRequest (rb .build ()).get ();
72
93
assertEquals (r .getStatusCode (), 200 );
73
94
}
74
95
}
75
96
76
- @ Test
77
- public void testConfigProxy () throws Exception {
97
+ @ Test ( dataProvider = "serverPorts" )
98
+ public void testConfigProxy (int proxyPort , ProxyType type ) throws Exception {
78
99
AsyncHttpClientConfig config = config ()
79
100
.setFollowRedirect (true )
80
- .setProxyServer (proxyServer ("localhost" , port1 ).build ())
101
+ .setProxyServer (proxyServer ("localhost" , proxyPort ). setProxyType ( type ).build ())
81
102
.setUseInsecureTrustManager (true )
82
103
.build ();
83
104
try (AsyncHttpClient asyncHttpClient = asyncHttpClient (config )) {
@@ -86,11 +107,11 @@ public void testConfigProxy() throws Exception {
86
107
}
87
108
}
88
109
89
- @ Test
90
- public void testNoDirectRequestBodyWithProxy () throws Exception {
110
+ @ Test ( dataProvider = "serverPorts" )
111
+ public void testNoDirectRequestBodyWithProxy (int proxyPort , ProxyType type ) throws Exception {
91
112
AsyncHttpClientConfig config = config ()
92
113
.setFollowRedirect (true )
93
- .setProxyServer (proxyServer ("localhost" , port1 ).build ())
114
+ .setProxyServer (proxyServer ("localhost" , proxyPort ). setProxyType ( type ).build ())
94
115
.setUseInsecureTrustManager (true )
95
116
.build ();
96
117
try (AsyncHttpClient asyncHttpClient = asyncHttpClient (config )) {
@@ -99,11 +120,11 @@ public void testNoDirectRequestBodyWithProxy() throws Exception {
99
120
}
100
121
}
101
122
102
- @ Test
103
- public void testDecompressBodyWithProxy () throws Exception {
123
+ @ Test ( dataProvider = "serverPorts" )
124
+ public void testDecompressBodyWithProxy (int proxyPort , ProxyType type ) throws Exception {
104
125
AsyncHttpClientConfig config = config ()
105
126
.setFollowRedirect (true )
106
- .setProxyServer (proxyServer ("localhost" , port1 ).build ())
127
+ .setProxyServer (proxyServer ("localhost" , proxyPort ). setProxyType ( type ).build ())
107
128
.setUseInsecureTrustManager (true )
108
129
.build ();
109
130
try (AsyncHttpClient asyncHttpClient = asyncHttpClient (config )) {
@@ -116,11 +137,11 @@ public void testDecompressBodyWithProxy() throws Exception {
116
137
}
117
138
}
118
139
119
- @ Test
120
- public void testPooledConnectionsWithProxy () throws Exception {
140
+ @ Test ( dataProvider = "serverPorts" )
141
+ public void testPooledConnectionsWithProxy (int proxyPort , ProxyType type ) throws Exception {
121
142
122
143
try (AsyncHttpClient asyncHttpClient = asyncHttpClient (config ().setFollowRedirect (true ).setUseInsecureTrustManager (true ).setKeepAlive (true ))) {
123
- RequestBuilder rb = get (getTargetUrl2 ()).setProxyServer (proxyServer ("localhost" , port1 ));
144
+ RequestBuilder rb = get (getTargetUrl2 ()).setProxyServer (proxyServer ("localhost" , proxyPort ). setProxyType ( type ));
124
145
125
146
Response r1 = asyncHttpClient .executeRequest (rb .build ()).get ();
126
147
assertEquals (r1 .getStatusCode (), 200 );
0 commit comments