Skip to content

Commit 5d0ee74

Browse files
Merge pull request #1180 from BranchMetrics/SDK-1391-empty-response-fields
SDK-1391 : Don't Delete response fields from shared preference if the…
2 parents 45d2f18 + 02d8a03 commit 5d0ee74

File tree

4 files changed

+89
-10
lines changed

4 files changed

+89
-10
lines changed

Branch-SDK/BranchOpenRequest.m

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -161,16 +161,22 @@ - (void)processResponse:(BNCServerResponse *)response error:(NSError *)error {
161161
if ([userIdentity isKindOfClass:[NSNumber class]]) {
162162
userIdentity = [userIdentity stringValue];
163163
}
164-
165-
preferenceHelper.randomizedDeviceToken = data[BRANCH_RESPONSE_KEY_RANDOMIZED_DEVICE_TOKEN];
166-
if (!preferenceHelper.randomizedDeviceToken) {
167-
// fallback to deprecated name. Fingerprinting was removed long ago, hence the name change.
168-
preferenceHelper.randomizedDeviceToken = data[@"device_fingerprint_id"];
169-
}
170164

171-
preferenceHelper.userUrl = data[BRANCH_RESPONSE_KEY_USER_URL];
165+
166+
if ([data objectForKey:BRANCH_RESPONSE_KEY_RANDOMIZED_DEVICE_TOKEN]) {
167+
preferenceHelper.randomizedDeviceToken = data[BRANCH_RESPONSE_KEY_RANDOMIZED_DEVICE_TOKEN];
168+
if (!preferenceHelper.randomizedDeviceToken) {
169+
// fallback to deprecated name. Fingerprinting was removed long ago, hence the name change.
170+
preferenceHelper.randomizedDeviceToken = data[@"device_fingerprint_id"];
171+
}
172+
}
173+
174+
if (data[BRANCH_RESPONSE_KEY_USER_URL]) {
175+
preferenceHelper.userUrl = data[BRANCH_RESPONSE_KEY_USER_URL];
176+
}
172177
preferenceHelper.userIdentity = userIdentity;
173-
preferenceHelper.sessionID = data[BRANCH_RESPONSE_KEY_SESSION_ID];
178+
if ([data objectForKey:BRANCH_RESPONSE_KEY_SESSION_ID])
179+
preferenceHelper.sessionID = data[BRANCH_RESPONSE_KEY_SESSION_ID];
174180
preferenceHelper.previousAppBuildDate = [BNCApplication currentApplication].currentBuildDate;
175181

176182

Branch-SDK/BranchSetIdentityRequest.m

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,11 @@ - (void)processResponse:(BNCServerResponse *)response error:(NSError *)error {
5252
}
5353

5454
BNCPreferenceHelper *preferenceHelper = [BNCPreferenceHelper sharedInstance];
55-
preferenceHelper.randomizedBundleToken = BNCStringFromWireFormat(response.data[BRANCH_RESPONSE_KEY_RANDOMIZED_BUNDLE_TOKEN]);
56-
preferenceHelper.userUrl = response.data[BRANCH_RESPONSE_KEY_USER_URL];
55+
if (response.data[BRANCH_RESPONSE_KEY_RANDOMIZED_BUNDLE_TOKEN])
56+
preferenceHelper.randomizedBundleToken = BNCStringFromWireFormat(response.data[BRANCH_RESPONSE_KEY_RANDOMIZED_BUNDLE_TOKEN]);
57+
if (response.data[BRANCH_RESPONSE_KEY_USER_URL]) {
58+
preferenceHelper.userUrl = response.data[BRANCH_RESPONSE_KEY_USER_URL];
59+
}
5760
preferenceHelper.userIdentity = self.userId;
5861
if (response.data[BRANCH_RESPONSE_KEY_SESSION_ID]) {
5962
preferenceHelper.sessionID = response.data[BRANCH_RESPONSE_KEY_SESSION_ID];

Branch-TestBed/Branch-SDK-Tests/BranchOpenRequestTests.m

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,4 +499,52 @@ - (void)testOpenWhenNotReferrable {
499499
[self awaitExpectations];
500500
}
501501

502+
- (void)testEmptyResponseFields {
503+
NSString * DEVICE_TOKEN = @"foo-token";
504+
NSString * USER_URL = @"http://foo";
505+
NSString * DEVELOPER_ID = @"foo";
506+
NSString * SESSION_ID = @"foo-session";
507+
NSString * IDENTITY = @"branch-id";
508+
509+
BNCServerResponse *response = [[BNCServerResponse alloc] init];
510+
response.data = @{
511+
BRANCH_RESPONSE_KEY_RANDOMIZED_DEVICE_TOKEN: DEVICE_TOKEN,
512+
BRANCH_RESPONSE_KEY_USER_URL: USER_URL,
513+
BRANCH_RESPONSE_KEY_DEVELOPER_IDENTITY: DEVELOPER_ID,
514+
BRANCH_RESPONSE_KEY_SESSION_ID: SESSION_ID,
515+
BRANCH_RESPONSE_KEY_RANDOMIZED_BUNDLE_TOKEN: IDENTITY
516+
};
517+
518+
BNCPreferenceHelper *preferenceHelper = [BNCPreferenceHelper sharedInstance];
519+
520+
XCTestExpectation *openExpectation = [self expectationWithDescription:@"OpenRequest Expectation"];
521+
BranchOpenRequest *request = [[BranchOpenRequest alloc] initWithCallback:^(BOOL success, NSError *error) {
522+
XCTAssertNil(error);
523+
XCTAssertTrue(success);
524+
[self safelyFulfillExpectation:openExpectation];
525+
} isInstall:NO];
526+
527+
[request processResponse:response error:nil];
528+
529+
[self awaitExpectations];
530+
531+
XCTAssertEqualObjects(preferenceHelper.randomizedDeviceToken, DEVICE_TOKEN);
532+
XCTAssertEqualObjects(preferenceHelper.userUrl, USER_URL);
533+
XCTAssertEqualObjects(preferenceHelper.userIdentity, DEVELOPER_ID);
534+
XCTAssertEqualObjects(preferenceHelper.sessionID, SESSION_ID);
535+
XCTAssertEqualObjects(preferenceHelper.randomizedBundleToken, IDENTITY);
536+
XCTAssertNil(preferenceHelper.sessionParams);
537+
XCTAssertNil(preferenceHelper.linkClickIdentifier);
538+
XCTAssertNil(preferenceHelper.installParams);
539+
540+
// Now call processResponse with empty fields again.
541+
response.data = @{};
542+
[request processResponse:response error:nil];
543+
544+
XCTAssertNotNil(preferenceHelper.randomizedDeviceToken);
545+
XCTAssertNotNil(preferenceHelper.userUrl);
546+
XCTAssertNotNil(preferenceHelper.sessionID);
547+
XCTAssertNotNil(preferenceHelper.randomizedBundleToken);
548+
}
549+
502550
@end

Branch-TestBed/Branch-SDK-Tests/BranchSetIdentityRequestTests.m

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,4 +156,26 @@ - (void)testErrorFollowedBySuccess {
156156
XCTAssertEqualObjects(preferenceHelper.installParams, RESPONSE_INSTALL_PARAMS);
157157
}
158158

159+
160+
- (void)testEmptyResponseFieldsAfterSetIdentity {
161+
162+
BNCServerResponse *response = [[BNCServerResponse alloc] init];
163+
BNCPreferenceHelper *preferenceHelper = [BNCPreferenceHelper sharedInstance];
164+
165+
__block NSInteger callbackCount = 0;
166+
167+
BranchSetIdentityRequest *request = [[BranchSetIdentityRequest alloc] initWithUserId:IDENTITY_TEST_USER_ID callback:^(NSDictionary *params, NSError *error) {
168+
callbackCount++;
169+
XCTAssertNil(error);
170+
}];
171+
172+
response.data = @{};
173+
[request processResponse:response error:nil];
174+
175+
XCTAssertNotNil(preferenceHelper.randomizedDeviceToken);
176+
XCTAssertNotNil(preferenceHelper.userUrl);
177+
XCTAssertNotNil(preferenceHelper.sessionID);
178+
XCTAssertNotNil(preferenceHelper.randomizedBundleToken);
179+
}
180+
159181
@end

0 commit comments

Comments
 (0)