Signal-iOS/SignalServiceKit/tests/MessageBackup/BackupDisablingManagerTest.swift
Harry b1fe641270
SVR🐝
2025-08-04 14:07:33 -07:00

55 lines
2.0 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 mockBackupAttachmentDownloadQueueStatusManager = MockBackupAttachmentDownloadQueueStatusManager()
let mockBackupIdManager = MockBackupIdManager()
let mockBackupPlanManager = MockBackupPlanManager()
let mockBackupListMediaManager = MockBackupListMediaManager()
let mockDB = InMemoryDB()
let mockTSAccountManager = MockTSAccountManager()
let disablingManager = BackupDisablingManager(
authCredentialStore: AuthCredentialStore(dateProvider: { Date() }),
backupAttachmentDownloadQueueStatusManager: mockBackupAttachmentDownloadQueueStatusManager,
backupCDNCredentialStore: BackupCDNCredentialStore(),
backupIdManager: mockBackupIdManager,
backupListMediaManager: mockBackupListMediaManager,
backupPlanManager: mockBackupPlanManager,
backupSettingsStore: BackupSettingsStore(),
db: mockDB,
tsAccountManager: mockTSAccountManager
)
struct DeleteBackupError: Error {}
mockBackupIdManager.deleteBackupIdMock = { throw DeleteBackupError() }
_ = await disablingManager.startDisablingBackups()
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))
}
mockBackupIdManager.deleteBackupIdMock = { }
_ = await disablingManager.startDisablingBackups()
await disablingManager.disableRemotelyIfNecessary()
mockDB.read { tx in
#expect(!disablingManager.disableRemotelyFailed(tx: tx))
}
}
}