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
Added unit test
  • Loading branch information
jamescrosswell committed Feb 5, 2025
commit 75ad4c88e7af2cbad0dbdf77b38f9b62cfbc3fe9
37 changes: 37 additions & 0 deletions test/Sentry.Tests/Internals/Http/CachingTransportTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -711,6 +711,43 @@ public async Task TransportResumesWhenNetworkComesBackOnline()
envelopes.Should().NotBeEmpty();
}

[Fact]
public async Task FlushAsync_RejectedByServer_DiscardsEnvelope()
{
// Arrange
var listener = Substitute.For<INetworkStatusListener>();
listener.Online.Returns(_ => true);

using var cacheDirectory = new TempDirectory();
var options = new SentryOptions
{
Dsn = ValidDsn,
DiagnosticLogger = _logger,
Debug = true,
CacheDirectoryPath = cacheDirectory.Path,
NetworkStatusListener = listener,
ClientReportRecorder = Substitute.For<IClientReportRecorder>()
};

using var envelope = Envelope.FromEvent(new SentryEvent());

var innerTransport = Substitute.For<ITransport>();
innerTransport.SendEnvelopeAsync(Arg.Any<Envelope>(), Arg.Any<CancellationToken>())
.Returns(_ => throw new SocketException(32 /* Bad pipe exception */));
await using var transport = CachingTransport.Create(innerTransport, options, startWorker: false);

// Act
await transport.SendEnvelopeAsync(envelope);
await transport.FlushAsync();

// Assert
foreach (var item in envelope.Items)
{
options.ClientReportRecorder.Received(1)
.RecordDiscardedEvent(DiscardReason.SendError, item.DataCategory);
}
}

[Fact]
public async Task DoesntWriteSentAtHeaderToCacheFile()
{
Expand Down