Files
2026-07-13 12:22:33 +08:00

56 lines
2.0 KiB
Swift

import Testing
@testable import CodexBarCore
struct WindsurfProviderTests {
private func makeContext(
sourceMode: ProviderSourceMode,
settings: ProviderSettingsSnapshot? = nil) -> ProviderFetchContext
{
let browserDetection = BrowserDetection(cacheTTL: 0)
return ProviderFetchContext(
runtime: .app,
sourceMode: sourceMode,
includeCredits: false,
webTimeout: 1,
webDebugDumpHTML: false,
verbose: false,
env: [:],
settings: settings,
fetcher: UsageFetcher(),
claudeFetcher: ClaudeUsageFetcher(browserDetection: browserDetection),
browserDetection: browserDetection)
}
@Test
func `local probe is unavailable in explicit web mode`() async {
let strategy = WindsurfLocalFetchStrategy()
#expect(await strategy.isAvailable(self.makeContext(sourceMode: .web)) == false)
#expect(await strategy.isAvailable(self.makeContext(sourceMode: .auto)))
#expect(await strategy.isAvailable(self.makeContext(sourceMode: .cli)))
}
@Test
func `web mode with cookies off does not fall back to local probe`() async {
let settings = ProviderSettingsSnapshot.make(
windsurf: .init(
usageDataSource: .web,
cookieSource: .off,
manualCookieHeader: nil))
let context = self.makeContext(sourceMode: .web, settings: settings)
let outcome = await WindsurfProviderDescriptor.descriptor.fetchPlan.fetchOutcome(
context: context,
provider: .windsurf)
guard case let .failure(error) = outcome.result else {
Issue.record("Expected web-only Windsurf fetch to fail when cookies are off")
return
}
#expect(error is ProviderFetchError)
#expect(outcome.attempts.map(\.strategyID) == ["windsurf.web", "windsurf.local"])
#expect(outcome.attempts.map(\.wasAvailable) == [false, false])
}
}