From a606145065f85783879d1254d0606955fc5036db Mon Sep 17 00:00:00 2001 From: Denis Andrasec Date: Tue, 9 May 2023 13:06:56 +0200 Subject: [PATCH] set sent_at in http_transport --- dart/lib/src/transport/http_transport.dart | 11 +++----- dart/test/transport/http_transport_test.dart | 28 ++++++++++++++++++++ 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/dart/lib/src/transport/http_transport.dart b/dart/lib/src/transport/http_transport.dart index b286381f6e..acf0e6cf64 100644 --- a/dart/lib/src/transport/http_transport.dart +++ b/dart/lib/src/transport/http_transport.dart @@ -55,6 +55,7 @@ class HttpTransport implements Transport { if (filteredEnvelope == null) { return SentryId.empty(); } + filteredEnvelope.header.sentAt = _options.clock(); final streamedRequest = await _createStreamedRequest(filteredEnvelope); final response = await _options.httpClient @@ -134,11 +135,9 @@ class HttpTransport implements Transport { class _CredentialBuilder { final String _authHeader; - _CredentialBuilder._(String authHeader) - : _authHeader = authHeader; + _CredentialBuilder._(String authHeader) : _authHeader = authHeader; - factory _CredentialBuilder( - Dsn dsn, String sdkIdentifier) { + factory _CredentialBuilder(Dsn dsn, String sdkIdentifier) { final authHeader = _buildAuthHeader( publicKey: dsn.publicKey, secretKey: dsn.secretKey, @@ -166,9 +165,7 @@ class _CredentialBuilder { Map configure(Map headers) { return headers ..addAll( - { - 'X-Sentry-Auth': _authHeader - }, + {'X-Sentry-Auth': _authHeader}, ); } } diff --git a/dart/test/transport/http_transport_test.dart b/dart/test/transport/http_transport_test.dart index 341681ccab..8319e21b7d 100644 --- a/dart/test/transport/http_transport_test.dart +++ b/dart/test/transport/http_transport_test.dart @@ -159,6 +159,31 @@ void main() { }); }); + group('sent_at', () { + late Fixture fixture; + + setUp(() { + fixture = Fixture(); + }); + + test('capture envelope sets sent_at in header', () async { + final sentryEvent = SentryEvent(); + final envelope = SentryEnvelope.fromEvent( + sentryEvent, + fixture.options.sdk, + dsn: fixture.options.dsn, + ); + + final httpMock = MockClient((http.Request request) async { + return http.Response('{}', 200); + }); + final sut = fixture.getSut(httpMock, MockRateLimiter()); + await sut.send(envelope); + + expect(envelope.header.sentAt, DateTime.utc(2019)); + }); + }); + group('client reports', () { late Fixture fixture; @@ -232,6 +257,9 @@ class Fixture { HttpTransport getSut(http.Client client, RateLimiter rateLimiter) { options.httpClient = client; options.recorder = clientReportRecorder; + options.clock = () { + return DateTime.utc(2019); + }; return HttpTransport(options, rateLimiter); } }