diff --git a/android/native.gradle b/android/native.gradle index 39034d6035..0e86a4edff 100644 --- a/android/native.gradle +++ b/android/native.gradle @@ -1,5 +1,5 @@ project.ext.instabug = [ - version: '13.4.0' + version: '13.3.0' ] dependencies { diff --git a/android/src/main/java/com/instabug/reactlibrary/Constants.java b/android/src/main/java/com/instabug/reactlibrary/Constants.java index f00d4475c4..f78d3a732d 100644 --- a/android/src/main/java/com/instabug/reactlibrary/Constants.java +++ b/android/src/main/java/com/instabug/reactlibrary/Constants.java @@ -9,7 +9,4 @@ final class Constants { final static String IBG_ON_NEW_MESSAGE_HANDLER = "IBGonNewMessageHandler"; final static String IBG_ON_NEW_REPLY_RECEIVED_CALLBACK = "IBGOnNewReplyReceivedCallback"; - - final static String IBG_ON_NEW_W3C_FLAGS_UPDATE_RECEIVED_CALLBACK = "IBGOnNewW3CFlagsUpdateReceivedCallback"; - } diff --git a/android/src/main/java/com/instabug/reactlibrary/RNInstabugAPMModule.java b/android/src/main/java/com/instabug/reactlibrary/RNInstabugAPMModule.java index 7a73e1f649..e2ff10b991 100644 --- a/android/src/main/java/com/instabug/reactlibrary/RNInstabugAPMModule.java +++ b/android/src/main/java/com/instabug/reactlibrary/RNInstabugAPMModule.java @@ -9,16 +9,17 @@ import com.facebook.react.bridge.Promise; import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; -import com.facebook.react.bridge.ReadableMap; import com.instabug.apm.APM; import com.instabug.apm.model.ExecutionTrace; import com.instabug.apm.networking.APMNetworkLogger; import com.instabug.apm.networkinterception.cp.APMCPNetworkLog; -import com.instabug.reactlibrary.utils.EventEmitterModule; -import com.instabug.apm.networkinterception.cp.APMCPNetworkLog; import com.instabug.reactlibrary.utils.MainThreadHandler; +import org.json.JSONException; +import org.json.JSONObject; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashMap; @@ -27,7 +28,7 @@ import static com.instabug.reactlibrary.utils.InstabugUtil.getMethod; -public class RNInstabugAPMModule extends EventEmitterModule { +public class RNInstabugAPMModule extends ReactContextBaseJavaModule { public RNInstabugAPMModule(ReactApplicationContext reactApplicationContext) { super(reactApplicationContext); @@ -329,41 +330,14 @@ private void networkLogAndroid(final double requestStartTime, final double statusCode, final String responseContentType, @Nullable final String errorDomain, - @Nullable final ReadableMap w3cAttributes, @Nullable final String gqlQueryName, - @Nullable final String serverErrorMessage - ) { + @Nullable final String serverErrorMessage) { try { APMNetworkLogger networkLogger = new APMNetworkLogger(); final boolean hasError = errorDomain != null && !errorDomain.isEmpty(); final String errorMessage = hasError ? errorDomain : null; - Boolean isW3cHeaderFound=false; - Long partialId=null; - Long networkStartTimeInSeconds=null; - - - try { - if (w3cAttributes.hasKey("isW3cHeaderFound")) { - isW3cHeaderFound = w3cAttributes.getBoolean("isW3cHeaderFound"); - } - if (w3cAttributes.hasKey("partialId")) { - partialId =(long) w3cAttributes.getDouble("partialId"); - networkStartTimeInSeconds = (long) w3cAttributes.getDouble("networkStartTimeInSeconds"); - } - - } catch (Exception e) { - e.printStackTrace(); - } - APMCPNetworkLog.W3CExternalTraceAttributes w3cExternalTraceAttributes = - new APMCPNetworkLog.W3CExternalTraceAttributes( - isW3cHeaderFound, - partialId, - networkStartTimeInSeconds, - w3cAttributes.getString("w3cGeneratedHeader"), - w3cAttributes.getString("w3cCaughtHeader") - ); try { Method method = getMethod(Class.forName("com.instabug.apm.networking.APMNetworkLogger"), "log", long.class, long.class, String.class, String.class, long.class, String.class, String.class, String.class, String.class, String.class, long.class, int.class, String.class, String.class, String.class, String.class, APMCPNetworkLog.W3CExternalTraceAttributes.class); if (method != null) { @@ -385,7 +359,7 @@ private void networkLogAndroid(final double requestStartTime, errorMessage, gqlQueryName, serverErrorMessage, - w3cExternalTraceAttributes + null ); } else { Log.e("IB-CP-Bridge", "APMNetworkLogger.log was not found by reflection"); diff --git a/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java b/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java index 9c901cb7a5..f936eaa12e 100644 --- a/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java +++ b/android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java @@ -8,7 +8,6 @@ import android.util.Log; import android.view.View; -import androidx.annotation.NonNull; import androidx.annotation.UiThread; import com.facebook.react.bridge.Arguments; @@ -23,8 +22,6 @@ import com.facebook.react.bridge.WritableNativeArray; import com.facebook.react.bridge.WritableNativeMap; import com.facebook.react.uimanager.UIManagerModule; -import com.instabug.apm.InternalAPM; -import com.instabug.apm.configuration.cp.APMFeature; import com.instabug.library.Feature; import com.instabug.library.Instabug; import com.instabug.library.InstabugColorTheme; @@ -33,11 +30,6 @@ import com.instabug.library.LogLevel; import com.instabug.library.ReproConfigurations; import com.instabug.library.core.InstabugCore; -import com.instabug.library.internal.crossplatform.CoreFeature; -import com.instabug.library.internal.crossplatform.CoreFeaturesState; -import com.instabug.library.internal.crossplatform.FeaturesStateListener; -import com.instabug.library.internal.crossplatform.InternalCore; -import com.instabug.library.featuresflags.model.IBGFeatureFlag; import com.instabug.library.featuresflags.model.IBGFeatureFlag; import com.instabug.library.internal.module.InstabugLocale; import com.instabug.library.invocation.InstabugInvocationEvent; @@ -1156,105 +1148,6 @@ public void run() { } }); } - /** - * Register a listener for W3C flags value change - */ - @ReactMethod - public void registerW3CFlagsChangeListener(){ - - MainThreadHandler.runOnMainThread(new Runnable() { - @Override - public void run() { - try { - InternalCore.INSTANCE._setFeaturesStateListener(new FeaturesStateListener() { - @Override - public void invoke(@NonNull CoreFeaturesState featuresState) { - WritableMap params = Arguments.createMap(); - params.putBoolean("isW3ExternalTraceIDEnabled", featuresState.isW3CExternalTraceIdEnabled()); - params.putBoolean("isW3ExternalGeneratedHeaderEnabled", featuresState.isAttachingGeneratedHeaderEnabled()); - params.putBoolean("isW3CaughtHeaderEnabled", featuresState.isAttachingCapturedHeaderEnabled()); - - sendEvent(Constants.IBG_ON_NEW_W3C_FLAGS_UPDATE_RECEIVED_CALLBACK, params); - } - }); - } - catch (Exception e) { - e.printStackTrace(); - } - - } - - }); - } - - - /** - * Get first time Value of W3ExternalTraceID flag - */ - @ReactMethod - public void isW3ExternalTraceIDEnabled(Promise promise){ - - MainThreadHandler.runOnMainThread(new Runnable() { - @Override - public void run() { - try { - promise.resolve(InternalCore.INSTANCE._isFeatureEnabled(CoreFeature.W3C_EXTERNAL_TRACE_ID)); - } - catch (Exception e) { - e.printStackTrace(); - promise.resolve(false); - } - - } - - }); - } - - - /** - * Get first time Value of W3ExternalGeneratedHeader flag - */ - @ReactMethod - public void isW3ExternalGeneratedHeaderEnabled(Promise promise){ - - MainThreadHandler.runOnMainThread(new Runnable() { - @Override - public void run() { - try { - promise.resolve(InternalCore.INSTANCE._isFeatureEnabled(CoreFeature.W3C_ATTACHING_GENERATED_HEADER)); - } - catch (Exception e) { - e.printStackTrace(); - promise.resolve(false); - } - - } - - }); - } - - /** - * Get first time Value of W3CaughtHeader flag - */ - @ReactMethod - public void isW3CaughtHeaderEnabled(Promise promise){ - - MainThreadHandler.runOnMainThread(new Runnable() { - @Override - public void run() { - try { - promise.resolve(InternalCore.INSTANCE._isFeatureEnabled(CoreFeature.W3C_ATTACHING_CAPTURED_HEADER)); - } - catch (Exception e) { - e.printStackTrace(); - promise.resolve(false); - } - - } - - }); - } - /** * Map between the exported JS constant and the arg key in {@link ArgsRegistry}. diff --git a/android/src/test/java/com/instabug/reactlibrary/RNInstabugAPMModuleTest.java b/android/src/test/java/com/instabug/reactlibrary/RNInstabugAPMModuleTest.java index 85ca1384d1..5045f929e6 100644 --- a/android/src/test/java/com/instabug/reactlibrary/RNInstabugAPMModuleTest.java +++ b/android/src/test/java/com/instabug/reactlibrary/RNInstabugAPMModuleTest.java @@ -204,6 +204,4 @@ public void testSetFlowAttribute() { verify(APM.class, times(1)); APM.endUITrace(); } - - } diff --git a/android/src/test/java/com/instabug/reactlibrary/RNInstabugReactnativeModuleTest.java b/android/src/test/java/com/instabug/reactlibrary/RNInstabugReactnativeModuleTest.java index e8aad5b0c5..b9bf2308cc 100644 --- a/android/src/test/java/com/instabug/reactlibrary/RNInstabugReactnativeModuleTest.java +++ b/android/src/test/java/com/instabug/reactlibrary/RNInstabugReactnativeModuleTest.java @@ -18,9 +18,6 @@ import com.instabug.library.IssueType; import com.instabug.library.ReproConfigurations; import com.instabug.library.ReproMode; -import com.instabug.library.internal.crossplatform.CoreFeature; -import com.instabug.library.internal.crossplatform.InternalCore; -import com.instabug.library.featuresflags.model.IBGFeatureFlag; import com.instabug.library.featuresflags.model.IBGFeatureFlag; import com.instabug.library.internal.module.InstabugLocale; import com.instabug.library.ui.onboarding.WelcomeMessage; @@ -638,28 +635,4 @@ public void testWillRedirectToStore() { // then mockInstabug.verify(() -> Instabug.willRedirectToStore()); } - @Test - public void testW3CExternalTraceIDFlag(){ - Promise promise = mock(Promise.class); - InternalCore internalAPM = mock(InternalCore.class); - rnModule.isW3ExternalTraceIDEnabled(promise); - boolean expected=internalAPM._isFeatureEnabled(CoreFeature.W3C_EXTERNAL_TRACE_ID); - verify(promise).resolve(expected); - } - @Test - public void testW3CExternalGeneratedHeaderFlag(){ - Promise promise = mock(Promise.class); - InternalCore internalAPM = mock(InternalCore.class); - rnModule.isW3ExternalGeneratedHeaderEnabled(promise); - boolean expected=internalAPM._isFeatureEnabled(CoreFeature.W3C_ATTACHING_GENERATED_HEADER); - verify(promise).resolve(expected); - } - @Test - public void testW3CCaughtHeaderFlag(){ - Promise promise = mock(Promise.class); - InternalCore internalAPM = mock(InternalCore.class); - rnModule.isW3CaughtHeaderEnabled(promise); - boolean expected=internalAPM._isFeatureEnabled(CoreFeature.W3C_ATTACHING_CAPTURED_HEADER); - verify(promise).resolve(expected); - } } diff --git a/examples/default/e2e/reportBug.e2e.ts b/examples/default/e2e/reportBug.e2e.ts index 9ecc753818..08757b7884 100644 --- a/examples/default/e2e/reportBug.e2e.ts +++ b/examples/default/e2e/reportBug.e2e.ts @@ -13,9 +13,8 @@ it('reports a bug', async () => { const floatingButton = getElement('floatingButton'); await waitFor(floatingButton).toBeVisible().withTimeout(30000); await floatingButton.tap(); - const reportBugMenuItemButton = getElement('reportBugMenuItem'); - await waitFor(reportBugMenuItemButton).toBeVisible().withTimeout(30000); - await reportBugMenuItemButton.tap(); + + await getElement('reportBugMenuItem').tap(); await getElement('emailField').typeText(mockData.email); await getElement('commentField').typeText(mockData.bugComment); diff --git a/examples/default/ios/InstabugTests/InstabugAPMTests.m b/examples/default/ios/InstabugTests/InstabugAPMTests.m index 5945b2b791..dd96841dea 100644 --- a/examples/default/ios/InstabugTests/InstabugAPMTests.m +++ b/examples/default/ios/InstabugTests/InstabugAPMTests.m @@ -13,7 +13,6 @@ #import #import "Instabug/Instabug.h" #import "IBGConstants.h" -#import "RNInstabug/IBGAPM+PrivateAPIs.h" @interface InstabugAPMTests : XCTestCase @property (nonatomic, retain) InstabugAPMBridge *instabugBridge; @@ -177,6 +176,4 @@ - (void) testEndUITrace { OCMVerify([mock endUITrace]); } - - @end diff --git a/examples/default/ios/InstabugTests/InstabugCrashReportingTests.m b/examples/default/ios/InstabugTests/InstabugCrashReportingTests.m index 64aa48b7f7..0d5ac73482 100644 --- a/examples/default/ios/InstabugTests/InstabugCrashReportingTests.m +++ b/examples/default/ios/InstabugTests/InstabugCrashReportingTests.m @@ -19,13 +19,11 @@ - (void)setUp { } - (void)testSetEnabled { - - [self.bridge setEnabled:NO]; - XCTAssertFalse(IBGCrashReporting.enabled); - [self.bridge setEnabled:YES]; XCTAssertTrue(IBGCrashReporting.enabled); + [self.bridge setEnabled:NO]; + XCTAssertFalse(IBGCrashReporting.enabled); } - (void)testSendNonFatalErrorJsonCrash { diff --git a/examples/default/ios/InstabugTests/InstabugSampleTests.m b/examples/default/ios/InstabugTests/InstabugSampleTests.m index 8744ce4eb8..70ef410258 100644 --- a/examples/default/ios/InstabugTests/InstabugSampleTests.m +++ b/examples/default/ios/InstabugTests/InstabugSampleTests.m @@ -315,7 +315,7 @@ - (void)testSetWelcomeMessageMode { - (void)testNetworkLogIOS { id mIBGNetworkLogger = OCMClassMock([IBGNetworkLogger class]); - + NSString *url = @"https://api.instabug.com"; NSString *method = @"GET"; NSString *requestBody = @"requestBody"; @@ -332,12 +332,7 @@ - (void)testNetworkLogIOS { double duration = 150; NSString *gqlQueryName = nil; NSString *serverErrorMessage = nil; - NSDictionary* w3cExternalTraceAttributes = nil; - NSNumber *isW3cCaughted = nil; - NSNumber *partialID = nil; - NSNumber *timestamp= nil; - NSString *generatedW3CTraceparent= nil; - NSString *caughtedW3CTraceparent= nil; + [self.instabugBridge networkLogIOS:url method:method requestBody:requestBody @@ -353,11 +348,8 @@ - (void)testNetworkLogIOS { startTime:startTime duration:duration gqlQueryName:gqlQueryName - serverErrorMessage:serverErrorMessage - w3cExternalTraceAttributes:w3cExternalTraceAttributes - - ]; - + serverErrorMessage:serverErrorMessage]; + OCMVerify([mIBGNetworkLogger addNetworkLogWithUrl:url method:method requestBody:requestBody @@ -373,13 +365,7 @@ - (void)testNetworkLogIOS { startTime:startTime * 1000 duration:duration * 1000 gqlQueryName:gqlQueryName - serverErrorMessage:serverErrorMessage - isW3cCaughted:isW3cCaughted - partialID:partialID - timestamp:timestamp - generatedW3CTraceparent:generatedW3CTraceparent - caughtedW3CTraceparent:caughtedW3CTraceparent - ]); + serverErrorMessage:serverErrorMessage]); } - (void)testSetFileAttachment { @@ -550,63 +536,4 @@ - (void)testRemoveAllFeatureFlags { OCMVerify([mock removeAllFeatureFlags]); } - -- (void) testIsW3ExternalTraceIDEnabled { - id mock = OCMClassMock([IBGNetworkLogger class]); - NSNumber *expectedValue = @(YES); - - OCMStub([mock w3ExternalTraceIDEnabled]).andReturn([expectedValue boolValue]); - - XCTestExpectation *expectation = [self expectationWithDescription:@"Call completion handler"]; - RCTPromiseResolveBlock resolve = ^(NSNumber *result) { - XCTAssertEqualObjects(result, expectedValue); - [expectation fulfill]; - }; - - [self.instabugBridge isW3ExternalTraceIDEnabled:resolve :nil]; - - [self waitForExpectationsWithTimeout:1.0 handler:nil]; - - OCMVerify([mock w3ExternalTraceIDEnabled]); -} - -- (void) testIsW3ExternalGeneratedHeaderEnabled { - id mock = OCMClassMock([IBGNetworkLogger class]); - NSNumber *expectedValue = @(YES); - - OCMStub([mock w3ExternalGeneratedHeaderEnabled]).andReturn([expectedValue boolValue]); - - XCTestExpectation *expectation = [self expectationWithDescription:@"Call completion handler"]; - RCTPromiseResolveBlock resolve = ^(NSNumber *result) { - XCTAssertEqualObjects(result, expectedValue); - [expectation fulfill]; - }; - - [self.instabugBridge isW3ExternalGeneratedHeaderEnabled:resolve :nil]; - - [self waitForExpectationsWithTimeout:1.0 handler:nil]; - - OCMVerify([mock w3ExternalGeneratedHeaderEnabled]); -} - -- (void) testIsW3CaughtHeaderEnabled { - id mock = OCMClassMock([IBGNetworkLogger class]); - NSNumber *expectedValue = @(YES); - - OCMStub([mock w3CaughtHeaderEnabled]).andReturn([expectedValue boolValue]); - - XCTestExpectation *expectation = [self expectationWithDescription:@"Call completion handler"]; - RCTPromiseResolveBlock resolve = ^(NSNumber *result) { - XCTAssertEqualObjects(result, expectedValue); - [expectation fulfill]; - }; - - [self.instabugBridge isW3CaughtHeaderEnabled:resolve :nil]; - - [self waitForExpectationsWithTimeout:1.0 handler:nil]; - - OCMVerify([mock w3CaughtHeaderEnabled]); -} - - @end diff --git a/examples/default/ios/InstabugTests/RNInstabugTests.m b/examples/default/ios/InstabugTests/RNInstabugTests.m index 930da52ca5..cde248ad30 100644 --- a/examples/default/ios/InstabugTests/RNInstabugTests.m +++ b/examples/default/ios/InstabugTests/RNInstabugTests.m @@ -69,7 +69,7 @@ - (void)testInitWithLogsLevel { - (void) testSetCodePushVersion { NSString *codePushVersion = @"1.0.0(1)"; [RNInstabug setCodePushVersion:codePushVersion]; - + OCMVerify([self.mInstabug setCodePushVersion:codePushVersion]); } diff --git a/examples/default/ios/Podfile.lock b/examples/default/ios/Podfile.lock index c1e706171c..1da6e558ee 100644 --- a/examples/default/ios/Podfile.lock +++ b/examples/default/ios/Podfile.lock @@ -38,12 +38,12 @@ PODS: - hermes-engine (0.72.3): - hermes-engine/Pre-built (= 0.72.3) - hermes-engine/Pre-built (0.72.3) - - Instabug (13.4.0) + - Instabug (13.3.0) - instabug-reactnative-ndk (0.1.0): - RCT-Folly (= 2021.07.22.00) - React-Core - libevent (2.1.12) - - OCMock (3.9.4) + - OCMock (3.9.3) - RCT-Folly (2021.07.22.00): - boost - DoubleConversion @@ -476,7 +476,7 @@ PODS: - RCT-Folly (= 2021.07.22.00) - React-Core - RNInstabug (13.3.0): - - Instabug (= 13.4.0) + - Instabug (= 13.3.0) - React-Core - RNReanimated (3.5.4): - DoubleConversion @@ -704,10 +704,10 @@ SPEC CHECKSUMS: Google-Maps-iOS-Utils: f77eab4c4326d7e6a277f8e23a0232402731913a GoogleMaps: 032f676450ba0779bd8ce16840690915f84e57ac hermes-engine: 10fbd3f62405c41ea07e71973ea61e1878d07322 - Instabug: 183aa1e038d01ddc000f06835f46a9ea1f6c992b + Instabug: 4f26295103a330ec0236918359eef7ccaa74e2fa instabug-reactnative-ndk: 960119a69380cf4cbe47ccd007c453f757927d17 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 - OCMock: 589f2c84dacb1f5aaf6e4cec1f292551fe748e74 + OCMock: 300b1b1b9155cb6378660b981c2557448830bdc6 RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 RCTRequired: a2faf4bad4e438ca37b2040cb8f7799baa065c18 RCTTypeSafety: cb09f3e4747b6d18331a15eb05271de7441ca0b3 @@ -748,7 +748,7 @@ SPEC CHECKSUMS: ReactCommon: 3ccb8fb14e6b3277e38c73b0ff5e4a1b8db017a9 RNCClipboard: 41d8d918092ae8e676f18adada19104fa3e68495 RNGestureHandler: 6e46dde1f87e5f018a54fe5d40cd0e0b942b49ee - RNInstabug: 98a04a3cf14303bc172a49079fee36c5158b1799 + RNInstabug: a4ac0bd09123f6be7d58be541dc220acbaff8dc3 RNReanimated: ab2e96c6d5591c3dfbb38a464f54c8d17fb34a87 RNScreens: b21dc57dfa2b710c30ec600786a3fc223b1b92e7 RNSVG: 80584470ff1ffc7994923ea135a3e5ad825546b9 diff --git a/examples/default/src/screens/apm/NetworkScreen.tsx b/examples/default/src/screens/apm/NetworkScreen.tsx index 422f16254b..40ad2b5faf 100644 --- a/examples/default/src/screens/apm/NetworkScreen.tsx +++ b/examples/default/src/screens/apm/NetworkScreen.tsx @@ -8,7 +8,6 @@ import { HStack, VStack } from 'native-base'; import { gql, request } from 'graphql-request'; import { CustomButton } from '../../components/CustomButton'; import axios from 'axios'; -import { ListTile } from '../../components/ListTile'; export const NetworkScreen: React.FC = () => { const [endpointUrl, setEndpointUrl] = useState(''); @@ -90,14 +89,6 @@ export const NetworkScreen: React.FC = () => { }; const { data, isError, isSuccess, isLoading, refetch } = useQuery('helloQuery', fetchGraphQlData); - const simulateNetworkRequest = () => { - axios.get('https://httpbin.org/anything', { - headers: { traceparent: 'Caught Header Example' }, - }); - }; - const simulateNetworkRequestWithoutHeader = () => { - axios.get('https://httpbin.org/anything'); - }; return ( @@ -115,14 +106,7 @@ export const NetworkScreen: React.FC = () => { onPress={sendRequestToUrlUsingAxios} title="Send Request To Url Using Axios" /> - simulateNetworkRequest()} - /> - simulateNetworkRequestWithoutHeader()} - /> + refetch} title="Reload GraphQL" /> {isLoading && Loading...} diff --git a/ios/RNInstabug/InstabugAPMBridge.m b/ios/RNInstabug/InstabugAPMBridge.m index daea8b4c1a..0324be4a8b 100644 --- a/ios/RNInstabug/InstabugAPMBridge.m +++ b/ios/RNInstabug/InstabugAPMBridge.m @@ -8,7 +8,6 @@ #import #import #import -#import "Util/IBGAPM+PrivateAPIs.h" @implementation InstabugAPMBridge @@ -111,9 +110,6 @@ - (id) init } - - - @synthesize description; @synthesize hash; diff --git a/ios/RNInstabug/InstabugReactBridge.h b/ios/RNInstabug/InstabugReactBridge.h index bca04ddfd0..a3cfc21c13 100644 --- a/ios/RNInstabug/InstabugReactBridge.h +++ b/ios/RNInstabug/InstabugReactBridge.h @@ -105,9 +105,7 @@ */ - (void)setNetworkLoggingEnabled:(BOOL)isEnabled; -- (void)isW3ExternalTraceIDEnabled:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject; -- (void)isW3ExternalGeneratedHeaderEnabled:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject; -- (void)isW3CaughtHeaderEnabled:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject; + - (void)networkLogIOS:(NSString * _Nonnull)url method:(NSString * _Nonnull)method requestBody:(NSString * _Nonnull)requestBody @@ -123,8 +121,7 @@ startTime:(double)startTime duration:(double)duration gqlQueryName:(NSString * _Nullable)gqlQueryName - serverErrorMessage:(NSString * _Nullable)serverErrorMessage -w3cExternalTraceAttributes:(NSDictionary * _Nullable)w3cExternalTraceAttributes; + serverErrorMessage:(NSString * _Nullable)serverErrorMessage; /* +------------------------------------------------------------------------+ diff --git a/ios/RNInstabug/InstabugReactBridge.m b/ios/RNInstabug/InstabugReactBridge.m index e7ca15600e..dd18513163 100644 --- a/ios/RNInstabug/InstabugReactBridge.m +++ b/ios/RNInstabug/InstabugReactBridge.m @@ -298,14 +298,7 @@ - (dispatch_queue_t)methodQueue { startTime:(double)startTime duration:(double)duration gqlQueryName:(NSString * _Nullable)gqlQueryName - serverErrorMessage:(NSString * _Nullable)serverErrorMessage - w3cExternalTraceAttributes:(NSDictionary * _Nullable)w3cExternalTraceAttributes){ - NSNumber *isW3cCaught = (w3cExternalTraceAttributes[@"isW3cHeaderFound"] != [NSNull null]) ? w3cExternalTraceAttributes[@"isW3cHeaderFound"] : nil; - NSNumber * partialID = (w3cExternalTraceAttributes[@"partialId"] != [NSNull null]) ? w3cExternalTraceAttributes[@"partialId"] : nil; - NSNumber * timestamp = (w3cExternalTraceAttributes[@"networkStartTimeInSeconds"] != [NSNull null]) ? w3cExternalTraceAttributes[@"networkStartTimeInSeconds"] : nil; - NSString * generatedW3CTraceparent = (w3cExternalTraceAttributes[@"w3cGeneratedHeader"] != [NSNull null]) ? w3cExternalTraceAttributes[@"w3cGeneratedHeader"] : nil; - NSString * caughtW3CTraceparent = (w3cExternalTraceAttributes[@"w3cCaughtHeader"] != [NSNull null]) ? w3cExternalTraceAttributes[@"w3cCaughtHeader"] : nil; - + serverErrorMessage:(NSString * _Nullable)serverErrorMessage) { [IBGNetworkLogger addNetworkLogWithUrl:url method:method requestBody:requestBody @@ -321,13 +314,7 @@ - (dispatch_queue_t)methodQueue { startTime:startTime * 1000 duration:duration * 1000 gqlQueryName:gqlQueryName - serverErrorMessage:serverErrorMessage - isW3cCaughted:isW3cCaught - partialID:partialID - timestamp:timestamp - generatedW3CTraceparent:generatedW3CTraceparent - caughtedW3CTraceparent:caughtW3CTraceparent - ]; + serverErrorMessage:serverErrorMessage]; } RCT_EXPORT_METHOD(addPrivateView: (nonnull NSNumber *)reactTag) { @@ -377,7 +364,7 @@ - (dispatch_queue_t)methodQueue { [featureFlags addObject:[[IBGFeatureFlag alloc] initWithName:key variant:variant]]; } } - + [Instabug addFeatureFlags:featureFlags]; } @@ -386,7 +373,7 @@ - (dispatch_queue_t)methodQueue { for(id item in featureFlags){ [features addObject:[[IBGFeatureFlag alloc] initWithName:item]]; } - + @try { [Instabug removeFeatureFlags:features]; } @@ -403,17 +390,6 @@ - (dispatch_queue_t)methodQueue { [Instabug willRedirectToAppStore]; } -RCT_EXPORT_METHOD(isW3ExternalTraceIDEnabled:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject) { - resolve(@(IBGNetworkLogger.w3ExternalTraceIDEnabled)); -} -RCT_EXPORT_METHOD(isW3ExternalGeneratedHeaderEnabled:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject) { - resolve(@(IBGNetworkLogger.w3ExternalGeneratedHeaderEnabled)); -} -RCT_EXPORT_METHOD(isW3CaughtHeaderEnabled:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject) { - resolve(@(IBGNetworkLogger.w3CaughtHeaderEnabled)); -} - - - (NSDictionary *)constantsToExport { return ArgsRegistry.getAll; } diff --git a/ios/RNInstabug/Util/IBGAPM+PrivateAPIs.h b/ios/RNInstabug/Util/IBGAPM+PrivateAPIs.h deleted file mode 100644 index a451a0ad50..0000000000 --- a/ios/RNInstabug/Util/IBGAPM+PrivateAPIs.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// IBGAPM+PrivateAPIs.h -// Pods -// -// Created by Instabug on 02/06/2024. -// - -//#import "IBGAPM.h" - -@interface IBGAPM (PrivateAPIs) - -@property (class, atomic, assign) BOOL networkEnabled; - - -@end diff --git a/ios/RNInstabug/Util/IBGNetworkLogger+CP.h b/ios/RNInstabug/Util/IBGNetworkLogger+CP.h index 9cd158a60d..5ae464785f 100644 --- a/ios/RNInstabug/Util/IBGNetworkLogger+CP.h +++ b/ios/RNInstabug/Util/IBGNetworkLogger+CP.h @@ -4,11 +4,6 @@ NS_ASSUME_NONNULL_BEGIN @interface IBGNetworkLogger (CP) -@property (class, atomic, assign) BOOL w3ExternalTraceIDEnabled; -@property (class, atomic, assign) BOOL w3ExternalGeneratedHeaderEnabled; -@property (class, atomic, assign) BOOL w3CaughtHeaderEnabled; - - + (void)disableAutomaticCapturingOfNetworkLogs; + (void)addNetworkLogWithUrl:(NSString *)url method:(NSString *)method @@ -27,28 +22,6 @@ NS_ASSUME_NONNULL_BEGIN gqlQueryName:(NSString * _Nullable)gqlQueryName serverErrorMessage:(NSString * _Nullable)serverErrorMessage; -+ (void)addNetworkLogWithUrl:(NSString *)url - method:(NSString *)method - requestBody:(NSString *)request - requestBodySize:(int64_t)requestBodySize - responseBody:(NSString *)response - responseBodySize:(int64_t)responseBodySize - responseCode:(int32_t)code - requestHeaders:(NSDictionary *)requestHeaders - responseHeaders:(NSDictionary *)responseHeaders - contentType:(NSString *)contentType - errorDomain:(NSString *)errorDomain - errorCode:(int32_t)errorCode - startTime:(int64_t)startTime - duration:(int64_t) duration - gqlQueryName:(NSString * _Nullable)gqlQueryName - serverErrorMessage:(NSString * _Nullable)serverErrorMessage - isW3cCaughted:(NSNumber * _Nullable)isW3cCaughted - partialID:(NSNumber * _Nullable)partialID - timestamp:(NSNumber * _Nullable)timestamp - generatedW3CTraceparent:(NSString * _Nullable)generatedW3CTraceparent - caughtedW3CTraceparent:(NSString * _Nullable)caughtedW3CTraceparent; - @end NS_ASSUME_NONNULL_END diff --git a/ios/native.rb b/ios/native.rb index c46209b912..c5188a3a73 100644 --- a/ios/native.rb +++ b/ios/native.rb @@ -1,4 +1,4 @@ -$instabug = { :version => '13.4.0' } +$instabug = { :version => '13.3.0' } def use_instabug! (spec = nil) version = $instabug[:version] diff --git a/src/models/W3cExternalTraceAttributes.ts b/src/models/W3cExternalTraceAttributes.ts deleted file mode 100644 index f4e7ab6a45..0000000000 --- a/src/models/W3cExternalTraceAttributes.ts +++ /dev/null @@ -1,22 +0,0 @@ -export type W3cExternalTraceAttributes = { - /** - * A key that determines if the traceparent header was found - */ - isW3cHeaderFound: boolean | null; - /** - * A unique identifier for the trace generated by the SDK in case of no cought header found - */ - partialId: number | null; - /** - * The start time of the network request - */ - networkStartTimeInSeconds: number | null; - /** - * The traceparent header generated by the SDK - */ - w3cGeneratedHeader: string | null; - /** - * The traceparent header received by the server - */ - w3cCaughtHeader: string | null; -}; diff --git a/src/modules/Instabug.ts b/src/modules/Instabug.ts index 0df4d3145e..29ff1d27c9 100644 --- a/src/modules/Instabug.ts +++ b/src/modules/Instabug.ts @@ -10,8 +10,7 @@ import type { NavigationAction, NavigationState as NavigationStateV4 } from 'rea import type { InstabugConfig } from '../models/InstabugConfig'; import Report from '../models/Report'; -import { emitter, NativeEvents, NativeInstabug } from '../native/NativeInstabug'; -import { registerW3CFlagsListener } from '../utils/FeatureFlags'; +import { NativeEvents, NativeInstabug, emitter } from '../native/NativeInstabug'; import { ColorTheme, Locale, @@ -68,10 +67,6 @@ export const init = (config: InstabugConfig) => { InstabugUtils.captureJsErrors(); captureUnhandledRejections(); - if (Platform.OS === 'android') { - registerW3CFlagsListener(); - } - // Default networkInterceptionMode to JavaScript if (config.networkInterceptionMode == null) { config.networkInterceptionMode = NetworkInterceptionMode.javascript; @@ -645,20 +640,3 @@ export const componentDidAppearListener = (event: ComponentDidAppearEvent) => { _lastScreen = event.componentName; } }; - -/** - * Sets listener to W3ExternalTraceID flag changes - * @param handler A callback that gets the update value of the flag - */ -export const _registerW3CFlagsChangeListener = ( - handler: (payload: { - isW3ExternalTraceIDEnabled: boolean; - isW3ExternalGeneratedHeaderEnabled: boolean; - isW3CaughtHeaderEnabled: boolean; - }) => void, -) => { - emitter.addListener(NativeEvents.ON_W3C_FLAGS_CHANGE, (payload) => { - handler(payload); - }); - NativeInstabug.registerW3CFlagsChangeListener(); -}; diff --git a/src/native/NativeAPM.ts b/src/native/NativeAPM.ts index 9fa30b702c..b1981cfe37 100644 --- a/src/native/NativeAPM.ts +++ b/src/native/NativeAPM.ts @@ -1,7 +1,5 @@ import type { NativeModule } from 'react-native'; -import { NativeEventEmitter } from 'react-native'; -import type { W3cExternalTraceAttributes } from '../models/W3cExternalTraceAttributes'; import { NativeModules } from './NativePackage'; export interface ApmNativeModule extends NativeModule { @@ -24,7 +22,6 @@ export interface ApmNativeModule extends NativeModule { statusCode: number, responseContentType: string, errorDomain: string, - w3cExternalTraceAttributes: W3cExternalTraceAttributes, gqlQueryName?: string, serverErrorMessage?: string, ): void; @@ -51,5 +48,3 @@ export interface ApmNativeModule extends NativeModule { } export const NativeAPM = NativeModules.IBGAPM; - -export const emitter = new NativeEventEmitter(NativeAPM); diff --git a/src/native/NativeInstabug.ts b/src/native/NativeInstabug.ts index 5f0628ef71..3b72f5951f 100644 --- a/src/native/NativeInstabug.ts +++ b/src/native/NativeInstabug.ts @@ -11,7 +11,6 @@ import type { WelcomeMessageMode, } from '../utils/Enums'; import type { NativeConstants } from './NativeConstants'; -import type { W3cExternalTraceAttributes } from '../models/W3cExternalTraceAttributes'; import { NativeModules } from './NativePackage'; export interface InstabugNativeModule extends NativeModule { @@ -68,7 +67,6 @@ export interface InstabugNativeModule extends NativeModule { duration: number, gqlQueryName: string | undefined, serverErrorMessage: string | undefined, - W3cExternalTraceAttributes: W3cExternalTraceAttributes, ): void; setNetworkLoggingEnabled(isEnabled: boolean): void; @@ -142,23 +140,12 @@ export interface InstabugNativeModule extends NativeModule { addFileAttachmentWithURLToReport(url: string, filename?: string): void; addFileAttachmentWithDataToReport(data: string, filename?: string): void; willRedirectToStore(): void; - - // W3C Feature Flags - isW3ExternalTraceIDEnabled(): Promise; - - isW3ExternalGeneratedHeaderEnabled(): Promise; - - isW3CaughtHeaderEnabled(): Promise; - - // W3C Feature Flags Listener for Android - registerW3CFlagsChangeListener(): void; } export const NativeInstabug = NativeModules.Instabug; export enum NativeEvents { PRESENDING_HANDLER = 'IBGpreSendingHandler', - ON_W3C_FLAGS_CHANGE = 'IBGOnNewW3CFlagsUpdateReceivedCallback', } export const emitter = new NativeEventEmitter(NativeInstabug); diff --git a/src/utils/FeatureFlags.ts b/src/utils/FeatureFlags.ts deleted file mode 100644 index 479ab7ba47..0000000000 --- a/src/utils/FeatureFlags.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { NativeInstabug } from '../native/NativeInstabug'; -import { _registerW3CFlagsChangeListener } from '../modules/Instabug'; - -export const FeatureFlags = { - isW3ExternalTraceID: () => NativeInstabug.isW3ExternalTraceIDEnabled(), - isW3ExternalGeneratedHeader: () => NativeInstabug.isW3ExternalGeneratedHeaderEnabled(), - isW3CaughtHeader: () => NativeInstabug.isW3CaughtHeaderEnabled(), -}; - -export const registerW3CFlagsListener = () => { - _registerW3CFlagsChangeListener( - (res: { - isW3ExternalTraceIDEnabled: boolean; - isW3ExternalGeneratedHeaderEnabled: boolean; - isW3CaughtHeaderEnabled: boolean; - }) => { - FeatureFlags.isW3ExternalTraceID = async () => { - return res.isW3ExternalTraceIDEnabled; - }; - FeatureFlags.isW3ExternalGeneratedHeader = async () => { - return res.isW3ExternalGeneratedHeaderEnabled; - }; - FeatureFlags.isW3CaughtHeader = async () => { - return res.isW3CaughtHeaderEnabled; - }; - }, - ); -}; diff --git a/src/utils/InstabugUtils.ts b/src/utils/InstabugUtils.ts index df19f0d42a..d4238f14f0 100644 --- a/src/utils/InstabugUtils.ts +++ b/src/utils/InstabugUtils.ts @@ -126,44 +126,6 @@ export async function sendCrashReport( return remoteSenderCallback(jsonObject); } -/** - * Generate random 32 bit unsigned integer Hexadecimal (8 chars) lower case letters - * Should not return all zeros - */ -export const generateTracePartialId = () => { - let randomNumber: number; - let hexString: string; - - do { - randomNumber = Math.floor(Math.random() * 0xffffffff); - hexString = randomNumber.toString(16).padStart(8, '0'); - } while (hexString === '00000000'); - - return { numberPartilId: randomNumber, hexStringPartialId: hexString.toLowerCase() }; -}; -/** - * Generate W3C header in the format of {version}-{trace-id}-{parent-id}-{trace-flag} - * @param networkStartTime - * @returns w3c header - */ -export const generateW3CHeader = (networkStartTime: number) => { - const { hexStringPartialId, numberPartilId } = generateTracePartialId(); - - const TRACESTATE = '4942472d'; - const VERSION = '00'; - const TRACE_FLAG = '01'; - - const timestampInSeconds = Math.floor(networkStartTime.valueOf() / 1000); - const hexaDigitsTimestamp = timestampInSeconds.toString(16).toLowerCase(); - const traceId = `${hexaDigitsTimestamp}${hexStringPartialId}${hexaDigitsTimestamp}${hexStringPartialId}`; - const parentId = `${TRACESTATE}${hexStringPartialId}`; - - return { - timestampInSeconds, - partialId: numberPartilId, - w3cHeader: `${VERSION}-${traceId}-${parentId}-${TRACE_FLAG}`, - }; -}; export function isContentTypeNotAllowed(contentType: string) { const allowed = [ @@ -209,13 +171,6 @@ export function reportNetworkLog(network: NetworkData) { network.responseCode, network.contentType, network.errorDomain, - { - isW3cHeaderFound: network.isW3cHeaderFound, - partialId: network.partialId, - networkStartTimeInSeconds: network.networkStartTimeInSeconds, - w3cGeneratedHeader: network.w3cGeneratedHeader, - w3cCaughtHeader: network.w3cCaughtHeader, - }, network.gqlQueryName, network.serverErrorMessage, ); @@ -237,13 +192,6 @@ export function reportNetworkLog(network: NetworkData) { network.duration, network.gqlQueryName, network.serverErrorMessage, - { - isW3cHeaderFound: network.isW3cHeaderFound, - partialId: network.partialId, - networkStartTimeInSeconds: network.networkStartTimeInSeconds, - w3cGeneratedHeader: network.w3cGeneratedHeader, - w3cCaughtHeader: network.w3cCaughtHeader, - }, ); } } @@ -256,6 +204,4 @@ export default { getStackTrace, stringifyIfNotString, sendCrashReport, - generateTracePartialId, - generateW3CHeader, }; diff --git a/src/utils/XhrNetworkInterceptor.ts b/src/utils/XhrNetworkInterceptor.ts index 4443940362..98c5ef9cc5 100644 --- a/src/utils/XhrNetworkInterceptor.ts +++ b/src/utils/XhrNetworkInterceptor.ts @@ -1,7 +1,5 @@ import InstabugConstants from './InstabugConstants'; -import { stringifyIfNotString, generateW3CHeader } from './InstabugUtils'; - -import { FeatureFlags } from '../utils/FeatureFlags'; +import { stringifyIfNotString } from './InstabugUtils'; export type ProgressCallback = (totalBytesSent: number, totalBytesExpectedToSend: number) => void; export type NetworkDataCallback = (data: NetworkData) => void; @@ -24,11 +22,6 @@ export interface NetworkData { gqlQueryName?: string; serverErrorMessage: string; requestContentType: string; - isW3cHeaderFound: boolean | null; - partialId: number | null; - networkStartTimeInSeconds: number | null; - w3cGeneratedHeader: string | null; - w3cCaughtHeader: string | null; } const XMLHttpRequest = global.XMLHttpRequest; @@ -60,85 +53,8 @@ const _reset = () => { gqlQueryName: '', serverErrorMessage: '', requestContentType: '', - isW3cHeaderFound: null, - partialId: null, - networkStartTimeInSeconds: null, - w3cGeneratedHeader: null, - w3cCaughtHeader: null, }; }; -const getTraceparentHeader = async (networkData: NetworkData) => { - const [ - isW3cExternalTraceIDEnabled, - isW3cExternalGeneratedHeaderEnabled, - isW3cCaughtHeaderEnabled, - ] = await Promise.all([ - FeatureFlags.isW3ExternalTraceID(), - FeatureFlags.isW3ExternalGeneratedHeader(), - FeatureFlags.isW3CaughtHeader(), - ]); - - return injectHeaders(networkData, { - isW3cExternalTraceIDEnabled, - isW3cExternalGeneratedHeaderEnabled, - isW3cCaughtHeaderEnabled, - }); -}; - -export const injectHeaders = async ( - networkData: NetworkData, - featureFlags: { - isW3cExternalTraceIDEnabled: boolean; - isW3cExternalGeneratedHeaderEnabled: boolean; - isW3cCaughtHeaderEnabled: boolean; - }, -) => { - const { - isW3cExternalTraceIDEnabled, - isW3cExternalGeneratedHeaderEnabled, - isW3cCaughtHeaderEnabled, - } = featureFlags; - - if (!isW3cExternalTraceIDEnabled) { - return; - } - - const isHeaderFound = networkData.requestHeaders.traceparent != null; - - networkData.isW3cHeaderFound = isHeaderFound; - - const injectionMethodology = isHeaderFound - ? identifyCaughtHeader(networkData, isW3cCaughtHeaderEnabled) - : injectGeneratedData(networkData, isW3cExternalGeneratedHeaderEnabled); - return injectionMethodology; -}; - -const identifyCaughtHeader = async ( - networkData: NetworkData, - isW3cCaughtHeaderEnabled: boolean, -) => { - if (isW3cCaughtHeaderEnabled) { - networkData.w3cCaughtHeader = networkData.requestHeaders.traceparent; - return networkData.requestHeaders.traceparent; - } - return; -}; - -const injectGeneratedData = ( - networkData: NetworkData, - isW3cExternalGeneratedHeaderEnabled: boolean, -) => { - const { timestampInSeconds, partialId, w3cHeader } = generateW3CHeader(networkData.startTime); - networkData.partialId = partialId; - networkData.networkStartTimeInSeconds = timestampInSeconds; - - if (isW3cExternalGeneratedHeaderEnabled) { - networkData.w3cGeneratedHeader = w3cHeader; - return w3cHeader; - } - - return; -}; export default { setOnDoneCallback(callback: NetworkDataCallback) { @@ -175,7 +91,7 @@ export default { originalXHRSetRequestHeader.apply(this, [header, value]); }; - XMLHttpRequest.prototype.send = async function (data) { + XMLHttpRequest.prototype.send = function (data) { const cloneNetwork = JSON.parse(JSON.stringify(network)); cloneNetwork.requestBody = data ? data : ''; @@ -310,10 +226,6 @@ export default { } cloneNetwork.startTime = Date.now(); - const traceparent = await getTraceparentHeader(cloneNetwork); - if (traceparent) { - this.setRequestHeader('Traceparent', traceparent); - } originalXHRSend.apply(this, [data]); }; isInterceptorEnabled = true; diff --git a/test/mocks/mockInstabug.ts b/test/mocks/mockInstabug.ts index 7b3cf2e695..5139afcde3 100644 --- a/test/mocks/mockInstabug.ts +++ b/test/mocks/mockInstabug.ts @@ -69,10 +69,6 @@ const mockInstabug: InstabugNativeModule = { addFileAttachmentWithDataToReport: jest.fn(), setNetworkLoggingEnabled: jest.fn(), willRedirectToStore: jest.fn(), - isW3ExternalTraceIDEnabled: jest.fn(), - isW3ExternalGeneratedHeaderEnabled: jest.fn(), - isW3CaughtHeaderEnabled: jest.fn(), - registerW3CFlagsChangeListener: jest.fn(), }; export default mockInstabug; diff --git a/test/modules/Instabug.spec.ts b/test/modules/Instabug.spec.ts index ae02a8916d..fdc1b91b24 100644 --- a/test/modules/Instabug.spec.ts +++ b/test/modules/Instabug.spec.ts @@ -863,20 +863,4 @@ describe('Instabug Module', () => { Instabug.willRedirectToStore(); expect(NativeInstabug.willRedirectToStore).toBeCalledTimes(1); }); - - it('should register W3C flag listener', async () => { - const callback = jest.fn(); - Instabug._registerW3CFlagsChangeListener(callback); - - expect(NativeInstabug.registerW3CFlagsChangeListener).toBeCalledTimes(1); - }); - - it('should invoke callback on emitting the event IBGOnNewW3CFlagsUpdateReceivedCallback', () => { - const callback = jest.fn(); - Instabug._registerW3CFlagsChangeListener(callback); - emitter.emit(NativeEvents.ON_W3C_FLAGS_CHANGE); - - expect(emitter.listenerCount(NativeEvents.ON_W3C_FLAGS_CHANGE)).toBe(1); - expect(callback).toHaveBeenCalled(); - }); }); diff --git a/test/modules/NetworkLogger.spec.ts b/test/modules/NetworkLogger.spec.ts index be258d7403..71dd2dd778 100644 --- a/test/modules/NetworkLogger.spec.ts +++ b/test/modules/NetworkLogger.spec.ts @@ -30,11 +30,6 @@ describe('NetworkLogger Module', () => { startTime: 0, serverErrorMessage: '', requestContentType: 'application/json', - isW3cHeaderFound: null, - partialId: null, - networkStartTimeInSeconds: null, - w3cGeneratedHeader: null, - w3cCaughtHeader: null, }; beforeEach(() => { diff --git a/test/utils/InstabugUtils.spec.ts b/test/utils/InstabugUtils.spec.ts index fd389d7f0b..becfccc0e9 100644 --- a/test/utils/InstabugUtils.spec.ts +++ b/test/utils/InstabugUtils.spec.ts @@ -258,11 +258,6 @@ describe('reportNetworkLog', () => { errorDomain: 'errorDomain', serverErrorMessage: 'serverErrorMessage', requestContentType: 'requestContentType', - isW3cHeaderFound: null, - partialId: null, - networkStartTimeInSeconds: null, - w3cGeneratedHeader: null, - w3cCaughtHeader: null, }; it('reportNetworkLog should send network logs to native with the correct parameters on Android', () => { @@ -301,13 +296,6 @@ describe('reportNetworkLog', () => { network.responseCode, network.contentType, network.errorDomain, - { - isW3cHeaderFound: null, - partialId: null, - networkStartTimeInSeconds: null, - w3cGeneratedHeader: null, - w3cCaughtHeader: null, - }, network.gqlQueryName, network.serverErrorMessage, ); @@ -336,13 +324,6 @@ describe('reportNetworkLog', () => { network.duration, network.gqlQueryName, network.serverErrorMessage, - { - isW3cHeaderFound: null, - partialId: null, - networkStartTimeInSeconds: null, - w3cGeneratedHeader: null, - w3cCaughtHeader: null, - }, ); }); }); diff --git a/test/utils/XhrNetworkInterceptor.spec.ts b/test/utils/XhrNetworkInterceptor.spec.ts index dfb9e7f43b..10a8f1abb8 100644 --- a/test/utils/XhrNetworkInterceptor.spec.ts +++ b/test/utils/XhrNetworkInterceptor.spec.ts @@ -4,7 +4,7 @@ import nock from 'nock'; import waitForExpect from 'wait-for-expect'; import InstabugConstants from '../../src/utils/InstabugConstants'; -import Interceptor, { injectHeaders } from '../../src/utils/XhrNetworkInterceptor'; +import Interceptor from '../../src/utils/XhrNetworkInterceptor'; const url = 'http://api.instabug.com'; const method = 'GET'; @@ -293,203 +293,3 @@ describe('Network Interceptor', () => { FakeRequest.send(); }); }); - -describe('Network Interceptor W3C Headers', () => { - beforeEach(() => { - nock.cleanAll(); - }); - - it('should attach generated header if all flags are enabled on no header found', (done) => { - const featureFlags = { - isW3cExternalTraceIDEnabled: true, - isW3cExternalGeneratedHeaderEnabled: true, - isW3cCaughtHeaderEnabled: true, - }; - Interceptor.enableInterception(); - Interceptor.setOnDoneCallback((network) => { - injectHeaders(network, featureFlags); - expect(network.isW3cHeaderFound).toBe(false); - expect(network.partialId).not.toBe(null); - expect(network.networkStartTimeInSeconds).toEqual(Math.floor(network.startTime / 1000)); - expect(network.w3cGeneratedHeader).toHaveLength(55); - expect(network.w3cCaughtHeader).toBe(null); - }); - done(); - FakeRequest.mockResponse(request); - FakeRequest.open(method, url); - FakeRequest.send(); - }); - it('should attach generated header if key flag & generated header flags are enabled on no header found', (done) => { - const featureFlags = { - isW3cExternalTraceIDEnabled: true, - isW3cExternalGeneratedHeaderEnabled: true, - isW3cCaughtHeaderEnabled: false, - }; - Interceptor.enableInterception(); - Interceptor.setOnDoneCallback((network) => { - injectHeaders(network, featureFlags); - expect(network.isW3cHeaderFound).toBe(false); - expect(network.partialId).not.toBe(null); - expect(network.networkStartTimeInSeconds).toEqual(Math.floor(network.startTime / 1000)); - expect(network.w3cGeneratedHeader).toHaveLength(55); - expect(network.w3cCaughtHeader).toBe(null); - }); - done(); - FakeRequest.mockResponse(request); - FakeRequest.open(method, url); - FakeRequest.send(); - }); - - it('should not attach headers when key flag is disabled & generated, caught header flags are enabled', (done) => { - const featureFlags = { - isW3cExternalTraceIDEnabled: false, - isW3cExternalGeneratedHeaderEnabled: true, - isW3cCaughtHeaderEnabled: true, - }; - Interceptor.enableInterception(); - Interceptor.setOnDoneCallback((network) => { - injectHeaders(network, featureFlags); - expect(network.isW3cHeaderFound).toBe(null); - expect(network.partialId).toBe(null); - expect(network.networkStartTimeInSeconds).toBe(null); - expect(network.w3cGeneratedHeader).toBe(null); - expect(network.w3cCaughtHeader).toBe(null); - expect(network.requestHeaders).not.toHaveProperty('traceparent'); - - done(); - }); - FakeRequest.mockResponse(request); - FakeRequest.open(method, url); - FakeRequest.send(); - }); - it('should not attach headers when all feature flags are disabled', (done) => { - const featureFlags = { - isW3cExternalTraceIDEnabled: false, - isW3cExternalGeneratedHeaderEnabled: false, - isW3cCaughtHeaderEnabled: false, - }; - Interceptor.enableInterception(); - Interceptor.setOnDoneCallback((network) => { - injectHeaders(network, featureFlags); - expect(network.isW3cHeaderFound).toBe(null); - expect(network.partialId).toBe(null); - expect(network.networkStartTimeInSeconds).toBe(null); - expect(network.w3cGeneratedHeader).toBe(null); - expect(network.w3cCaughtHeader).toBe(null); - expect(network.requestHeaders).not.toHaveProperty('traceparent'); - - done(); - }); - FakeRequest.mockResponse(request); - FakeRequest.open(method, url); - FakeRequest.send(); - }); - it('should not attach headers when key & caught header flags are disabled and generated header flag is enabled', (done) => { - const featureFlags = { - isW3cExternalTraceIDEnabled: false, - isW3cExternalGeneratedHeaderEnabled: true, - isW3cCaughtHeaderEnabled: false, - }; - Interceptor.enableInterception(); - Interceptor.setOnDoneCallback((network) => { - injectHeaders(network, featureFlags); - expect(network.isW3cHeaderFound).toBe(null); - expect(network.partialId).toBe(null); - expect(network.networkStartTimeInSeconds).toBe(null); - expect(network.w3cGeneratedHeader).toBe(null); - expect(network.w3cCaughtHeader).toBe(null); - expect(network.requestHeaders).not.toHaveProperty('traceparent'); - done(); - }); - FakeRequest.mockResponse(request); - FakeRequest.open(method, url); - FakeRequest.send(); - }); - it('should not attach headers when key & generated header flags are disabled and caught header flag is enabled', (done) => { - const featureFlags = { - isW3cExternalTraceIDEnabled: false, - isW3cExternalGeneratedHeaderEnabled: false, - isW3cCaughtHeaderEnabled: true, - }; - Interceptor.enableInterception(); - Interceptor.setOnDoneCallback((network) => { - injectHeaders(network, featureFlags); - expect(network.isW3cHeaderFound).toBe(null); - expect(network.partialId).toBe(null); - expect(network.networkStartTimeInSeconds).toBe(null); - expect(network.w3cGeneratedHeader).toBe(null); - expect(network.w3cCaughtHeader).toBe(null); - expect(network.requestHeaders).not.toHaveProperty('traceparent'); - done(); - }); - FakeRequest.mockResponse(request); - FakeRequest.open(method, url); - FakeRequest.send(); - }); - it('should not attach headers when key flag is enabled & generated, caught header flags are disabled on header found', (done) => { - const featureFlags = { - isW3cExternalTraceIDEnabled: true, - isW3cExternalGeneratedHeaderEnabled: false, - isW3cCaughtHeaderEnabled: false, - }; - Interceptor.enableInterception(); - Interceptor.setOnDoneCallback((network) => { - network.requestHeaders.traceparent = 'caught traceparent header'; - injectHeaders(network, featureFlags); - expect(network.isW3cHeaderFound).toEqual(true); - expect(network.partialId).toBe(null); - expect(network.networkStartTimeInSeconds).toBe(null); - expect(network.w3cGeneratedHeader).toBe(null); - expect(network.w3cCaughtHeader).toBe(null); - done(); - }); - FakeRequest.mockResponse(request); - FakeRequest.open(method, url); - FakeRequest.send(); - }); - - it('should attach caught header if all flags are enabled ', (done) => { - const featureFlags = { - isW3cExternalTraceIDEnabled: true, - isW3cExternalGeneratedHeaderEnabled: true, - isW3cCaughtHeaderEnabled: true, - }; - Interceptor.enableInterception(); - Interceptor.setOnDoneCallback((network) => { - network.requestHeaders.traceparent = 'caught traceparent header'; - injectHeaders(network, featureFlags); - expect(network.isW3cHeaderFound).toBe(true); - expect(network.partialId).toBe(null); - expect(network.networkStartTimeInSeconds).toBe(null); - expect(network.w3cGeneratedHeader).toBe(null); - expect(network.w3cCaughtHeader).toBe('caught traceparent header'); - expect(network.requestHeaders).toHaveProperty('traceparent'); - done(); - }); - FakeRequest.mockResponse(request); - FakeRequest.open(method, url); - FakeRequest.send(); - }); - it('should attach caught header if key & caught header flags are enabled and generated header flag is disabled', (done) => { - const featureFlags = { - isW3cExternalTraceIDEnabled: true, - isW3cExternalGeneratedHeaderEnabled: false, - isW3cCaughtHeaderEnabled: true, - }; - Interceptor.enableInterception(); - Interceptor.setOnDoneCallback((network) => { - network.requestHeaders.traceparent = 'caught traceparent header'; - injectHeaders(network, featureFlags); - expect(network.isW3cHeaderFound).toBe(true); - expect(network.partialId).toBe(null); - expect(network.networkStartTimeInSeconds).toBe(null); - expect(network.w3cGeneratedHeader).toBe(null); - expect(network.w3cCaughtHeader).toBe('caught traceparent header'); - expect(network.requestHeaders).toHaveProperty('traceparent'); - done(); - }); - FakeRequest.mockResponse(request); - FakeRequest.open(method, url); - FakeRequest.send(); - }); -});