-
-
Notifications
You must be signed in to change notification settings - Fork 201
Expand file tree
/
Copy pathIssue2649.java
More file actions
91 lines (81 loc) · 3.23 KB
/
Copy pathIssue2649.java
File metadata and controls
91 lines (81 loc) · 3.23 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
/*
* Jooby https://jooby.io
* Apache License Version 2.0 https://jooby.io/LICENSE.txt
* Copyright 2014 Edgar Espina
*/
package io.jooby;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import io.jooby.handler.Cors;
import io.jooby.handler.CorsHandler;
import io.jooby.junit.ServerTest;
import io.jooby.junit.ServerTestRunner;
public class Issue2649 {
@ServerTest
public void shouldDoPreflightWithout415(ServerTestRunner runner) {
runner
.define(
app -> {
app.use(new CorsHandler(new Cors()));
app.post("/consumes", Context::getMethod).consumes(MediaType.json);
app.post("/produces", Context::getMethod).produces(MediaType.json);
})
.ready(
client -> {
// OPTIONS (Pre-flight), checking GET Method => OK and Access Control Headers Present
client
.header("Access-Control-Request-Method", "POST")
.options(
"/consumes",
rsp -> {
assertEquals("", rsp.body().string());
assertEquals("POST,OPTIONS", rsp.header("Allow"));
assertEquals(200, rsp.code());
});
client
.header("Access-Control-Request-Method", "POST")
.options(
"/produces",
rsp -> {
assertEquals("", rsp.body().string());
assertEquals("POST,OPTIONS", rsp.header("Allow"));
assertEquals(200, rsp.code());
});
// Execute handler (not preflight)
client
.header("Origin", "https://foo.org")
.post(
"/consumes",
rsp -> {
// headers are reset on error
assertNull(rsp.header("Access-Control-Allow-Origin"));
assertEquals(415, rsp.code());
});
client.post(
"/consumes",
rsp -> {
assertEquals(415, rsp.code());
assertNull(rsp.header("Access-Control-Allow-Origin"));
});
client
.header("Origin", "https://foo.org")
.header("Content-Type", "application/json")
.post(
"/consumes",
rsp -> {
assertEquals("POST", rsp.body().string());
assertEquals("https://foo.org", rsp.header("Access-Control-Allow-Origin"));
assertEquals(200, rsp.code());
});
client
.header("Content-Type", "application/json")
.post(
"/consumes",
rsp -> {
assertEquals("POST", rsp.body().string());
assertNull(rsp.header("Access-Control-Allow-Origin"));
assertEquals(200, rsp.code());
});
});
}
}