Skip to content

Commit 77cb81d

Browse files
committed
Added tests
1 parent 650bff1 commit 77cb81d

File tree

6 files changed

+336
-116
lines changed

6 files changed

+336
-116
lines changed

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

Lines changed: 216 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,17 @@
99
#import <XCTest/XCTest.h>
1010
#import "BNCReferringURLUtility.h"
1111
#import "BNCUrlQueryParameter.h"
12+
#import "BNCPreferenceHelper.h"
1213

1314
@interface BNCReferringURLUtility(Test)
1415

15-
- (NSMutableDictionary<NSString *, BNCUrlQueryParameter *> *)deserializeFromJson:(NSDictionary *)json;
16-
- (NSMutableDictionary *)serializeToJson:(NSMutableDictionary<NSString *, BNCUrlQueryParameter *> *)urlQueryParameters;
17-
- (NSTimeInterval)defaultValidityWindowForParam:(NSString *)paramName;
18-
- (BNCUrlQueryParameter *)findUrlQueryParam:(NSString *)paramName;
16+
- (NSString *)addGclidValueFor:(NSString *)endpoint;
17+
- (NSDictionary *)addGbraidValuesFor:(NSString *)endpoint;
1918
- (BOOL)isSupportedQueryParameter:(NSString *)param;
20-
- (NSDictionary *)addGbraidValuesFor:(NSString *)endpoint
21-
- (NSString *)addGclidValueFor:(NSString *)endpoint
19+
- (BNCUrlQueryParameter *)findUrlQueryParam:(NSString *)paramName;
20+
- (NSTimeInterval)defaultValidityWindowForParam:(NSString *)paramName;
21+
- (NSMutableDictionary *)serializeToJson:(NSMutableDictionary<NSString *, BNCUrlQueryParameter *> *)urlQueryParameters;
22+
- (NSMutableDictionary<NSString *, BNCUrlQueryParameter *> *)deserializeFromJson:(NSDictionary *)json;
2223

2324
@end
2425

@@ -28,59 +29,234 @@ @interface BNCReferringURLUtilityTests : XCTestCase
2829

2930
@implementation BNCReferringURLUtilityTests
3031

31-
//- (void)setUp {
32-
// // Put setup code here. This method is called before the invocation of each test method in the class.
33-
//}
34-
//
35-
//- (void)tearDown {
36-
// // Put teardown code here. This method is called after the invocation of each test method in the class.
37-
//}
32+
BNCPreferenceHelper *prefHelper;
33+
BNCReferringURLUtility *utility;
34+
NSString *gbraidValue;
35+
NSString *gclidValue;
3836

