fix: close phase4 overseas acceptance gaps

This commit is contained in:
2026-08-24 21:00:22 +08:00
parent 005c3f54e2
commit 3607bebbfd
42 changed files with 860 additions and 203 deletions
@@ -0,0 +1,30 @@
package com.baiyue.gateway.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
import org.springframework.http.HttpStatus;
import org.springframework.mock.http.server.reactive.MockServerHttpRequest;
import org.springframework.mock.web.server.MockServerWebExchange;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
class GatewaySecurityErrorContractTest {
@Test
void audienceAndAuthenticationFailuresExposeRequestAndTraceCorrelation() throws Exception {
var exchange = MockServerWebExchange.from(MockServerHttpRequest.get("/api/platform/v1/test")
.header("X-Request-Id", "request-1234567890")
.header("X-Trace-Id", "trace-123456789012")
.build());
GatewaySecurityConfig.writeError(exchange, new ObjectMapper(), HttpStatus.UNAUTHORIZED,
"A0401", "未登录或令牌已失效").block();
var body = new ObjectMapper().readTree(exchange.getResponse().getBodyAsString().block());
assertEquals("request-1234567890", body.path("requestId").asText());
assertEquals("trace-123456789012", body.path("traceId").asText());
assertEquals(body.path("requestId").asText(), exchange.getResponse().getHeaders().getFirst("X-Request-Id"));
assertEquals(body.path("traceId").asText(), exchange.getResponse().getHeaders().getFirst("X-Trace-Id"));
assertFalse(body.path("timestamp").asText().isBlank());
}
}