3636import java .net .*;
3737import java .util .HashMap ;
3838import java .util .Map ;
39+ import java .util .Optional ;
3940
4041import static org .junit .Assert .assertEquals ;
42+ import static org .junit .Assert .assertFalse ;
43+ import static org .junit .Assert .assertTrue ;
4144
4245public class CustomProxySelectorTest {
4346
@@ -58,6 +61,8 @@ public void testNoProxy() throws Exception {
5861 Proxy proxy = proxySelector .getProxyFor (uri );
5962
6063 assertEquals (Proxy .NO_PROXY , proxy );
64+ Optional <URI > proxyURI = proxySelector .getProxyURIFor (uri );
65+ assertFalse (proxyURI .isPresent ());
6166 }
6267
6368 @ Test
@@ -67,6 +72,8 @@ public void testSystemProxy() throws Exception {
6772 Proxy proxy = proxySelector .getProxyFor (uri );
6873
6974 assertEquals (ProxySelector .getDefault ().select (uri ).get (0 ), proxy );
75+ Optional <URI > proxyURI = proxySelector .getProxyURIFor (uri );
76+ assertFalse (proxyURI .isPresent ());
7077 }
7178
7279 @ Test
@@ -77,6 +84,9 @@ public void testProxyPACHTTP() throws Exception {
7784 Proxy proxy = proxySelector .getProxyFor (uri );
7885
7986 assertEquals (new Proxy (Proxy .Type .HTTP , new InetSocketAddress ("proxy.example.com" , 8080 )), proxy );
87+ Optional <URI > proxyURI = proxySelector .getProxyURIFor (uri );
88+ assertTrue (proxyURI .isPresent ());
89+ assertEquals ("http://proxy.example.com:8080/" , proxyURI .get ().toString ());
8090 }
8191
8292 @ Test
@@ -93,6 +103,10 @@ public void testProxyPACHTTPWithLogin() throws Exception {
93103 PasswordAuthentication authentication = Authenticator .requestPasswordAuthentication (null , 8080 , uri .toURL ().getProtocol (), "ciao" , "" );
94104 assertEquals (authentication .getUserName (), "auto" );
95105 assertEquals (String .valueOf (authentication .getPassword ()), "autopassword" );
106+
107+ Optional <URI > proxyURI = proxySelector .getProxyURIFor (uri );
108+ assertTrue (proxyURI .isPresent ());
109+ assertEquals ("http://auto:autopassword@proxy.example.com:8080/" , proxyURI .get ().toString ());
96110 }
97111
98112 @ Test
@@ -103,6 +117,10 @@ public void testProxyPACSOCKS() throws Exception {
103117 Proxy proxy = proxySelector .getProxyFor (uri );
104118
105119 assertEquals (new Proxy (Proxy .Type .SOCKS , new InetSocketAddress ("proxy.example.com" , 8080 )), proxy );
120+
121+ Optional <URI > proxyURI = proxySelector .getProxyURIFor (uri );
122+ assertTrue (proxyURI .isPresent ());
123+ assertEquals ("socks://proxy.example.com:8080/" , proxyURI .get ().toString ());
106124 }
107125
108126 @ Test
@@ -113,6 +131,8 @@ public void testProxyPACDirect() throws Exception {
113131 Proxy proxy = proxySelector .getProxyFor (uri );
114132
115133 assertEquals (Proxy .NO_PROXY , proxy );
134+ Optional <URI > proxyURI = proxySelector .getProxyURIFor (uri );
135+ assertFalse (proxyURI .isPresent ());
116136 }
117137
118138 @ Test
@@ -123,6 +143,10 @@ public void testProxyPACComplex() throws Exception {
123143 Proxy proxy = proxySelector .getProxyFor (uri );
124144
125145 assertEquals (new Proxy (Proxy .Type .HTTP , new InetSocketAddress ("4.5.6.7" , 8080 )), proxy );
146+
147+ Optional <URI > proxyURI = proxySelector .getProxyURIFor (uri );
148+ assertTrue (proxyURI .isPresent ());
149+ assertEquals ("http://4.5.6.7:8080/" , proxyURI .get ().toString ());
126150 }
127151
128152 @ Test
@@ -133,6 +157,8 @@ public void testProxyPACComplex2() throws Exception {
133157 Proxy proxy = proxySelector .getProxyFor (new URL ("http://www.intranet.domain.com/ciao" ).toURI ());
134158
135159 assertEquals (Proxy .NO_PROXY , proxy );
160+ Optional <URI > proxyURI = proxySelector .getProxyURIFor (new URL ("http://www.intranet.domain.com/ciao" ).toURI ());
161+ assertFalse (proxyURI .isPresent ());
136162 }
137163
138164 @ Test
@@ -146,6 +172,10 @@ public void testManualProxy() throws Exception {
146172 Proxy proxy = proxySelector .getProxyFor (uri );
147173
148174 assertEquals (new Proxy (Proxy .Type .HTTP , new InetSocketAddress ("localhost" , 8080 )), proxy );
175+
176+ Optional <URI > proxyURI = proxySelector .getProxyURIFor (uri );
177+ assertTrue (proxyURI .isPresent ());
178+ assertEquals ("http://localhost:8080/" , proxyURI .get ().toString ());
149179 }
150180
151181 @ Test
@@ -165,5 +195,9 @@ public void testManualProxyWithLogin() throws Exception {
165195 PasswordAuthentication authentication = Authenticator .requestPasswordAuthentication (null , 8080 , uri .toURL ().getProtocol (), "ciao" , "" );
166196 assertEquals (authentication .getUserName (), "username" );
167197 assertEquals (String .valueOf (authentication .getPassword ()), "pwd" );
198+
199+ Optional <URI > proxyURI = proxySelector .getProxyURIFor (uri );
200+ assertTrue (proxyURI .isPresent ());
201+ assertEquals ("http://username:pwd@localhost:8080/" , proxyURI .get ().toString ());
168202 }
169203}
0 commit comments