package com.xfestudio.xfeservermanager.infra.http;
import static org.assertj.core.api.Assertions.assertThat;
import com.xfestudio.xfeservermanager.api.status.MemoryMetrics;
import com.xfestudio.xfeservermanager.api.status.ServerStatusSnapshot;
import com.xfestudio.xfeservermanager.api.status.TickMetrics;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.time.Instant;
import java.util.Map;
import org.junit.jupiter.api.Test;
class JsonCodecTest {
@Test
void serializesNeutralStatusTimeTypesWithoutJdkReflection() {
var snapshot = new ServerStatusSnapshot(
Instant.parse("2026-09-02T04:00:00Z"),
Duration.ofSeconds(42),
new TickMetrics(20, 1, 2, 3, 0.1),
0.25,
new MemoryMetrics(1, 2, 3, 4, 5),
6,
0,
20,
0,
Map.of());
String json = new String(new JsonCodec().writeBytes(snapshot), StandardCharsets.UTF_8);
assertThat(json).contains("2026-09-02T04:00:00Z");
assertThat(json).contains("\"uptime\":42000");
}
@Test
void serializesRfcProblemBody() {
String json = new String(
new JsonCodec().writeBytes(ProblemDetails.of(
403, "Forbidden", "origin rejected", "request-123")),
StandardCharsets.UTF_8);
assertThat(json).contains(
"\"type\":\"about:blank\"",
"\"status\":403",
"\"requestId\":\"request-123\"");
}
}
package com.xfestudio.xfeservermanager.infra.http;
import static org.assertj.core.api.Assertions.assertThat;
import com.xfestudio.xfeservermanager.api.status.MemoryMetrics;
import com.xfestudio.xfeservermanager.api.status.ServerStatusSnapshot;
import com.xfestudio.xfeservermanager.api.status.TickMetrics;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.time.Instant;
import java.util.Map;
import org.junit.jupiter.api.Test;
class JsonCodecTest {
@Test
void serializesNeutralStatusTimeTypesWithoutJdkReflection() {
var snapshot = new ServerStatusSnapshot(
Instant.parse("2026-09-02T04:00:00Z"),
Duration.ofSeconds(42),
new TickMetrics(20, 1, 2, 3, 0.1),
0.25,
new MemoryMetrics(1, 2, 3, 4, 5),
6,
0,
20,
0,
Map.of());
String json = new String(new JsonCodec().writeBytes(snapshot), StandardCharsets.UTF_8);
assertThat(json).contains("2026-09-02T04:00:00Z");
assertThat(json).contains("\"uptime\":42000");
}
@Test
void serializesRfcProblemBody() {
String json = new String(
new JsonCodec().writeBytes(ProblemDetails.of(
403, "Forbidden", "origin rejected", "request-123")),
StandardCharsets.UTF_8);
assertThat(json).contains(
"\"type\":\"about:blank\"",
"\"status\":403",
"\"requestId\":\"request-123\"");
}
}