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.core5.http.io.support;
29
30 import static org.junit.jupiter.api.Assertions.assertAll;
31 import static org.junit.jupiter.api.Assertions.assertEquals;
32 import static org.junit.jupiter.api.Assertions.assertNotNull;
33
34 import java.net.URISyntaxException;
35 import java.net.UnknownHostException;
36 import java.nio.charset.StandardCharsets;
37
38 import org.apache.hc.core5.http.ClassicHttpRequest;
39 import org.apache.hc.core5.http.ContentType;
40 import org.apache.hc.core5.http.Header;
41 import org.apache.hc.core5.http.HttpHost;
42 import org.apache.hc.core5.http.HttpVersion;
43 import org.apache.hc.core5.http.Method;
44 import org.apache.hc.core5.http.io.entity.ByteArrayEntity;
45 import org.apache.hc.core5.http.io.entity.StringEntity;
46 import org.apache.hc.core5.http.message.BasicHeader;
47 import org.apache.hc.core5.http.message.BasicNameValuePair;
48 import org.apache.hc.core5.net.URIAuthority;
49 import org.apache.hc.core5.net.URIBuilder;
50 import org.junit.jupiter.api.Assertions;
51 import org.junit.jupiter.api.Test;
52
53 class ClassicRequestBuilderTest {
54
55 @Test
56 void constructor() throws UnknownHostException, URISyntaxException {
57 final ClassicRequestBuilder classicRequestBuilder = new ClassicRequestBuilder(Method.HEAD);
58 assertEquals(Method.HEAD.name(), classicRequestBuilder.getMethod());
59
60 final ClassicRequestBuilder classicRequestBuilder2 = new ClassicRequestBuilder(Method.HEAD.name());
61 assertEquals(Method.HEAD.name(), classicRequestBuilder2.getMethod());
62
63 final ClassicRequestBuilder classicRequestBuilder3 = new ClassicRequestBuilder(Method.HEAD.name(), URIBuilder.localhost().build());
64 assertEquals(Method.HEAD.name(), classicRequestBuilder3.getMethod());
65 assertEquals(URIBuilder.localhost().getHost(), classicRequestBuilder3.getAuthority().getHostName());
66
67 final ClassicRequestBuilder classicRequestBuilder4 = new ClassicRequestBuilder(Method.HEAD, URIBuilder.localhost().build());
68 assertEquals(Method.HEAD.name(), classicRequestBuilder4.getMethod());
69 assertEquals(URIBuilder.localhost().getHost(), classicRequestBuilder4.getAuthority().getHostName());
70
71 final ClassicRequestBuilder classicRequestBuilder5 = new ClassicRequestBuilder(Method.HEAD, "/localhost");
72 assertEquals(Method.HEAD.name(), classicRequestBuilder5.getMethod());
73 assertEquals("/localhost", classicRequestBuilder5.getPath());
74
75 final ClassicRequestBuilder classicRequestBuilder6 = new ClassicRequestBuilder(Method.HEAD.name(), "/localhost");
76 assertEquals(Method.HEAD.name(), classicRequestBuilder6.getMethod());
77 assertEquals("/localhost", classicRequestBuilder6.getPath());
78 }
79
80 @Test
81 public void create() {
82 final ClassicHttpRequest classicHttpRequest = ClassicRequestBuilder.create(Method.HEAD.name()).build();
83 assertEquals(Method.HEAD.name(), classicHttpRequest.getMethod());
84 }
85
86 @Test
87 public void get() throws UnknownHostException, URISyntaxException {
88 final ClassicRequestBuilder classicRequestBuilder = ClassicRequestBuilder.get();
89 assertEquals(Method.GET.name(), classicRequestBuilder.getMethod());
90
91 final ClassicRequestBuilder classicRequestBuilder1 = ClassicRequestBuilder.get(URIBuilder.localhost().build());
92 assertEquals(Method.GET.name(), classicRequestBuilder1.getMethod());
93
94 final ClassicRequestBuilder classicRequestBuilder3 = ClassicRequestBuilder.get("/localhost");
95 assertEquals(Method.GET.name(), classicRequestBuilder3.getMethod());
96 assertEquals("/localhost", classicRequestBuilder3.getPath());
97 }
98
99 @Test
100 public void head() throws UnknownHostException, URISyntaxException {
101 final ClassicRequestBuilder classicRequestBuilder = ClassicRequestBuilder.head();
102 assertEquals(Method.HEAD.name(), classicRequestBuilder.getMethod());
103
104 final ClassicRequestBuilder classicRequestBuilder1 = ClassicRequestBuilder.head(URIBuilder.localhost().build());
105 assertEquals(Method.HEAD.name(), classicRequestBuilder1.getMethod());
106
107 final ClassicRequestBuilder classicRequestBuilder3 = ClassicRequestBuilder.head("/localhost");
108 assertEquals(Method.HEAD.name(), classicRequestBuilder3.getMethod());
109 assertEquals("/localhost", classicRequestBuilder3.getPath());
110 }
111
112 @Test
113 public void patch() throws UnknownHostException, URISyntaxException {
114 final ClassicRequestBuilder classicRequestBuilder = ClassicRequestBuilder.patch();
115 assertEquals(Method.PATCH.name(), classicRequestBuilder.getMethod());
116
117 final ClassicRequestBuilder classicRequestBuilder1 = ClassicRequestBuilder.patch(URIBuilder.localhost().build());
118 assertEquals(Method.PATCH.name(), classicRequestBuilder1.getMethod());
119
120 final ClassicRequestBuilder classicRequestBuilder3 = ClassicRequestBuilder.patch("/localhost");
121 assertEquals(Method.PATCH.name(), classicRequestBuilder3.getMethod());
122 assertEquals("/localhost", classicRequestBuilder3.getPath());
123 }
124
125 @Test
126 public void post() throws UnknownHostException, URISyntaxException {
127 final ClassicRequestBuilder classicRequestBuilder = ClassicRequestBuilder.post();
128 assertEquals(Method.POST.name(), classicRequestBuilder.getMethod());
129
130 final ClassicRequestBuilder classicRequestBuilder1 = ClassicRequestBuilder.post(URIBuilder.localhost().build());
131 assertEquals(Method.POST.name(), classicRequestBuilder1.getMethod());
132
133 final ClassicRequestBuilder classicRequestBuilder3 = ClassicRequestBuilder.post("/localhost");
134 assertEquals(Method.POST.name(), classicRequestBuilder3.getMethod());
135 assertEquals("/localhost", classicRequestBuilder3.getPath());
136 }
137
138 @Test
139 public void put() throws UnknownHostException, URISyntaxException {
140 final ClassicRequestBuilder classicRequestBuilder = ClassicRequestBuilder.put();
141 assertEquals(Method.PUT.name(), classicRequestBuilder.getMethod());
142
143 final ClassicRequestBuilder classicRequestBuilder1 = ClassicRequestBuilder.put(URIBuilder.localhost().build());
144 assertEquals(Method.PUT.name(), classicRequestBuilder1.getMethod());
145
146 final ClassicRequestBuilder classicRequestBuilder3 = ClassicRequestBuilder.put("/localhost");
147 assertEquals(Method.PUT.name(), classicRequestBuilder3.getMethod());
148 assertEquals("/localhost", classicRequestBuilder3.getPath());
149 }
150
151 @Test
152 public void delete() throws UnknownHostException, URISyntaxException {
153 final ClassicRequestBuilder classicRequestBuilder = ClassicRequestBuilder.delete();
154 assertEquals(Method.DELETE.name(), classicRequestBuilder.getMethod());
155
156 final ClassicRequestBuilder classicRequestBuilder1 = ClassicRequestBuilder.delete(URIBuilder.localhost().build());
157 assertEquals(Method.DELETE.name(), classicRequestBuilder1.getMethod());
158
159 final ClassicRequestBuilder classicRequestBuilder3 = ClassicRequestBuilder.delete("/localhost");
160 assertEquals(Method.DELETE.name(), classicRequestBuilder3.getMethod());
161 assertEquals("/localhost", classicRequestBuilder3.getPath());
162 }
163
164 @Test
165 public void trace() throws UnknownHostException, URISyntaxException {
166 final ClassicRequestBuilder classicRequestBuilder = ClassicRequestBuilder.trace();
167 assertEquals(Method.TRACE.name(), classicRequestBuilder.getMethod());
168
169 final ClassicRequestBuilder classicRequestBuilder1 = ClassicRequestBuilder.trace(URIBuilder.localhost().build());
170 assertEquals(Method.TRACE.name(), classicRequestBuilder1.getMethod());
171
172 final ClassicRequestBuilder classicRequestBuilder3 = ClassicRequestBuilder.trace("/localhost");
173 assertEquals(Method.TRACE.name(), classicRequestBuilder3.getMethod());
174 assertEquals("/localhost", classicRequestBuilder3.getPath());
175 }
176
177 @Test
178 public void option() throws UnknownHostException, URISyntaxException {
179 final ClassicRequestBuilder classicRequestBuilder = ClassicRequestBuilder.options();
180 assertEquals(Method.OPTIONS.name(), classicRequestBuilder.getMethod());
181
182 final ClassicRequestBuilder classicRequestBuilder1 = ClassicRequestBuilder.options(URIBuilder.localhost().build());
183 assertEquals(Method.OPTIONS.name(), classicRequestBuilder1.getMethod());
184
185 final ClassicRequestBuilder classicRequestBuilder3 = ClassicRequestBuilder.options("/localhost");
186 assertEquals(Method.OPTIONS.name(), classicRequestBuilder3.getMethod());
187 assertEquals("/localhost", classicRequestBuilder3.getPath());
188 }
189
190 @Test
191 public void builder() {
192 final Header header = new BasicHeader("header2", "blah");
193 final ClassicHttpRequest classicHttpRequest = ClassicRequestBuilder.get()
194 .setVersion(HttpVersion.HTTP_1_1)
195 .setCharset(StandardCharsets.US_ASCII)
196 .setAuthority(new URIAuthority("host"))
197 .setEntity("<html><body><h1>Access denied</h1></body></html>", ContentType.TEXT_HTML)
198 .setHeader(new BasicHeader("header2", "blah"))
199 .setHeader("X-Test-Filter", "active")
200 .setHeader(header)
201 .setPath("path/")
202 .setScheme("http")
203 .addHeader(header)
204 .addHeader("header", ".addHeader(header)")
205 .addParameter(new BasicHeader("header2", "blah"))
206 .addParameter("param1", "value1")
207 .addParameters(new BasicNameValuePair("param3", "value3"), new BasicNameValuePair("param4", null))
208 .setAbsoluteRequestUri(true)
209 .setEntity(new StringEntity("requestBody"))
210 .setEntity(new ByteArrayEntity(new byte[10240], ContentType.TEXT_PLAIN))
211 .setEntity(new byte[10240], ContentType.TEXT_HTML)
212 .setEntity("requestBody")
213 .setUri("theUri")
214 .setHttpHost(new HttpHost("httpbin.org"))
215 .build();
216
217 assertAll("Should return address of Oracle's headquarter",
218 () -> assertNotNull(classicHttpRequest.getEntity()),
219 () -> assertEquals(Method.GET.name(), classicHttpRequest.getMethod()),
220 () -> assertEquals("http", classicHttpRequest.getScheme()),
221 () -> assertEquals("httpbin.org", classicHttpRequest.getAuthority().getHostName()),
222 () -> assertEquals(HttpVersion.HTTP_1_1, classicHttpRequest.getVersion()),
223 () -> assertEquals(4, classicHttpRequest.getHeaders().length),
224 () -> assertNotNull(ClassicRequestBuilder.get().toString()),
225 () -> assertEquals("http://httpbin.org/theUri?header2=blah¶m1=value1¶m3=value3¶m4", new String(classicHttpRequest.getRequestUri().getBytes()))
226 );
227 }
228
229
230 @Test
231 public void builderTraceThrowsIllegalStateException() {
232 Assertions.assertThrows(IllegalStateException.class, () ->
233 ClassicRequestBuilder.trace()
234 .setVersion(HttpVersion.HTTP_1_1)
235 .setEntity(new ByteArrayEntity(new byte[10240], ContentType.TEXT_PLAIN))
236 .build());
237 }
238
239 }