Signal-iOS/SignalServiceKit/tests/MessageBackup/BackupDisablingManagerTest.swift

60 lines
2.4 KiB
Swift

//
// Copyright 2025 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import Testing
@testable import SignalServiceKit
@MainActor
struct BackupDisablingManagerTest {
@Test
func testPreviousFailurePersistsUntilFutureSuccess() async throws {
let mockAccountEntropyPoolManager = MockAccountEntropyPoolManager()
let mockAuthCredentialStore = AuthCredentialStore(dateProvider: { Date() })
let mockBackupAttachmentDownloadQueueStatusManager = MockBackupAttachmentDownloadQueueStatusManager()
let mockBackupCDNCredentialStore = BackupCDNCredentialStore()
let mockBackupKeyService = MockBackupKeyService()
let mockBackupPlanManager = MockBackupPlanManager()
let mockBackupListMediaManager = MockBackupListMediaManager()
let mockDB = InMemoryDB()
let mockBackupSettingsStore = BackupSettingsStore()
let mockTSAccountManager = MockTSAccountManager()
let disablingManager = BackupDisablingManager(
accountEntropyPoolManager: mockAccountEntropyPoolManager,
authCredentialStore: mockAuthCredentialStore,
backupAttachmentDownloadQueueStatusManager: mockBackupAttachmentDownloadQueueStatusManager,
backupCDNCredentialStore: mockBackupCDNCredentialStore,
backupKeyService: mockBackupKeyService,
backupListMediaManager: mockBackupListMediaManager,
backupPlanManager: mockBackupPlanManager,
backupSettingsStore: mockBackupSettingsStore,
db: mockDB,
tsAccountManager: mockTSAccountManager
)
struct DeleteBackupError: Error {}
mockBackupKeyService.deleteBackupKeyMock = { throw DeleteBackupError() }
_ = await disablingManager.startDisablingBackups(aepSideEffect: nil)
await disablingManager.disableRemotelyIfNecessary()
mockDB.read { tx in
#expect(disablingManager.disableRemotelyFailed(tx: tx))
}
mockDB.write { tx in
try! mockBackupPlanManager.setBackupPlan(.free, tx: tx)
#expect(!disablingManager.disableRemotelyFailed(tx: tx))
}
mockBackupKeyService.deleteBackupKeyMock = { }
_ = await disablingManager.startDisablingBackups(aepSideEffect: nil)
await disablingManager.disableRemotelyIfNecessary()
mockDB.read { tx in
#expect(!disablingManager.disableRemotelyFailed(tx: tx))
}
}
}