Skip to content

Instantly share code, notes, and snippets.

@ydzheng
Last active August 29, 2015 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ydzheng/7946d8add5df2e04a39f to your computer and use it in GitHub Desktop.
Save ydzheng/7946d8add5df2e04a39f to your computer and use it in GitHub Desktop.
- (void)testAuthenticateWithTouchID {
id mockLAContext = [OCMockObject mockForClass:[LAContext class]];
[_authManager setLocalAuthContext:mockLAContext];
[[mockLAContext expect] setLocalizedFallbackTitle:@"Wealthfront PIN"];
BOOL boolValue = YES;
NSError *err = nil;
[[[mockLAContext expect] andDo:^(NSInvocation *i) {
void(^reply)(BOOL success, NSError *error) = nil;
[i getArgument:&reply
atIndex:4];
reply(boolValue, err);
}] evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
localizedReason:@"Please authenticate to proceed"
reply:[OCMArg isNotNil]];
__block BOOL succeeded = NO;
[_authManager authenticateByTouchIDWithFallbackButtonTitle:@"Wealthfront PIN"
success:^{
succeeded = YES;
} fallback:^(NSError *error){
XCTFail(@"fallback block should not have been called");
}];
XCTAssertTrue(succeeded, @"Should have succeeded");
XCTAssertNil(_authManager.localAuthContext, @"Should be nil now");
XCTAssertThrows([_authManager authenticateByTouchIDWithFallbackButtonTitle:nil
success:OCMOCK_ANY
fallback:OCMOCK_ANY]);
[mockLAContext verify];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment