import CodexBarCoreimport Foundationimport Testing@testable import CodexBar @MainActorstruct 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()) }}
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())
}
}