Testing keychain in iOS
Issue #92
Today I was upgrading Keychain to swift 4, and take this opportunity to fix the test. The tests pass on macOS, but on iOS, I get -25300
error for
1 | var status = SecItemCopyMatching(query as CFDictionary, nil) |
It is because there is no Keychain entitlement for test target. But this is a framework, how can I add entitlement 🤔 The solution is to use a Test Host to host the XCTest
tests. See my pull request
Create test host target
First create an iOS app to act as a test host, you can name it TestHost_iOS
Enable Keychain capability
Then enable Keychain capability to let Xcode automatically create an entitlement file for you. Note that you can just enter the Keychain group
. You don’t need go to Apple Developer dashboard
to configure anything
Specify Test Host
Then in you test target, specify Test Host
by using $(BUILT_PRODUCTS_DIR)/TestHost_iOS.app/TestHost_iOS
Now run your test again, it should pass 🎉