package com.baiyue.common.web; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import org.slf4j.MDC; import static org.assertj.core.api.Assertions.assertThat; class OutboundTraceHeadersTest { @AfterEach void clearMdc() { MDC.clear(); } @Test void currentContextCreatesAValidChildWithoutUsingBusinessValues() { MDC.put(CorrelationContext.REQUEST_ID, "req-trusted"); MDC.put(CorrelationContext.TRACE_ID, "4bf92f3577b34da6a3ce929d0e0e4736"); OutboundTraceHeaders headers = OutboundTraceHeaders.fromCurrentOrNew(); assertThat(headers.requestId()).isEqualTo("req-trusted"); assertThat(headers.traceId()).isEqualTo("4bf92f3577b34da6a3ce929d0e0e4736"); assertThat(headers.traceParent()) .matches("00-4bf92f3577b34da6a3ce929d0e0e4736-[0-9a-f]{16}-01"); } @Test void canonicalPersistedUuidIsCompactedAndInvalidValueStartsNewTrace() { OutboundTraceHeaders uuid = OutboundTraceHeaders.fromTrustedTraceOrNew( "550e8400-e29b-41d4-a716-446655440000"); OutboundTraceHeaders invalid = OutboundTraceHeaders.fromTrustedTraceOrNew( "ORDER:customer-99:booking-123"); assertThat(uuid.traceId()).isEqualTo("550e8400e29b41d4a716446655440000"); assertThat(invalid.traceId()).matches("[0-9a-f]{32}") .isNotEqualTo("ORDER:customer-99:booking-123"); assertThat(invalid.requestId()).matches("[0-9a-f-]{36}"); } }