120 lines · 5.8 KB · Swift
RawDownload
import CodexBarCoreimport Foundationimport Testing@testable import CodexBar @MainActorextension CodexAccountScopedRefreshTests {    @Test    func `backfills non active email only codex row from own history`() async throws {        let settings = self.makeSettingsStore(            suite: "CodexAccountVisibleHistoryBackfillTests-non-active-email-history")        settings.refreshFrequency = .manual        settings.multiAccountMenuLayout = .stacked         let activeID = try #require(UUID(uuidString: "BBBBBBBB-CCCC-DDDD-EEEE-333333333333"))        let siblingID = try #require(UUID(uuidString: "BBBBBBBB-CCCC-DDDD-EEEE-444444444444"))        let activeHome = FileManager.default.temporaryDirectory            .appendingPathComponent("codex-visible-active-email-\(UUID().uuidString)", isDirectory: true)        let siblingHome = FileManager.default.temporaryDirectory            .appendingPathComponent("codex-visible-sibling-email-\(UUID().uuidString)", isDirectory: true)        try Self.writeCodexAuthFile(            homeURL: activeHome,            email: "active-email-history@example.com",            plan: "Pro")        try Self.writeCodexAuthFile(            homeURL: siblingHome,            email: "sibling-email-history@example.com",            plan: "Pro")        let activeFingerprint = try #require(CodexAuthFingerprint.fingerprint(homePath: activeHome.path))        let siblingFingerprint = try #require(CodexAuthFingerprint.fingerprint(homePath: siblingHome.path))        let activeAccount = ManagedCodexAccount(            id: activeID,            email: "active-email-history@example.com",            workspaceLabel: "Active Team",            authFingerprint: activeFingerprint,            managedHomePath: activeHome.path,            createdAt: 1,            updatedAt: 2,            lastAuthenticatedAt: 2)        let siblingAccount = ManagedCodexAccount(            id: siblingID,            email: "sibling-email-history@example.com",            workspaceLabel: "Sibling Team",            authFingerprint: siblingFingerprint,            managedHomePath: siblingHome.path,            createdAt: 1,            updatedAt: 2,            lastAuthenticatedAt: 2)        let storeURL = try self.makeManagedAccountStoreURL(accounts: [activeAccount, siblingAccount])        defer {            settings._test_managedCodexAccountStoreURL = nil            try? FileManager.default.removeItem(at: storeURL)            try? FileManager.default.removeItem(at: activeHome)            try? FileManager.default.removeItem(at: siblingHome)        }        settings._test_managedCodexAccountStoreURL = storeURL        settings.codexActiveSource = .managedAccount(id: activeID)         let snapshotStore = RecordingCodexAccountUsageSnapshotStore(initialSnapshots: [])        let store = UsageStore(            fetcher: UsageFetcher(environment: [:]),            browserDetection: BrowserDetection(cacheTTL: 0),            settings: settings,            codexAccountUsageSnapshotStore: snapshotStore,            startupBehavior: .testing)        let now = Date()        let sessionReset = now.addingTimeInterval(2 * 60 * 60)        let weeklyReset = now.addingTimeInterval(4 * 24 * 60 * 60)        let siblingHistoryKey = CodexHistoryOwnership.canonicalEmailHashKey(for: "sibling-email-history@example.com")        store.planUtilizationHistory[.codex] = PlanUtilizationHistoryBuckets(accounts: [            siblingHistoryKey: [                planSeries(name: .session, windowMinutes: 300, entries: [                    planEntry(at: now.addingTimeInterval(-60), usedPercent: 6, resetsAt: sessionReset),                ]),                planSeries(name: .weekly, windowMinutes: 10080, entries: [                    planEntry(at: now.addingTimeInterval(-60), usedPercent: 36, resetsAt: weeklyReset),                ]),            ],        ])        store.lastCodexAccountScopedRefreshGuard = CodexAccountScopedRefreshGuard(            source: .managedAccount(id: activeID),            identity: .emailOnly(normalizedEmail: "active-email-history@example.com"),            accountKey: "active-email-history@example.com",            authFingerprint: activeFingerprint)        self.installContextualCodexProvider(on: store) { context in            let isActive = context.env["CODEX_HOME"] == activeHome.path            return UsageSnapshot(                primary: RateWindow(                    usedPercent: isActive ? 3 : 6,                    windowMinutes: 0,                    resetsAt: nil,                    resetDescription: nil),                secondary: nil,                updatedAt: now)        }         await store.refreshCodexVisibleAccountsForMenu()         let activeSnapshot = try #require(store.codexAccountSnapshots.first {            $0.account.email == "active-email-history@example.com"        }?.snapshot)        #expect(activeSnapshot.primary?.usedPercent == 3)        #expect(activeSnapshot.primary?.windowMinutes == 0)        #expect(activeSnapshot.primary?.resetsAt == nil)         let siblingSnapshot = try #require(store.codexAccountSnapshots.first {            $0.account.email == "sibling-email-history@example.com"        }?.snapshot)        #expect(siblingSnapshot.primary?.usedPercent == 6)        #expect(siblingSnapshot.primary?.windowMinutes == 300)        #expect(siblingSnapshot.primary?.resetsAt == sessionReset)        #expect(siblingSnapshot.secondary?.usedPercent == 36)        #expect(siblingSnapshot.secondary?.resetsAt == weeklyReset)        let persistedSibling = try #require(snapshotStore.storedSnapshots.first {            $0.account.email == "sibling-email-history@example.com"        }?.snapshot)        #expect(persistedSibling.primary?.resetsAt == sessionReset)        #expect(persistedSibling.secondary?.resetsAt == weeklyReset)    }}