159 lines · 6.7 KB · Swift
RawDownload
import Foundationimport Testing@testable import CodexBarCore struct AntigravityOAuthCredentialsStoreTests {    @Test    func `oauth client discovery reads renamed legacy bundle`() throws {        let root = FileManager.default.temporaryDirectory            .appendingPathComponent(UUID().uuidString, isDirectory: true)        defer { try? FileManager.default.removeItem(at: root) }         let legacyClient = AntigravityOAuthClient(            clientID: self.googleClientID("legacy"),            clientSecret: self.googleClientSecret(repeating: "a"))        try self.writeAntigravityApp(            named: "Antigravity 2.app",            under: root,            bundleIdentifier: "com.google.antigravity-ide",            artifactRelativePath: "Contents/Resources/app/out/main.js",            artifactData: Data("""            out-build/vs/platform/cloudCode/common/oauthClient.js            clientId="\(legacyClient.clientID)";            clientSecret="\(legacyClient.clientSecret)";            """.utf8))         #expect(            AntigravityOAuthConfig.discoverClientFromInstalledApp(                applicationRoots: [root]) == legacyClient)    }     @Test    func `oauth client discovery reads standalone antigravity 2 bundle`() throws {        let root = FileManager.default.temporaryDirectory            .appendingPathComponent(UUID().uuidString, isDirectory: true)        defer { try? FileManager.default.removeItem(at: root) }         let standaloneClient = AntigravityOAuthClient(            clientID: self.googleClientID("standalone"),            clientSecret: self.googleClientSecret(repeating: "b"))        let alternateClient = AntigravityOAuthClient(            clientID: self.googleClientID("alternate"),            clientSecret: self.googleClientSecret(repeating: "c"))        var artifactData = Data([0xFF])        artifactData.append(Data(            """            \u{0}\(alternateClient.clientSecret)\u{0}\(standaloneClient.clientSecret)\            \u{0}oauth_data\(standaloneClient.clientID)\u{0}\(alternateClient.clientID)\u{0}            """.utf8))        try self.writeAntigravityApp(            named: "Antigravity.app",            under: root,            artifactRelativePath: "Contents/Resources/bin/language_server",            artifactData: artifactData)         #expect(            AntigravityOAuthConfig.discoverClientFromInstalledApp(                applicationRoots: [root]) == standaloneClient)    }     @Test    func `oauth client discovery reads antigravity extension language server`() throws {        let root = FileManager.default.temporaryDirectory            .appendingPathComponent(UUID().uuidString, isDirectory: true)        defer { try? FileManager.default.removeItem(at: root) }         let extensionClient = AntigravityOAuthClient(            clientID: self.googleClientID("extension"),            clientSecret: self.googleClientSecret(repeating: "d"))        let staleClient = AntigravityOAuthClient(            clientID: self.googleClientID("stale"),            clientSecret: self.googleClientSecret(repeating: "e"))        try self.writeAntigravityApp(            named: "Antigravity IDE.app",            under: root,            bundleIdentifier: "com.google.antigravity-ide",            artifactRelativePath: "Contents/Resources/app/out/main.js",            artifactData: Data("""            out-build/vs/platform/cloudCode/common/oauthClient.js            clientId="\(staleClient.clientID)";            clientSecret="\(staleClient.clientSecret)";            """.utf8))        var artifactData = Data([0xFF])        artifactData.append(Data(            """            \u{0}\(extensionClient.clientSecret)\u{0}oauth_data\u{0}\(extensionClient.clientID)\u{0}            """.utf8))        try self.writeAntigravityApp(            named: "Antigravity IDE.app",            under: root,            bundleIdentifier: "com.google.antigravity-ide",            artifactRelativePath: "Contents/Resources/app/extensions/antigravity/bin/language_server_macos_arm",            artifactData: artifactData)         #expect(            AntigravityOAuthConfig.discoverClientFromInstalledApp(                applicationRoots: [root]) == extensionClient)    }     @Test    func `oauth client discovery pairs lone binary secret with trailing client id`() throws {        let root = FileManager.default.temporaryDirectory            .appendingPathComponent(UUID().uuidString, isDirectory: true)        defer { try? FileManager.default.removeItem(at: root) }         let standaloneClient = AntigravityOAuthClient(            clientID: self.googleClientID("standalone"),            clientSecret: self.googleClientSecret(repeating: "b"))        let alternateClientID = self.googleClientID("alternate")        var artifactData = Data([0xFF])        artifactData.append(Data(            """            \u{0}\(standaloneClient.clientSecret)\u{0}oauth_data\            \u{0}\(alternateClientID)\u{0}\(standaloneClient.clientID)\u{0}            """.utf8))        try self.writeAntigravityApp(            named: "Antigravity.app",            under: root,            artifactRelativePath: "Contents/Resources/bin/language_server",            artifactData: artifactData)         #expect(            AntigravityOAuthConfig.discoverClientFromInstalledApp(                applicationRoots: [root]) == standaloneClient)    }     private func writeAntigravityApp(        named name: String,        under root: URL,        bundleIdentifier: String = "com.google.antigravity",        artifactRelativePath: String,        artifactData: Data) throws    {        let appURL = root.appendingPathComponent(name, isDirectory: true)        let contentsURL = appURL.appendingPathComponent("Contents", isDirectory: true)        try FileManager.default.createDirectory(            at: contentsURL,            withIntermediateDirectories: true)        let infoURL = contentsURL.appendingPathComponent("Info.plist")        let infoData = try PropertyListSerialization.data(            fromPropertyList: ["CFBundleIdentifier": bundleIdentifier],            format: .xml,            options: 0)        try infoData.write(to: infoURL)         let artifactURL = appURL.appendingPathComponent(artifactRelativePath)        try FileManager.default.createDirectory(            at: artifactURL.deletingLastPathComponent(),            withIntermediateDirectories: true)        try artifactData.write(to: artifactURL)    }     private func googleClientID(_ name: String) -> String {        "123456789012-" + name + ".apps" + ".googleusercontent.com"    }     private func googleClientSecret(repeating character: Character) -> String {        "GOC" + "SPX-" + String(repeating: character, count: 28)    }}