Skip to content

Commit a82e4f1

Browse files
committed
Add keychain prompt mode and read strategy overrides for testing in UsageStore
1 parent 457b8af commit a82e4f1

File tree

3 files changed

+33
-11
lines changed

3 files changed

+33
-11
lines changed

Sources/CodexBar/UsageStore.swift

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1301,6 +1301,8 @@ extension UsageStore {
13011301
let credentialsURLOverride: URL?
13021302
let testingOverrides: ClaudeOAuthCredentialsStore.TestingOverridesSnapshot
13031303
let keychainDeniedUntilStoreOverride: ClaudeOAuthKeychainAccessGate.DeniedUntilStore?
1304+
let keychainPromptModeOverride: ClaudeOAuthKeychainPromptMode?
1305+
let keychainReadStrategyOverride: ClaudeOAuthKeychainReadStrategy?
13041306
let cliPathOverride: String?
13051307
let statusFetchOverride: ClaudeStatusProbe.FetchOverride?
13061308
#endif
@@ -1318,13 +1320,23 @@ extension UsageStore {
13181320
.withDeniedUntilStoreOverrideForTesting(self
13191321
.keychainDeniedUntilStoreOverride)
13201322
{
1321-
await ClaudeCLIResolver
1322-
.withResolvedBinaryPathOverrideForTesting(self
1323-
.cliPathOverride)
1324-
{
1325-
await ClaudeStatusProbe
1326-
.withFetchOverrideForTesting(self.statusFetchOverride) {
1327-
await operation()
1323+
await ClaudeOAuthKeychainPromptPreference
1324+
.withTaskOverrideForTesting(self.keychainPromptModeOverride) {
1325+
await ClaudeOAuthKeychainReadStrategyPreference
1326+
.withTaskOverrideForTesting(self
1327+
.keychainReadStrategyOverride)
1328+
{
1329+
await ClaudeCLIResolver
1330+
.withResolvedBinaryPathOverrideForTesting(self
1331+
.cliPathOverride)
1332+
{
1333+
await ClaudeStatusProbe
1334+
.withFetchOverrideForTesting(self
1335+
.statusFetchOverride)
1336+
{
1337+
await operation()
1338+
}
1339+
}
13281340
}
13291341
}
13301342
}
@@ -1348,6 +1360,8 @@ extension UsageStore {
13481360
credentialsURLOverride: ClaudeOAuthCredentialsStore.currentCredentialsURLOverrideForTesting,
13491361
testingOverrides: ClaudeOAuthCredentialsStore.currentTestingOverridesSnapshotForTask,
13501362
keychainDeniedUntilStoreOverride: ClaudeOAuthKeychainAccessGate.currentDeniedUntilStoreOverrideForTesting,
1363+
keychainPromptModeOverride: ClaudeOAuthKeychainPromptPreference.currentTaskOverrideForTesting,
1364+
keychainReadStrategyOverride: ClaudeOAuthKeychainReadStrategyPreference.currentTaskOverrideForTesting,
13511365
cliPathOverride: ClaudeCLIResolver.currentResolvedBinaryPathOverrideForTesting,
13521366
statusFetchOverride: ClaudeStatusProbe.currentFetchOverrideForTesting)
13531367
#else

Sources/CodexBarCore/Providers/Claude/ClaudeOAuth/ClaudeOAuthKeychainPromptMode.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public enum ClaudeOAuthKeychainPromptPreference {
5858
}
5959

6060
#if DEBUG
61-
static func withTaskOverrideForTesting<T>(
61+
public static func withTaskOverrideForTesting<T>(
6262
_ mode: ClaudeOAuthKeychainPromptMode?,
6363
operation: () throws -> T) rethrows -> T
6464
{
@@ -67,13 +67,17 @@ public enum ClaudeOAuthKeychainPromptPreference {
6767
}
6868
}
6969

70-
static func withTaskOverrideForTesting<T>(
70+
public static func withTaskOverrideForTesting<T>(
7171
_ mode: ClaudeOAuthKeychainPromptMode?,
7272
operation: () async throws -> T) async rethrows -> T
7373
{
7474
try await self.$taskOverride.withValue(mode) {
7575
try await operation()
7676
}
7777
}
78+
79+
public static var currentTaskOverrideForTesting: ClaudeOAuthKeychainPromptMode? {
80+
self.taskOverride
81+
}
7882
#endif
7983
}

Sources/CodexBarCore/Providers/Claude/ClaudeOAuth/ClaudeOAuthKeychainReadStrategy.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public enum ClaudeOAuthKeychainReadStrategyPreference {
2525
}
2626

2727
#if DEBUG
28-
static func withTaskOverrideForTesting<T>(
28+
public static func withTaskOverrideForTesting<T>(
2929
_ strategy: ClaudeOAuthKeychainReadStrategy?,
3030
operation: () throws -> T) rethrows -> T
3131
{
@@ -34,13 +34,17 @@ public enum ClaudeOAuthKeychainReadStrategyPreference {
3434
}
3535
}
3636

37-
static func withTaskOverrideForTesting<T>(
37+
public static func withTaskOverrideForTesting<T>(
3838
_ strategy: ClaudeOAuthKeychainReadStrategy?,
3939
operation: () async throws -> T) async rethrows -> T
4040
{
4141
try await self.$taskOverride.withValue(strategy) {
4242
try await operation()
4343
}
4444
}
45+
46+
public static var currentTaskOverrideForTesting: ClaudeOAuthKeychainReadStrategy? {
47+
self.taskOverride
48+
}
4549
#endif
4650
}

0 commit comments

Comments
 (0)