48 import java.net.http.HttpClient; |
48 import java.net.http.HttpClient; |
49 import java.net.http.HttpClient.Redirect; |
49 import java.net.http.HttpClient.Redirect; |
50 import java.net.http.HttpClient.Version; |
50 import java.net.http.HttpClient.Version; |
51 import jdk.testlibrary.SimpleSSLContext; |
51 import jdk.testlibrary.SimpleSSLContext; |
52 import org.testng.annotations.Test; |
52 import org.testng.annotations.Test; |
|
53 import static java.time.Duration.*; |
53 import static org.testng.Assert.*; |
54 import static org.testng.Assert.*; |
54 |
55 |
55 /* |
56 /* |
56 * @test |
57 * @test |
57 * @summary HttpClient[.Builder] API and behaviour checks |
58 * @summary HttpClient[.Builder] API and behaviour checks |
72 |
73 |
73 for (HttpClient client : clients) { |
74 for (HttpClient client : clients) { |
74 // Empty optionals and defaults |
75 // Empty optionals and defaults |
75 assertFalse(client.authenticator().isPresent()); |
76 assertFalse(client.authenticator().isPresent()); |
76 assertFalse(client.cookieHandler().isPresent()); |
77 assertFalse(client.cookieHandler().isPresent()); |
|
78 assertFalse(client.connectTimeout().isPresent()); |
77 assertFalse(client.executor().isPresent()); |
79 assertFalse(client.executor().isPresent()); |
78 assertFalse(client.proxy().isPresent()); |
80 assertFalse(client.proxy().isPresent()); |
79 assertTrue(client.sslParameters() != null); |
81 assertTrue(client.sslParameters() != null); |
80 assertTrue(client.followRedirects().equals(HttpClient.Redirect.NEVER)); |
82 assertTrue(client.followRedirects().equals(HttpClient.Redirect.NEVER)); |
81 assertTrue(client.sslContext() == SSLContext.getDefault()); |
83 assertTrue(client.sslContext() == SSLContext.getDefault()); |
86 @Test |
88 @Test |
87 public void testNull() throws Exception { |
89 public void testNull() throws Exception { |
88 HttpClient.Builder builder = HttpClient.newBuilder(); |
90 HttpClient.Builder builder = HttpClient.newBuilder(); |
89 assertThrows(NPE, () -> builder.authenticator(null)); |
91 assertThrows(NPE, () -> builder.authenticator(null)); |
90 assertThrows(NPE, () -> builder.cookieHandler(null)); |
92 assertThrows(NPE, () -> builder.cookieHandler(null)); |
|
93 assertThrows(NPE, () -> builder.connectTimeout(null)); |
91 assertThrows(NPE, () -> builder.executor(null)); |
94 assertThrows(NPE, () -> builder.executor(null)); |
92 assertThrows(NPE, () -> builder.proxy(null)); |
95 assertThrows(NPE, () -> builder.proxy(null)); |
93 assertThrows(NPE, () -> builder.sslParameters(null)); |
96 assertThrows(NPE, () -> builder.sslParameters(null)); |
94 assertThrows(NPE, () -> builder.followRedirects(null)); |
97 assertThrows(NPE, () -> builder.followRedirects(null)); |
95 assertThrows(NPE, () -> builder.sslContext(null)); |
98 assertThrows(NPE, () -> builder.sslContext(null)); |
124 assertTrue(builder.build().cookieHandler().get() == b); |
127 assertTrue(builder.build().cookieHandler().get() == b); |
125 assertThrows(NPE, () -> builder.cookieHandler(null)); |
128 assertThrows(NPE, () -> builder.cookieHandler(null)); |
126 CookieManager c = new CookieManager(); |
129 CookieManager c = new CookieManager(); |
127 builder.cookieHandler(c); |
130 builder.cookieHandler(c); |
128 assertTrue(builder.build().cookieHandler().get() == c); |
131 assertTrue(builder.build().cookieHandler().get() == c); |
|
132 } |
|
133 |
|
134 @Test |
|
135 public void testConnectTimeout() { |
|
136 HttpClient.Builder builder = HttpClient.newBuilder(); |
|
137 Duration a = Duration.ofSeconds(5); |
|
138 builder.connectTimeout(a); |
|
139 assertTrue(builder.build().connectTimeout().get() == a); |
|
140 Duration b = Duration.ofMinutes(1); |
|
141 builder.connectTimeout(b); |
|
142 assertTrue(builder.build().connectTimeout().get() == b); |
|
143 assertThrows(NPE, () -> builder.cookieHandler(null)); |
|
144 Duration c = Duration.ofHours(100); |
|
145 builder.connectTimeout(c); |
|
146 assertTrue(builder.build().connectTimeout().get() == c); |
|
147 |
|
148 assertThrows(IAE, () -> builder.connectTimeout(ZERO)); |
|
149 assertThrows(IAE, () -> builder.connectTimeout(ofSeconds(0))); |
|
150 assertThrows(IAE, () -> builder.connectTimeout(ofSeconds(-1))); |
|
151 assertThrows(IAE, () -> builder.connectTimeout(ofNanos(-100))); |
129 } |
152 } |
130 |
153 |
131 static class TestExecutor implements Executor { |
154 static class TestExecutor implements Executor { |
132 public void execute(Runnable r) { } |
155 public void execute(Runnable r) { } |
133 } |
156 } |
290 assertThrows(UOE, () -> (new MockHttpClient()).newWebSocketBuilder()); |
313 assertThrows(UOE, () -> (new MockHttpClient()).newWebSocketBuilder()); |
291 } |
314 } |
292 |
315 |
293 static class MockHttpClient extends HttpClient { |
316 static class MockHttpClient extends HttpClient { |
294 @Override public Optional<CookieHandler> cookieHandler() { return null; } |
317 @Override public Optional<CookieHandler> cookieHandler() { return null; } |
|
318 @Override public Optional<Duration> connectTimeout() { return null; } |
295 @Override public Redirect followRedirects() { return null; } |
319 @Override public Redirect followRedirects() { return null; } |
296 @Override public Optional<ProxySelector> proxy() { return null; } |
320 @Override public Optional<ProxySelector> proxy() { return null; } |
297 @Override public SSLContext sslContext() { return null; } |
321 @Override public SSLContext sslContext() { return null; } |
298 @Override public SSLParameters sslParameters() { return null; } |
322 @Override public SSLParameters sslParameters() { return null; } |
299 @Override public Optional<Authenticator> authenticator() { return null; } |
323 @Override public Optional<Authenticator> authenticator() { return null; } |