1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.http;
18
19 import static org.apache.juneau.TestUtils.*;
20 import static org.apache.juneau.commons.utils.StringUtils.*;
21 import static org.apache.juneau.http.HttpHeaders.*;
22 import static org.apache.juneau.http.HttpResources.*;
23 import static org.apache.juneau.junit.bct.BctAssertions.*;
24 import static org.junit.jupiter.api.Assertions.*;
25
26 import java.io.*;
27 import java.nio.file.*;
28
29 import org.apache.juneau.*;
30 import org.apache.juneau.http.header.*;
31 import org.junit.jupiter.api.*;
32
33 class BasicHttpResource_Test extends TestBase {
34
35 @Test void a01_basic() throws Exception {
36 var f = Files.createTempFile("test","txt").toFile();
37
38 var x = stringResource((String)null);
39 assertNull(x.getContentType());
40 assertEquals("", toUtf8(x.getContent()));
41 assertNull(x.getContentEncoding());
42 assertEmpty(x.getHeaders());
43
44 var x2 = stringResource("foo");
45 assertEquals("foo", toUtf8(x2.getContent()));
46 assertTrue(x2.isRepeatable());
47 assertFalse(x2.isStreaming());
48
49 var x3 = readerResource(reader("foo"));
50 assertEquals("foo", toUtf8(x3.getContent()));
51 assertFalse(x3.isRepeatable());
52 assertTrue(x3.isStreaming());
53
54 var x4 = byteArrayResource("foo".getBytes());
55 assertEquals("foo", toUtf8(x4.getContent()));
56 assertTrue(x4.isRepeatable());
57 assertFalse(x4.isStreaming());
58
59 var x5 = streamResource(inputStream("foo"));
60 assertEquals("foo", toUtf8(x5.getContent()));
61 assertFalse(x5.isRepeatable());
62 assertTrue(x5.isStreaming());
63
64 var x6 = fileResource(f);
65 assertEquals("", toUtf8(x6.getContent()));
66 assertTrue(x6.isRepeatable());
67 assertFalse(x6.isStreaming());
68
69 var x7 = stringResource("foo").setCached();
70 assertEquals("foo", toUtf8(x7.getContent()));
71 assertEquals("foo", toUtf8(x7.getContent()));
72 assertTrue(x7.isRepeatable());
73
74 var x8 = readerResource(reader("foo")).setCached();
75 assertEquals("foo", toUtf8(x8.getContent()));
76 assertEquals("foo", toUtf8(x8.getContent()));
77 assertTrue(x8.isRepeatable());
78
79 var x9 = byteArrayResource("foo".getBytes()).setCached();
80 assertEquals("foo", toUtf8(x9.getContent()));
81 assertEquals("foo", toUtf8(x9.getContent()));
82 assertTrue(x9.isRepeatable());
83
84 var x10 = streamResource(inputStream("foo")).setCached();
85 assertEquals("foo", toUtf8(x10.getContent()));
86 assertEquals("foo", toUtf8(x10.getContent()));
87 assertTrue(x10.isRepeatable());
88
89 var x11 = stringResource((String)null).setCached();
90 assertEquals("", toUtf8(x11.getContent()));
91 assertTrue(x11.isRepeatable());
92 x11.writeTo(new ByteArrayOutputStream());
93
94 var x12 = fileResource(f).setCached();
95 assertEquals("", toUtf8(x12.getContent()));
96 assertTrue(x12.isRepeatable());
97 x12.writeTo(new ByteArrayOutputStream());
98
99 assertEquals(3L, stringResource("foo").getContentLength());
100 assertEquals(3L, byteArrayResource("foo".getBytes()).getContentLength());
101 assertEquals(0L, fileResource(f).getContentLength());
102
103 assertEquals(-1L, readerResource(reader("foo")).getContentLength());
104 assertEquals(3L, readerResource(reader("foo")).setContentLength(3).getContentLength());
105
106 var x13 = stringResource("foo", contentType("text/plain")).setContentEncoding("identity");
107 assertEquals("text/plain", x13.getContentType().getValue());
108 assertEquals("identity", x13.getContentEncoding().getValue());
109
110 var x14 = stringResource("foo", null).setContentEncoding((String)null);
111 assertNull(x14.getContentType());
112 assertNull(x14.getContentEncoding());
113 }
114
115 @Test void a02_header_String_Object() {
116 var x = stringResource("foo").addHeader("Foo","bar").addHeader("Foo","baz").addHeader(null,"bar").addHeader("foo",null).getHeaders();
117 assertEquals("Foo: bar", x.getFirst("Foo").get().toString());
118 assertEquals("Foo: baz", x.getLast("Foo").get().toString());
119 assertEmpty(x.getFirst("Bar"));
120 assertEmpty(x.getLast("Bar"));
121 assertList(x.getAll(), "Foo: bar", "Foo: baz");
122 }
123
124 @Test void a03_header_Header() {
125 var x = stringResource("foo").addHeaders(header("Foo","bar")).addHeaders(header("Foo","baz")).addHeaders(header("Bar",null)).getHeaders();
126 assertEquals("Foo: bar", x.getFirst("Foo").get().toString());
127 assertEquals("Foo: baz", x.getLast("Foo").get().toString());
128 assertNull(x.getFirst("Bar").get().getValue());
129 assertNull(x.getLast("Bar").get().getValue());
130 assertList(x.getAll(), "Foo: bar", "Foo: baz", "Bar: null");
131 }
132
133 @Test void a04_headers_List() {
134 var x = stringResource("foo").addHeaders(header("Foo","bar"),header("Foo","baz"),header("Bar",null),null).getHeaders();
135 assertEquals("Foo: bar", x.getFirst("Foo").get().toString());
136 assertEquals("Foo: baz", x.getLast("Foo").get().toString());
137 assertNull(x.getFirst("Bar").get().getValue());
138 assertNull(x.getLast("Bar").get().getValue());
139 assertList(x.getAll(), "Foo: bar", "Foo: baz", "Bar: null");
140 }
141
142 @Test void a05_headers_array() {
143 var x = stringResource("foo").addHeaders(header("Foo","bar"),header("Foo","baz"),header("Bar",null),null).getHeaders();
144 assertEquals("Foo: bar", x.getFirst("Foo").get().toString());
145 assertEquals("Foo: baz", x.getLast("Foo").get().toString());
146 assertNull(x.getFirst("Bar").get().getValue());
147 assertNull(x.getLast("Bar").get().getValue());
148 assertList(x.getAll(), "Foo: bar", "Foo: baz", "Bar: null");
149 }
150
151 @Test void a06_chunked() {
152 var x1 = stringResource("foo").setChunked();
153 assertTrue(x1.isChunked());
154 var x2 = stringResource("foo");
155 assertFalse(x2.isChunked());
156 }
157
158 @Test void a07_chunked_boolean() {
159 var x1 = stringResource("foo").setChunked(true);
160 assertTrue(x1.isChunked());
161 var x2 = stringResource("foo").setChunked(false);
162 assertFalse(x2.isChunked());
163 }
164
165 @Test void a08_contentType_String() {
166 var x1 = stringResource("foo").setContentType("text/plain");
167 assertEquals("text/plain", x1.getContentType().getValue());
168 var x2 = stringResource("foo").setContentType((String)null);
169 assertNull(x2.getContentType());
170 }
171
172 @Test void a09_contentEncoding_String() {
173 var x1 = stringResource("foo").setContentEncoding("identity");
174 assertEquals("identity", x1.getContentEncoding().getValue());
175 var x2 = stringResource("foo").setContentEncoding((String)null);
176 assertNull(x2.getContentEncoding());
177 }
178
179 @Test void a10_setHeader_String_String() {
180 var x = stringResource("foo").setHeader("Foo","bar").setHeader("Foo","baz").setHeader(null,"bar").setHeader("foo",null).getHeaders();
181 assertEquals("Foo: baz", x.getFirst("Foo").get().toString());
182 assertEquals("Foo: baz", x.getLast("Foo").get().toString());
183 assertEmpty(x.getFirst("Bar"));
184 assertEmpty(x.getLast("Bar"));
185 assertList(x.getAll(), "Foo: baz");
186 }
187
188 @Test void a11_setHeaders_array() {
189
190 var x = stringResource("foo").setHeaders(header("Foo","bar"),header("Foo","baz"),header("Bar",null),null).getHeaders();
191 assertEquals("Foo: baz", x.getFirst("Foo").get().toString());
192 assertEquals("Foo: baz", x.getLast("Foo").get().toString());
193 assertNull(x.getFirst("Bar").get().getValue());
194 assertNull(x.getLast("Bar").get().getValue());
195 assertList(x.getAll(), "Foo: baz", "Bar: null");
196 }
197
198 @Test void a12_fluentSetters() throws Exception {
199
200 var s = stringResource("foo");
201 assertSame(s, s.setHeader("X-Test", "value"));
202 assertSame(s, s.addHeader("X-Test2", "value2"));
203 assertSame(s, s.setHeaders(header("X-Test3", "value3")));
204 assertSame(s, s.addHeaders(header("X-Test4", "value4")));
205
206 var ba = byteArrayResource("foo".getBytes());
207 assertSame(ba, ba.setHeader("X-Test", "value"));
208 assertSame(ba, ba.addHeader("X-Test2", "value2"));
209 assertSame(ba, ba.setHeaders(header("X-Test3", "value3")));
210 assertSame(ba, ba.addHeaders(header("X-Test4", "value4")));
211
212 var r = readerResource(reader("foo"));
213 assertSame(r, r.setHeader("X-Test", "value"));
214 assertSame(r, r.addHeader("X-Test2", "value2"));
215 assertSame(r, r.setHeaders(header("X-Test3", "value3")));
216 assertSame(r, r.addHeaders(header("X-Test4", "value4")));
217
218 var st = streamResource(inputStream("foo"));
219 assertSame(st, st.setHeader("X-Test", "value"));
220 assertSame(st, st.addHeader("X-Test2", "value2"));
221 assertSame(st, st.setHeaders(header("X-Test3", "value3")));
222 assertSame(st, st.addHeaders(header("X-Test4", "value4")));
223
224 var f = Files.createTempFile("test","txt").toFile();
225 var fr = fileResource(f);
226 assertSame(fr, fr.setHeader("X-Test", "value"));
227 assertSame(fr, fr.addHeader("X-Test2", "value2"));
228 assertSame(fr, fr.setHeaders(header("X-Test3", "value3")));
229 assertSame(fr, fr.addHeaders(header("X-Test4", "value4")));
230 }
231
232
233
234
235
236 private static BasicHeader header(String name, Object val) {
237 return new BasicHeader(name, val);
238 }
239 }