1
1
import 'dart:async' ;
2
+ import 'dart:math' ;
2
3
3
4
import 'package:flutter/widgets.dart' ;
4
5
import 'package:flutter_test/flutter_test.dart' ;
@@ -21,6 +22,7 @@ import 'network_logger_test.mocks.dart';
21
22
NetworkManager ,
22
23
W3CHeaderUtils ,
23
24
FeatureFlagsManager ,
25
+ Random ,
24
26
])
25
27
void main () {
26
28
TestWidgetsFlutterBinding .ensureInitialized ();
@@ -30,7 +32,7 @@ void main() {
30
32
final mInstabugHost = MockInstabugHostApi ();
31
33
final mBuildInfo = MockIBGBuildInfo ();
32
34
final mManager = MockNetworkManager ();
33
-
35
+ final mRandom = MockRandom ();
34
36
final logger = NetworkLogger ();
35
37
final data = NetworkData (
36
38
url: "https://httpbin.org/get" ,
@@ -155,4 +157,52 @@ void main() {
155
157
mManager.setOmitLogCallback (callback),
156
158
).called (1 );
157
159
});
160
+
161
+ test (
162
+ '[getW3CHeader] should return null when isW3cExternalTraceIDEnabled disabled' ,
163
+ () async {
164
+ when (mBuildInfo.isAndroid).thenReturn (true );
165
+
166
+ when (mInstabugHost.isW3CFeatureFlagsEnabled ()).thenAnswer (
167
+ (_) => Future .value ({
168
+ "isW3cExternalTraceIDEnabled" : false ,
169
+ "isW3cExternalGeneratedHeaderEnabled" : false ,
170
+ "isW3cCaughtHeaderEnabled" : false ,
171
+ }),
172
+ );
173
+ final time = DateTime .now ().millisecondsSinceEpoch;
174
+ final w3cHeader = await logger.getW3CHeader ({}, time);
175
+ expect (w3cHeader, null );
176
+ });
177
+
178
+ test (
179
+ '[getW3CHeader] should return transparent header when isW3cCaughtHeaderEnabled enabled' ,
180
+ () async {
181
+ when (mBuildInfo.isAndroid).thenReturn (false );
182
+
183
+ final time = DateTime .now ().millisecondsSinceEpoch;
184
+ final w3cHeader =
185
+ await logger.getW3CHeader ({"traceparent" : "Header test" }, time);
186
+ expect (w3cHeader! .isW3cHeaderFound, true );
187
+ expect (w3cHeader.w3CCaughtHeader, "Header test" );
188
+ });
189
+
190
+ test (
191
+ '[getW3CHeader] should return generated header when isW3cExternalGeneratedHeaderEnabled and no traceparent header' ,
192
+ () async {
193
+ W3CHeaderUtils ().$setRandom (mRandom);
194
+ when (mBuildInfo.isAndroid).thenReturn (false );
195
+
196
+ when (mRandom.nextInt (any)).thenReturn (217222 );
197
+
198
+ final time = DateTime .now ().millisecondsSinceEpoch;
199
+ final w3cHeader = await logger.getW3CHeader ({}, time);
200
+ final generatedW3CHeader = W3CHeaderUtils ().generateW3CHeader (time);
201
+
202
+ expect (w3cHeader! .isW3cHeaderFound, false );
203
+ expect (w3cHeader.w3CGeneratedHeader, generatedW3CHeader.w3cHeader);
204
+ expect (w3cHeader.partialId, generatedW3CHeader.partialId);
205
+ expect (w3cHeader.networkStartTimeInSeconds,
206
+ generatedW3CHeader.timestampInSeconds);
207
+ });
158
208
}
0 commit comments