Add App Lock settings screen (#1917)

This commit is contained in:
Doug
2023-10-19 12:26:34 +01:00
committed by GitHub
parent 99c28784a9
commit ebd9f4c916
36 changed files with 777 additions and 78 deletions
@@ -33,6 +33,10 @@ class AppLockScreenViewModelTests: XCTestCase {
viewModel = AppLockScreenViewModel(appLockService: appLockService)
}
override func tearDown() {
AppSettings.reset()
}
func testUnlock() async throws {
// Given a valid PIN code.
let pinCode = "2023"
@@ -0,0 +1,62 @@
//
// Copyright 2022 New Vector Ltd
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
import XCTest
@testable import ElementX
@MainActor
class AppLockSettingsScreenViewModelTests: XCTestCase {
var appLockService: AppLockServiceProtocol!
var keychainController: KeychainControllerMock!
var viewModel: AppLockSettingsScreenViewModelProtocol!
var context: AppLockSettingsScreenViewModelType.Context {
viewModel.context
}
override func setUpWithError() throws {
AppSettings.reset()
let appSettings = AppSettings()
appSettings.appLockFlowEnabled = true
keychainController = KeychainControllerMock()
appLockService = AppLockService(keychainController: keychainController, appSettings: appSettings)
viewModel = AppLockSettingsScreenViewModel(appLockService: AppLockServiceMock.mock())
}
override func tearDown() {
AppSettings.reset()
}
func testDisablingShowsAlert() {
// Given a fresh screen with the PIN code enabled.
let pinCode = "2023"
keychainController.pinCodeReturnValue = pinCode
keychainController.containsPINCodeReturnValue = true
XCTAssertNil(context.alertInfo)
XCTAssertTrue(appLockService.isEnabled)
// When disabling the PIN code lock.
context.send(viewAction: .disable)
// Then an alert should be shown before disabling it.
XCTAssertNotNil(context.alertInfo)
XCTAssertTrue(appLockService.isEnabled)
}
}
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:905d8d16cfce1540a91a3c8ef7d4295b844d2aab4c3ed3035230277acb56e228
size 94357
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f918886d8da2987f6ae26762267557ce2f7d7f0b02ce985de56caa3fb7ee305c
size 83101
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a7ac5d864e7480b3bf9c284aee3bc69d235cf14071e527937cd8e0a31b38cf37
size 93927