Files
2026-07-13 12:22:33 +08:00

57 lines
1.9 KiB
Swift

import CodexBarCore
import Foundation
import Testing
@testable import CodexBar
@Test
func `ProviderTokenAccountData encoding`() throws {
let now = Date().timeIntervalSince1970
let account = ProviderTokenAccount(
id: UUID(),
label: "user@example.com",
token: "test-token",
addedAt: now,
lastUsed: now)
let data = ProviderTokenAccountData(version: 1, accounts: [account], activeIndex: 0)
let encoder = JSONEncoder()
let encoded = try encoder.encode(data)
let decoder = JSONDecoder()
let decoded = try decoder.decode(ProviderTokenAccountData.self, from: encoded)
#expect(decoded.version == 1)
#expect(decoded.accounts.count == 1)
#expect(decoded.accounts[0].label == "user@example.com")
#expect(decoded.activeIndex == 0)
}
@Test
func `FileTokenAccountStore round trip`() throws {
let tempDir = FileManager.default.temporaryDirectory
let fileURL = tempDir.appendingPathComponent("codexbar-token-accounts-test.json")
defer { try? FileManager.default.removeItem(at: fileURL) }
let now = Date().timeIntervalSince1970
let account = ProviderTokenAccount(
id: UUID(),
label: "user@example.com",
token: "test-token",
addedAt: now,
lastUsed: nil,
usageScope: "team",
organizationID: "org-test",
workspaceID: "proj-test")
let data = ProviderTokenAccountData(version: 1, accounts: [account], activeIndex: 0)
let store = FileTokenAccountStore(fileURL: fileURL)
try store.storeAccounts([.zai: data])
let loaded = try store.loadAccounts()
#expect(loaded[.zai]?.accounts.count == 1)
#expect(loaded[.zai]?.accounts[0].label == "user@example.com")
#expect(loaded[.zai]?.accounts[0].usageScope == "team")
#expect(loaded[.zai]?.accounts[0].organizationID == "org-test")
#expect(loaded[.zai]?.accounts[0].workspaceID == "proj-test")
}