From f2568c395f6e63bef59a1c0946d00c1008fc9dd8 Mon Sep 17 00:00:00 2001 From: Abdelhamid Nasser <38096011+abdelhamid-f-nasser@users.noreply.github.com> Date: Thu, 14 Sep 2023 18:12:59 +0300 Subject: [PATCH] Revert "release/11.14.0 (#390)" This reverts commit 24d9e2ab8ada6027a721c7a494b04e845df41660. --- .circleci/config.yml | 8 +- CHANGELOG.md | 17 ---- Gemfile | 2 + Gemfile.lock | 73 +++++++++++++++++ README.md | 29 +++---- android/build.gradle | 4 +- .../instabug/flutter/modules/InstabugApi.java | 27 ------- .../instabug/flutter/util/ArgsRegistry.java | 10 +-- .../instabug/flutter/ArgsRegistryTest.java | 15 ---- .../com/instabug/flutter/InstabugApiTest.java | 27 ------- e2e/Utils/CaptainTest.cs | 5 +- example/ios/InstabugTests/ArgsRegistryTests.m | 4 +- example/ios/InstabugTests/InstabugApiTests.m | 11 --- example/ios/Podfile.lock | 10 +-- example/lib/main.dart | 35 ++++---- example/pubspec.lock | 44 +++++----- ios/Classes/Modules/BugReportingApi.m | 4 +- ios/Classes/Modules/InstabugApi.m | 19 +---- ios/Classes/Modules/RepliesApi.m | 2 +- ios/Classes/Modules/SurveysApi.m | 4 +- ios/Classes/Util/ArgsRegistry.h | 2 +- ios/Classes/Util/ArgsRegistry.m | 2 +- ios/Classes/Util/IBGNetworkLogger+CP.h | 11 --- ios/instabug_flutter.podspec | 4 +- lib/src/modules/instabug.dart | 42 ---------- lib/src/modules/network_logger.dart | 60 +------------- lib/src/utils/network_manager.dart | 39 --------- pigeons/instabug.api.dart | 2 - pubspec.yaml | 12 ++- test/instabug_test.dart | 29 ------- test/network_logger_test.dart | 81 ------------------- test/network_manager_test.dart | 79 ------------------ 32 files changed, 164 insertions(+), 549 deletions(-) delete mode 100644 ios/Classes/Util/IBGNetworkLogger+CP.h delete mode 100644 lib/src/utils/network_manager.dart delete mode 100644 test/network_manager_test.dart diff --git a/.circleci/config.yml b/.circleci/config.yml index e209a3b62..b4f66035d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,7 +9,7 @@ commands: setup_flutter: steps: - flutter/install_sdk_and_pub: - flutter_version: 3.10.5 + flutter_version: 3.3.0 - run: name: Generate Pigeons command: sh ./scripts/pigeon.sh @@ -33,7 +33,7 @@ commands: steps: - run: name: Install Appium - command: npm install -g appium + command: npm install -g appium@next - when: condition: equal: @@ -42,7 +42,7 @@ commands: steps: - run: name: Install XCUITest Driver - command: appium driver install xcuitest@4.35.0 + command: appium driver install xcuitest - when: condition: equal: @@ -51,7 +51,7 @@ commands: steps: - run: name: Install UIAutomator2 Driver - command: appium driver install uiautomator2@2.29.5 + command: appium driver install uiautomator2 - run: name: Launch Appium # Enable --relaxed-security for `mobile: shell` command that Captain uses internally. diff --git a/CHANGELOG.md b/CHANGELOG.md index bfdfad359..fadd7516c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,22 +1,5 @@ # Changelog -## [11.14.0](https://github.com/Instabug/Instabug-Flutter/compare/v11.13.0...v11.14.0) (September 13, 2023) - -### Added - -- Add network logs obfuscation support using the new `NetworkLogger.obfuscateLog` API ([#380](https://github.com/Instabug/Instabug-Flutter/pull/380)). -- Add network logs omission support using the new `NetworkLogger.omitLog` API ([#382](https://github.com/Instabug/Instabug-Flutter/pull/382)). -- Add the new repro steps configuration API `Instabug.setReproStepsConfig` ([#388](https://github.com/Instabug/Instabug-Flutter/pull/388)). - -### Changed - -- Bump Instabug Android SDK to v11.14.0 ([#384](https://github.com/Instabug/Instabug-Flutter/pull/384)). [See release notes](https://github.com/Instabug/Instabug-Android/releases/tag/v11.14.0). -- Bump Instabug iOS SDK to v11.14.0 ([#383](https://github.com/Instabug/Instabug-Flutter/pull/383)). [See release notes](https://github.com/Instabug/Instabug-iOS/releases/tag/11.14.0). - -### Deprecated - -- Deprecate `Instabug.setReproStepsMode` in favor of the new `Instabug.setReproStepsConfig` ([#388](https://github.com/Instabug/Instabug-Flutter/pull/388)). - ## [11.13.0](https://github.com/Instabug/Instabug-Flutter/compare/v11.12.0...v11.13.0) (July 10, 2023) ### Changed diff --git a/Gemfile b/Gemfile index 19b2c91d4..09a8c1e13 100644 --- a/Gemfile +++ b/Gemfile @@ -1 +1,3 @@ source "https://rubygems.org" + +gem 'danger', '~> 8.6', '>= 8.6.1' diff --git a/Gemfile.lock b/Gemfile.lock index 3c10ae234..982ec2834 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,11 +1,84 @@ GEM remote: https://rubygems.org/ specs: + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) + claide (1.1.0) + claide-plugins (0.9.2) + cork + nap + open4 (~> 1.3) + colored2 (3.1.2) + cork (0.3.0) + colored2 (~> 3.1) + danger (8.6.1) + claide (~> 1.0) + claide-plugins (>= 0.9.2) + colored2 (~> 3.1) + cork (~> 0.1) + faraday (>= 0.9.0, < 2.0) + faraday-http-cache (~> 2.0) + git (~> 1.7) + kramdown (~> 2.3) + kramdown-parser-gfm (~> 1.0) + no_proxy_fix + octokit (~> 4.7) + terminal-table (>= 1, < 4) + faraday (1.10.2) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.0) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) + ruby2_keywords (>= 0.0.4) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-http-cache (2.4.1) + faraday (>= 0.8) + faraday-httpclient (1.0.1) + faraday-multipart (1.0.4) + multipart-post (~> 2) + faraday-net_http (1.0.1) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.3) + git (1.12.0) + addressable (~> 2.8) + rchardet (~> 1.8) + kramdown (2.4.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + multipart-post (2.2.3) + nap (1.1.0) + no_proxy_fix (0.1.2) + octokit (4.25.1) + faraday (>= 1, < 3) + sawyer (~> 0.9) + open4 (1.3.4) + public_suffix (5.0.0) + rchardet (1.8.0) + rexml (3.2.5) + ruby2_keywords (0.0.5) + sawyer (0.9.2) + addressable (>= 2.3.5) + faraday (>= 0.17.3, < 3) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + unicode-display_width (2.3.0) PLATFORMS ruby DEPENDENCIES + danger (~> 8.6, >= 8.6.1) BUNDLED WITH 1.17.2 diff --git a/README.md b/README.md index 88080febd..16804193a 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ A Flutter plugin for [Instabug](https://instabug.com/). ### Installation + 1. Add Instabug to your `pubspec.yaml` file. ```yaml @@ -64,23 +65,18 @@ Instabug automatically captures every crash of your app and sends relevant detai ```dart void main() { - runZonedGuarded( - () { - WidgetsFlutterBinding.ensureInitialized(); - - Instabug.init( - token: 'APP_TOKEN', - invocationEvents: [InvocationEvent.shake], - ); - - FlutterError.onError = (FlutterErrorDetails details) { - Zone.current.handleUncaughtError(details.exception, details.stack!); - }; - - runApp(MyApp()); - }, - CrashReporting.reportCrash, + WidgetsFlutterBinding.ensureInitialized(); + + Instabug.init( + token: 'APP_TOKEN', + invocationEvents: [InvocationEvent.floatingButton], ); + + FlutterError.onError = (FlutterErrorDetails details) { + Zone.current.handleUncaughtError(details.exception, details.stack!); + }; + + runZonedGuarded(() => runApp(MyApp()), CrashReporting.reportCrash); } ``` @@ -94,6 +90,7 @@ Repro Steps list all of the actions an app user took before reporting a bug or c )); ``` + ## Network Logging You can choose to attach all your network requests to the reports being sent to the dashboard. To enable the feature when using the `dart:io` package `HttpClient`, please refer to the [Instabug Dart IO Http Client](https://github.com/Instabug/instabug-dart-io-http-client) repository. diff --git a/android/build.gradle b/android/build.gradle index f85e76f11..f74a857e4 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,5 @@ group 'com.instabug.flutter' -version '11.14.0' +version '11.13.0' buildscript { repositories { @@ -41,7 +41,7 @@ android { } dependencies { - api 'com.instabug.library:instabug:11.14.0' + api 'com.instabug.library:instabug:11.13.0' testImplementation 'junit:junit:4.13.2' testImplementation "org.mockito:mockito-inline:3.12.1" diff --git a/android/src/main/java/com/instabug/flutter/modules/InstabugApi.java b/android/src/main/java/com/instabug/flutter/modules/InstabugApi.java index c5292b9c4..a9bc50346 100644 --- a/android/src/main/java/com/instabug/flutter/modules/InstabugApi.java +++ b/android/src/main/java/com/instabug/flutter/modules/InstabugApi.java @@ -19,9 +19,7 @@ import com.instabug.library.Instabug; import com.instabug.library.InstabugColorTheme; import com.instabug.library.InstabugCustomTextPlaceHolder; -import com.instabug.library.IssueType; import com.instabug.library.Platform; -import com.instabug.library.ReproConfigurations; import com.instabug.library.internal.module.InstabugLocale; import com.instabug.library.invocation.InstabugInvocationEvent; import com.instabug.library.model.NetworkLog; @@ -285,9 +283,7 @@ public void setSdkDebugLogsLevel(@NonNull String level) { // iOS Only } - @SuppressWarnings("deprecation") @Override - @Deprecated() public void setReproStepsMode(@NonNull String mode) { try { final State resolvedMode = ArgsRegistry.reproStates.get(mode); @@ -297,29 +293,6 @@ public void setReproStepsMode(@NonNull String mode) { } } - @Override - public void setReproStepsConfig(@Nullable String bugMode, @Nullable String crashMode) { - try { - final ReproConfigurations.Builder builder = new ReproConfigurations.Builder(); - - if (bugMode != null) { - final Integer resolvedBugMode = ArgsRegistry.reproModes.get(bugMode); - builder.setIssueMode(IssueType.Bug, resolvedBugMode); - } - - if (crashMode != null) { - final Integer resolvedCrashMode = ArgsRegistry.reproModes.get(crashMode); - builder.setIssueMode(IssueType.Crash, resolvedCrashMode); - } - - final ReproConfigurations config = builder.build(); - - Instabug.setReproConfigurations(config); - } catch (Exception e) { - e.printStackTrace(); - } - } - @Override public void reportScreenChange(@NonNull String screenName) { try { diff --git a/android/src/main/java/com/instabug/flutter/util/ArgsRegistry.java b/android/src/main/java/com/instabug/flutter/util/ArgsRegistry.java index 6beba4d52..b63341bf3 100644 --- a/android/src/main/java/com/instabug/flutter/util/ArgsRegistry.java +++ b/android/src/main/java/com/instabug/flutter/util/ArgsRegistry.java @@ -9,7 +9,6 @@ import com.instabug.library.InstabugColorTheme; import com.instabug.library.InstabugCustomTextPlaceHolder.Key; import com.instabug.library.OnSdkDismissCallback.DismissType; -import com.instabug.library.ReproMode; import com.instabug.library.extendedbugreport.ExtendedBugReport; import com.instabug.library.internal.module.InstabugLocale; import com.instabug.library.invocation.InstabugInvocationEvent; @@ -112,19 +111,12 @@ public T get(Object key) { put("ExtendedBugReportMode.disabled", ExtendedBugReport.State.DISABLED); }}; - @Deprecated() public static final ArgsMap reproStates = new ArgsMap() {{ put("ReproStepsMode.enabledWithNoScreenshots", State.ENABLED_WITH_NO_SCREENSHOTS); put("ReproStepsMode.enabled", State.ENABLED); put("ReproStepsMode.disabled", State.DISABLED); }}; - public static final ArgsMap reproModes = new ArgsMap() {{ - put("ReproStepsMode.enabledWithNoScreenshots", ReproMode.EnableWithNoScreenshots); - put("ReproStepsMode.enabled", ReproMode.EnableWithScreenshots); - put("ReproStepsMode.disabled", ReproMode.Disable); - }}; - public static final ArgsMap locales = new ArgsMap() {{ put("IBGLocale.arabic", InstabugLocale.ARABIC); put("IBGLocale.azerbaijani", InstabugLocale.AZERBAIJANI); @@ -222,4 +214,4 @@ public T get(Object key) { put("CustomTextPlaceHolderKey.messagesNotificationAndOthers", Key.CHATS_MULTIPLE_MESSAGE_NOTIFICATION); put("CustomTextPlaceHolderKey.insufficientContentMessage", Key.COMMENT_FIELD_INSUFFICIENT_CONTENT); }}; -} +} \ No newline at end of file diff --git a/android/src/test/java/com/instabug/flutter/ArgsRegistryTest.java b/android/src/test/java/com/instabug/flutter/ArgsRegistryTest.java index ef1b9c21c..d4e59fb00 100644 --- a/android/src/test/java/com/instabug/flutter/ArgsRegistryTest.java +++ b/android/src/test/java/com/instabug/flutter/ArgsRegistryTest.java @@ -10,7 +10,6 @@ import com.instabug.library.InstabugColorTheme; import com.instabug.library.InstabugCustomTextPlaceHolder.Key; import com.instabug.library.OnSdkDismissCallback.DismissType; -import com.instabug.library.ReproMode; import com.instabug.library.extendedbugreport.ExtendedBugReport; import com.instabug.library.internal.module.InstabugLocale; import com.instabug.library.invocation.InstabugInvocationEvent; @@ -184,7 +183,6 @@ public void testExtendedBugReportStates() { } - @SuppressWarnings("deprecation") @Test public void testReproStates() { State[] values = { @@ -198,19 +196,6 @@ public void testReproStates() { } } - @Test - public void testReproModes() { - Integer[] values = { - ReproMode.Disable, - ReproMode.EnableWithScreenshots, - ReproMode.EnableWithNoScreenshots, - }; - - for (Integer value : values) { - assertTrue(ArgsRegistry.reproModes.containsValue(value)); - } - } - @Test public void testLocales() { diff --git a/android/src/test/java/com/instabug/flutter/InstabugApiTest.java b/android/src/test/java/com/instabug/flutter/InstabugApiTest.java index 14ce73325..35d871406 100644 --- a/android/src/test/java/com/instabug/flutter/InstabugApiTest.java +++ b/android/src/test/java/com/instabug/flutter/InstabugApiTest.java @@ -7,7 +7,6 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; @@ -31,11 +30,8 @@ import com.instabug.library.Instabug; import com.instabug.library.InstabugColorTheme; import com.instabug.library.InstabugCustomTextPlaceHolder; -import com.instabug.library.IssueType; import com.instabug.library.LogLevel; import com.instabug.library.Platform; -import com.instabug.library.ReproConfigurations; -import com.instabug.library.ReproMode; import com.instabug.library.invocation.InstabugInvocationEvent; import com.instabug.library.model.NetworkLog; import com.instabug.library.ui.onboarding.WelcomeMessage; @@ -387,7 +383,6 @@ public void testSetDebugEnabled() { mInstabug.verify(() -> Instabug.setDebugEnabled(isEnabled)); } - @SuppressWarnings("deprecation") @Test public void testSetReproStepsMode() { String mode = "ReproStepsMode.enabled"; @@ -397,28 +392,6 @@ public void testSetReproStepsMode() { mInstabug.verify(() -> Instabug.setReproStepsState(State.ENABLED)); } - @Test - public void testSetReproStepsConfig() { - String bug = "ReproStepsMode.enabled"; - String crash = "ReproStepsMode.disabled"; - - ReproConfigurations config = mock(ReproConfigurations.class); - MockedConstruction mReproConfigurationsBuilder = mockConstruction(ReproConfigurations.Builder.class, (mock, context) -> { - when(mock.setIssueMode(anyInt(), anyInt())).thenReturn(mock); - when(mock.build()).thenReturn(config); - }); - - api.setReproStepsConfig(bug, crash); - - ReproConfigurations.Builder builder = mReproConfigurationsBuilder.constructed().get(0); - - verify(builder).setIssueMode(IssueType.Bug, ReproMode.EnableWithScreenshots); - verify(builder).setIssueMode(IssueType.Crash, ReproMode.Disable); - verify(builder).build(); - - mInstabug.verify(() -> Instabug.setReproConfigurations(config)); - } - @Test public void testReportScreenChange() { String screenName = "HomeScreen"; diff --git a/e2e/Utils/CaptainTest.cs b/e2e/Utils/CaptainTest.cs index d73f37e3c..5c0abfb13 100644 --- a/e2e/Utils/CaptainTest.cs +++ b/e2e/Utils/CaptainTest.cs @@ -8,12 +8,9 @@ public class CaptainTest : IDisposable private static readonly CaptainConfig _config = new() { AndroidApp = Path.GetFullPath("../../../../example/build/app/outputs/flutter-apk/app-debug.apk"), - AndroidAppId = "com.instabug.flutter.example", AndroidVersion = "11", IosApp = Path.GetFullPath("../../../../example/build/ios/iphonesimulator/Runner.app"), - IosAppId = "com.instabug.InstabugSample", - IosVersion = "15.5", - IosDevice = "iPhone 13 Pro Max" + IosVersion = "15.5" }; protected static readonly Captain captain = new(_config); diff --git a/example/ios/InstabugTests/ArgsRegistryTests.m b/example/ios/InstabugTests/ArgsRegistryTests.m index f3790f407..203dab567 100644 --- a/example/ios/InstabugTests/ArgsRegistryTests.m +++ b/example/ios/InstabugTests/ArgsRegistryTests.m @@ -157,7 +157,7 @@ - (void)testExtendedBugReportStates { } } -- (void)testReproModes { +- (void)testReproStates { NSArray *values = @[ @(IBGUserStepsModeEnable), @(IBGUserStepsModeDisable), @@ -165,7 +165,7 @@ - (void)testReproModes { ]; for (NSNumber *value in values) { - XCTAssertTrue([[ArgsRegistry.reproModes allValues] containsObject:value]); + XCTAssertTrue([[ArgsRegistry.reproStates allValues] containsObject:value]); } } diff --git a/example/ios/InstabugTests/InstabugApiTests.m b/example/ios/InstabugTests/InstabugApiTests.m index 0fd431260..22e958b79 100644 --- a/example/ios/InstabugTests/InstabugApiTests.m +++ b/example/ios/InstabugTests/InstabugApiTests.m @@ -300,17 +300,6 @@ - (void)testSetReproStepsMode { OCMVerify([self.mInstabug setReproStepsMode:IBGUserStepsModeEnable]); } -- (void)testSetReproStepsConfig { - NSString *bugMode = @"ReproStepsMode.enabled"; - NSString *crashMode = @"ReproStepsMode.disabled"; - FlutterError *error; - - [self.api setReproStepsConfigBugMode:bugMode crashMode:crashMode error:&error]; - - OCMVerify([self.mInstabug setReproStepsFor:IBGIssueTypeBug withMode:IBGUserStepsModeEnable]); - OCMVerify([self.mInstabug setReproStepsFor:IBGIssueTypeCrash withMode:IBGUserStepsModeDisable]); -} - - (void)testReportScreenChange { NSString *screenName = @"HomeScreen"; FlutterError *error; diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index a414ee9d5..dabcb7368 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1,9 +1,9 @@ PODS: - Flutter (1.0.0) - - Instabug (11.14.0) - - instabug_flutter (11.14.0): + - Instabug (11.13.3) + - instabug_flutter (11.13.0): - Flutter - - Instabug (= 11.14.0) + - Instabug (= 11.13.3) - OCMock (3.6) DEPENDENCIES: @@ -24,8 +24,8 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 - Instabug: b4976b1a96ed7462b772ff63f7c4e0166389c86a - instabug_flutter: 91b418918d7e173556b013adf8ce45940bbbedec + Instabug: f7c3880823873cff9ee70307d373e8266c9ea0f8 + instabug_flutter: e935f80f03127586ebb4fc61c6b891d87a978ee3 OCMock: 5ea90566be239f179ba766fd9fbae5885040b992 PODFILE CHECKSUM: 637e800c0a0982493b68adb612d2dd60c15c8e5c diff --git a/example/lib/main.dart b/example/lib/main.dart index 31705db25..b42390e9d 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -4,23 +4,21 @@ import 'package:flutter/material.dart'; import 'package:instabug_flutter/instabug_flutter.dart'; void main() { - runZonedGuarded( - () { - WidgetsFlutterBinding.ensureInitialized(); + WidgetsFlutterBinding.ensureInitialized(); - Instabug.init( - token: 'ed6f659591566da19b67857e1b9d40ab', - invocationEvents: [InvocationEvent.floatingButton], - ); + Instabug.init( + token: 'ed6f659591566da19b67857e1b9d40ab', + invocationEvents: [InvocationEvent.floatingButton], + debugLogsLevel: LogLevel.verbose, + ); - FlutterError.onError = (FlutterErrorDetails details) { - Zone.current.handleUncaughtError(details.exception, details.stack!); - }; + Instabug.setWelcomeMessageMode(WelcomeMessageMode.disabled); - runApp(MyApp()); - }, - CrashReporting.reportCrash, - ); + FlutterError.onError = (FlutterErrorDetails details) { + Zone.current.handleUncaughtError(details.exception, details.stack!); + }; + + runZonedGuarded(() => runApp(MyApp()), CrashReporting.reportCrash); } class MyApp extends StatelessWidget { @@ -162,6 +160,11 @@ class _MyHomePageState extends State { ReportType.feedback, [InvocationOption.emailFieldOptional]); } + void askQuestion() { + BugReporting.show( + ReportType.question, [InvocationOption.emailFieldOptional]); + } + void showNpsSurvey() { Surveys.showSurvey('pcV_mE2ttqHxT1iqvBxL0w'); } @@ -328,6 +331,10 @@ class _MyHomePageState extends State { onPressed: sendFeedback, text: 'Send Feedback', ), + InstabugButton( + onPressed: askQuestion, + text: 'Ask a Question', + ), InstabugButton( onPressed: showNpsSurvey, text: 'Show NPS Survey', diff --git a/example/pubspec.lock b/example/pubspec.lock index d1455e4ed..10a0273a0 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: collection - sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" url: "https://pub.dev" source: hosted - version: "1.17.2" + version: "1.17.1" espresso: dependency: "direct dev" description: @@ -91,23 +91,31 @@ packages: path: ".." relative: true source: path - version: "11.14.0" + version: "11.13.0" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" matcher: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" url: "https://pub.dev" source: hosted - version: "0.12.16" + version: "0.12.15" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.2.0" meta: dependency: transitive description: @@ -149,10 +157,10 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.9.1" stack_trace: dependency: transitive description: @@ -197,10 +205,10 @@ packages: dependency: transitive description: name: test_api - sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" + sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.5.1" vector_math: dependency: transitive description: @@ -213,18 +221,10 @@ packages: dependency: transitive description: name: vm_service - sha256: c620a6f783fa22436da68e42db7ebbf18b8c44b9a46ab911f666ff09ffd9153f - url: "https://pub.dev" - source: hosted - version: "11.7.1" - web: - dependency: transitive - description: - name: web - sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + sha256: f6deed8ed625c52864792459709183da231ebf66ff0cf09e69b573227c377efe url: "https://pub.dev" source: hosted - version: "0.1.4-beta" + version: "11.3.0" webdriver: dependency: transitive description: @@ -234,5 +234,5 @@ packages: source: hosted version: "3.0.2" sdks: - dart: ">=3.1.0-185.0.dev <4.0.0" + dart: ">=3.0.0-0 <4.0.0" flutter: ">=2.10.0" diff --git a/ios/Classes/Modules/BugReportingApi.m b/ios/Classes/Modules/BugReportingApi.m index 3c914b789..80c4e79e9 100644 --- a/ios/Classes/Modules/BugReportingApi.m +++ b/ios/Classes/Modules/BugReportingApi.m @@ -112,7 +112,7 @@ - (void)setEnabledAttachmentTypesScreenshot:(NSNumber *)screenshot extraScreensh - (void)bindOnInvokeCallbackWithError:(FlutterError *_Nullable *_Nonnull)error { IBGBugReporting.willInvokeHandler = ^{ - [self->_flutterApi onSdkInvokeWithCompletion:^(FlutterError *_Nullable _){ + [self->_flutterApi onSdkInvokeWithCompletion:^(NSError *_Nullable _){ }]; }; } @@ -141,7 +141,7 @@ - (void)bindOnDismissCallbackWithError:(FlutterError *_Nullable *_Nonnull)error [self->_flutterApi onSdkDismissDismissType:dismissTypeString reportType:reportTypeString - completion:^(FlutterError *_Nullable _){ + completion:^(NSError *_Nullable _){ }]; }; } diff --git a/ios/Classes/Modules/InstabugApi.m b/ios/Classes/Modules/InstabugApi.m index 97a7ab020..8762682d3 100644 --- a/ios/Classes/Modules/InstabugApi.m +++ b/ios/Classes/Modules/InstabugApi.m @@ -2,7 +2,6 @@ #import #import #import "Instabug.h" -#import "IBGNetworkLogger+CP.h" #import "InstabugApi.h" #import "ArgsRegistry.h" @@ -29,10 +28,6 @@ - (void)initToken:(NSString *)token invocationEvents:(NSArray *)invo [inv setArgument:&(platformID) atIndex:2]; [inv invoke]; } - - // Disable automatic capturing of native iOS network logs to avoid duplicate - // logs of the same request when using a native network client like cupertino_http - [IBGNetworkLogger disableAutomaticCapturingOfNetworkLogs]; IBGInvocationEvent resolvedEvents = 0; @@ -159,22 +154,10 @@ - (void)setSdkDebugLogsLevelLevel:(NSString *)level error:(FlutterError *_Nullab } - (void)setReproStepsModeMode:(NSString *)mode error:(FlutterError *_Nullable *_Nonnull)error { - IBGUserStepsMode resolvedMode = (ArgsRegistry.reproModes[mode]).integerValue; + IBGUserStepsMode resolvedMode = (ArgsRegistry.reproStates[mode]).integerValue; [Instabug setReproStepsMode:resolvedMode]; } -- (void)setReproStepsConfigBugMode:(nullable NSString *)bugMode crashMode:(nullable NSString *)crashMode error:(FlutterError * _Nullable __autoreleasing * _Nonnull)error { - if (bugMode != nil) { - IBGUserStepsMode resolvedBugMode = ArgsRegistry.reproModes[bugMode].integerValue; - [Instabug setReproStepsFor:IBGIssueTypeBug withMode:resolvedBugMode]; - } - - if (crashMode != nil) { - IBGUserStepsMode resolvedCrashMode = ArgsRegistry.reproModes[crashMode].integerValue; - [Instabug setReproStepsFor:IBGIssueTypeCrash withMode:resolvedCrashMode]; - } -} - - (UIImage *)getImageForAsset:(NSString *)assetName { NSString *key = [FlutterDartProject lookupKeyForAsset:assetName]; NSString *path = [[NSBundle mainBundle] pathForResource:key ofType:nil]; diff --git a/ios/Classes/Modules/RepliesApi.m b/ios/Classes/Modules/RepliesApi.m index 636040181..799fe6f34 100644 --- a/ios/Classes/Modules/RepliesApi.m +++ b/ios/Classes/Modules/RepliesApi.m @@ -43,7 +43,7 @@ - (void)hasChatsWithCompletion:(nonnull void (^)(NSNumber * _Nullable, FlutterEr - (void)bindOnNewReplyCallbackWithError:(FlutterError *_Nullable *_Nonnull)error { IBGReplies.didReceiveReplyHandler = ^{ - [self->_flutterApi onNewReplyWithCompletion:^(FlutterError *_Nullable _){ + [self->_flutterApi onNewReplyWithCompletion:^(NSError *_Nullable _){ }]; }; } diff --git a/ios/Classes/Modules/SurveysApi.m b/ios/Classes/Modules/SurveysApi.m index fb6ee9fa4..5cb0b2076 100644 --- a/ios/Classes/Modules/SurveysApi.m +++ b/ios/Classes/Modules/SurveysApi.m @@ -65,14 +65,14 @@ - (void)getAvailableSurveysWithCompletion:(void (^)(NSArray *_Nullab - (void)bindOnShowSurveyCallbackWithError:(FlutterError *_Nullable *_Nonnull)error { IBGSurveys.willShowSurveyHandler = ^{ - [self->_flutterApi onShowSurveyWithCompletion:^(FlutterError *_Nullable _){ + [self->_flutterApi onShowSurveyWithCompletion:^(NSError *_Nullable _){ }]; }; } - (void)bindOnDismissSurveyCallbackWithError:(FlutterError *_Nullable *_Nonnull)error { IBGSurveys.didDismissSurveyHandler = ^{ - [self->_flutterApi onDismissSurveyWithCompletion:^(FlutterError *_Nullable _){ + [self->_flutterApi onDismissSurveyWithCompletion:^(NSError *_Nullable _){ }]; }; } diff --git a/ios/Classes/Util/ArgsRegistry.h b/ios/Classes/Util/ArgsRegistry.h index 5d9fb6263..896bc07bd 100644 --- a/ios/Classes/Util/ArgsRegistry.h +++ b/ios/Classes/Util/ArgsRegistry.h @@ -17,7 +17,7 @@ typedef NSDictionary ArgsDictionary; + (ArgsDictionary *)dismissTypes; + (ArgsDictionary *)actionTypes; + (ArgsDictionary *)extendedBugReportStates; -+ (ArgsDictionary *)reproModes; ++ (ArgsDictionary *)reproStates; + (ArgsDictionary *)locales; + (NSDictionary *)placeholders; diff --git a/ios/Classes/Util/ArgsRegistry.m b/ios/Classes/Util/ArgsRegistry.m index dd13f46fc..14bae4ac2 100644 --- a/ios/Classes/Util/ArgsRegistry.m +++ b/ios/Classes/Util/ArgsRegistry.m @@ -112,7 +112,7 @@ + (ArgsDictionary *)extendedBugReportStates { }; } -+ (ArgsDictionary *)reproModes { ++ (ArgsDictionary *)reproStates { return @{ @"ReproStepsMode.enabled" : @(IBGUserStepsModeEnable), @"ReproStepsMode.disabled" : @(IBGUserStepsModeDisable), diff --git a/ios/Classes/Util/IBGNetworkLogger+CP.h b/ios/Classes/Util/IBGNetworkLogger+CP.h deleted file mode 100644 index ae5d32d66..000000000 --- a/ios/Classes/Util/IBGNetworkLogger+CP.h +++ /dev/null @@ -1,11 +0,0 @@ -#import - -NS_ASSUME_NONNULL_BEGIN - -@interface IBGNetworkLogger (CP) - -+ (void)disableAutomaticCapturingOfNetworkLogs; - -@end - -NS_ASSUME_NONNULL_END diff --git a/ios/instabug_flutter.podspec b/ios/instabug_flutter.podspec index 823cd89d5..a8265b75a 100644 --- a/ios/instabug_flutter.podspec +++ b/ios/instabug_flutter.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'instabug_flutter' - s.version = '11.14.0' + s.version = '11.13.0' s.summary = 'Flutter plugin for integrating the Instabug SDK.' s.author = 'Instabug' s.homepage = 'https://www.instabug.com/platforms/flutter' @@ -17,6 +17,6 @@ Pod::Spec.new do |s| s.pod_target_xcconfig = { 'OTHER_LDFLAGS' => '-framework "Flutter" -framework "Instabug"'} s.dependency 'Flutter' - s.dependency 'Instabug', '11.14.0' + s.dependency 'Instabug', '11.13.3' end diff --git a/lib/src/modules/instabug.dart b/lib/src/modules/instabug.dart index ac62c509d..82f0a44de 100644 --- a/lib/src/modules/instabug.dart +++ b/lib/src/modules/instabug.dart @@ -393,52 +393,10 @@ class Instabug { /// Sets the repro steps mode /// [mode] repro steps mode - @Deprecated('Use [setReproStepsConfig] instead.') static Future setReproStepsMode(ReproStepsMode reproStepsMode) async { return _host.setReproStepsMode(reproStepsMode.toString()); } - /// Sets the repro steps mode for bugs and crashes. - /// - /// [bug] repro steps mode for bug reports. - /// [crash] repro steps mode for crash reports. - /// [all] repro steps mode for both bug and crash reports, when present it - /// overrides [bug] and [crash]. - /// - /// Example: - /// ```dart - /// Instabug.setReproStepsConfig( - /// bug: ReproStepsMode.enabled, - /// crash: ReproStepsMode.disabled, - /// ); - /// ``` - static Future setReproStepsConfig({ - ReproStepsMode? bug, - ReproStepsMode? crash, - ReproStepsMode? all, - }) async { - var bugMode = bug; - var crashMode = crash; - - if (all != null) { - bugMode = all; - crashMode = all; - } - - // There's an issue with crashes repro steps with screenshots in the iOS SDK - // at the moment, so we'll map enabled with screenshots to enabled with no - // screenshots to avoid storing the images on disk if it's not needed until - // this issue is fixed in a future version. - if (IBGBuildInfo.I.isIOS && crashMode == ReproStepsMode.enabled) { - crashMode = ReproStepsMode.enabledWithNoScreenshots; - } - - return _host.setReproStepsConfig( - bugMode.toString(), - crashMode.toString(), - ); - } - /// Sets a custom branding image logo with [light] and [dark] images for different color modes. /// /// If no [context] is passed, [asset variants](https://docs.flutter.dev/development/ui/assets-and-images#asset-variants) won't work as expected; diff --git a/lib/src/modules/network_logger.dart b/lib/src/modules/network_logger.dart index 83a88538c..0f054be6c 100644 --- a/lib/src/modules/network_logger.dart +++ b/lib/src/modules/network_logger.dart @@ -2,15 +2,13 @@ import 'dart:async'; -import 'package:flutter/foundation.dart'; import 'package:instabug_flutter/src/generated/instabug.api.g.dart'; import 'package:instabug_flutter/src/models/network_data.dart'; import 'package:instabug_flutter/src/modules/apm.dart'; -import 'package:instabug_flutter/src/utils/network_manager.dart'; +import 'package:meta/meta.dart'; class NetworkLogger { static var _host = InstabugHostApi(); - static var _manager = NetworkManager(); /// @nodoc @visibleForTesting @@ -19,60 +17,8 @@ class NetworkLogger { _host = host; } - /// @nodoc - @visibleForTesting - // ignore: use_setters_to_change_properties - static void $setManager(NetworkManager manager) { - _manager = manager; - } - - /// Registers a callback to selectively obfuscate network log data. - /// - /// The [callback] function takes a [NetworkData] object as its argument and - /// should return a modified [NetworkData] object with sensitive information - /// obfuscated. - /// - /// Example: - /// - /// ```dart - /// NetworkLogger.obfuscateLog((data) { - /// // Modify 'data' as needed and return it. - /// }); - /// ``` - static void obfuscateLog(ObfuscateLogCallback callback) { - _manager.setObfuscateLogCallback(callback); - } - - /// Registers a callback to selectively omit network log data. - /// - /// Use this method to set a callback function that determines whether - /// specific network log data should be excluded before recording it. - /// - /// The [callback] function takes a [NetworkData] object as its argument and - /// should return a boolean value indicating whether the data should be omitted - /// (`true`) or included (`false`). - /// - /// Example: - /// - /// ```dart - /// NetworkLogger.omitLog((data) { - /// // Implement logic to decide whether to omit the data. - /// // For example, ignore requests to a specific URL: - /// return data.url.startsWith('https://example.com'); - /// }); - /// ``` - static void omitLog(OmitLogCallback callback) { - _manager.setOmitLogCallback(callback); - } - Future networkLog(NetworkData data) async { - final omit = await _manager.omitLog(data); - - if (omit) return; - - final obfuscated = await _manager.obfuscateLog(data); - - await _host.networkLog(obfuscated.toJson()); - await APM.networkLogAndroid(obfuscated); + await _host.networkLog(data.toJson()); + await APM.networkLogAndroid(data); } } diff --git a/lib/src/utils/network_manager.dart b/lib/src/utils/network_manager.dart deleted file mode 100644 index 7aaf8f563..000000000 --- a/lib/src/utils/network_manager.dart +++ /dev/null @@ -1,39 +0,0 @@ -import 'dart:async'; - -import 'package:instabug_flutter/instabug_flutter.dart'; - -typedef ObfuscateLogCallback = FutureOr Function(NetworkData data); -typedef OmitLogCallback = FutureOr Function(NetworkData data); - -/// Mockable [NetworkManager] responsible for processing network logs -/// before they are sent to the native SDKs. -class NetworkManager { - ObfuscateLogCallback? _obfuscateLogCallback; - OmitLogCallback? _omitLogCallback; - - // ignore: use_setters_to_change_properties - void setObfuscateLogCallback(ObfuscateLogCallback callback) { - _obfuscateLogCallback = callback; - } - - // ignore: use_setters_to_change_properties - void setOmitLogCallback(OmitLogCallback callback) { - _omitLogCallback = callback; - } - - FutureOr obfuscateLog(NetworkData data) { - if (_obfuscateLogCallback == null) { - return data; - } - - return _obfuscateLogCallback!(data); - } - - FutureOr omitLog(NetworkData data) { - if (_omitLogCallback == null) { - return false; - } - - return _omitLogCallback!(data); - } -} diff --git a/pigeons/instabug.api.dart b/pigeons/instabug.api.dart index fe56c0ccf..bba471cd2 100644 --- a/pigeons/instabug.api.dart +++ b/pigeons/instabug.api.dart @@ -42,9 +42,7 @@ abstract class InstabugHostApi { void setDebugEnabled(bool enabled); void setSdkDebugLogsLevel(String level); - @Deprecated('Use [setReproStepsConfig] instead') void setReproStepsMode(String mode); - void setReproStepsConfig(String? bugMode, String? crashMode); void reportScreenChange(String screenName); void setCustomBrandingImage(String light, String dark); diff --git a/pubspec.yaml b/pubspec.yaml index ab57d2af4..5e5dfef36 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,8 +1,8 @@ name: instabug_flutter -version: 11.14.0 +version: 11.13.0 description: >- - Instabug empowers mobile teams to monitor, prioritize, and debug - performance and stability issues throughout the app development lifecycle. + Instabug empowers mobile teams to monitor, prioritize, and debug + performance and stability issues throughout the app development lifecycle. homepage: https://www.instabug.com/platforms/flutter repository: https://github.com/Instabug/Instabug-Flutter documentation: https://docs.instabug.com/docs/flutter-overview @@ -18,11 +18,9 @@ dev_dependencies: flutter_test: sdk: flutter lint: ^1.0.0 - # mockito v5.2.0 is needed for running Flutter 2 tests on CI - mockito: '>=5.2.0 <=5.4.2' + mockito: 5.2.0 pana: ^0.21.0 - # pigeon v3.0.0 is needed for running Flutter 2 tests on CI - pigeon: '>=3.0.0 <=10.1.5' + pigeon: ^3.0.0 flutter: plugin: diff --git a/test/instabug_test.dart b/test/instabug_test.dart index d54863e72..bb6d4114e 100644 --- a/test/instabug_test.dart +++ b/test/instabug_test.dart @@ -300,7 +300,6 @@ void main() { test('[setReproStepsMode] should call host method', () async { const mode = ReproStepsMode.enabled; - // ignore: deprecated_member_use_from_same_package await Instabug.setReproStepsMode(mode); verify( @@ -308,34 +307,6 @@ void main() { ).called(1); }); - test('[setReproStepsConfig] should call host method', () async { - const bug = ReproStepsMode.enabled; - const crash = ReproStepsMode.enabledWithNoScreenshots; - - when(mBuildInfo.isIOS).thenReturn(false); - - await Instabug.setReproStepsConfig( - bug: bug, - crash: crash, - ); - - verify( - mHost.setReproStepsConfig(bug.toString(), crash.toString()), - ).called(1); - }); - - test( - '[setReproStepsConfig] should use [all] for [bug] and [crash] if present', - () async { - const all = ReproStepsMode.enabled; - - await Instabug.setReproStepsConfig(all: all); - - verify( - mHost.setReproStepsConfig(all.toString(), all.toString()), - ).called(1); - }); - test('[setCustomBrandingImage] should call host method', () async { const lightImage = 'images/light_logo.jpeg'; const darkImage = 'images/dark_logo.jpeg'; diff --git a/test/network_logger_test.dart b/test/network_logger_test.dart index e5a04e236..aad1be1ca 100644 --- a/test/network_logger_test.dart +++ b/test/network_logger_test.dart @@ -1,12 +1,9 @@ -import 'dart:async'; - import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:instabug_flutter/instabug_flutter.dart'; import 'package:instabug_flutter/src/generated/apm.api.g.dart'; import 'package:instabug_flutter/src/generated/instabug.api.g.dart'; import 'package:instabug_flutter/src/utils/ibg_build_info.dart'; -import 'package:instabug_flutter/src/utils/network_manager.dart'; import 'package:mockito/annotations.dart'; import 'package:mockito/mockito.dart'; @@ -16,7 +13,6 @@ import 'network_logger_test.mocks.dart'; ApmHostApi, InstabugHostApi, IBGBuildInfo, - NetworkManager, ]) void main() { TestWidgetsFlutterBinding.ensureInitialized(); @@ -25,7 +21,6 @@ void main() { final mApmHost = MockApmHostApi(); final mInstabugHost = MockInstabugHostApi(); final mBuildInfo = MockIBGBuildInfo(); - final mManager = MockNetworkManager(); final logger = NetworkLogger(); final data = NetworkData( @@ -37,21 +32,11 @@ void main() { setUpAll(() { APM.$setHostApi(mApmHost); NetworkLogger.$setHostApi(mInstabugHost); - NetworkLogger.$setManager(mManager); IBGBuildInfo.setInstance(mBuildInfo); }); - setUp(() { - reset(mApmHost); - reset(mInstabugHost); - reset(mBuildInfo); - reset(mManager); - }); - test('[networkLog] should call 1 host method on iOS', () async { when(mBuildInfo.isAndroid).thenReturn(false); - when(mManager.obfuscateLog(data)).thenReturn(data); - when(mManager.omitLog(data)).thenReturn(false); await logger.networkLog(data); @@ -66,8 +51,6 @@ void main() { test('[networkLog] should call 2 host methods on Android', () async { when(mBuildInfo.isAndroid).thenReturn(true); - when(mManager.obfuscateLog(data)).thenReturn(data); - when(mManager.omitLog(data)).thenReturn(false); await logger.networkLog(data); @@ -79,68 +62,4 @@ void main() { mApmHost.networkLogAndroid(data.toJson()), ).called(1); }); - - test('[networkLog] should obfuscate network data before logging', () async { - final obfuscated = data.copyWith(requestBody: 'obfuscated'); - - when(mBuildInfo.isAndroid).thenReturn(true); - when(mManager.obfuscateLog(data)).thenReturn(obfuscated); - when(mManager.omitLog(data)).thenReturn(false); - - await logger.networkLog(data); - - verify( - mManager.obfuscateLog(data), - ).called(1); - - verify( - mInstabugHost.networkLog(obfuscated.toJson()), - ).called(1); - - verify( - mApmHost.networkLogAndroid(obfuscated.toJson()), - ).called(1); - }); - - test('[networkLog] should not log data if it should be omitted', () async { - const omit = true; - - when(mBuildInfo.isAndroid).thenReturn(true); - when(mManager.obfuscateLog(data)).thenReturn(data); - when(mManager.omitLog(data)).thenReturn(omit); - - await logger.networkLog(data); - - verify( - mManager.omitLog(data), - ).called(1); - - verifyNever( - mInstabugHost.networkLog(data.toJson()), - ); - - verifyNever( - mApmHost.networkLogAndroid(data.toJson()), - ); - }); - - test('[obfuscateLog] should set obfuscation callback on manager', () async { - FutureOr callback(NetworkData data) => data; - - NetworkLogger.obfuscateLog(callback); - - verify( - mManager.setObfuscateLogCallback(callback), - ).called(1); - }); - - test('[omitLog] should set omission callback on manager', () async { - FutureOr callback(NetworkData data) => true; - - NetworkLogger.omitLog(callback); - - verify( - mManager.setOmitLogCallback(callback), - ).called(1); - }); } diff --git a/test/network_manager_test.dart b/test/network_manager_test.dart deleted file mode 100644 index 31776c7ea..000000000 --- a/test/network_manager_test.dart +++ /dev/null @@ -1,79 +0,0 @@ -import 'dart:async'; - -import 'package:flutter/widgets.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:instabug_flutter/instabug_flutter.dart'; -import 'package:instabug_flutter/src/utils/network_manager.dart'; - -void main() { - TestWidgetsFlutterBinding.ensureInitialized(); - WidgetsFlutterBinding.ensureInitialized(); - - final data = NetworkData( - url: "https://httpbin.org/get", - method: "GET", - startTime: DateTime.now(), - ); - late NetworkManager manager; - - setUp(() { - manager = NetworkManager(); - }); - - test('[obfuscateLog] should return same data when obfuscate log callback', - () async { - final result = await manager.obfuscateLog(data); - - expect(result, equals(data)); - }); - - test( - '[obfuscateLog] should obfuscate data when [setObfuscateLogCallback] has set a callback', - () async { - final obfuscated = data.copyWith(requestBody: 'obfuscated'); - final completer = Completer(); - FutureOr callback(NetworkData data) { - completer.complete(data); - return obfuscated; - } - - manager.setObfuscateLogCallback(callback); - - final result = await manager.obfuscateLog(data); - - expect(completer.isCompleted, isTrue); - - expect(await completer.future, data); - - expect(result, equals(obfuscated)); - }); - - test('[omitLog] should return false when no omit log callback', () async { - const expected = false; - - final result = await manager.omitLog(data); - - expect(result, equals(expected)); - }); - - test( - '[omitLog] should use omit callback when [setOmitLogCallback] has set a callback', - () async { - const omit = true; - final completer = Completer(); - FutureOr callback(NetworkData data) { - completer.complete(data); - return omit; - } - - manager.setOmitLogCallback(callback); - - final result = await manager.omitLog(data); - - expect(completer.isCompleted, isTrue); - - expect(await completer.future, data); - - expect(result, equals(omit)); - }); -}