53 lines
1.8 KiB
Swift
53 lines
1.8 KiB
Swift
import Foundation
|
|
import Testing
|
|
@testable import Clawdbot
|
|
|
|
@Suite
|
|
struct AnthropicAuthResolverTests {
|
|
@Test
|
|
func prefersOAuthFileOverEnv() throws {
|
|
let dir = FileManager.default.temporaryDirectory
|
|
.appendingPathComponent("clawdbot-oauth-\(UUID().uuidString)", isDirectory: true)
|
|
try FileManager.default.createDirectory(at: dir, withIntermediateDirectories: true)
|
|
let oauthFile = dir.appendingPathComponent("oauth.json")
|
|
let payload = [
|
|
"anthropic": [
|
|
"type": "oauth",
|
|
"refresh": "r1",
|
|
"access": "a1",
|
|
"expires": 1_234_567_890,
|
|
],
|
|
]
|
|
let data = try JSONSerialization.data(withJSONObject: payload, options: [.prettyPrinted, .sortedKeys])
|
|
try data.write(to: oauthFile, options: [.atomic])
|
|
|
|
let status = ClawdbotOAuthStore.anthropicOAuthStatus(at: oauthFile)
|
|
let mode = AnthropicAuthResolver.resolve(environment: [
|
|
"ANTHROPIC_API_KEY": "sk-ant-ignored",
|
|
], oauthStatus: status)
|
|
#expect(mode == .oauthFile)
|
|
}
|
|
|
|
@Test
|
|
func reportsOAuthEnvWhenPresent() {
|
|
let mode = AnthropicAuthResolver.resolve(environment: [
|
|
"ANTHROPIC_OAUTH_TOKEN": "token",
|
|
], oauthStatus: .missingFile)
|
|
#expect(mode == .oauthEnv)
|
|
}
|
|
|
|
@Test
|
|
func reportsAPIKeyEnvWhenPresent() {
|
|
let mode = AnthropicAuthResolver.resolve(environment: [
|
|
"ANTHROPIC_API_KEY": "sk-ant-key",
|
|
], oauthStatus: .missingFile)
|
|
#expect(mode == .apiKeyEnv)
|
|
}
|
|
|
|
@Test
|
|
func reportsMissingWhenNothingConfigured() {
|
|
let mode = AnthropicAuthResolver.resolve(environment: [:], oauthStatus: .missingFile)
|
|
#expect(mode == .missing)
|
|
}
|
|
}
|