1+ import 'dart:async' ;
2+
13import 'package:flutter/widgets.dart' ;
24import 'package:flutter_test/flutter_test.dart' ;
35import 'package:instabug_flutter/instabug_flutter.dart' ;
46import 'package:instabug_flutter/src/generated/apm.api.g.dart' ;
57import 'package:instabug_flutter/src/generated/instabug.api.g.dart' ;
68import 'package:instabug_flutter/src/utils/ibg_build_info.dart' ;
9+ import 'package:instabug_flutter/src/utils/network_manager.dart' ;
710import 'package:mockito/annotations.dart' ;
811import 'package:mockito/mockito.dart' ;
912
@@ -13,6 +16,7 @@ import 'network_logger_test.mocks.dart';
1316 ApmHostApi ,
1417 InstabugHostApi ,
1518 IBGBuildInfo ,
19+ NetworkManager ,
1620])
1721void main () {
1822 TestWidgetsFlutterBinding .ensureInitialized ();
@@ -21,6 +25,7 @@ void main() {
2125 final mApmHost = MockApmHostApi ();
2226 final mInstabugHost = MockInstabugHostApi ();
2327 final mBuildInfo = MockIBGBuildInfo ();
28+ final mManager = MockNetworkManager ();
2429
2530 final logger = NetworkLogger ();
2631 final data = NetworkData (
@@ -32,11 +37,20 @@ void main() {
3237 setUpAll (() {
3338 APM .$setHostApi (mApmHost);
3439 NetworkLogger .$setHostApi (mInstabugHost);
40+ NetworkLogger .$setManager (mManager);
3541 IBGBuildInfo .setInstance (mBuildInfo);
3642 });
3743
44+ setUp (() {
45+ reset (mApmHost);
46+ reset (mInstabugHost);
47+ reset (mBuildInfo);
48+ reset (mManager);
49+ });
50+
3851 test ('[networkLog] should call 1 host method on iOS' , () async {
3952 when (mBuildInfo.isAndroid).thenReturn (false );
53+ when (mManager.obfuscateLog (data)).thenReturn (data);
4054
4155 await logger.networkLog (data);
4256
@@ -51,6 +65,7 @@ void main() {
5165
5266 test ('[networkLog] should call 2 host methods on Android' , () async {
5367 when (mBuildInfo.isAndroid).thenReturn (true );
68+ when (mManager.obfuscateLog (data)).thenReturn (data);
5469
5570 await logger.networkLog (data);
5671
@@ -62,4 +77,35 @@ void main() {
6277 mApmHost.networkLogAndroid (data.toJson ()),
6378 ).called (1 );
6479 });
80+
81+ test ('[networkLog] should obfuscate network data before logging' , () async {
82+ final obfuscated = data.copyWith (requestBody: 'obfuscated' );
83+
84+ when (mBuildInfo.isAndroid).thenReturn (true );
85+ when (mManager.obfuscateLog (data)).thenReturn (obfuscated);
86+
87+ await logger.networkLog (data);
88+
89+ verify (
90+ mManager.obfuscateLog (data),
91+ ).called (1 );
92+
93+ verify (
94+ mInstabugHost.networkLog (obfuscated.toJson ()),
95+ ).called (1 );
96+
97+ verify (
98+ mApmHost.networkLogAndroid (obfuscated.toJson ()),
99+ ).called (1 );
100+ });
101+
102+ test ('[obfuscateLog] should set obfuscation callback on manager' , () async {
103+ FutureOr <NetworkData > callback (NetworkData data) => data;
104+
105+ NetworkLogger .obfuscateLog (callback);
106+
107+ verify (
108+ mManager.setObfuscateLogCallback (callback),
109+ ).called (1 );
110+ });
65111}
0 commit comments