|
33 | 33 | import org.apache.hc.client5.http.cookie.BasicCookieStore; |
34 | 34 | import org.apache.hc.client5.http.cookie.Cookie; |
35 | 35 | import org.apache.hc.client5.http.cookie.CookieStore; |
| 36 | +import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; |
| 37 | +import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; |
36 | 38 | import org.apache.hc.client5.http.protocol.HttpClientContext; |
37 | | -import org.apache.hc.client5.testing.extension.sync.ClientProtocolLevel; |
38 | | -import org.apache.hc.client5.testing.extension.sync.TestClient; |
39 | 39 | import org.apache.hc.core5.http.HttpHost; |
40 | 40 | import org.apache.hc.core5.http.HttpStatus; |
41 | | -import org.apache.hc.core5.http.URIScheme; |
| 41 | +import org.apache.hc.core5.http.impl.bootstrap.HttpServer; |
| 42 | +import org.apache.hc.core5.http.impl.bootstrap.ServerBootstrap; |
42 | 43 | import org.apache.hc.core5.http.io.entity.EntityUtils; |
43 | 44 | import org.apache.hc.core5.http.message.BasicHeader; |
| 45 | +import org.apache.hc.core5.io.CloseMode; |
| 46 | +import org.junit.jupiter.api.AfterEach; |
44 | 47 | import org.junit.jupiter.api.Assertions; |
45 | 48 | import org.junit.jupiter.api.Test; |
46 | 49 |
|
47 | 50 | /** |
48 | 51 | * This class tests cookie matching when using Virtual Host. |
49 | 52 | */ |
50 | | -public class TestCookieVirtualHost extends AbstractIntegrationTestBase { |
| 53 | +public class TestCookieVirtualHost { |
51 | 54 |
|
52 | | - public TestCookieVirtualHost() { |
53 | | - super(URIScheme.HTTP, ClientProtocolLevel.STANDARD); |
| 55 | + private HttpServer server; |
| 56 | + |
| 57 | + @AfterEach |
| 58 | + public void shutDown() throws Exception { |
| 59 | + if (this.server != null) { |
| 60 | + this.server.close(CloseMode.GRACEFUL); |
| 61 | + } |
54 | 62 | } |
55 | 63 |
|
56 | 64 | @Test |
57 | 65 | public void testCookieMatchingWithVirtualHosts() throws Exception { |
58 | | - configureServer(bootstrap -> bootstrap |
| 66 | + server = ServerBootstrap.bootstrap() |
59 | 67 | .register("app.mydomain.fr", "*", (request, response, context) -> { |
60 | 68 |
|
61 | 69 | final int n = Integer.parseInt(request.getFirstHeader("X-Request").getValue()); |
@@ -93,45 +101,49 @@ public void testCookieMatchingWithVirtualHosts() throws Exception { |
93 | 101 | Assertions.fail("Unexpected value: " + n); |
94 | 102 | break; |
95 | 103 | } |
96 | | - })); |
97 | | - |
98 | | - final HttpHost target = startServer(); |
99 | | - |
100 | | - final TestClient client = client(); |
101 | | - |
102 | | - final CookieStore cookieStore = new BasicCookieStore(); |
103 | | - final HttpClientContext context = HttpClientContext.create(); |
104 | | - context.setCookieStore(cookieStore); |
105 | | - |
106 | | - // First request : retrieve a domain cookie from remote server. |
107 | | - final HttpGet request1 = new HttpGet(new URI("http://app.mydomain.fr")); |
108 | | - request1.addHeader("X-Request", "1"); |
109 | | - client.execute(target, request1, context, response -> { |
110 | | - EntityUtils.consume(response.getEntity()); |
111 | | - return null; |
112 | | - }); |
113 | | - |
114 | | - // We should have one cookie set on domain. |
115 | | - final List<Cookie> cookies = cookieStore.getCookies(); |
116 | | - Assertions.assertNotNull(cookies); |
117 | | - Assertions.assertEquals(1, cookies.size()); |
118 | | - Assertions.assertEquals("name1", cookies.get(0).getName()); |
119 | | - |
120 | | - // Second request : send the cookie back. |
121 | | - final HttpGet request2 = new HttpGet(new URI("http://app.mydomain.fr")); |
122 | | - request2.addHeader("X-Request", "2"); |
123 | | - client.execute(target, request2, context, response -> { |
124 | | - EntityUtils.consume(response.getEntity()); |
125 | | - return null; |
126 | | - }); |
127 | | - |
128 | | - // Third request : Host header |
129 | | - final HttpGet request3 = new HttpGet(new URI("http://app.mydomain.fr")); |
130 | | - request3.addHeader("X-Request", "3"); |
131 | | - client.execute(target, request3, context, response -> { |
132 | | - EntityUtils.consume(response.getEntity()); |
133 | | - return null; |
134 | | - }); |
| 104 | + }) |
| 105 | + .create(); |
| 106 | + server.start(); |
| 107 | + |
| 108 | + final HttpHost target = new HttpHost("localhost", server.getLocalPort()); |
| 109 | + try (final CloseableHttpClient client = HttpClientBuilder.create().build()) { |
| 110 | + final CookieStore cookieStore = new BasicCookieStore(); |
| 111 | + final HttpClientContext context = HttpClientContext.create(); |
| 112 | + context.setCookieStore(cookieStore); |
| 113 | + |
| 114 | + // First request : retrieve a domain cookie from remote server. |
| 115 | + final HttpGet request1 = new HttpGet(new URI("http://app.mydomain.fr")); |
| 116 | + request1.addHeader("X-Request", "1"); |
| 117 | + client.execute(target, request1, context, response -> { |
| 118 | + Assertions.assertEquals(200, response.getCode()); |
| 119 | + EntityUtils.consume(response.getEntity()); |
| 120 | + return null; |
| 121 | + }); |
| 122 | + |
| 123 | + // We should have one cookie set on domain. |
| 124 | + final List<Cookie> cookies = cookieStore.getCookies(); |
| 125 | + Assertions.assertNotNull(cookies); |
| 126 | + Assertions.assertEquals(1, cookies.size()); |
| 127 | + Assertions.assertEquals("name1", cookies.get(0).getName()); |
| 128 | + |
| 129 | + // Second request : send the cookie back. |
| 130 | + final HttpGet request2 = new HttpGet(new URI("http://app.mydomain.fr")); |
| 131 | + request2.addHeader("X-Request", "2"); |
| 132 | + client.execute(target, request2, context, response -> { |
| 133 | + Assertions.assertEquals(200, response.getCode()); |
| 134 | + EntityUtils.consume(response.getEntity()); |
| 135 | + return null; |
| 136 | + }); |
| 137 | + |
| 138 | + // Third request : Host header |
| 139 | + final HttpGet request3 = new HttpGet(new URI("http://app.mydomain.fr")); |
| 140 | + request3.addHeader("X-Request", "3"); |
| 141 | + client.execute(target, request3, context, response -> { |
| 142 | + Assertions.assertEquals(200, response.getCode()); |
| 143 | + EntityUtils.consume(response.getEntity()); |
| 144 | + return null; |
| 145 | + }); |
| 146 | + } |
135 | 147 | } |
136 | 148 |
|
137 | 149 | } |
0 commit comments