Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 2 additions & 9 deletions Tests/OpenUsageTests/AntigravityLayoutTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -98,15 +98,8 @@ final class AntigravityLayoutTests: XCTestCase {
XCTAssertEqual(store.pinnedMetricIDs, ["antigravity.geminiPro", "antigravity.geminiWeekly"])
}

func testSavedPinsKeyIsRespectedExactly() {
let defaults = makeDefaults("PinsPresent")
saveStored([PlacedWidget(descriptorID: "antigravity.geminiPro")], forKey: "layout", in: defaults)
defaults.set(["antigravity.claude"], forKey: "layout.menuBarPins")

let store = LayoutStore(registry: .antigravityOnly, defaults: defaults, storageKey: "layout")
XCTAssertEqual(store.pinnedMetricIDs, ["antigravity.claude"],
"a user-saved pin set must not gain the new default pins")
}
// A saved pins key never gains new default pins — asserted above in
// testSavedGeminiFlashStateIsFilteredEverywhere (the exact-pin-set check).

// MARK: - Fixtures

Expand Down
75 changes: 26 additions & 49 deletions Tests/OpenUsageTests/AntigravityProviderTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,25 @@ final class AntigravityProviderTests: XCTestCase {

// MARK: - Provider integration (Cloud Code path, no language server)

/// A provider on the Cloud Code path (no language server), signed in via a wrapped keychain
/// token. Pass `keychainExpiry: nil` for a signed-out provider (empty keychain).
@MainActor
private func makeCloudCodeProvider(
routing: RoutingHTTPClient,
keychainExpiry: String? = "2099-01-01T00:00:00Z"
) -> AntigravityProvider {
let wrapped = keychainExpiry.map { expiry in
let inner = #"{"token":{"access_token":"ya29.kc","refresh_token":"1//r","expiry":"\#(expiry)"}}"#
return "go-keyring-base64:" + Data(inner.utf8).base64EncodedString()
}
return AntigravityProvider(
authStore: AntigravityAuthStore(keychain: FakeKeychain(wrapped), files: FakeFiles()),
usageClient: AntigravityUsageClient(lsHTTP: routing, http: routing),
discovery: LanguageServerDiscovery(processRunner: EmptyProcessRunner()),
dbUsageScanner: AntigravityDbUsageScanner(conversationsDirectory: { "/nonexistent-antigravity-tests" })
)
}

@MainActor
func testRefreshUsesCloudCodeWhenNoLanguageServer() async {
let modelsJSON = """
Expand All @@ -316,15 +335,7 @@ final class AntigravityProviderTests: XCTestCase {
return HTTPResponse(statusCode: 404, headers: [:], body: Data())
}

let inner = #"{"token":{"access_token":"ya29.kc","refresh_token":"1//r","expiry":"2099-01-01T00:00:00Z"}}"#
let wrapped = "go-keyring-base64:" + Data(inner.utf8).base64EncodedString()

let provider = AntigravityProvider(
authStore: AntigravityAuthStore(keychain: FakeKeychain(wrapped), files: FakeFiles()),
usageClient: AntigravityUsageClient(lsHTTP: routing, http: routing),
discovery: LanguageServerDiscovery(processRunner: EmptyProcessRunner()),
dbUsageScanner: AntigravityDbUsageScanner(conversationsDirectory: { "/nonexistent-antigravity-tests" })
)
let provider = makeCloudCodeProvider(routing: routing)

let snapshot = await provider.refresh()
XCTAssertEqual(snapshot.plan, "Pro")
Expand All @@ -337,11 +348,7 @@ final class AntigravityProviderTests: XCTestCase {
@MainActor
func testRefreshErrorsWhenNothingAvailable() async {
let routing = RoutingHTTPClient { _ in HTTPResponse(statusCode: 500, headers: [:], body: Data()) }
let provider = AntigravityProvider(
authStore: AntigravityAuthStore(keychain: FakeKeychain(nil), files: FakeFiles()),
usageClient: AntigravityUsageClient(lsHTTP: routing, http: routing),
discovery: LanguageServerDiscovery(processRunner: EmptyProcessRunner())
)
let provider = makeCloudCodeProvider(routing: routing, keychainExpiry: nil)
let snapshot = await provider.refresh()
XCTAssertTrue(snapshot.lines.contains { $0.isError })
XCTAssertEqual(snapshot.errorCategory, .notLoggedIn)
Expand All @@ -352,13 +359,7 @@ final class AntigravityProviderTests: XCTestCase {
// Valid keychain token, but every Cloud Code endpoint is down. A signed-in user should see a
// transient failure (.network), not "not signed in" (.notLoggedIn).
let routing = RoutingHTTPClient { _ in HTTPResponse(statusCode: 503, headers: [:], body: Data()) }
let inner = #"{"token":{"access_token":"ya29.kc","refresh_token":"1//r","expiry":"2099-01-01T00:00:00Z"}}"#
let wrapped = "go-keyring-base64:" + Data(inner.utf8).base64EncodedString()
let provider = AntigravityProvider(
authStore: AntigravityAuthStore(keychain: FakeKeychain(wrapped), files: FakeFiles()),
usageClient: AntigravityUsageClient(lsHTTP: routing, http: routing),
discovery: LanguageServerDiscovery(processRunner: EmptyProcessRunner())
)
let provider = makeCloudCodeProvider(routing: routing)
let snapshot = await provider.refresh()
XCTAssertTrue(snapshot.lines.contains { $0.isError })
XCTAssertEqual(snapshot.errorCategory, .network)
Expand All @@ -374,13 +375,7 @@ final class AntigravityProviderTests: XCTestCase {
}
return HTTPResponse(statusCode: 503, headers: [:], body: Data())
}
let inner = #"{"token":{"access_token":"ya29.old","refresh_token":"1//dead","expiry":"2000-01-01T00:00:00Z"}}"#
let wrapped = "go-keyring-base64:" + Data(inner.utf8).base64EncodedString()
let provider = AntigravityProvider(
authStore: AntigravityAuthStore(keychain: FakeKeychain(wrapped), files: FakeFiles()),
usageClient: AntigravityUsageClient(lsHTTP: routing, http: routing),
discovery: LanguageServerDiscovery(processRunner: EmptyProcessRunner())
)
let provider = makeCloudCodeProvider(routing: routing, keychainExpiry: "2000-01-01T00:00:00Z")
let snapshot = await provider.refresh()
XCTAssertEqual(snapshot.errorCategory, .authExpired)
}
Expand All @@ -396,13 +391,7 @@ final class AntigravityProviderTests: XCTestCase {
}
return HTTPResponse(statusCode: 401, headers: [:], body: Data())
}
let inner = #"{"token":{"access_token":"ya29.kc","refresh_token":"1//r","expiry":"2099-01-01T00:00:00Z"}}"#
let wrapped = "go-keyring-base64:" + Data(inner.utf8).base64EncodedString()
let provider = AntigravityProvider(
authStore: AntigravityAuthStore(keychain: FakeKeychain(wrapped), files: FakeFiles()),
usageClient: AntigravityUsageClient(lsHTTP: routing, http: routing),
discovery: LanguageServerDiscovery(processRunner: EmptyProcessRunner())
)
let provider = makeCloudCodeProvider(routing: routing)
let snapshot = await provider.refresh()
XCTAssertEqual(snapshot.errorCategory, .network)
}
Expand All @@ -417,13 +406,7 @@ final class AntigravityProviderTests: XCTestCase {
}
return HTTPResponse(statusCode: 503, headers: [:], body: Data())
}
let inner = #"{"token":{"access_token":"ya29.old","refresh_token":"1//r","expiry":"2000-01-01T00:00:00Z"}}"#
let wrapped = "go-keyring-base64:" + Data(inner.utf8).base64EncodedString()
let provider = AntigravityProvider(
authStore: AntigravityAuthStore(keychain: FakeKeychain(wrapped), files: FakeFiles()),
usageClient: AntigravityUsageClient(lsHTTP: routing, http: routing),
discovery: LanguageServerDiscovery(processRunner: EmptyProcessRunner())
)
let provider = makeCloudCodeProvider(routing: routing, keychainExpiry: "2000-01-01T00:00:00Z")
let snapshot = await provider.refresh()
XCTAssertEqual(snapshot.errorCategory, .network)
}
Expand All @@ -443,13 +426,7 @@ final class AntigravityProviderTests: XCTestCase {
}
return HTTPResponse(statusCode: 503, headers: [:], body: Data())
}
let inner = #"{"token":{"access_token":"ya29.kc","refresh_token":"1//r","expiry":"2099-01-01T00:00:00Z"}}"#
let wrapped = "go-keyring-base64:" + Data(inner.utf8).base64EncodedString()
let provider = AntigravityProvider(
authStore: AntigravityAuthStore(keychain: FakeKeychain(wrapped), files: FakeFiles()),
usageClient: AntigravityUsageClient(lsHTTP: routing, http: routing),
discovery: LanguageServerDiscovery(processRunner: EmptyProcessRunner())
)
let provider = makeCloudCodeProvider(routing: routing)
let snapshot = await provider.refresh()
XCTAssertEqual(snapshot.errorCategory, .network)
}
Expand Down
Loading