Files
steipete--codexbar/Tests/CodexBarTests/CrofProviderImplementationTests.swift
2026-07-13 12:22:33 +08:00

53 lines
1.9 KiB
Swift

import CodexBarCore
import Foundation
import Testing
@testable import CodexBar
@MainActor
struct CrofProviderImplementationTests {
@Test
func `availability uses crof environment token`() throws {
let settings = try Self.makeSettings(suite: "CrofProviderImplementationTests-env")
let implementation = CrofProviderImplementation()
let context = ProviderAvailabilityContext(
provider: .crof,
settings: settings,
environment: [CrofSettingsReader.apiKeyEnvironmentKeys[0]: "env-token"])
#expect(implementation.isAvailable(context: context))
}
@Test
func `availability uses stored crof API token`() throws {
let settings = try Self.makeSettings(suite: "CrofProviderImplementationTests-settings")
settings.crofAPIToken = "stored-token"
let implementation = CrofProviderImplementation()
let context = ProviderAvailabilityContext(provider: .crof, settings: settings, environment: [:])
#expect(implementation.isAvailable(context: context))
}
@Test
func `availability rejects missing crof API token`() throws {
let settings = try Self.makeSettings(suite: "CrofProviderImplementationTests-missing")
settings.crofAPIToken = " "
let implementation = CrofProviderImplementation()
let context = ProviderAvailabilityContext(provider: .crof, settings: settings, environment: [:])
#expect(!implementation.isAvailable(context: context))
}
private static func makeSettings(suite: String) throws -> SettingsStore {
let defaults = try #require(UserDefaults(suiteName: suite))
defaults.removePersistentDomain(forName: suite)
return SettingsStore(
userDefaults: defaults,
configStore: testConfigStore(suiteName: suite),
zaiTokenStore: NoopZaiTokenStore(),
syntheticTokenStore: NoopSyntheticTokenStore())
}
}