Skip to content

Commit 0bc9e94

Browse files
committed
test: Add direct unit tests for HealthRenderer
Covers control-char escaping (named and \u####), multi-dependency ordering, and pass-through of non-ASCII characters — paths the handler test only exercises indirectly.
1 parent 087acc3 commit 0bc9e94

1 file changed

Lines changed: 67 additions & 0 deletions

File tree

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package com.retailsvc.http.internal;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import com.retailsvc.http.Dependency;
6+
import java.util.List;
7+
import org.junit.jupiter.api.Test;
8+
9+
class HealthRendererTest {
10+
11+
@Test
12+
void rendersUpWithNoDependencies() {
13+
assertThat(HealthRenderer.renderJson(true, List.of()))
14+
.isEqualTo("{\"outcome\":\"Up\",\"dependencies\":[]}");
15+
}
16+
17+
@Test
18+
void rendersDownWithNoDependencies() {
19+
assertThat(HealthRenderer.renderJson(false, List.of()))
20+
.isEqualTo("{\"outcome\":\"Down\",\"dependencies\":[]}");
21+
}
22+
23+
@Test
24+
void rendersSingleDependency() {
25+
assertThat(HealthRenderer.renderJson(true, List.of(new Dependency("jdbc", true))))
26+
.isEqualTo("{\"outcome\":\"Up\",\"dependencies\":[{\"id\":\"jdbc\",\"status\":\"Up\"}]}");
27+
}
28+
29+
@Test
30+
void rendersMultipleDependenciesInOrderWithCommaSeparators() {
31+
List<Dependency> deps = List.of(new Dependency("jdbc", true), new Dependency("redis", false));
32+
assertThat(HealthRenderer.renderJson(false, deps))
33+
.isEqualTo(
34+
"{\"outcome\":\"Down\",\"dependencies\":["
35+
+ "{\"id\":\"jdbc\",\"status\":\"Up\"},"
36+
+ "{\"id\":\"redis\",\"status\":\"Down\"}]}");
37+
}
38+
39+
@Test
40+
void escapesQuoteAndBackslashInId() {
41+
assertThat(HealthRenderer.renderJson(true, List.of(new Dependency("a\"b\\c", true))))
42+
.isEqualTo(
43+
"{\"outcome\":\"Up\",\"dependencies\":[{\"id\":\"a\\\"b\\\\c\",\"status\":\"Up\"}]}");
44+
}
45+
46+
@Test
47+
void escapesNamedControlCharsInId() {
48+
assertThat(HealthRenderer.renderJson(true, List.of(new Dependency("\b\f\n\r\t", true))))
49+
.isEqualTo(
50+
"{\"outcome\":\"Up\",\"dependencies\":[{\"id\":\"\\b\\f\\n"
51+
+ "\\r"
52+
+ "\\t\",\"status\":\"Up\"}]}");
53+
}
54+
55+
@Test
56+
void escapesUnnamedControlCharsAsHexUnicode() {
57+
assertThat(HealthRenderer.renderJson(true, List.of(new Dependency("", true))))
58+
.isEqualTo(
59+
"{\"outcome\":\"Up\",\"dependencies\":[{\"id\":\"\\u0001\\u001f\",\"status\":\"Up\"}]}");
60+
}
61+
62+
@Test
63+
void passesThroughNonAsciiCharactersVerbatim() {
64+
assertThat(HealthRenderer.renderJson(true, List.of(new Dependency("café-é", true))))
65+
.isEqualTo("{\"outcome\":\"Up\",\"dependencies\":[{\"id\":\"café-é\",\"status\":\"Up\"}]}");
66+
}
67+
}

0 commit comments

Comments
 (0)