Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add more tests
  • Loading branch information
markushi committed Oct 22, 2025
commit ff02acbdf066dbb5ba9d239b4577ca35dd9de2d7
79 changes: 79 additions & 0 deletions test/Sentry.Tests/SentryHttpMessageHandlerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,85 @@ public async Task SendAsync_SentryTraceHeaderAlreadySet_NotOverwritten()
string.Concat(h.Value) == "foobar");
}

[Fact]
public async Task SendAsync_W3C_TraceParent_NotSet_WhenPropagateTraceparentIsFalse()
{
// Arrange
var hub = Substitute.For<IHub>();

hub.GetTraceHeader().ReturnsForAnyArgs(
SentryTraceHeader.Parse("75302ac48a024bde9a3b3734a82e36c8-1000000000000000-0"));

var failedRequestHandler = Substitute.For<ISentryFailedRequestHandler>();
var options = new SentryOptions();
using var innerHandler = new RecordingHttpMessageHandler(new FakeHttpMessageHandler());
using var sentryHandler = new SentryHttpMessageHandler(hub, options, innerHandler, failedRequestHandler);
using var client = new HttpClient(sentryHandler);

// Act
await client.GetAsync("https://localhost/");

using var request = innerHandler.GetRequests().Single();

// Assert
request.Headers.Should().NotContain(h => h.Key == "traceparent");
}

[Fact]
public async Task SendAsync_W3C_TraceParent_Set_WhenPropagateTraceparentIsTrue()
{
// Arrange
var hub = Substitute.For<IHub>();

hub.GetTraceHeader().ReturnsForAnyArgs(
SentryTraceHeader.Parse("75302ac48a024bde9a3b3734a82e36c8-1000000000000000-0"));

var failedRequestHandler = Substitute.For<ISentryFailedRequestHandler>();
var options = new SentryOptions();
options.PropagateTraceparent = true;
using var innerHandler = new RecordingHttpMessageHandler(new FakeHttpMessageHandler());
using var sentryHandler = new SentryHttpMessageHandler(hub, options, innerHandler, failedRequestHandler);
using var client = new HttpClient(sentryHandler);

client.DefaultRequestHeaders.Add("sentry-trace", "foobar");

// Act
await client.GetAsync("https://localhost/");

using var request = innerHandler.GetRequests().Single();

// Assert
request.Headers.Should().Contain(h => h.Key == "traceparent" && h.Value.Single() == "00-75302ac48a024bde9a3b3734a82e36c8-1000000000000000-00");
}

[Fact]
public async Task SendAsync_W3C_TraceParent_NotSet_WhenPropagateTraceparentAlreadySet()
{
// Arrange
var hub = Substitute.For<IHub>();

hub.GetTraceHeader().ReturnsForAnyArgs(
SentryTraceHeader.Parse("75302ac48a024bde9a3b3734a82e36c8-1000000000000000-0"));

var failedRequestHandler = Substitute.For<ISentryFailedRequestHandler>();
var options = new SentryOptions();
options.PropagateTraceparent = true;
using var innerHandler = new RecordingHttpMessageHandler(new FakeHttpMessageHandler());
using var sentryHandler = new SentryHttpMessageHandler(hub, options, innerHandler, failedRequestHandler);
using var client = new HttpClient(sentryHandler);

client.DefaultRequestHeaders.Add("sentry-trace", "foobar");
client.DefaultRequestHeaders.Add("traceparent", "existing-value");

// Act
await client.GetAsync("https://localhost/");

using var request = innerHandler.GetRequests().Single();

// Assert
request.Headers.Should().Contain(h => h.Key == "traceparent" && h.Value.Single() == "existing-value");
}

[Fact]
public async Task SendAsync_TransactionOnScope_StartsNewSpan()
{
Expand Down
Loading