-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProblemDetailRendererTest.java
More file actions
77 lines (66 loc) · 2.86 KB
/
Copy pathProblemDetailRendererTest.java
File metadata and controls
77 lines (66 loc) · 2.86 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
package com.retailsvc.http.internal;
import static org.assertj.core.api.Assertions.assertThat;
import java.nio.charset.StandardCharsets;
import org.junit.jupiter.api.Test;
class ProblemDetailRendererTest {
@Test
void rendersAllFieldsWhenPresent() {
ProblemDetail pd =
new ProblemDetail("about:blank", "Bad Request", 400, "expected string", "/x", "type");
assertThat(asString(ProblemDetailRenderer.renderJson(pd)))
.isEqualTo(
"{\"type\":\"about:blank\",\"title\":\"Bad Request\",\"status\":400,"
+ "\"detail\":\"expected string\",\"pointer\":\"/x\",\"keyword\":\"type\"}");
}
@Test
void omitsNullPointerAndKeyword() {
ProblemDetail pd =
new ProblemDetail("about:blank", "Unauthorized", 401, "missing token", null, null);
assertThat(asString(ProblemDetailRenderer.renderJson(pd)))
.isEqualTo(
"{\"type\":\"about:blank\",\"title\":\"Unauthorized\",\"status\":401,"
+ "\"detail\":\"missing token\"}");
}
@Test
void omitsNullDetail() {
ProblemDetail pd = new ProblemDetail("about:blank", "Not Found", 404, null, null, null);
assertThat(asString(ProblemDetailRenderer.renderJson(pd)))
.isEqualTo("{\"type\":\"about:blank\",\"title\":\"Not Found\",\"status\":404}");
}
@Test
void escapesQuoteAndBackslashInDetail() {
ProblemDetail pd = new ProblemDetail("about:blank", "Bad Request", 400, "a\"b\\c", null, null);
assertThat(asString(ProblemDetailRenderer.renderJson(pd)))
.isEqualTo(
"{\"type\":\"about:blank\",\"title\":\"Bad Request\",\"status\":400,"
+ "\"detail\":\"a\\\"b\\\\c\"}");
}
@Test
void escapesNamedControlCharsInDetail() {
ProblemDetail pd =
new ProblemDetail("about:blank", "Bad Request", 400, "\b\f\n\r\t", null, null);
assertThat(asString(ProblemDetailRenderer.renderJson(pd)))
.isEqualTo(
"{\"type\":\"about:blank\",\"title\":\"Bad Request\",\"status\":400,"
+ "\"detail\":\"\\b\\f\\n\\r\\t\"}");
}
@Test
void escapesUnnamedControlCharsAsHexUnicode() {
ProblemDetail pd = new ProblemDetail("about:blank", "Bad Request", 400, "", null, null);
assertThat(asString(ProblemDetailRenderer.renderJson(pd)))
.isEqualTo(
"{\"type\":\"about:blank\",\"title\":\"Bad Request\",\"status\":400,"
+ "\"detail\":\"\\u0001\\u001f\"}");
}
@Test
void passesThroughNonAsciiCharactersVerbatim() {
ProblemDetail pd = new ProblemDetail("about:blank", "Bad Request", 400, "café-é", null, null);
assertThat(asString(ProblemDetailRenderer.renderJson(pd)))
.isEqualTo(
"{\"type\":\"about:blank\",\"title\":\"Bad"
+ " Request\",\"status\":400,\"detail\":\"café-é\"}");
}
private static String asString(byte[] bytes) {
return new String(bytes, StandardCharsets.UTF_8);
}
}