From c8679b1f8047c2258de83f41c60b53167a26d9eb Mon Sep 17 00:00:00 2001 From: Katherine Bertelsen Date: Wed, 7 May 2025 13:34:06 -0500 Subject: [PATCH 1/2] Move TimeProvider to BitwardenKit --- .../TestHelpers/MockStateService.swift | 1 + .../MockAuthenticatorItemRepository.swift | 2 + .../TOTP/TOTPExpirationCalculator.swift | 1 + .../TOTP/TOTPExpirationCalculatorTests.swift | 1 + .../TestHelpers/MockVaultClientService.swift | 1 + .../Utilities/PreviewTimeProvider.swift | 1 + .../ItemList/ItemList/ItemListItem.swift | 1 + .../ItemList/ItemList/ItemListProcessor.swift | 1 + .../ItemList/ItemList/ItemListView.swift | 1 + .../ItemList/ItemList/ItemListViewTests.swift | 1 + .../ItemListItemRow/ItemListItemRowView.swift | 1 + .../UI/Vault/Views/TOTPCountdownTimer.swift | 1 + .../Vault/Views/TOTPCountdownTimerTests.swift | 1 + .../Vault/Views/TOTPCountdownTimerView.swift | 1 + .../Services/Mocks}/MockTimeProvider.swift | 17 ++++---- .../Platform/Services}/TimeProvider.swift | 10 +++-- .../TestHelpers/MockStateService.swift | 1 + .../Utilities/ShareExtensionHelper.swift | 1 + .../Utilities/ShareExtensionHelperTests.swift | 1 + .../Vault/Extensions/BitwardenSdk+Vault.swift | 1 + .../Extensions/BitwardenSdkVaultTests.swift | 1 + .../Fixtures/VaultListItem+Fixtures.swift | 1 + .../TestHelpers/MockVaultRepository.swift | 42 +------------------ .../Vault/Services/SyncServiceTests.swift | 1 + .../TOTP/TOTPExpirationCalculator.swift | 1 + .../TOTP/TOTPExpirationCalculatorTests.swift | 1 + .../Vault/Services/TOTP/TimeProvider.swift | 35 ---------------- .../TestHelpers/MockVaultClientService.swift | 1 + .../TestHelpers/MockVaultTimeoutService.swift | 1 + .../FlightRecorderLogsView.swift | 1 + .../FlightRecorderLogsViewTests.swift | 2 + .../Utilities/TOTPExpirationManager.swift | 1 + .../TOTPExpirationManagerFactory.swift | 2 + .../TOTPExpirationManagerFactoryTests.swift | 1 + .../AutofillList/VaultAutofillListView.swift | 1 + .../VaultAutofillListViewTests.swift | 1 + .../Vault/VaultGroup/VaultGroupView.swift | 1 + .../VaultGroup/VaultGroupViewTests.swift | 1 + .../VaultItemSelectionView.swift | 1 + .../Vault/Vault/VaultList/VaultListView.swift | 1 + .../Vault/VaultList/VaultListViewTests.swift | 1 + .../ViewItem/ViewItemDetailsView.swift | 1 + .../VaultItem/ViewItem/ViewItemView.swift | 1 + .../ViewItem/ViewItemViewTests.swift | 2 + .../Extensions/CipherView+Update.swift | 1 + .../Extensions/CipherViewUpdateTests.swift | 1 + .../ViewLoginItem/ViewLoginItemView.swift | 1 + .../UI/Vault/Views/TOTPCountdownTimer.swift | 1 + .../Vault/Views/TOTPCountdownTimerTests.swift | 1 + .../Vault/Views/TOTPCountdownTimerView.swift | 1 + .../VaultListItemRowView.swift | 1 + .../VaultListItemRowViewTests.swift | 1 + 52 files changed, 68 insertions(+), 88 deletions(-) rename {AuthenticatorShared/Core/Platform/Services/TestHelpers => BitwardenKit/Core/Platform/Services/Mocks}/MockTimeProvider.swift (61%) rename {AuthenticatorShared/Core/Vault/Services/TOTP => BitwardenKit/Core/Platform/Services}/TimeProvider.swift (81%) delete mode 100644 BitwardenShared/Core/Vault/Services/TOTP/TimeProvider.swift diff --git a/AuthenticatorShared/Core/Platform/Services/TestHelpers/MockStateService.swift b/AuthenticatorShared/Core/Platform/Services/TestHelpers/MockStateService.swift index ddca52d5bc..392305dea6 100644 --- a/AuthenticatorShared/Core/Platform/Services/TestHelpers/MockStateService.swift +++ b/AuthenticatorShared/Core/Platform/Services/TestHelpers/MockStateService.swift @@ -1,4 +1,5 @@ import BitwardenKit +import BitwardenKitMocks import Combine import Foundation import TestHelpers diff --git a/AuthenticatorShared/Core/Vault/Repositories/TestHelpers/MockAuthenticatorItemRepository.swift b/AuthenticatorShared/Core/Vault/Repositories/TestHelpers/MockAuthenticatorItemRepository.swift index a3f9cacf2d..e87df99a34 100644 --- a/AuthenticatorShared/Core/Vault/Repositories/TestHelpers/MockAuthenticatorItemRepository.swift +++ b/AuthenticatorShared/Core/Vault/Repositories/TestHelpers/MockAuthenticatorItemRepository.swift @@ -1,3 +1,5 @@ +import BitwardenKit +import BitwardenKitMocks import Combine import Foundation diff --git a/AuthenticatorShared/Core/Vault/Services/TOTP/TOTPExpirationCalculator.swift b/AuthenticatorShared/Core/Vault/Services/TOTP/TOTPExpirationCalculator.swift index cf8599020f..e4053393c2 100644 --- a/AuthenticatorShared/Core/Vault/Services/TOTP/TOTPExpirationCalculator.swift +++ b/AuthenticatorShared/Core/Vault/Services/TOTP/TOTPExpirationCalculator.swift @@ -1,3 +1,4 @@ +import BitwardenKit import Foundation import OSLog diff --git a/AuthenticatorShared/Core/Vault/Services/TOTP/TOTPExpirationCalculatorTests.swift b/AuthenticatorShared/Core/Vault/Services/TOTP/TOTPExpirationCalculatorTests.swift index 1c315aeb27..aa6d98afec 100644 --- a/AuthenticatorShared/Core/Vault/Services/TOTP/TOTPExpirationCalculatorTests.swift +++ b/AuthenticatorShared/Core/Vault/Services/TOTP/TOTPExpirationCalculatorTests.swift @@ -1,3 +1,4 @@ +import BitwardenKitMocks import XCTest @testable import AuthenticatorShared diff --git a/AuthenticatorShared/Core/Vault/Services/TestHelpers/MockVaultClientService.swift b/AuthenticatorShared/Core/Vault/Services/TestHelpers/MockVaultClientService.swift index be74b001e8..708ced72b8 100644 --- a/AuthenticatorShared/Core/Vault/Services/TestHelpers/MockVaultClientService.swift +++ b/AuthenticatorShared/Core/Vault/Services/TestHelpers/MockVaultClientService.swift @@ -1,3 +1,4 @@ +import BitwardenKitMocks import BitwardenSdk import Foundation diff --git a/AuthenticatorShared/UI/Platform/Application/Utilities/PreviewTimeProvider.swift b/AuthenticatorShared/UI/Platform/Application/Utilities/PreviewTimeProvider.swift index 1a84729921..f3229ee92c 100644 --- a/AuthenticatorShared/UI/Platform/Application/Utilities/PreviewTimeProvider.swift +++ b/AuthenticatorShared/UI/Platform/Application/Utilities/PreviewTimeProvider.swift @@ -1,3 +1,4 @@ +import BitwardenKit import SwiftUI #if DEBUG diff --git a/AuthenticatorShared/UI/Vault/ItemList/ItemList/ItemListItem.swift b/AuthenticatorShared/UI/Vault/ItemList/ItemList/ItemListItem.swift index 2afd546d6a..67b14fa0b1 100644 --- a/AuthenticatorShared/UI/Vault/ItemList/ItemList/ItemListItem.swift +++ b/AuthenticatorShared/UI/Vault/ItemList/ItemList/ItemListItem.swift @@ -1,4 +1,5 @@ import AuthenticatorBridgeKit +import BitwardenKit import BitwardenSdk import Foundation diff --git a/AuthenticatorShared/UI/Vault/ItemList/ItemList/ItemListProcessor.swift b/AuthenticatorShared/UI/Vault/ItemList/ItemList/ItemListProcessor.swift index f1eafe7627..37b7f33233 100644 --- a/AuthenticatorShared/UI/Vault/ItemList/ItemList/ItemListProcessor.swift +++ b/AuthenticatorShared/UI/Vault/ItemList/ItemList/ItemListProcessor.swift @@ -1,3 +1,4 @@ +import BitwardenKit import Combine import Foundation diff --git a/AuthenticatorShared/UI/Vault/ItemList/ItemList/ItemListView.swift b/AuthenticatorShared/UI/Vault/ItemList/ItemList/ItemListView.swift index 7605f2a57c..dac32ef846 100644 --- a/AuthenticatorShared/UI/Vault/ItemList/ItemList/ItemListView.swift +++ b/AuthenticatorShared/UI/Vault/ItemList/ItemList/ItemListView.swift @@ -1,5 +1,6 @@ // swiftlint:disable file_length +import BitwardenKit import SwiftUI // MARK: - SearchableItemListView diff --git a/AuthenticatorShared/UI/Vault/ItemList/ItemList/ItemListViewTests.swift b/AuthenticatorShared/UI/Vault/ItemList/ItemList/ItemListViewTests.swift index ef7bd911db..898a5127e5 100644 --- a/AuthenticatorShared/UI/Vault/ItemList/ItemList/ItemListViewTests.swift +++ b/AuthenticatorShared/UI/Vault/ItemList/ItemList/ItemListViewTests.swift @@ -1,3 +1,4 @@ +import BitwardenKitMocks import SnapshotTesting import SwiftUI import ViewInspector diff --git a/AuthenticatorShared/UI/Vault/Views/ItemListItemRow/ItemListItemRowView.swift b/AuthenticatorShared/UI/Vault/Views/ItemListItemRow/ItemListItemRowView.swift index 6322dc6d2d..f5c9b8bb5e 100644 --- a/AuthenticatorShared/UI/Vault/Views/ItemListItemRow/ItemListItemRowView.swift +++ b/AuthenticatorShared/UI/Vault/Views/ItemListItemRow/ItemListItemRowView.swift @@ -1,3 +1,4 @@ +import BitwardenKit import BitwardenSdk import SwiftUI diff --git a/AuthenticatorShared/UI/Vault/Views/TOTPCountdownTimer.swift b/AuthenticatorShared/UI/Vault/Views/TOTPCountdownTimer.swift index 57ce7d98c5..dee822d1fd 100644 --- a/AuthenticatorShared/UI/Vault/Views/TOTPCountdownTimer.swift +++ b/AuthenticatorShared/UI/Vault/Views/TOTPCountdownTimer.swift @@ -1,3 +1,4 @@ +import BitwardenKit import SwiftUI // MARK: - TOTPCountdownTimer diff --git a/AuthenticatorShared/UI/Vault/Views/TOTPCountdownTimerTests.swift b/AuthenticatorShared/UI/Vault/Views/TOTPCountdownTimerTests.swift index e123fbc667..f6b2c85e88 100644 --- a/AuthenticatorShared/UI/Vault/Views/TOTPCountdownTimerTests.swift +++ b/AuthenticatorShared/UI/Vault/Views/TOTPCountdownTimerTests.swift @@ -1,3 +1,4 @@ +import BitwardenKit import XCTest @testable import AuthenticatorShared diff --git a/AuthenticatorShared/UI/Vault/Views/TOTPCountdownTimerView.swift b/AuthenticatorShared/UI/Vault/Views/TOTPCountdownTimerView.swift index 5a82397232..1ca51967cf 100644 --- a/AuthenticatorShared/UI/Vault/Views/TOTPCountdownTimerView.swift +++ b/AuthenticatorShared/UI/Vault/Views/TOTPCountdownTimerView.swift @@ -1,3 +1,4 @@ +import BitwardenKit import SwiftUI // MARK: - TOTPCountdownTimerView diff --git a/AuthenticatorShared/Core/Platform/Services/TestHelpers/MockTimeProvider.swift b/BitwardenKit/Core/Platform/Services/Mocks/MockTimeProvider.swift similarity index 61% rename from AuthenticatorShared/Core/Platform/Services/TestHelpers/MockTimeProvider.swift rename to BitwardenKit/Core/Platform/Services/Mocks/MockTimeProvider.swift index 94b3ad080b..7abb3b96c6 100644 --- a/AuthenticatorShared/Core/Platform/Services/TestHelpers/MockTimeProvider.swift +++ b/BitwardenKit/Core/Platform/Services/Mocks/MockTimeProvider.swift @@ -1,9 +1,8 @@ +import BitwardenKit import Foundation -@testable import AuthenticatorShared - -class MockTimeProvider { - enum TimeConfig { +public class MockTimeProvider { + public enum TimeConfig { case currentTime case mockTime(Date) @@ -17,25 +16,25 @@ class MockTimeProvider { } } - var timeConfig: TimeConfig + public var timeConfig: TimeConfig - init(_ timeConfig: TimeConfig) { + public init(_ timeConfig: TimeConfig) { self.timeConfig = timeConfig } } extension MockTimeProvider: Equatable { - static func == (_: MockTimeProvider, _: MockTimeProvider) -> Bool { + public static func == (_: MockTimeProvider, _: MockTimeProvider) -> Bool { true } } extension MockTimeProvider: TimeProvider { - var presentTime: Date { + public var presentTime: Date { timeConfig.date } - func timeSince(_ date: Date) -> TimeInterval { + public func timeSince(_ date: Date) -> TimeInterval { presentTime.timeIntervalSince(date) } } diff --git a/AuthenticatorShared/Core/Vault/Services/TOTP/TimeProvider.swift b/BitwardenKit/Core/Platform/Services/TimeProvider.swift similarity index 81% rename from AuthenticatorShared/Core/Vault/Services/TOTP/TimeProvider.swift rename to BitwardenKit/Core/Platform/Services/TimeProvider.swift index 18909ccf28..9993670e42 100644 --- a/AuthenticatorShared/Core/Vault/Services/TOTP/TimeProvider.swift +++ b/BitwardenKit/Core/Platform/Services/TimeProvider.swift @@ -7,7 +7,7 @@ import Foundation /// For regular builds, the `TimeProvider` should use the current time as `presentTime`. /// When testing, this protocol allows the current time to be mocked with any `Date`. /// -protocol TimeProvider: AnyObject { +public protocol TimeProvider: AnyObject { /// The present time expressed as a `Date`, according to the provider. /// var presentTime: Date { get } @@ -24,12 +24,14 @@ protocol TimeProvider: AnyObject { /// A `TimeProvider` that returns the current time whenever `presentTime` is read. /// -class CurrentTime: TimeProvider { - var presentTime: Date { +public class CurrentTime: TimeProvider { + public var presentTime: Date { .now } - func timeSince(_ date: Date) -> TimeInterval { + public func timeSince(_ date: Date) -> TimeInterval { presentTime.timeIntervalSince(date) } + + public init() {} } diff --git a/BitwardenShared/Core/Platform/Services/TestHelpers/MockStateService.swift b/BitwardenShared/Core/Platform/Services/TestHelpers/MockStateService.swift index 66d4c37b85..03c7274248 100644 --- a/BitwardenShared/Core/Platform/Services/TestHelpers/MockStateService.swift +++ b/BitwardenShared/Core/Platform/Services/TestHelpers/MockStateService.swift @@ -1,4 +1,5 @@ import BitwardenKit +import BitwardenKitMocks import Combine import Foundation diff --git a/BitwardenShared/Core/Tools/Utilities/ShareExtensionHelper.swift b/BitwardenShared/Core/Tools/Utilities/ShareExtensionHelper.swift index ba889b0ecc..66aa9421a5 100644 --- a/BitwardenShared/Core/Tools/Utilities/ShareExtensionHelper.swift +++ b/BitwardenShared/Core/Tools/Utilities/ShareExtensionHelper.swift @@ -1,3 +1,4 @@ +import BitwardenKit import Foundation import OSLog import UIKit diff --git a/BitwardenShared/Core/Tools/Utilities/ShareExtensionHelperTests.swift b/BitwardenShared/Core/Tools/Utilities/ShareExtensionHelperTests.swift index 27fb257a51..46742f85f0 100644 --- a/BitwardenShared/Core/Tools/Utilities/ShareExtensionHelperTests.swift +++ b/BitwardenShared/Core/Tools/Utilities/ShareExtensionHelperTests.swift @@ -1,3 +1,4 @@ +import BitwardenKitMocks import UniformTypeIdentifiers import XCTest diff --git a/BitwardenShared/Core/Vault/Extensions/BitwardenSdk+Vault.swift b/BitwardenShared/Core/Vault/Extensions/BitwardenSdk+Vault.swift index 1d1ab648f6..d7daba85f0 100644 --- a/BitwardenShared/Core/Vault/Extensions/BitwardenSdk+Vault.swift +++ b/BitwardenShared/Core/Vault/Extensions/BitwardenSdk+Vault.swift @@ -1,6 +1,7 @@ // swiftlint:disable:this file_name // swiftlint:disable file_length +import BitwardenKit import BitwardenSdk // MARK: - DataMappingError diff --git a/BitwardenShared/Core/Vault/Extensions/BitwardenSdkVaultTests.swift b/BitwardenShared/Core/Vault/Extensions/BitwardenSdkVaultTests.swift index f77149915c..cb1a25c9dd 100644 --- a/BitwardenShared/Core/Vault/Extensions/BitwardenSdkVaultTests.swift +++ b/BitwardenShared/Core/Vault/Extensions/BitwardenSdkVaultTests.swift @@ -1,5 +1,6 @@ // swiftlint:disable:this file_name +import BitwardenKitMocks import BitwardenSdk import XCTest diff --git a/BitwardenShared/Core/Vault/Models/Domain/Fixtures/VaultListItem+Fixtures.swift b/BitwardenShared/Core/Vault/Models/Domain/Fixtures/VaultListItem+Fixtures.swift index d781a6d4cf..0aae43f027 100644 --- a/BitwardenShared/Core/Vault/Models/Domain/Fixtures/VaultListItem+Fixtures.swift +++ b/BitwardenShared/Core/Vault/Models/Domain/Fixtures/VaultListItem+Fixtures.swift @@ -1,3 +1,4 @@ +import BitwardenKit import BitwardenSdk import Foundation diff --git a/BitwardenShared/Core/Vault/Repositories/TestHelpers/MockVaultRepository.swift b/BitwardenShared/Core/Vault/Repositories/TestHelpers/MockVaultRepository.swift index 16f38df55b..3780457a11 100644 --- a/BitwardenShared/Core/Vault/Repositories/TestHelpers/MockVaultRepository.swift +++ b/BitwardenShared/Core/Vault/Repositories/TestHelpers/MockVaultRepository.swift @@ -1,3 +1,5 @@ +import BitwardenKit +import BitwardenKitMocks import BitwardenSdk import Combine import Foundation @@ -330,43 +332,3 @@ class MockVaultRepository: VaultRepository { vaultListGroupSubject.eraseToAnyPublisher().values } } - -// MARK: - MockTimeProvider - -class MockTimeProvider { - enum TimeConfig { - case currentTime - case mockTime(Date) - - var date: Date { - switch self { - case .currentTime: - return .now - case let .mockTime(fixedDate): - return fixedDate - } - } - } - - var timeConfig: TimeConfig - - init(_ timeConfig: TimeConfig) { - self.timeConfig = timeConfig - } -} - -extension MockTimeProvider: Equatable { - static func == (_: MockTimeProvider, _: MockTimeProvider) -> Bool { - true - } -} - -extension MockTimeProvider: TimeProvider { - var presentTime: Date { - timeConfig.date - } - - func timeSince(_ date: Date) -> TimeInterval { - presentTime.timeIntervalSince(date) - } -} diff --git a/BitwardenShared/Core/Vault/Services/SyncServiceTests.swift b/BitwardenShared/Core/Vault/Services/SyncServiceTests.swift index cf65a54cdb..174dfbfd39 100644 --- a/BitwardenShared/Core/Vault/Services/SyncServiceTests.swift +++ b/BitwardenShared/Core/Vault/Services/SyncServiceTests.swift @@ -1,4 +1,5 @@ import BitwardenKit +import BitwardenKitMocks import TestHelpers import XCTest diff --git a/BitwardenShared/Core/Vault/Services/TOTP/TOTPExpirationCalculator.swift b/BitwardenShared/Core/Vault/Services/TOTP/TOTPExpirationCalculator.swift index b51091aef0..3f4bd5c69d 100644 --- a/BitwardenShared/Core/Vault/Services/TOTP/TOTPExpirationCalculator.swift +++ b/BitwardenShared/Core/Vault/Services/TOTP/TOTPExpirationCalculator.swift @@ -1,3 +1,4 @@ +import BitwardenKit import Foundation import OSLog diff --git a/BitwardenShared/Core/Vault/Services/TOTP/TOTPExpirationCalculatorTests.swift b/BitwardenShared/Core/Vault/Services/TOTP/TOTPExpirationCalculatorTests.swift index 08d605b1c5..f569fd4eb5 100644 --- a/BitwardenShared/Core/Vault/Services/TOTP/TOTPExpirationCalculatorTests.swift +++ b/BitwardenShared/Core/Vault/Services/TOTP/TOTPExpirationCalculatorTests.swift @@ -1,3 +1,4 @@ +import BitwardenKitMocks import XCTest @testable import BitwardenShared diff --git a/BitwardenShared/Core/Vault/Services/TOTP/TimeProvider.swift b/BitwardenShared/Core/Vault/Services/TOTP/TimeProvider.swift deleted file mode 100644 index 18909ccf28..0000000000 --- a/BitwardenShared/Core/Vault/Services/TOTP/TimeProvider.swift +++ /dev/null @@ -1,35 +0,0 @@ -import Foundation - -// MARK: - TimeProvider - -/// A protocol wrapping the present time. -/// -/// For regular builds, the `TimeProvider` should use the current time as `presentTime`. -/// When testing, this protocol allows the current time to be mocked with any `Date`. -/// -protocol TimeProvider: AnyObject { - /// The present time expressed as a `Date`, according to the provider. - /// - var presentTime: Date { get } - - /// A helper to calculate the elapsed time since a given `Date`. - /// - /// - Parameter date: The time to compare with the provider's `presentTime` - /// - Returns: A `TimeInterval` of the duration between the two dates. - /// - func timeSince(_ date: Date) -> TimeInterval -} - -// MARK: - CurrentTime - -/// A `TimeProvider` that returns the current time whenever `presentTime` is read. -/// -class CurrentTime: TimeProvider { - var presentTime: Date { - .now - } - - func timeSince(_ date: Date) -> TimeInterval { - presentTime.timeIntervalSince(date) - } -} diff --git a/BitwardenShared/Core/Vault/Services/TestHelpers/MockVaultClientService.swift b/BitwardenShared/Core/Vault/Services/TestHelpers/MockVaultClientService.swift index b058d89161..379a02b48b 100644 --- a/BitwardenShared/Core/Vault/Services/TestHelpers/MockVaultClientService.swift +++ b/BitwardenShared/Core/Vault/Services/TestHelpers/MockVaultClientService.swift @@ -1,3 +1,4 @@ +import BitwardenKitMocks import BitwardenSdk import Foundation diff --git a/BitwardenShared/Core/Vault/Services/TestHelpers/MockVaultTimeoutService.swift b/BitwardenShared/Core/Vault/Services/TestHelpers/MockVaultTimeoutService.swift index 5b1ccbde75..7369600a1f 100644 --- a/BitwardenShared/Core/Vault/Services/TestHelpers/MockVaultTimeoutService.swift +++ b/BitwardenShared/Core/Vault/Services/TestHelpers/MockVaultTimeoutService.swift @@ -1,3 +1,4 @@ +import BitwardenKitMocks import Combine import Foundation diff --git a/BitwardenShared/UI/Platform/Settings/Settings/About/FlightRecorderLogs/FlightRecorderLogsView.swift b/BitwardenShared/UI/Platform/Settings/Settings/About/FlightRecorderLogs/FlightRecorderLogsView.swift index ebc5f522ee..e2b2cfad76 100644 --- a/BitwardenShared/UI/Platform/Settings/Settings/About/FlightRecorderLogs/FlightRecorderLogsView.swift +++ b/BitwardenShared/UI/Platform/Settings/Settings/About/FlightRecorderLogs/FlightRecorderLogsView.swift @@ -1,3 +1,4 @@ +import BitwardenKit import SwiftUI // MARK: - FlightRecorderLogsView diff --git a/BitwardenShared/UI/Platform/Settings/Settings/About/FlightRecorderLogs/FlightRecorderLogsViewTests.swift b/BitwardenShared/UI/Platform/Settings/Settings/About/FlightRecorderLogs/FlightRecorderLogsViewTests.swift index 6bd159f8b8..619496a73a 100644 --- a/BitwardenShared/UI/Platform/Settings/Settings/About/FlightRecorderLogs/FlightRecorderLogsViewTests.swift +++ b/BitwardenShared/UI/Platform/Settings/Settings/About/FlightRecorderLogs/FlightRecorderLogsViewTests.swift @@ -1,3 +1,5 @@ +import BitwardenKit +import BitwardenKitMocks import SnapshotTesting import XCTest diff --git a/BitwardenShared/UI/Vault/Utilities/TOTPExpirationManager.swift b/BitwardenShared/UI/Vault/Utilities/TOTPExpirationManager.swift index abc8c62a17..b6ff938023 100644 --- a/BitwardenShared/UI/Vault/Utilities/TOTPExpirationManager.swift +++ b/BitwardenShared/UI/Vault/Utilities/TOTPExpirationManager.swift @@ -1,3 +1,4 @@ +import BitwardenKit import Foundation /// A protocol to manage TOTP code expirations for `VaultListItem`s and batch refresh calls. diff --git a/BitwardenShared/UI/Vault/Utilities/TOTPExpirationManagerFactory.swift b/BitwardenShared/UI/Vault/Utilities/TOTPExpirationManagerFactory.swift index e8455d8233..5b6dede878 100644 --- a/BitwardenShared/UI/Vault/Utilities/TOTPExpirationManagerFactory.swift +++ b/BitwardenShared/UI/Vault/Utilities/TOTPExpirationManagerFactory.swift @@ -1,3 +1,5 @@ +import BitwardenKit + /// Protocol to create `TOTPExpirationManager`. protocol TOTPExpirationManagerFactory { /// Creates a `TOTPExpirationManager` passing the `onExpiration` closure. diff --git a/BitwardenShared/UI/Vault/Utilities/TOTPExpirationManagerFactoryTests.swift b/BitwardenShared/UI/Vault/Utilities/TOTPExpirationManagerFactoryTests.swift index f730b593ea..7a79b1fcc0 100644 --- a/BitwardenShared/UI/Vault/Utilities/TOTPExpirationManagerFactoryTests.swift +++ b/BitwardenShared/UI/Vault/Utilities/TOTPExpirationManagerFactoryTests.swift @@ -1,3 +1,4 @@ +import BitwardenKitMocks import XCTest @testable import BitwardenShared diff --git a/BitwardenShared/UI/Vault/Vault/AutofillList/VaultAutofillListView.swift b/BitwardenShared/UI/Vault/Vault/AutofillList/VaultAutofillListView.swift index e9dde541e3..5b367f2d65 100644 --- a/BitwardenShared/UI/Vault/Vault/AutofillList/VaultAutofillListView.swift +++ b/BitwardenShared/UI/Vault/Vault/AutofillList/VaultAutofillListView.swift @@ -1,3 +1,4 @@ +import BitwardenKit import BitwardenSdk import SwiftUI diff --git a/BitwardenShared/UI/Vault/Vault/AutofillList/VaultAutofillListViewTests.swift b/BitwardenShared/UI/Vault/Vault/AutofillList/VaultAutofillListViewTests.swift index 0400d79273..3f46eb48d5 100644 --- a/BitwardenShared/UI/Vault/Vault/AutofillList/VaultAutofillListViewTests.swift +++ b/BitwardenShared/UI/Vault/Vault/AutofillList/VaultAutofillListViewTests.swift @@ -1,3 +1,4 @@ +import BitwardenKitMocks import SnapshotTesting import XCTest diff --git a/BitwardenShared/UI/Vault/Vault/VaultGroup/VaultGroupView.swift b/BitwardenShared/UI/Vault/Vault/VaultGroup/VaultGroupView.swift index f85fb041f7..ba93a8c149 100644 --- a/BitwardenShared/UI/Vault/Vault/VaultGroup/VaultGroupView.swift +++ b/BitwardenShared/UI/Vault/Vault/VaultGroup/VaultGroupView.swift @@ -1,3 +1,4 @@ +import BitwardenKit import SwiftUI // MARK: - VaultGroupView diff --git a/BitwardenShared/UI/Vault/Vault/VaultGroup/VaultGroupViewTests.swift b/BitwardenShared/UI/Vault/Vault/VaultGroup/VaultGroupViewTests.swift index 94f582f937..e91d7bccb4 100644 --- a/BitwardenShared/UI/Vault/Vault/VaultGroup/VaultGroupViewTests.swift +++ b/BitwardenShared/UI/Vault/Vault/VaultGroup/VaultGroupViewTests.swift @@ -1,3 +1,4 @@ +import BitwardenKitMocks import SnapshotTesting import ViewInspector import XCTest diff --git a/BitwardenShared/UI/Vault/Vault/VaultItemSelection/VaultItemSelectionView.swift b/BitwardenShared/UI/Vault/Vault/VaultItemSelection/VaultItemSelectionView.swift index 2aafe8b71d..4c27bdb3e0 100644 --- a/BitwardenShared/UI/Vault/Vault/VaultItemSelection/VaultItemSelectionView.swift +++ b/BitwardenShared/UI/Vault/Vault/VaultItemSelection/VaultItemSelectionView.swift @@ -1,3 +1,4 @@ +import BitwardenKit import BitwardenSdk import SwiftUI diff --git a/BitwardenShared/UI/Vault/Vault/VaultList/VaultListView.swift b/BitwardenShared/UI/Vault/Vault/VaultList/VaultListView.swift index d00b686360..9ef6f5f114 100644 --- a/BitwardenShared/UI/Vault/Vault/VaultList/VaultListView.swift +++ b/BitwardenShared/UI/Vault/Vault/VaultList/VaultListView.swift @@ -1,5 +1,6 @@ // swiftlint:disable file_length +import BitwardenKit import BitwardenSdk import SwiftUI diff --git a/BitwardenShared/UI/Vault/Vault/VaultList/VaultListViewTests.swift b/BitwardenShared/UI/Vault/Vault/VaultList/VaultListViewTests.swift index 8c56cab7ae..6f1df30202 100644 --- a/BitwardenShared/UI/Vault/Vault/VaultList/VaultListViewTests.swift +++ b/BitwardenShared/UI/Vault/Vault/VaultList/VaultListViewTests.swift @@ -1,3 +1,4 @@ +import BitwardenKitMocks import BitwardenSdk import SnapshotTesting import SwiftUI diff --git a/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewItemDetailsView.swift b/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewItemDetailsView.swift index 3dabd48325..8e18d7c4b1 100644 --- a/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewItemDetailsView.swift +++ b/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewItemDetailsView.swift @@ -1,3 +1,4 @@ +import BitwardenKit import BitwardenSdk import SwiftUI diff --git a/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewItemView.swift b/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewItemView.swift index 62e15e96f7..261d134d33 100644 --- a/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewItemView.swift +++ b/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewItemView.swift @@ -1,3 +1,4 @@ +import BitwardenKit import BitwardenSdk import SwiftUI diff --git a/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewItemViewTests.swift b/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewItemViewTests.swift index cfd41b8549..aa79f53d61 100644 --- a/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewItemViewTests.swift +++ b/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewItemViewTests.swift @@ -1,3 +1,5 @@ +import BitwardenKit +import BitwardenKitMocks import BitwardenSdk import SnapshotTesting import SwiftUI diff --git a/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewLoginItem/Extensions/CipherView+Update.swift b/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewLoginItem/Extensions/CipherView+Update.swift index 3bc84442b0..8e6a316982 100644 --- a/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewLoginItem/Extensions/CipherView+Update.swift +++ b/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewLoginItem/Extensions/CipherView+Update.swift @@ -1,3 +1,4 @@ +import BitwardenKit import BitwardenSdk import Foundation diff --git a/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewLoginItem/Extensions/CipherViewUpdateTests.swift b/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewLoginItem/Extensions/CipherViewUpdateTests.swift index e45486c0b1..a7917415a3 100644 --- a/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewLoginItem/Extensions/CipherViewUpdateTests.swift +++ b/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewLoginItem/Extensions/CipherViewUpdateTests.swift @@ -1,3 +1,4 @@ +import BitwardenKitMocks import BitwardenSdk import XCTest diff --git a/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewLoginItem/ViewLoginItemView.swift b/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewLoginItem/ViewLoginItemView.swift index 95764c214b..5673a74cde 100644 --- a/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewLoginItem/ViewLoginItemView.swift +++ b/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewLoginItem/ViewLoginItemView.swift @@ -1,3 +1,4 @@ +import BitwardenKit import BitwardenSdk import SwiftUI diff --git a/BitwardenShared/UI/Vault/Views/TOTPCountdownTimer.swift b/BitwardenShared/UI/Vault/Views/TOTPCountdownTimer.swift index 910f137a10..c69b517320 100644 --- a/BitwardenShared/UI/Vault/Views/TOTPCountdownTimer.swift +++ b/BitwardenShared/UI/Vault/Views/TOTPCountdownTimer.swift @@ -1,3 +1,4 @@ +import BitwardenKit import SwiftUI // MARK: - TOTPCountdownTimer diff --git a/BitwardenShared/UI/Vault/Views/TOTPCountdownTimerTests.swift b/BitwardenShared/UI/Vault/Views/TOTPCountdownTimerTests.swift index 2f80d63714..489c55e1a7 100644 --- a/BitwardenShared/UI/Vault/Views/TOTPCountdownTimerTests.swift +++ b/BitwardenShared/UI/Vault/Views/TOTPCountdownTimerTests.swift @@ -1,3 +1,4 @@ +import BitwardenKit import XCTest @testable import BitwardenShared diff --git a/BitwardenShared/UI/Vault/Views/TOTPCountdownTimerView.swift b/BitwardenShared/UI/Vault/Views/TOTPCountdownTimerView.swift index a1680b2a08..b4b6a43849 100644 --- a/BitwardenShared/UI/Vault/Views/TOTPCountdownTimerView.swift +++ b/BitwardenShared/UI/Vault/Views/TOTPCountdownTimerView.swift @@ -1,3 +1,4 @@ +import BitwardenKit import SwiftUI // MARK: - TOTPCountdownTimerView diff --git a/BitwardenShared/UI/Vault/Views/VaultListItemRow/VaultListItemRowView.swift b/BitwardenShared/UI/Vault/Views/VaultListItemRow/VaultListItemRowView.swift index 19e3b59cca..48c53d696d 100644 --- a/BitwardenShared/UI/Vault/Views/VaultListItemRow/VaultListItemRowView.swift +++ b/BitwardenShared/UI/Vault/Views/VaultListItemRow/VaultListItemRowView.swift @@ -1,3 +1,4 @@ +import BitwardenKit import BitwardenSdk import SwiftUI diff --git a/BitwardenShared/UI/Vault/Views/VaultListItemRow/VaultListItemRowViewTests.swift b/BitwardenShared/UI/Vault/Views/VaultListItemRow/VaultListItemRowViewTests.swift index ed3f2beca7..c83a766c44 100644 --- a/BitwardenShared/UI/Vault/Views/VaultListItemRow/VaultListItemRowViewTests.swift +++ b/BitwardenShared/UI/Vault/Views/VaultListItemRow/VaultListItemRowViewTests.swift @@ -1,3 +1,4 @@ +import BitwardenKitMocks import SnapshotTesting import XCTest From 6066cefe403ed9d425c32ab8a1d75b3bbdcf7575 Mon Sep 17 00:00:00 2001 From: Katherine Bertelsen Date: Wed, 7 May 2025 13:47:56 -0500 Subject: [PATCH 2/2] Consolidate PreviewTimeProvider --- .../Utilities/PreviewTimeProvider.swift | 11 ++++----- .../VaultItem/ViewItem/ViewItemView.swift | 23 ------------------- 2 files changed, 5 insertions(+), 29 deletions(-) rename {AuthenticatorShared => BitwardenKit}/UI/Platform/Application/Utilities/PreviewTimeProvider.swift (64%) diff --git a/AuthenticatorShared/UI/Platform/Application/Utilities/PreviewTimeProvider.swift b/BitwardenKit/UI/Platform/Application/Utilities/PreviewTimeProvider.swift similarity index 64% rename from AuthenticatorShared/UI/Platform/Application/Utilities/PreviewTimeProvider.swift rename to BitwardenKit/UI/Platform/Application/Utilities/PreviewTimeProvider.swift index f3229ee92c..2e7de53f78 100644 --- a/AuthenticatorShared/UI/Platform/Application/Utilities/PreviewTimeProvider.swift +++ b/BitwardenKit/UI/Platform/Application/Utilities/PreviewTimeProvider.swift @@ -1,18 +1,17 @@ -import BitwardenKit import SwiftUI #if DEBUG /// A `TimeProvider` for previews. /// -class PreviewTimeProvider: TimeProvider { +public class PreviewTimeProvider: TimeProvider { /// A fixed date to use for previews. - var fixedDate: Date + public var fixedDate: Date - var presentTime: Date { + public var presentTime: Date { fixedDate } - init( + public init( fixedDate: Date = .init( timeIntervalSinceReferenceDate: 1_695_000_011 ) @@ -20,7 +19,7 @@ class PreviewTimeProvider: TimeProvider { self.fixedDate = fixedDate } - func timeSince(_ date: Date) -> TimeInterval { + public func timeSince(_ date: Date) -> TimeInterval { presentTime.timeIntervalSince(date) } } diff --git a/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewItemView.swift b/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewItemView.swift index 261d134d33..0d63abed47 100644 --- a/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewItemView.swift +++ b/BitwardenShared/UI/Vault/VaultItem/ViewItem/ViewItemView.swift @@ -134,29 +134,6 @@ struct ViewItemView: View { // MARK: Previews #if DEBUG -/// A `TimeProvider` for previews. -/// -class PreviewTimeProvider: TimeProvider { - /// A fixed date to use for previews. - var fixedDate: Date - - var presentTime: Date { - fixedDate - } - - init( - fixedDate: Date = .init( - timeIntervalSinceReferenceDate: 1_695_000_011 - ) - ) { - self.fixedDate = fixedDate - } - - func timeSince(_ date: Date) -> TimeInterval { - presentTime.timeIntervalSince(date) - } -} - struct ViewItemView_Previews: PreviewProvider { static var cipher = CipherView.fixture( attachments: [