XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEServerManager

【Java】我的世界XFE服务器管理器

公开
关注 0 Fork 0 Star 0
UTF-8
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\"");
    }
}