This repository has been archived by the owner. It is now read-only.
Permalink
Cannot retrieve contributors at this time
45 lines (35 sloc)
2 KB
| /* This Source Code Form is subject to the terms of the Mozilla Public | |
| * License, v. 2.0. If a copy of the MPL was not distributed with this | |
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | |
| import Foundation | |
| import Shared | |
| import XCTest | |
| import SwiftKeychainWrapper | |
| class AuthenticationKeychainInfoTests: XCTestCase { | |
| func testEncodingAndDecoding() { | |
| let passcode = "1234" | |
| let authInfo = AuthenticationKeychainInfo(passcode: passcode) | |
| authInfo.updateRequiredPasscodeInterval(.fiveMinutes) | |
| authInfo.recordValidation() | |
| authInfo.recordFailedAttempt() // failed attempt should be 1 | |
| authInfo.lockOutUser() //lock out a user so a lockoutInterval is set. | |
| authInfo.useTouchID = true | |
| let savedInterval = authInfo.lockOutInterval | |
| let savedValidation = authInfo.lastPasscodeValidationInterval | |
| KeychainWrapper.sharedAppContainerKeychain.setAuthenticationInfo(authInfo) //Save to disk | |
| let decodedAuthInfo = KeychainWrapper.sharedAppContainerKeychain.authenticationInfo()! //Fetch from disk | |
| XCTAssertEqual(savedInterval, decodedAuthInfo.lockOutInterval) | |
| XCTAssertEqual(passcode, decodedAuthInfo.passcode) | |
| XCTAssertEqual(1, decodedAuthInfo.failedAttempts, "We performed a recordFailedAttempt. This should be 1.") | |
| XCTAssertTrue(decodedAuthInfo.useTouchID) | |
| XCTAssertEqual(savedValidation, decodedAuthInfo.lastPasscodeValidationInterval) | |
| XCTAssertEqual(PasscodeInterval.fiveMinutes, decodedAuthInfo.requiredPasscodeInterval) | |
| } | |
| func testNilIntervalsArentZero() { | |
| let passcode = "1234" | |
| let authInfo = AuthenticationKeychainInfo(passcode: passcode) | |
| KeychainWrapper.sharedAppContainerKeychain.setAuthenticationInfo(authInfo) //Save to disk | |
| let decodedAuthInfo = KeychainWrapper.sharedAppContainerKeychain.authenticationInfo()! //Fetch from disk | |
| XCTAssertNil(decodedAuthInfo.lockOutInterval, "The lockoutInterval was never used. It should be nil") | |
| } | |
| } |