1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit;
16
17 import java.net.URL;
18
19 import org.eclipse.jetty.server.Server;
20 import org.htmlunit.junit.BrowserRunner;
21 import org.htmlunit.util.UrlUtils;
22 import org.junit.After;
23 import org.junit.Before;
24 import org.junit.Test;
25 import org.junit.runner.RunWith;
26
27
28
29
30
31
32
33 @RunWith(BrowserRunner.class)
34 public class HttpWebConnectionProxyTest extends WebServerTestCase {
35
36 private Server proxyWebServer_;
37
38
39
40
41
42 @Before
43 public void setup() throws Exception {
44
45 WebDriverTestCase.stopWebServers();
46 startWebServer("src/test/resources/testfiles/noproxyroot/");
47
48 final Server proxyWebServer = createWebServer(PORT_PROXY_SERVER,
49 "src/test/resources/testfiles/proxyroot/", null, null, null);
50 WebServerTestCase.tryStart(PORT_PROXY_SERVER, proxyWebServer);
51 proxyWebServer_ = proxyWebServer;
52
53 final WebClient webClient = getWebClient();
54
55 final ProxyConfig proxy = new ProxyConfig(SOCKS_PROXY_HOST, PORT_PROXY_SERVER, null);
56 proxy.addHostsToProxyBypass("127.0.0.1");
57 webClient.getOptions().setProxyConfig(proxy);
58 }
59
60
61
62
63
64 @Override
65 @After
66 public void tearDown() throws Exception {
67 if (proxyWebServer_ != null) {
68 proxyWebServer_.stop();
69 proxyWebServer_.destroy();
70 }
71 proxyWebServer_ = null;
72
73 super.tearDown();
74 }
75
76
77
78
79
80
81
82
83 @Test
84 public void proxySettingsAreNotUsedForSubsequentRequestToNonProxyHosts() throws Exception {
85 URL resourceUrl = new URL("http://localhost:" + PORT_PROXY_SERVER + "/response.txt");
86 TextPage page = getWebClient().getPage(UrlUtils.getUrlWithNewPort(resourceUrl, PORT_PROXY_SERVER));
87 assertEquals("proxy should have been used", "proxy-response", page.getContent().trim());
88
89 resourceUrl = new URL("http://127.0.0.1:" + PORT + "/response.txt");
90 page = getWebClient().getPage(resourceUrl);
91 assertEquals("proxy should not be used", "no-proxy-response", page.getContent().trim());
92 }
93 }