39-
- (void)testParseURL {
40-
NSURL *url = [NSURL URLWithString:@"https://www.branch.io?gbraid=abc123&test=456&gclid=123456789abc"];
37+
NSString *eventEndpoint;
38+
NSString *openEndpoint;
39+
40+
- (void)setUp {
41+
prefHelper = [BNCPreferenceHelper sharedInstance];
42+
prefHelper.referringURLQueryParameters = nil;
4143

42-
BNCReferringURLUtility *utility = [BNCReferringURLUtility new];
43-
[utility parseReferringURL:url];
44+
eventEndpoint = @"/v2/event";
45+
openEndpoint = @"/v1/open";
46+
47+
gclidValue = @"gclid123";
48+
gbraidValue = @"gbraid456";
4449

45-
//TODO: Check that gbraid and gclid exist
50+
NSString *urlString = [NSString stringWithFormat:@"https://www.branch.io?test=456&gbraid=%@&gclid=%@", gbraidValue, gclidValue];
51+
NSURL *url = [NSURL URLWithString:urlString];
4652

53+
utility = [BNCReferringURLUtility new];
54+
[utility parseReferringURL:url];
4755
}
4856

49-
-(void)testGetEventURLQueryParams {
50-
NSString *endpoint = @"/v2/event";
51-
NSURL *url = [NSURL URLWithString:@"https://www.branch.io?gbraid=abc123&test=456&gclid=123456789abc"];
57+
- (void)testParseURL {
58+
NSMutableDictionary *savedParams = prefHelper.referringURLQueryParameters;
5259

53-
BNCReferringURLUtility *utility = [BNCReferringURLUtility new];
54-
[utility parseReferringURL:url];
60+
// Remove the timestamp keys from savedParams for compare
61+
[savedParams enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
62+
NSMutableDictionary *paramDict = (NSMutableDictionary *)obj;
63+
[paramDict removeObjectForKey:@"timestamp"];
64+
}];
5565

56-
NSDictionary *params = [utility getURLQueryParamsForRequest:endpoint];
57-
NSDictionary *expectedParams = @{@"gbraid": @"abc123",
66+
NSMutableDictionary *gbraidDict = [NSMutableDictionary dictionary];
67+
gbraidDict[@"isDeepLink"] = @(1);
68+
gbraidDict[@"name"] = @"gbraid";
69+
gbraidDict[@"validityWindow"] = @(2592000);
70+
gbraidDict[@"value"] = gbraidValue;
71+
72+
NSMutableDictionary *gclidDict = [NSMutableDictionary dictionary];
73+
gclidDict[@"isDeepLink"] = @(1);
74+
gclidDict[@"name"] = @"gclid";
75+
gclidDict[@"validityWindow"] = @(0);
76+
gclidDict[@"value"] = gclidValue;
77+
78+
NSMutableDictionary *expectedParams = [NSMutableDictionary dictionary];
79+
expectedParams[@"gbraid"] = gbraidDict;
80+
expectedParams[@"gclid"] = gclidDict;
81+
82+
XCTAssertEqualObjects(savedParams, expectedParams);
83+
}
84+
85+
-(void)testGetEventURLQueryParams {
86+
87+
NSDictionary *params = [utility getURLQueryParamsForRequest:eventEndpoint];
88+
NSDictionary *expectedParams = @{@"gbraid": gbraidValue,
5889
@"gbraid_timestamp": params[@"gbraid_timestamp"],
59-
@"gclid": @"123456789abc"};
60-
NSLog(@"Event Params: %@", params);
61-
NSLog(@"Expected Params: %@", expectedParams);
90+
@"gclid": gclidValue};
6291

6392
XCTAssertEqualObjects(params, expectedParams);
6493
}
6594

6695
-(void)testGetOpenURLQueryParams {
67-
NSString *endpoint = @"/v1/open";
68-
69-
NSURL *url = [NSURL URLWithString:@"https://www.branch.io?gbraid=abc123&test=456&gclid=123456789abc"];
7096

71-
BNCReferringURLUtility *utility = [BNCReferringURLUtility new];
72-
[utility parseReferringURL:url];
73-
74-
NSDictionary *params = [utility getURLQueryParamsForRequest:endpoint];
75-
NSDictionary *expectedParams = @{@"gbraid": @"abc123",
97+
NSDictionary *params = [utility getURLQueryParamsForRequest:openEndpoint];
98+
NSDictionary *expectedParams = @{@"gbraid": gbraidValue,
7699
@"gbraid_timestamp": params[@"gbraid_timestamp"],
77100
@"is_deeplink_gbraid": @YES,
78-
@"gclid": @"123456789abc"};
101+
@"gclid": gclidValue};
79102

80-
NSLog(@"Open Params: %@", params);
81-
NSLog(@"Expected Params: %@", expectedParams);
82-
83103
XCTAssertEqualObjects(params, expectedParams);
84104
}
85105

106+
-(void)testAddGclidValueFor {
107+
NSString *eventGclidValue = [utility addGclidValueFor:eventEndpoint];
108+
XCTAssertEqualObjects(eventGclidValue, gclidValue);
109+
110+
NSString *openGclidValue = [utility addGclidValueFor:openEndpoint];
111+
XCTAssertEqualObjects(openGclidValue, gclidValue);
112+
}
113+
114+
-(void)testAddGbraidValuesFor {
115+
NSDictionary *eventGbraidValue = [utility addGbraidValuesFor:eventEndpoint];
116+
117+
NSDictionary *expectedEventGraidValue = @{
118+
@"gbraid": gbraidValue,
119+
@"gbraid_timestamp": eventGbraidValue[@"gbraid_timestamp"]
120+
};
121+
122+
XCTAssertEqualObjects(eventGbraidValue, expectedEventGraidValue);
123+
124+
NSDictionary *expectedOpenGraidValue = @{
125+
@"gbraid": gbraidValue,
126+
@"gbraid_timestamp": eventGbraidValue[@"gbraid_timestamp"],
127+
@"is_deeplink_gbraid": @(1)
128+
};
129+
130+
NSDictionary *openGbraidValue = [utility addGbraidValuesFor:openEndpoint];
131+
XCTAssertEqualObjects(openGbraidValue, expectedOpenGraidValue);
132+
}
133+
134+
-(void)testIsSupportedQueryParameter {
135+
NSArray *validURLQueryParameters = @[@"gbraid", @"gclid"];
136+
137+
for (NSString *param in validURLQueryParameters) {
138+
XCTAssertTrue([utility isSupportedQueryParameter:param]);
139+
}
140+
141+
}
142+
143+
-(void)testFindUrlQueryParam {
144+
BNCUrlQueryParameter *gbraid = [utility findUrlQueryParam:@"gbraid"];
145+
146+
BNCUrlQueryParameter *expectedGbraid = [BNCUrlQueryParameter new];
147+
expectedGbraid.name = @"gbraid";
148+
expectedGbraid.value = gbraidValue;
149+
expectedGbraid.timestamp = gbraid.timestamp;
150+
expectedGbraid.validityWindow = gbraid.validityWindow;
151+
expectedGbraid.isDeepLink = @(1);
152+
153+
XCTAssertEqualObjects(gbraid, expectedGbraid);
154+
155+
BNCUrlQueryParameter *gclid = [utility findUrlQueryParam:@"gclid"];
156+
157+
BNCUrlQueryParameter *expectedGclid = [BNCUrlQueryParameter new];
158+
expectedGclid.name = @"gclid";
159+
expectedGclid.value = gclidValue;
160+
expectedGclid.timestamp = gclid.timestamp;
161+
expectedGclid.validityWindow = gclid.validityWindow;
162+
expectedGclid.isDeepLink = @(1);
163+
164+
XCTAssertEqualObjects(gclid, expectedGclid);
165+
}
166+
167+
-(void)testDefaultValidityWindowForParam {
168+
169+
XCTAssertEqual(2592000, [utility defaultValidityWindowForParam:@"gbraid"]);
170+
XCTAssertEqual(0, [utility defaultValidityWindowForParam:@"gclid"]);
171+
}
172+
173+
-(void)testSerializeToJson {
174+
175+
NSDate *currentDate = [NSDate date];
176+
NSMutableDictionary<NSString *, BNCUrlQueryParameter *> * params = [NSMutableDictionary new];
177+
178+
BNCUrlQueryParameter *gbraidObj = [BNCUrlQueryParameter new];
179+
gbraidObj.name = @"gbraid";
180+
gbraidObj.value = gbraidValue;
181+
gbraidObj.timestamp = currentDate;
182+
gbraidObj.validityWindow = 2592000;
183+
gbraidObj.isDeepLink = @(1);
184+
params[@"gbraid"] = gbraidObj;
185+
186+
BNCUrlQueryParameter *gclidObj = [BNCUrlQueryParameter new];
187+
gclidObj.name = @"gclid";
188+
gclidObj.value = gclidValue;
189+
gclidObj.timestamp = currentDate;
190+
gclidObj.validityWindow = 0;
191+
gclidObj.isDeepLink = @(1);
192+
params[@"gclid"] = gclidObj;
193+
194+
NSMutableDictionary *json = [utility serializeToJson:params];
195+
196+
NSDictionary *expectedJSON = @{
197+
@"gbraid": @{
198+
@"isDeepLink": @(1),
199+
@"name": @"gbraid",
200+
@"timestamp": currentDate,
201+
@"validityWindow": @(2592000),
202+
@"value": @"gbraid456"
203+
},
204+
@"gclid": @{
205+
@"isDeepLink": @(1),
206+
@"name": @"gclid",
207+
@"timestamp": currentDate,
208+
@"validityWindow": @(0),
209+
@"value": @"gclid123"
210+
}
211+
};
212+
213+
XCTAssertEqualObjects(expectedJSON, json);
214+
215+
NSMutableDictionary<NSString *, BNCUrlQueryParameter *> * deserializedParams = [utility deserializeFromJson:json];
216+
XCTAssertEqualObjects(params, deserializedParams);
217+
}
218+
219+
-(void)testDeserializeFromJson {
220+
NSDate *currentDate = [NSDate date];
221+
222+
NSMutableDictionary<NSString *, BNCUrlQueryParameter *> * params = [NSMutableDictionary new];
223+
224+
BNCUrlQueryParameter *gbraidObj = [BNCUrlQueryParameter new];
225+
gbraidObj.name = @"gbraid";
226+
gbraidObj.value = gbraidValue;
227+
gbraidObj.timestamp = currentDate;
228+
gbraidObj.validityWindow = 2592000;
229+
gbraidObj.isDeepLink = @(1);
230+
params[@"gbraid"] = gbraidObj;
231+
232+
BNCUrlQueryParameter *gclidObj = [BNCUrlQueryParameter new];
233+
gclidObj.name = @"gclid";
234+
gclidObj.value = gclidValue;
235+
gclidObj.timestamp = currentDate;
236+
gclidObj.validityWindow = 0;
237+
gclidObj.isDeepLink = @(1);
238+
params[@"gclid"] = gclidObj;
239+
240+
NSDictionary *json = @{
241+
@"gbraid": @{
242+
@"isDeepLink": @(1),
243+
@"name": @"gbraid",
244+
@"timestamp": currentDate,
245+
@"validityWindow": @(2592000),
246+
@"value": @"gbraid456"
247+
},
248+
@"gclid": @{
249+
@"isDeepLink": @(1),
250+
@"name": @"gclid",
251+
@"timestamp": currentDate,
252+
@"validityWindow": @(0),
253+
@"value": @"gclid123"
254+
}
255+
};
256+
257+
NSMutableDictionary<NSString *, BNCUrlQueryParameter *> * deserializedParams = [utility deserializeFromJson:json];
258+
259+
XCTAssertEqualObjects(deserializedParams, params);
260+
}
261+
86262
@end

Branch-TestBed/Branch-SDK-Tests/BranchEvent.Test.m

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -198,20 +198,20 @@ - (void) testUserCompletedAction {
198198
expectedRequest[@"customer_event_alias"] = nil;
199199

200200
// Add params for Gbraid
201-
BNCPreferenceHelper *preferenceHelper = [BNCPreferenceHelper sharedInstance];
202-
if(preferenceHelper.referrerGBRAID){
203-
NSTimeInterval validityWindow = preferenceHelper.referrerGBRAIDValidityWindow;
204-
if (validityWindow) {
205-
NSDate *initDate = preferenceHelper.referrerGBRAIDInitDate ;
206-
NSDate *expirationDate = [initDate dateByAddingTimeInterval:validityWindow];
207-
NSDate *now = [NSDate date];
208-
if ([now compare:expirationDate] == NSOrderedAscending) {
209-
expectedRequest[BRANCH_REQUEST_KEY_REFERRER_GBRAID] = preferenceHelper.referrerGBRAID;
210-
long long timestampInMilliSec = (long long)([initDate timeIntervalSince1970] * 1000.0);
211-
expectedRequest[BRANCH_REQUEST_KEY_REFERRER_GBRAID_TIMESTAMP] = [NSString stringWithFormat:@"%lld", timestampInMilliSec];
212-
}
213-
}
214-
}
201+
// BNCPreferenceHelper *preferenceHelper = [BNCPreferenceHelper sharedInstance];
202+
// if(preferenceHelper.referrerGBRAID){
203+
// NSTimeInterval validityWindow = preferenceHelper.referrerGBRAIDValidityWindow;
204+
// if (validityWindow) {
205+
// NSDate *initDate = preferenceHelper.referrerGBRAIDInitDate ;
206+
// NSDate *expirationDate = [initDate dateByAddingTimeInterval:validityWindow];
207+
// NSDate *now = [NSDate date];
208+
// if ([now compare:expirationDate] == NSOrderedAscending) {
209+
// expectedRequest[BRANCH_REQUEST_KEY_REFERRER_GBRAID] = preferenceHelper.referrerGBRAID;
210+
// long long timestampInMilliSec = (long long)([initDate timeIntervalSince1970] * 1000.0);
211+
// expectedRequest[BRANCH_REQUEST_KEY_REFERRER_GBRAID_TIMESTAMP] = [NSString stringWithFormat:@"%lld", timestampInMilliSec];
212+
// }
213+
// }
214+
// }
215215

216216
Branch *branch = [Branch getInstance:@"key_live_foo"];
217217
XCTestExpectation *expectation = [self expectationWithDescription:@"v2-event-user-action"];

BranchSDK/BNCPreferenceHelper.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ NSURL* /* _Nonnull */ BNCURLForBranchDirectory(void);
7070

7171
@property (assign, nonatomic) BOOL trackingDisabled;
7272

73+
@property (copy, nonatomic) NSString *referrerGBRAID;
74+
@property (assign, nonatomic) NSTimeInterval referrerGBRAIDValidityWindow;
75+
@property (strong, nonatomic) NSDate *referrerGBRAIDInitDate;
7376
@property (strong, nonatomic) NSMutableDictionary *referringURLQueryParameters;
7477

7578
@property (assign, nonatomic) NSInteger skanCurrentWindow;

0 commit comments

Comments
 (0)