92 lines
3.0 KiB
Swift
92 lines
3.0 KiB
Swift
import CodexBarCore
|
|
import Foundation
|
|
import Testing
|
|
|
|
struct ProviderCookieSettingsResolverTests {
|
|
@Test
|
|
func `shared cookie settings preserve Alibaba token plan defaults`() {
|
|
let settings = ProviderSettingsSnapshot.AlibabaTokenPlanProviderSettings()
|
|
|
|
#expect(settings.cookieSource == .auto)
|
|
#expect(settings.manualCookieHeader == nil)
|
|
}
|
|
|
|
@Test
|
|
func `provider cookie settings remain distinct nominal types`() {
|
|
let cursor = ProviderSettingsSnapshot.CursorProviderSettings(
|
|
cookieSource: .auto,
|
|
manualCookieHeader: nil)
|
|
let factory = ProviderSettingsSnapshot.FactoryProviderSettings(
|
|
cookieSource: .auto,
|
|
manualCookieHeader: nil)
|
|
|
|
#expect(Self.providerName(cursor) == "cursor")
|
|
#expect(Self.providerName(factory) == "factory")
|
|
}
|
|
|
|
@Test
|
|
func `selected cookie account overrides configured credentials`() {
|
|
let settings = ProviderCookieSettingsResolver.resolve(
|
|
provider: .manus,
|
|
configuredSource: .auto,
|
|
configuredHeader: "session_id=config",
|
|
selectedAccount: Self.account(token: "account"))
|
|
|
|
#expect(settings.cookieSource == .manual)
|
|
#expect(settings.manualCookieHeader == "session_id=account")
|
|
}
|
|
|
|
@Test
|
|
func `configured credentials remain when no account is selected`() {
|
|
let settings = ProviderCookieSettingsResolver.resolve(
|
|
provider: .cursor,
|
|
configuredSource: .manual,
|
|
configuredHeader: "Cookie: session=config",
|
|
selectedAccount: nil)
|
|
|
|
#expect(settings.cookieSource == .manual)
|
|
#expect(settings.manualCookieHeader == "Cookie: session=config")
|
|
}
|
|
|
|
@Test
|
|
func `environment token accounts do not become cookie credentials`() {
|
|
let settings = ProviderCookieSettingsResolver.resolve(
|
|
provider: .zai,
|
|
configuredSource: .off,
|
|
configuredHeader: nil,
|
|
selectedAccount: Self.account(token: "api-token"))
|
|
|
|
#expect(settings.cookieSource == .off)
|
|
#expect(settings.manualCookieHeader == nil)
|
|
}
|
|
|
|
@Test
|
|
func `providers without token account support ignore selected account`() {
|
|
let settings = ProviderCookieSettingsResolver.resolve(
|
|
provider: .mimo,
|
|
configuredSource: .auto,
|
|
configuredHeader: "configured=true",
|
|
selectedAccount: Self.account(token: "account=true"))
|
|
|
|
#expect(settings.cookieSource == .auto)
|
|
#expect(settings.manualCookieHeader == "configured=true")
|
|
}
|
|
|
|
private static func account(token: String) -> ProviderTokenAccount {
|
|
ProviderTokenAccount(
|
|
id: UUID(),
|
|
label: "Test",
|
|
token: token,
|
|
addedAt: 0,
|
|
lastUsed: nil)
|
|
}
|
|
|
|
private static func providerName(_: ProviderSettingsSnapshot.CursorProviderSettings) -> String {
|
|
"cursor"
|
|
}
|
|
|
|
private static func providerName(_: ProviderSettingsSnapshot.FactoryProviderSettings) -> String {
|
|
"factory"
|
|
}
|
|
}
|