1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.http.resource;
18
19 import static org.apache.juneau.commons.utils.StringUtils.*;
20 import static org.apache.juneau.http.HttpHeaders.*;
21 import static org.junit.jupiter.api.Assertions.*;
22
23 import java.io.*;
24 import java.nio.file.*;
25
26 import org.apache.http.*;
27 import org.apache.juneau.*;
28 import org.apache.juneau.http.header.*;
29 import org.junit.jupiter.api.*;
30
31 class FileResource_Test extends TestBase {
32
33 @Test void a01_basic() throws Exception {
34 File f = Files.createTempFile("test", "txt").toFile();
35 Files.write(f.toPath(), "foo".getBytes());
36
37 var x = new FileResource(null, f);
38 assertEquals("foo", toUtf8(x.getContent()));
39 assertTrue(x.isRepeatable());
40 assertFalse(x.isStreaming());
41
42 var x2 = new FileResource(contentType("text/plain"), f);
43 assertEquals("foo", toUtf8(x2.getContent()));
44 assertEquals("text/plain", x2.getContentType().getValue());
45 assertTrue(x2.isRepeatable());
46 assertFalse(x2.isStreaming());
47
48 f.delete();
49 }
50
51 @Test void a02_caching() throws Exception {
52 File f = Files.createTempFile("test", "txt").toFile();
53 Files.write(f.toPath(), "foo".getBytes());
54
55 var x = new FileResource(null, f).setCached();
56 assertEquals("foo", toUtf8(x.getContent()));
57 assertEquals("foo", toUtf8(x.getContent()));
58 assertTrue(x.isRepeatable());
59
60 f.delete();
61 }
62
63 @Test void a03_headers() throws Exception {
64 File f = Files.createTempFile("test", "txt").toFile();
65
66 var x = new FileResource(null, f)
67 .addHeader("Foo", "bar")
68 .addHeader("Foo", "baz")
69 .setHeader("Qux", "quux");
70
71 HeaderList headers = x.getHeaders();
72 assertEquals("Foo: bar", headers.getFirst("Foo").get().toString());
73 assertEquals("Foo: baz", headers.getLast("Foo").get().toString());
74 assertEquals("Qux: quux", headers.getFirst("Qux").get().toString());
75
76 f.delete();
77 }
78
79 @Test void a04_contentType() throws Exception {
80 File f = Files.createTempFile("test", "txt").toFile();
81
82 var x = new FileResource(null, f)
83 .setContentType("text/plain");
84 assertEquals("text/plain", x.getContentType().getValue());
85
86 var x2 = new FileResource(null, f)
87 .setContentType(contentType("text/html"));
88 assertEquals("text/html", x2.getContentType().getValue());
89
90 f.delete();
91 }
92
93 @Test void a05_contentEncoding() throws Exception {
94 File f = Files.createTempFile("test", "txt").toFile();
95
96 var x = new FileResource(null, f)
97 .setContentEncoding("identity");
98 assertEquals("identity", x.getContentEncoding().getValue());
99
100 var x2 = new FileResource(null, f)
101 .setContentEncoding(contentEncoding("gzip"));
102 assertEquals("gzip", x2.getContentEncoding().getValue());
103
104 f.delete();
105 }
106
107 @Test void a06_chunked() throws Exception {
108 File f = Files.createTempFile("test", "txt").toFile();
109
110 var x = new FileResource(null, f)
111 .setChunked();
112 assertTrue(x.isChunked());
113
114 var x2 = new FileResource(null, f)
115 .setChunked(true);
116 assertTrue(x2.isChunked());
117
118 var x3 = new FileResource(null, f)
119 .setChunked(false);
120 assertFalse(x3.isChunked());
121
122 f.delete();
123 }
124
125 @Test void a07_fluentSetters() throws Exception {
126 File f = Files.createTempFile("test", "txt").toFile();
127 var x = new FileResource(null, f);
128
129
130 assertSame(x, x.setHeader("X-Test", "value"));
131 assertEquals("value", x.getHeaders().getFirst("X-Test").get().getValue());
132
133
134 assertSame(x, x.addHeader("X-Test2", "value2"));
135 assertEquals("value2", x.getHeaders().getFirst("X-Test2").get().getValue());
136
137
138 assertSame(x, x.setHeaders(header("X-Test3", "value3")));
139 assertEquals("value3", x.getHeaders().getFirst("X-Test3").get().getValue());
140
141
142 assertSame(x, x.addHeaders(header("X-Test4", "value4")));
143 assertEquals("value4", x.getHeaders().getFirst("X-Test4").get().getValue());
144
145 f.delete();
146 }
147
148 @Test void a08_copy() throws Exception {
149 File f = Files.createTempFile("test", "txt").toFile();
150 Files.write(f.toPath(), "foo".getBytes());
151
152 var x = new FileResource(contentType("text/plain"), f)
153 .setHeader("Foo", "bar");
154
155 FileResource x2 = x.copy();
156 assertNotSame(x, x2);
157 assertEquals("foo", toUtf8(x2.getContent()));
158 assertEquals("text/plain", x2.getContentType().getValue());
159 assertEquals("bar", x2.getHeaders().getFirst("Foo").get().getValue());
160
161 f.delete();
162 }
163
164 @Test void a09_contentLength() throws Exception {
165 File f = Files.createTempFile("test", "txt").toFile();
166 Files.write(f.toPath(), "foo".getBytes());
167
168 var x = new FileResource(null, f);
169 assertEquals(3L, x.getContentLength());
170
171
172 var x2 = new FileResource(null, f).setContentLength(10);
173 assertEquals(3L, x2.getContentLength());
174
175 f.delete();
176 }
177
178
179
180
181
182 private static Header header(String name, Object val) {
183 return BasicHeader.of(name, val);
184 }
185 }