using Omika.Core.Observability.Diagnostic; namespace Omika.Tests.Observability.Correlation; public class CorrelationHeadersTests { [Fact] public void Headers_HaveExpectedNames() { Assert.Equal("X-Omika-TraceId", CorrelationHeaders.TraceId); Assert.Equal("X-Omika-SessionId", CorrelationHeaders.SessionId); } [Fact] public void TryParseTraceId_ValidGuid_ReturnsTrue() { Guid guid = Guid.NewGuid(); Assert.True(CorrelationHeaders.TryParseTraceId(guid.ToString("D"), out Guid parsed)); Assert.Equal(guid, parsed); } [Theory] [InlineData("INVALID")] [InlineData("")] [InlineData(" ")] [InlineData("2ddc12ae")] [InlineData("not-a-guid")] [InlineData("2ddc12ae-4f1b-4c3a-zzzz-123456789012")] [InlineData(null)] public void TryParseTraceId_Invalid_ReturnsFalse(string? value) { Assert.False(CorrelationHeaders.TryParseTraceId(value, out _)); } [Fact] public void TryParseSessionId_ValidGuid_ReturnsTrue() { Guid guid = Guid.NewGuid(); Assert.True(CorrelationHeaders.TryParseSessionId(guid.ToString("D"), out Guid parsed)); Assert.Equal(guid, parsed); } [Theory] [InlineData("INVALID")] [InlineData(null)] public void TryParseSessionId_Invalid_ReturnsFalse(string? value) { Assert.False(CorrelationHeaders.TryParseSessionId(value, out _)); } }