#if os(Linux)import Foundationimport Testing@testable import CodexBarCore struct ClaudeOAuthUsageRateLimitGateLinuxTests { @Test func `rate limit gate isolates tokens without storing raw credentials`() { ClaudeOAuthUsageRateLimitGate.resetForTesting() defer { ClaudeOAuthUsageRateLimitGate.resetForTesting() } let now = Date(timeIntervalSince1970: 1_700_000_000) let tokenA = "linux-account-a" let tokenB = "linux-account-b" let keyA = ClaudeOAuthUsageRateLimitGate.storageKeyForTesting(accessToken: tokenA) let keyB = ClaudeOAuthUsageRateLimitGate.storageKeyForTesting(accessToken: tokenB) ClaudeOAuthUsageRateLimitGate.recordRateLimit( accessToken: tokenA, retryAfter: now.addingTimeInterval(120), now: now) #expect(keyA != keyB) #expect(!keyA.contains(tokenA)) #expect(ClaudeOAuthUsageRateLimitGate.currentBlockedUntil(accessToken: tokenA, now: now) != nil) #expect(ClaudeOAuthUsageRateLimitGate.currentBlockedUntil(accessToken: tokenB, now: now) == nil) }}#endif
#if os(Linux)
import Foundation
import Testing
@testable import CodexBarCore
struct ClaudeOAuthUsageRateLimitGateLinuxTests {
@Test
func `rate limit gate isolates tokens without storing raw credentials`() {
ClaudeOAuthUsageRateLimitGate.resetForTesting()
defer { ClaudeOAuthUsageRateLimitGate.resetForTesting() }
let now = Date(timeIntervalSince1970: 1_700_000_000)
let tokenA = "linux-account-a"
let tokenB = "linux-account-b"
let keyA = ClaudeOAuthUsageRateLimitGate.storageKeyForTesting(accessToken: tokenA)
let keyB = ClaudeOAuthUsageRateLimitGate.storageKeyForTesting(accessToken: tokenB)
ClaudeOAuthUsageRateLimitGate.recordRateLimit(
accessToken: tokenA,
retryAfter: now.addingTimeInterval(120),
now: now)
#expect(keyA != keyB)
#expect(!keyA.contains(tokenA))
#expect(ClaudeOAuthUsageRateLimitGate.currentBlockedUntil(accessToken: tokenA, now: now) != nil)
#expect(ClaudeOAuthUsageRateLimitGate.currentBlockedUntil(accessToken: tokenB, now: now) == nil)
}
}
#endif