Skip to content

Commit 69255c2

Browse files
authored
fix: prevent mpid with value 0 to forward to Braze (#99)
* fix: prevent 0 mpid to forward to Braze * remove old appboy ABKIDFADelegateKey in unit test
1 parent 5f84a82 commit 69255c2

2 files changed

Lines changed: 91 additions & 2 deletions

File tree

Sources/mParticle-Appboy/MPKitAppboy.m

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,9 @@ - (void)start {
391391
#endif
392392

393393
FilteredMParticleUser *currentUser = [[self kitApi] getCurrentUserWithKit:self];
394-
[self updateUser:currentUser request:currentUser.userIdentities];
394+
if (currentUser.userId.integerValue != 0) {
395+
[self updateUser:currentUser request:currentUser.userIdentities];
396+
}
395397

396398
self->_started = YES;
397399

mParticle_AppboyTests/mParticle_AppboyTests.m

Lines changed: 88 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ - (void)setAppboyInstance:(Braze *)instance;
1818
- (void)setEnableTypeDetection:(BOOL)enableTypeDetection;
1919
+ (BOOL)shouldDisableNotificationHandling;
2020
+ (Braze *)brazeInstance;
21+
+ (MPKitExecStatus *)updateUser:(FilteredMParticleUser *)user request:(NSDictionary<NSNumber *,NSString *> *)userIdentities;
2122

2223
@end
2324

@@ -73,7 +74,6 @@ - (void)testStartwithAdvancedConfig {
7374

7475
NSDictionary *testOptionsDictionary = @{ABKEnableAutomaticLocationCollectionKey:@(YES),
7576
ABKSDKFlavorKey:@7,
76-
ABKIDFADelegateKey: appBoy,
7777
@"ABKRquestProcessingPolicy": @(1),
7878
@"ABKFlushInterval":@(2),
7979
@"ABKSessionTimeout":@(3),
@@ -84,6 +84,93 @@ - (void)testStartwithAdvancedConfig {
8484
XCTAssertEqualObjects(optionsDictionary, testOptionsDictionary);
8585
}
8686

87+
- (void)testMpidForwardingOnStartUserIdZero {
88+
NSDictionary *kitConfiguration = @{@"apiKey":@"BrazeID",
89+
@"id":@42,
90+
@"ABKCollectIDFA":@"true",
91+
@"ABKRequestProcessingPolicyOptionKey": @"1",
92+
@"ABKFlushIntervalOptionKey":@"2",
93+
@"ABKSessionTimeoutKey":@"3",
94+
@"ABKMinimumTriggerTimeIntervalKey":@"4",
95+
@"userIdentificationType":@"MPID"
96+
};
97+
98+
MPKitAppboy *kitInstance = [[MPKitAppboy alloc] init];
99+
100+
[kitInstance didFinishLaunchingWithConfiguration:kitConfiguration];
101+
102+
MParticleUser *testUser = [[MParticleUser alloc] init];
103+
[testUser setValue:@(0) forKey:@"userId"];
104+
105+
FilteredMParticleUser *filteredUser = [[FilteredMParticleUser alloc] initWithMParticleUser:testUser kitConfiguration:kitConfiguration];
106+
id mockKitApi = OCMClassMock([MPKitAPI class]);
107+
OCMStub([mockKitApi getCurrentUserWithKit:kitInstance]).andReturn(filteredUser);
108+
kitInstance.kitApi = mockKitApi;
109+
110+
id mockKitInstance = OCMPartialMock(kitInstance);
111+
[[mockKitInstance reject] updateUser:[OCMArg any] request:[OCMArg any]];
112+
[kitInstance start];
113+
[mockKitInstance verify];
114+
}
115+
116+
- (void)testMpidForwardingOnStartUserIdPositive {
117+
NSDictionary *kitConfiguration = @{@"apiKey":@"BrazeID",
118+
@"id":@42,
119+
@"ABKCollectIDFA":@"true",
120+
@"ABKRequestProcessingPolicyOptionKey": @"1",
121+
@"ABKFlushIntervalOptionKey":@"2",
122+
@"ABKSessionTimeoutKey":@"3",
123+
@"ABKMinimumTriggerTimeIntervalKey":@"4",
124+
@"userIdentificationType":@"MPID"
125+
};
126+
127+
MPKitAppboy *kitInstance = [[MPKitAppboy alloc] init];
128+
129+
[kitInstance didFinishLaunchingWithConfiguration:kitConfiguration];
130+
131+
MParticleUser *testUser = [[MParticleUser alloc] init];
132+
[testUser setValue:@(1) forKey:@"userId"];
133+
134+
FilteredMParticleUser *filteredUser = [[FilteredMParticleUser alloc] initWithMParticleUser:testUser kitConfiguration:kitConfiguration];
135+
id mockKitApi = OCMClassMock([MPKitAPI class]);
136+
OCMStub([mockKitApi getCurrentUserWithKit:kitInstance]).andReturn(filteredUser);
137+
kitInstance.kitApi = mockKitApi;
138+
139+
id mockKitInstance = OCMPartialMock(kitInstance);
140+
[[mockKitInstance expect] updateUser:[OCMArg any] request:[OCMArg any]];
141+
[kitInstance start];
142+
[mockKitInstance verify];
143+
}
144+
145+
- (void)testMpidForwardingOnStartUserIdNegative {
146+
NSDictionary *kitConfiguration = @{@"apiKey":@"BrazeID",
147+
@"id":@42,
148+
@"ABKCollectIDFA":@"true",
149+
@"ABKRequestProcessingPolicyOptionKey": @"1",
150+
@"ABKFlushIntervalOptionKey":@"2",
151+
@"ABKSessionTimeoutKey":@"3",
152+
@"ABKMinimumTriggerTimeIntervalKey":@"4",
153+
@"userIdentificationType":@"MPID"
154+
};
155+
156+
MPKitAppboy *kitInstance = [[MPKitAppboy alloc] init];
157+
158+
[kitInstance didFinishLaunchingWithConfiguration:kitConfiguration];
159+
160+
MParticleUser *testUser = [[MParticleUser alloc] init];
161+
[testUser setValue:@(-1) forKey:@"userId"];
162+
163+
FilteredMParticleUser *filteredUser = [[FilteredMParticleUser alloc] initWithMParticleUser:testUser kitConfiguration:kitConfiguration];
164+
id mockKitApi = OCMClassMock([MPKitAPI class]);
165+
OCMStub([mockKitApi getCurrentUserWithKit:kitInstance]).andReturn(filteredUser);
166+
kitInstance.kitApi = mockKitApi;
167+
168+
id mockKitInstance = OCMPartialMock(kitInstance);
169+
[[mockKitInstance expect] updateUser:[OCMArg any] request:[OCMArg any]];
170+
[kitInstance start];
171+
[mockKitInstance verify];
172+
}
173+
87174
//- (void)testEndpointOverride {
88175
// MPKitAppboy *appBoy = [[MPKitAppboy alloc] init];
89176
//

0 commit comments

Comments
 (0)