80 lines
2.2 KiB
C#
80 lines
2.2 KiB
C#
using Omika.Core.Observability.Diagnostic;
|
|
|
|
namespace Omika.Tests.Observability.Correlation;
|
|
|
|
public class RequestDiagnosticContextTests
|
|
{
|
|
[Fact]
|
|
public void Begin_SetsContext_AndRestoresOnDispose()
|
|
{
|
|
var context = new RequestDiagnosticContext();
|
|
Guid traceId = Guid.NewGuid();
|
|
Guid sessionId = Guid.NewGuid();
|
|
|
|
Assert.Null(context.TraceId);
|
|
Assert.Null(context.SessionId);
|
|
Assert.Null(context.StartedAtUtc);
|
|
|
|
using (context.Begin(traceId, sessionId))
|
|
{
|
|
Assert.Equal(traceId, context.TraceId);
|
|
Assert.Equal(sessionId, context.SessionId);
|
|
Assert.NotNull(context.StartedAtUtc);
|
|
}
|
|
|
|
Assert.Null(context.TraceId);
|
|
Assert.Null(context.SessionId);
|
|
Assert.Null(context.StartedAtUtc);
|
|
}
|
|
|
|
[Fact]
|
|
public void SetIdentity_WithinScope_SetsFields()
|
|
{
|
|
var context = new RequestDiagnosticContext();
|
|
using (context.Begin(Guid.NewGuid()))
|
|
{
|
|
context.SetIdentity("device-1", "CLIENT01", "42", "7");
|
|
|
|
Assert.Equal("device-1", context.DeviceId);
|
|
Assert.Equal("CLIENT01", context.ClientId);
|
|
Assert.Equal("42", context.UserId);
|
|
Assert.Equal("7", context.CollaborateurId);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void SetIdentity_OutsideScope_IsNoOp()
|
|
{
|
|
var context = new RequestDiagnosticContext();
|
|
context.SetIdentity("device-1", "CLIENT01", "42", "7");
|
|
|
|
Assert.Null(context.DeviceId);
|
|
Assert.Null(context.ClientId);
|
|
Assert.Null(context.UserId);
|
|
Assert.Null(context.CollaborateurId);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task NestedScopes_AreIsolated_AndRestored()
|
|
{
|
|
var context = new RequestDiagnosticContext();
|
|
Guid a = Guid.NewGuid();
|
|
Guid b = Guid.NewGuid();
|
|
|
|
using (context.Begin(a))
|
|
{
|
|
await Task.Yield();
|
|
Assert.Equal(a, context.TraceId);
|
|
|
|
using (context.Begin(b))
|
|
{
|
|
Assert.Equal(b, context.TraceId);
|
|
}
|
|
|
|
Assert.Equal(a, context.TraceId);
|
|
}
|
|
|
|
Assert.Null(context.TraceId);
|
|
}
|
|
}
|