1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package org.apache.hc.client5.testing.sync;
28
29 import org.apache.hc.client5.http.classic.methods.HttpPost;
30 import org.apache.hc.client5.testing.extension.sync.ClientProtocolLevel;
31 import org.apache.hc.client5.testing.extension.sync.TestClient;
32 import org.apache.hc.core5.http.ClassicHttpRequest;
33 import org.apache.hc.core5.http.Header;
34 import org.apache.hc.core5.http.HttpHost;
35 import org.apache.hc.core5.http.HttpResponse;
36 import org.apache.hc.core5.http.URIScheme;
37 import org.apache.hc.core5.http.io.entity.EntityUtils;
38 import org.junit.jupiter.api.Assertions;
39 import org.junit.jupiter.api.BeforeEach;
40 import org.junit.jupiter.api.Test;
41
42 @SuppressWarnings("boxing")
43 class TestHttpClientBuilderInterceptors extends AbstractIntegrationTestBase {
44
45 public TestHttpClientBuilderInterceptors() {
46 super(URIScheme.HTTP, ClientProtocolLevel.STANDARD);
47 }
48
49 @BeforeEach
50 void before() {
51 configureServer(bootstrap -> bootstrap
52 .register("/test", (request, response, context) -> {
53 final Header testInterceptorHeader = request.getHeader("X-Test-Interceptor");
54 if (testInterceptorHeader != null) {
55 response.setHeader(testInterceptorHeader);
56 }
57 response.setCode(200);
58 }));
59 configureClient(builder -> builder
60 .addExecInterceptorLast("test-interceptor", (request, scope, chain) -> {
61 request.setHeader("X-Test-Interceptor", "active");
62 return chain.proceed(request, scope);
63 }));
64 }
65
66 @Test
67 void testAddExecInterceptorLastShouldBeExecuted() throws Exception {
68 final HttpHost httpHost = startServer();
69 final TestClient client = client();
70 final ClassicHttpRequest request = new HttpPost("/test");
71 final HttpResponse response = client.execute(httpHost, request, httpResponse -> {
72 EntityUtils.consume(httpResponse.getEntity());
73 return httpResponse;
74 });
75 Assertions.assertEquals(200, response.getCode());
76 final Header testFilterHeader = response.getHeader("X-Test-Interceptor");
77 Assertions.assertNotNull(testFilterHeader);
78 }
79
80 }