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 org.apache.http.*;
24 import org.apache.juneau.*;
25 import org.apache.juneau.http.header.*;
26 import org.junit.jupiter.api.*;
27
28 class ByteArrayResource_Test extends TestBase {
29
30 @Test void a01_basic() throws Exception {
31 var x = new ByteArrayResource();
32 assertEquals("", toUtf8(x.getContent()));
33 assertTrue(x.isRepeatable());
34 assertFalse(x.isStreaming());
35
36 var x2 = new ByteArrayResource(contentType("text/plain"), "foo".getBytes());
37 assertEquals("foo", toUtf8(x2.getContent()));
38 assertEquals("text/plain", x2.getContentType().getValue());
39 assertTrue(x2.isRepeatable());
40 assertFalse(x2.isStreaming());
41 }
42
43 @Test void a02_caching() throws Exception {
44 var x = new ByteArrayResource(null, "foo".getBytes()).setCached();
45 assertEquals("foo", toUtf8(x.getContent()));
46 assertEquals("foo", toUtf8(x.getContent()));
47 assertTrue(x.isRepeatable());
48 }
49
50 @Test void a03_headers() {
51 var x = new ByteArrayResource(null, "foo".getBytes())
52 .addHeader("Foo", "bar")
53 .addHeader("Foo", "baz")
54 .setHeader("Qux", "quux");
55
56 HeaderList headers = x.getHeaders();
57 assertEquals("Foo: bar", headers.getFirst("Foo").get().toString());
58 assertEquals("Foo: baz", headers.getLast("Foo").get().toString());
59 assertEquals("Qux: quux", headers.getFirst("Qux").get().toString());
60 }
61
62 @Test void a04_contentType() {
63 var x = new ByteArrayResource(null, "foo".getBytes())
64 .setContentType("text/plain");
65 assertEquals("text/plain", x.getContentType().getValue());
66
67 var x2 = new ByteArrayResource(null, "foo".getBytes())
68 .setContentType(contentType("text/html"));
69 assertEquals("text/html", x2.getContentType().getValue());
70 }
71
72 @Test void a05_contentEncoding() {
73 var x = new ByteArrayResource(null, "foo".getBytes())
74 .setContentEncoding("identity");
75 assertEquals("identity", x.getContentEncoding().getValue());
76
77 var x2 = new ByteArrayResource(null, "foo".getBytes())
78 .setContentEncoding(contentEncoding("gzip"));
79 assertEquals("gzip", x2.getContentEncoding().getValue());
80 }
81
82 @Test void a06_chunked() {
83 var x = new ByteArrayResource(null, "foo".getBytes())
84 .setChunked();
85 assertTrue(x.isChunked());
86
87 var x2 = new ByteArrayResource(null, "foo".getBytes())
88 .setChunked(true);
89 assertTrue(x2.isChunked());
90
91 var x3 = new ByteArrayResource(null, "foo".getBytes())
92 .setChunked(false);
93 assertFalse(x3.isChunked());
94 }
95
96 @Test void a07_fluentSetters() {
97 var x = new ByteArrayResource(null, "foo".getBytes());
98
99
100 assertSame(x, x.setHeader("X-Test", "value"));
101 assertEquals("value", x.getHeaders().getFirst("X-Test").get().getValue());
102
103
104 assertSame(x, x.addHeader("X-Test2", "value2"));
105 assertEquals("value2", x.getHeaders().getFirst("X-Test2").get().getValue());
106
107
108 assertSame(x, x.setHeaders(header("X-Test3", "value3")));
109 assertEquals("value3", x.getHeaders().getFirst("X-Test3").get().getValue());
110
111
112 assertSame(x, x.addHeaders(header("X-Test4", "value4")));
113 assertEquals("value4", x.getHeaders().getFirst("X-Test4").get().getValue());
114 }
115
116 @Test void a08_copy() throws Exception {
117 var x = new ByteArrayResource(contentType("text/plain"), "foo".getBytes())
118 .setHeader("Foo", "bar");
119
120 ByteArrayResource x2 = x.copy();
121 assertNotSame(x, x2);
122 assertEquals("foo", toUtf8(x2.getContent()));
123 assertEquals("text/plain", x2.getContentType().getValue());
124 assertEquals("bar", x2.getHeaders().getFirst("Foo").get().getValue());
125 }
126
127 @Test void a09_contentLength() {
128 var x = new ByteArrayResource(null, "foo".getBytes());
129 assertEquals(3L, x.getContentLength());
130
131
132 var x2 = new ByteArrayResource(null, "foo".getBytes()).setContentLength(10);
133 assertEquals(3L, x2.getContentLength());
134 }
135
136
137
138
139
140 private static Header header(String name, Object val) {
141 return BasicHeader.of(name, val);
142 }
143 }