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
28 package org.apache.hc.client5.http.protocol;
29
30 import static org.junit.jupiter.api.Assertions.assertNotNull;
31 import static org.junit.jupiter.api.Assertions.assertNull;
32 import static org.junit.jupiter.api.Assertions.assertThrows;
33
34 import java.io.IOException;
35
36 import org.apache.hc.core5.http.EntityDetails;
37 import org.apache.hc.core5.http.HttpException;
38 import org.apache.hc.core5.http.HttpHeaders;
39 import org.apache.hc.core5.http.HttpRequest;
40 import org.apache.hc.core5.http.ProtocolException;
41 import org.apache.hc.core5.http.impl.BasicEntityDetails;
42 import org.apache.hc.core5.http.message.BasicHttpRequest;
43 import org.apache.hc.core5.http.protocol.HttpContext;
44 import org.junit.jupiter.api.BeforeEach;
45 import org.junit.jupiter.api.Test;
46
47 class TestRequestValidateTrace {
48
49 private RequestValidateTrace interceptor;
50 private HttpRequest request;
51 private HttpContext context;
52
53 @BeforeEach
54 void setUp() {
55 interceptor = new RequestValidateTrace();
56 context = HttpClientContext.create();
57 }
58
59 @Test
60 void testTraceRequestWithoutSensitiveHeaders() throws HttpException, IOException {
61 request = new BasicHttpRequest("TRACE", "/");
62 interceptor.process(request, null, context);
63 assertNull(request.getHeader(HttpHeaders.AUTHORIZATION));
64 }
65
66 @Test
67 void testTraceRequestWithSensitiveHeaders() {
68 request = new BasicHttpRequest("TRACE", "/");
69 request.setHeader(HttpHeaders.AUTHORIZATION, "Bearer token");
70 assertThrows(ProtocolException.class, () -> interceptor.process(request, null, context));
71 }
72
73 @Test
74 void testTraceRequestWithBody() {
75 request = new BasicHttpRequest("TRACE", "/");
76 final EntityDetails entity = new BasicEntityDetails(10, null);
77 assertThrows(ProtocolException.class, () -> interceptor.process(request, entity, context));
78 }
79
80 @Test
81 void testNonTraceRequest() throws HttpException, IOException {
82 request = new BasicHttpRequest("GET", "/");
83 request.setHeader(HttpHeaders.AUTHORIZATION, "Bearer token");
84 interceptor.process(request, null, context);
85 assertNotNull(request.getHeader(HttpHeaders.AUTHORIZATION));
86 }
87
88 @Test
89 void testTraceRequestWithCookieHeader() {
90 request = new BasicHttpRequest("TRACE", "/");
91 request.setHeader(HttpHeaders.COOKIE, "someCookie=someValue");
92 assertThrows(ProtocolException.class, () -> interceptor.process(request, null, context));
93 }
94 }