This repository was archived by the owner on Mar 3, 2026. It is now read-only.
forked from jooby-project/jooby
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathResponseTest.java
More file actions
271 lines (227 loc) · 6.75 KB
/
ResponseTest.java
File metadata and controls
271 lines (227 loc) · 6.75 KB
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
package org.jooby;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.io.File;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.LinkedList;
import java.util.Optional;
import org.jooby.Cookie.Definition;
import org.jooby.Route.After;
import org.jooby.Route.Complete;
import org.junit.Test;
public class ResponseTest {
public static class ResponseMock implements Response {
@Override
public void download(final String filename, final InputStream stream) throws Exception {
throw new UnsupportedOperationException();
}
@Override
public void download(final String filename, final String location) throws Exception {
}
@Override
public Response cookie(final Definition cookie) {
throw new UnsupportedOperationException();
}
@Override
public Response cookie(final Cookie cookie) {
throw new UnsupportedOperationException();
}
@Override
public Response clearCookie(final String name) {
throw new UnsupportedOperationException();
}
@Override
public Mutant header(final String name) {
throw new UnsupportedOperationException();
}
@Override
public Response header(final String name, final Object value) {
throw new UnsupportedOperationException();
}
@Override
public Response header(final String name, final Iterable<Object> values) {
throw new UnsupportedOperationException();
}
@Override
public Charset charset() {
throw new UnsupportedOperationException();
}
@Override
public Response charset(final Charset charset) {
throw new UnsupportedOperationException();
}
@Override
public Response length(final long length) {
throw new UnsupportedOperationException();
}
@Override
public void end() {
throw new UnsupportedOperationException();
}
@Override
public Optional<MediaType> type() {
throw new UnsupportedOperationException();
}
@Override
public Response type(final MediaType type) {
throw new UnsupportedOperationException();
}
@Override
public void send(final Result result) throws Exception {
throw new UnsupportedOperationException();
}
@Override
public void redirect(final Status status, final String location) throws Exception {
throw new UnsupportedOperationException();
}
@Override
public Optional<Status> status() {
throw new UnsupportedOperationException();
}
@Override
public Response status(final Status status) {
throw new UnsupportedOperationException();
}
@Override
public boolean committed() {
throw new UnsupportedOperationException();
}
@Override
public void after(final After handler) {
throw new UnsupportedOperationException();
}
@Override
public void complete(final Complete handler) {
throw new UnsupportedOperationException();
}
}
@Test
public void type() {
LinkedList<MediaType> types = new LinkedList<>();
new ResponseMock() {
@Override
public Response type(final MediaType type) {
types.add(type);
return this;
}
}.type("json");
assertEquals(MediaType.json, types.getFirst());
}
@Test
public void sendObject() throws Throwable {
Object data = new Object();
LinkedList<Object> dataList = new LinkedList<>();
new ResponseMock() {
@Override
public void send(final Result result) {
assertNotNull(result);
assertEquals(Status.OK, result.status().get());
assertEquals(MediaType.json, result.type().get());
dataList.add(result.ifGet().get());
}
@Override
public Optional<Status> status() {
return Optional.of(Status.OK);
}
@Override
public Optional<MediaType> type() {
return Optional.of(MediaType.json);
}
}.send(data);
assertEquals(data, dataList.getFirst());
}
@Test
public void sendBody() throws Throwable {
Object data = Results.noContent();
LinkedList<Object> dataList = new LinkedList<>();
new ResponseMock() {
@Override
public void send(final Result body) throws Exception {
assertNotNull(body);
dataList.add(body);
}
@Override
public Optional<Status> status() {
return Optional.of(Status.OK);
}
@Override
public Optional<MediaType> type() {
return Optional.of(MediaType.json);
}
}.send(data);
assertEquals(data, dataList.getFirst());
}
@Test
public void redirect() throws Throwable {
LinkedList<Object> dataList = new LinkedList<>();
new ResponseMock() {
@Override
public void redirect(final Status status, final String location) throws Exception {
assertEquals(Status.FOUND, status);
dataList.add(location);
}
}.redirect("/red");
assertEquals("/red", dataList.getFirst());
}
@Test
public void statusCode() throws Exception {
LinkedList<Object> dataList = new LinkedList<>();
new ResponseMock() {
@Override
public Response status(final Status status) {
dataList.add(status);
return this;
}
}.status(200);
assertEquals(Status.OK, dataList.getFirst());
}
@Test
public void downloadFileWithName() throws Throwable {
LinkedList<Object> dataList = new LinkedList<>();
File resource = file("src/test/resources/org/jooby/ResponseTest.js");
new ResponseMock() {
@Override
public void download(final String filename, final InputStream stream) throws Exception {
assertNotNull(stream);
stream.close();
dataList.add(filename);
}
@Override
public Response length(final long length) {
dataList.add(length);
return this;
}
}.download("alias.js", resource);
assertEquals("[20, alias.js]", dataList.toString());
}
@Test
public void cookieWithNameAndValue() throws Exception {
LinkedList<Cookie.Definition> dataList = new LinkedList<>();
new ResponseMock() {
@Override
public Response cookie(final Cookie.Definition cookie) {
dataList.add(cookie);
return this;
}
}.cookie("name", "value");
assertEquals("name", dataList.getFirst().name().get());
assertEquals("value", dataList.getFirst().value().get());
}
/**
* Attempt to load a file from multiple location. required by unit and integration tests.
*
* @param location
* @return
*/
private File file(final String location) {
for (String candidate : new String[]{location, "jooby/" + location,
"../../jooby/" + location }) {
File file = new File(candidate);
if (file.exists()) {
return file;
}
}
return file(location);
}
}