codeburn/mac/Tests/CodeBurnMenubarTests/CodexTerminalFailureTests.swift

36 lines
1.3 KiB
Swift

import Foundation
import Testing
@testable import CodeBurnMenubar
@Suite("Codex terminal failure classification")
struct CodexTerminalFailureTests {
@Test("expired refresh token (4xx) is terminal")
func expiredRefreshTokenIsTerminal() {
let err = CodexCredentialStore.StoreError.refreshHTTPError(400, "invalid_grant: refresh_token_expired")
#expect(err.isTerminal)
}
@Test("missing refresh token is terminal")
func missingRefreshTokenIsTerminal() {
#expect(CodexCredentialStore.StoreError.noRefreshToken.isTerminal)
}
@Test("a 5xx refresh error is not terminal")
func serverErrorIsNotTerminal() {
let err = CodexCredentialStore.StoreError.refreshHTTPError(503, "service unavailable")
#expect(!err.isTerminal)
}
@Test("a network error is not terminal")
func networkErrorIsNotTerminal() {
let err = CodexCredentialStore.StoreError.refreshNetworkError(URLError(.timedOut))
#expect(!err.isTerminal)
}
@Test("FetchError wrapping a terminal credential error is terminal")
func fetchErrorPropagatesTerminal() {
let store = CodexCredentialStore.StoreError.refreshHTTPError(401, "invalid_grant")
let fetch = CodexSubscriptionService.FetchError.credential(store)
#expect(fetch.isTerminal)
}
}