53 lines
1.9 KiB
Swift
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())
|
|
}
|
|
}
|