Skip to content

Commit 25a8a6b

Browse files
authored
Added checks for empty url and class type. Added unit tests also. (#1493)
1 parent 00ac194 commit 25a8a6b

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,17 @@ - (void)testReferringURLWithNoParams {
7979
XCTAssert([expected isEqualToDictionary:params]);
8080
}
8181

82+
- (void)testNilReferringURL {
83+
NSURL *url = nil;
84+
NSDictionary *expected = @{};
85+
86+
BNCReferringURLUtility *utility = [self referringUtilityForTests];
87+
[utility parseReferringURL:url];
88+
NSDictionary *params = [utility referringURLQueryParamsForEndpoint:openEndpoint];
89+
90+
XCTAssert([expected isEqualToDictionary:params]);
91+
}
92+
8293
- (void)testReferringURLIgnoredParam {
8394
NSURL *url = [NSURL URLWithString:@"https://bnctestbed.app.link?other=12345"];
8495
NSDictionary *expected = @{ };
@@ -228,6 +239,17 @@ - (void)testReferringURLWithGclidOverwritesValue {
228239
XCTAssert([expected2 isEqualToDictionary:params2]);
229240
}
230241

242+
- (void)testReferringURLWithMetaCampaignIdsAndInvalidURL {
243+
NSURL *url = [NSURL URLWithString:@"https://bnctestbed.app.link?al_applink_data=[]#target_url%22%3A%22http%3A%5C%2F%5C%2Fitunes.apple.com%5C%2Fapp%5C%2Fid880047117%22%2C%22extras%22%3A%7B%22fb_app_id%22%3A2020399148181142%7D%2C%22referer_app_link%22%3A%7B%22url%22%3A%22fb%3A%5C%2F%5C%2F%5C%2F%3Fapp_id%3D2020399148181142%22%2C%22app_name%22%3A%22Facebook%22%7D%2C%22acs_token%22%3A%22debuggingtoken%22%2C%22campaign_ids%22%3A%22ARFUlbyOurYrHT2DsknR7VksCSgN4tiH8TzG8RIvVoUQoYog5bVCvADGJil5kFQC6tQm-fFJQH0w8wCi3NbOmEHHrtgCNglkXNY-bECEL0aUhj908hIxnBB0tchJCqwxHjorOUqyk2v4bTF75PyWvxOksZ6uTzBmr7wJq8XnOav0bA%22%2C%22test_deeplink%22%3A1%7D"];
244+
NSDictionary *expected = @{};
245+
246+
BNCReferringURLUtility *utility = [self referringUtilityForTests];
247+
[utility parseReferringURL:url];
248+
NSDictionary *params = [utility referringURLQueryParamsForEndpoint:openEndpoint];
249+
250+
XCTAssert([expected isEqualToDictionary:params]);
251+
}
252+
231253
- (void)testReferringURLWithMetaCampaignIds {
232254
NSURL *url = [NSURL URLWithString:@"https://bnctestbed.app.link?al_applink_data=%7B%22target_url%22%3A%22http%3A%5C%2F%5C%2Fitunes.apple.com%5C%2Fapp%5C%2Fid880047117%22%2C%22extras%22%3A%7B%22fb_app_id%22%3A2020399148181142%7D%2C%22referer_app_link%22%3A%7B%22url%22%3A%22fb%3A%5C%2F%5C%2F%5C%2F%3Fapp_id%3D2020399148181142%22%2C%22app_name%22%3A%22Facebook%22%7D%2C%22acs_token%22%3A%22debuggingtoken%22%2C%22campaign_ids%22%3A%22ARFUlbyOurYrHT2DsknR7VksCSgN4tiH8TzG8RIvVoUQoYog5bVCvADGJil5kFQC6tQm-fFJQH0w8wCi3NbOmEHHrtgCNglkXNY-bECEL0aUhj908hIxnBB0tchJCqwxHjorOUqyk2v4bTF75PyWvxOksZ6uTzBmr7wJq8XnOav0bA%22%2C%22test_deeplink%22%3A1%7D"];
233255
NSDictionary *expected = @{

Sources/BranchSDK/BNCReferringURLUtility.m

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ - (void)dealloc {
4848
- (void)parseReferringURL:(NSURL *)url {
4949
[[BranchLogger shared] logVerbose:[NSString stringWithFormat:@"Parsing URL %@", url] error:nil];
5050

51+
if (!url) {
52+
[[BranchLogger shared] logVerbose:@"URL is nil" error:nil];
53+
return;
54+
}
55+
5156
NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO];
5257
for (NSURLQueryItem *item in components.queryItems) {
5358
if ([self isSupportedQueryParameter:item.name]) {
@@ -115,6 +120,11 @@ - (NSDictionary *)dictionaryFromEncodedJsonString:(NSString *)encodedJsonString
115120
if (jsonData) {
116121
NSError *error;
117122
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];
123+
if (![json isKindOfClass:[NSDictionary class]]) {
124+
[[BranchLogger shared] logVerbose:@"Encoded json string did not decode to a dictionary; skipping" error:nil];
125+
json = nil;
126+
}
127+
118128
if (!error) {
119129
return json;
120130
} else {

0 commit comments

Comments
 (0)