@@ -30,7 +30,7 @@ void main() {
30
30
expect (fixture.transport.calls, 0 );
31
31
});
32
32
33
- test ('exception gets reported if client throws' , () async {
33
+ test ('event reported if client throws' , () async {
34
34
final sut = fixture.getSut (
35
35
client: createThrowingClient (),
36
36
captureFailedRequests: true ,
@@ -61,9 +61,12 @@ void main() {
61
61
expect (request? .other.keys.contains ('duration' ), true );
62
62
// ignore: deprecated_member_use_from_same_package
63
63
expect (request? .other.keys.contains ('content_length' ), true );
64
+
65
+ // Response is not captured in case of exception
66
+ expect (eventCall.contexts.response, isNull);
64
67
});
65
68
66
- test ('exception gets not reported if disabled' , () async {
69
+ test ('event not reported if disabled' , () async {
67
70
final sut = fixture.getSut (
68
71
client: createThrowingClient (),
69
72
captureFailedRequests: false ,
@@ -77,9 +80,10 @@ void main() {
77
80
expect (fixture.transport.calls, 0 );
78
81
});
79
82
80
- test ('exception gets reported if bad status code occurs' , () async {
83
+ test ('event reported if bad status code occurs' , () async {
81
84
final sut = fixture.getSut (
82
- client: fixture.getClient (statusCode: 404 , reason: 'Not Found' ),
85
+ client: fixture.getClient (
86
+ statusCode: 404 , reason: 'Not Found' , headers: {'lorem' : 'ipsum' }),
83
87
badStatusCodes: [SentryStatusCode (404 )],
84
88
);
85
89
@@ -114,6 +118,15 @@ void main() {
114
118
expect (request? .other.keys.contains ('duration' ), true );
115
119
// ignore: deprecated_member_use_from_same_package
116
120
expect (request? .other.keys.contains ('content_length' ), true );
121
+
122
+ final response = eventCall.contexts.response! ;
123
+ expect (response.body, isNull);
124
+ expect (response.statusCode, 404 );
125
+ expect (response.status, 'Not Found' );
126
+ expect (response.headers, equals ({'lorem' : 'ipsum' }));
127
+ expect (response.other, isEmpty);
128
+ expect (response.redirected, false );
129
+ expect (response.url, isNull);
117
130
});
118
131
119
132
test (
@@ -160,6 +173,7 @@ void main() {
160
173
expect (event.request? .headers.isEmpty, true );
161
174
expect (event.request? .cookies, isNull);
162
175
expect (event.request? .data, isNull);
176
+ expect (event.contexts.response? .headers.isEmpty, true );
163
177
});
164
178
165
179
test ('pii is not send on invalid status code' , () async {
@@ -176,6 +190,8 @@ void main() {
176
190
expect (fixture.transport.calls, 1 );
177
191
expect (event.request? .headers.isEmpty, true );
178
192
expect (event.request? .cookies, isNull);
193
+ expect (event.request? .data, isNull);
194
+ expect (event.contexts.response? .headers.isEmpty, true );
179
195
});
180
196
181
197
test ('request body is included according to $MaxRequestBodySize ' , () async {
@@ -225,56 +241,6 @@ void main() {
225
241
expect (capturedRequest? .data, scenario.matcher);
226
242
}
227
243
});
228
-
229
- test ('response body is included according to $MaxResponseBodySize ' ,
230
- () async {
231
- final scenarios = [
232
- // never
233
- MaxBodySizeTestConfig (MaxResponseBodySize .never, 0 , false ),
234
- MaxBodySizeTestConfig (MaxResponseBodySize .never, 4001 , false ),
235
- MaxBodySizeTestConfig (MaxResponseBodySize .never, 10001 , false ),
236
- // always
237
- MaxBodySizeTestConfig (MaxResponseBodySize .always, 0 , true ),
238
- MaxBodySizeTestConfig (MaxResponseBodySize .always, 4001 , true ),
239
- MaxBodySizeTestConfig (MaxResponseBodySize .always, 10001 , true ),
240
- // small
241
- MaxBodySizeTestConfig (MaxResponseBodySize .small, 0 , true ),
242
- MaxBodySizeTestConfig (MaxResponseBodySize .small, 4000 , true ),
243
- MaxBodySizeTestConfig (MaxResponseBodySize .small, 4001 , false ),
244
- // medium
245
- MaxBodySizeTestConfig (MaxResponseBodySize .medium, 0 , true ),
246
- MaxBodySizeTestConfig (MaxResponseBodySize .medium, 4001 , true ),
247
- MaxBodySizeTestConfig (MaxResponseBodySize .medium, 10000 , true ),
248
- MaxBodySizeTestConfig (MaxResponseBodySize .medium, 10001 , false ),
249
- ];
250
-
251
- const errCode = 500 ;
252
- const errReason = 'Internal Server Error' ;
253
-
254
- for (final scenario in scenarios) {
255
- fixture.transport.reset ();
256
-
257
- final sut = fixture.getSut (
258
- client: MockClient ((request) => Future .value (Response (
259
- ' ' * scenario.contentLength, errCode,
260
- reasonPhrase: errReason))),
261
- badStatusCodes: [SentryStatusCode (errCode)],
262
- captureFailedRequests: true ,
263
- maxResponseBodySize: scenario.maxBodySize,
264
- );
265
-
266
- final response = await sut.send (Request ('GET' , requestUri));
267
- expect (response.statusCode, errCode);
268
- expect (response.reasonPhrase, errReason);
269
-
270
- expect (fixture.transport.calls, 1 );
271
-
272
- final eventCall = fixture.transport.events.first;
273
- final capturedResponse = eventCall.contexts.response;
274
- expect (capturedResponse, isNotNull);
275
- expect (capturedResponse? .body, scenario.matcher);
276
- }
277
- });
278
244
});
279
245
}
280
246
@@ -302,7 +268,6 @@ class Fixture {
302
268
MockClient ? client,
303
269
bool captureFailedRequests = false ,
304
270
MaxRequestBodySize maxRequestBodySize = MaxRequestBodySize .small,
305
- MaxResponseBodySize maxResponseBodySize = MaxResponseBodySize .small,
306
271
List <SentryStatusCode > badStatusCodes = const [],
307
272
bool sendDefaultPii = true ,
308
273
}) {
@@ -313,15 +278,17 @@ class Fixture {
313
278
captureFailedRequests: captureFailedRequests,
314
279
failedRequestStatusCodes: badStatusCodes,
315
280
maxRequestBodySize: maxRequestBodySize,
316
- maxResponseBodySize: maxResponseBodySize,
317
281
sendDefaultPii: sendDefaultPii,
318
282
);
319
283
}
320
284
321
- MockClient getClient ({int statusCode = 200 , String ? reason}) {
285
+ MockClient getClient (
286
+ {int statusCode = 200 ,
287
+ String ? reason,
288
+ Map <String , String > headers = const {}}) {
322
289
return MockClient ((request) async {
323
290
expect (request.url, requestUri);
324
- return Response ('' , statusCode, reasonPhrase: reason);
291
+ return Response ('' , statusCode, reasonPhrase: reason, headers : headers );
325
292
});
326
293
}
327
294
}
0 commit comments