import Foundationimport os.lockimport Testing@testable import CodexBarCore #if os(macOS)import SweetCookieKit @Suite(.serialized)struct AlibabaCodingPlanCookieImporterTests { @Test(.disabled( if: ProcessInfo.processInfo.environment[BrowserCookieAccessGate.allowTestCookieAccessEnvironmentKey] == "1", "Default-home cookie access is explicitly enabled for this test run.")) func `default home import is suppressed before profile and keychain access`() throws { let profileProbeCount = OSAllocatedUnfairLock(initialState: 0) let keychainProbeCount = OSAllocatedUnfairLock(initialState: 0) let defaultHome = try #require(BrowserCookieClient.defaultHomeDirectories().first) let detection = BrowserDetection( homeDirectory: defaultHome.path, cacheTTL: 0, fileExists: { _ in profileProbeCount.withLock { $0 += 1 } return true }, directoryContents: { _ in profileProbeCount.withLock { $0 += 1 } return ["Default"] }) _ = KeychainAccessGate.withTaskOverrideForTesting(false) { KeychainAccessPreflight.withCheckGenericPasswordOverrideForTesting { _, _ in keychainProbeCount.withLock { $0 += 1 } return .allowed } operation: { #expect(throws: AlibabaCodingPlanSettingsError.self) { _ = try AlibabaCodingPlanCookieImporter.importSession(browserDetection: detection) } } } #expect(profileProbeCount.withLock { $0 } == 0) #expect(keychainProbeCount.withLock { $0 } == 0) } @Test(.disabled( if: ProcessInfo.processInfo.environment[BrowserCookieAccessGate.allowTestCookieAccessEnvironmentKey] == "1", "Default-home cookie access is explicitly enabled for this test run.")) func `chromium fallback rejects default client before keychain access`() { let keychainProbeCount = OSAllocatedUnfairLock(initialState: 0) _ = KeychainAccessGate.withTaskOverrideForTesting(false) { KeychainAccessPreflight.withCheckGenericPasswordOverrideForTesting { _, _ in keychainProbeCount.withLock { $0 += 1 } return .allowed } operation: { #expect(throws: BrowserCookieStoreAccessSuppressedError.self) { _ = try AlibabaChromiumCookieFallbackImporter.importSession( browser: .chrome, domains: ["example.com"]) } } } #expect(keychainProbeCount.withLock { $0 } == 0) } @Test func `domain matching requires exact or label bounded suffix`() { #expect(AlibabaCodingPlanCookieImporter.matchesCookieDomain("console.aliyun.com")) #expect(AlibabaCodingPlanCookieImporter.matchesCookieDomain(".modelstudio.console.alibabacloud.com")) #expect(AlibabaCodingPlanCookieImporter.matchesCookieDomain("foo.aliyun.com")) #expect(AlibabaCodingPlanCookieImporter.matchesCookieDomain("evilaliyun.com") == false) #expect(AlibabaCodingPlanCookieImporter.matchesCookieDomain("notalibabacloud.com") == false) } @Test func `cookie import candidates honor provided browser order`() throws { BrowserCookieAccessGate.resetForTesting() let temp = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) try FileManager.default.createDirectory(at: temp, withIntermediateDirectories: true) defer { try? FileManager.default.removeItem(at: temp) } let firefoxProfile = temp .appendingPathComponent("Library") .appendingPathComponent("Application Support") .appendingPathComponent("Firefox") .appendingPathComponent("Profiles") .appendingPathComponent("abc.default-release") try FileManager.default.createDirectory(at: firefoxProfile, withIntermediateDirectories: true) FileManager.default.createFile( atPath: firefoxProfile.appendingPathComponent("cookies.sqlite").path, contents: Data()) let detection = BrowserDetection(homeDirectory: temp.path, cacheTTL: 0) let importOrder: BrowserCookieImportOrder = [.firefox, .safari, .chrome] let candidates = AlibabaCodingPlanCookieImporter.cookieImportCandidates( browserDetection: detection, importOrder: importOrder) let expected: [Browser] = [.firefox, .safari] #expect(candidates == expected) } @Test func `default cookie import candidates skip keychain browsers during tests`() throws { BrowserCookieAccessGate.resetForTesting() let temp = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString) try FileManager.default.createDirectory(at: temp, withIntermediateDirectories: true) defer { try? FileManager.default.removeItem(at: temp) } let chromeProfile = temp .appendingPathComponent("Library") .appendingPathComponent("Application Support") .appendingPathComponent("Google") .appendingPathComponent("Chrome") .appendingPathComponent("Default") try FileManager.default.createDirectory(at: chromeProfile, withIntermediateDirectories: true) let cookiesDir = chromeProfile.appendingPathComponent("Network") try FileManager.default.createDirectory(at: cookiesDir, withIntermediateDirectories: true) FileManager.default.createFile( atPath: cookiesDir.appendingPathComponent("Cookies").path, contents: Data()) let detection = BrowserDetection(homeDirectory: temp.path, cacheTTL: 0) let candidates = AlibabaCodingPlanCookieImporter.cookieImportCandidates(browserDetection: detection) #expect(candidates.first == .safari) #expect(candidates.contains(.chrome) == false) }} #else struct AlibabaCodingPlanCookieImporterTests { @Test func `non mac OS placeholder`() { #expect(true) }} #endif
import Foundation
import os.lock
import Testing
@testable import CodexBarCore
#if os(macOS)
import SweetCookieKit
@Suite(.serialized)
struct AlibabaCodingPlanCookieImporterTests {
@Test(.disabled(
if: ProcessInfo.processInfo.environment[BrowserCookieAccessGate.allowTestCookieAccessEnvironmentKey] == "1",
"Default-home cookie access is explicitly enabled for this test run."))
func `default home import is suppressed before profile and keychain access`() throws {
let profileProbeCount = OSAllocatedUnfairLock(initialState: 0)
let keychainProbeCount = OSAllocatedUnfairLock(initialState: 0)
let defaultHome = try #require(BrowserCookieClient.defaultHomeDirectories().first)
let detection = BrowserDetection(
homeDirectory: defaultHome.path,
cacheTTL: 0,
fileExists: { _ in
profileProbeCount.withLock { $0 += 1 }
return true
},
directoryContents: { _ in
profileProbeCount.withLock { $0 += 1 }
return ["Default"]
})
_ = KeychainAccessGate.withTaskOverrideForTesting(false) {
KeychainAccessPreflight.withCheckGenericPasswordOverrideForTesting { _, _ in
keychainProbeCount.withLock { $0 += 1 }
return .allowed
} operation: {
#expect(throws: AlibabaCodingPlanSettingsError.self) {
_ = try AlibabaCodingPlanCookieImporter.importSession(browserDetection: detection)
}
}
}
#expect(profileProbeCount.withLock { $0 } == 0)
#expect(keychainProbeCount.withLock { $0 } == 0)
}
@Test(.disabled(
if: ProcessInfo.processInfo.environment[BrowserCookieAccessGate.allowTestCookieAccessEnvironmentKey] == "1",
"Default-home cookie access is explicitly enabled for this test run."))
func `chromium fallback rejects default client before keychain access`() {
let keychainProbeCount = OSAllocatedUnfairLock(initialState: 0)
_ = KeychainAccessGate.withTaskOverrideForTesting(false) {
KeychainAccessPreflight.withCheckGenericPasswordOverrideForTesting { _, _ in
keychainProbeCount.withLock { $0 += 1 }
return .allowed
} operation: {
#expect(throws: BrowserCookieStoreAccessSuppressedError.self) {
_ = try AlibabaChromiumCookieFallbackImporter.importSession(
browser: .chrome,
domains: ["example.com"])
}
}
}
#expect(keychainProbeCount.withLock { $0 } == 0)
}
@Test
func `domain matching requires exact or label bounded suffix`() {
#expect(AlibabaCodingPlanCookieImporter.matchesCookieDomain("console.aliyun.com"))
#expect(AlibabaCodingPlanCookieImporter.matchesCookieDomain(".modelstudio.console.alibabacloud.com"))
#expect(AlibabaCodingPlanCookieImporter.matchesCookieDomain("foo.aliyun.com"))
#expect(AlibabaCodingPlanCookieImporter.matchesCookieDomain("evilaliyun.com") == false)
#expect(AlibabaCodingPlanCookieImporter.matchesCookieDomain("notalibabacloud.com") == false)
}
@Test
func `cookie import candidates honor provided browser order`() throws {
BrowserCookieAccessGate.resetForTesting()
let temp = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString)
try FileManager.default.createDirectory(at: temp, withIntermediateDirectories: true)
defer { try? FileManager.default.removeItem(at: temp) }
let firefoxProfile = temp
.appendingPathComponent("Library")
.appendingPathComponent("Application Support")
.appendingPathComponent("Firefox")
.appendingPathComponent("Profiles")
.appendingPathComponent("abc.default-release")
try FileManager.default.createDirectory(at: firefoxProfile, withIntermediateDirectories: true)
FileManager.default.createFile(
atPath: firefoxProfile.appendingPathComponent("cookies.sqlite").path,
contents: Data())
let detection = BrowserDetection(homeDirectory: temp.path, cacheTTL: 0)
let importOrder: BrowserCookieImportOrder = [.firefox, .safari, .chrome]
let candidates = AlibabaCodingPlanCookieImporter.cookieImportCandidates(
browserDetection: detection,
importOrder: importOrder)
let expected: [Browser] = [.firefox, .safari]
#expect(candidates == expected)
}
@Test
func `default cookie import candidates skip keychain browsers during tests`() throws {
BrowserCookieAccessGate.resetForTesting()
let temp = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString)
try FileManager.default.createDirectory(at: temp, withIntermediateDirectories: true)
defer { try? FileManager.default.removeItem(at: temp) }
let chromeProfile = temp
.appendingPathComponent("Library")
.appendingPathComponent("Application Support")
.appendingPathComponent("Google")
.appendingPathComponent("Chrome")
.appendingPathComponent("Default")
try FileManager.default.createDirectory(at: chromeProfile, withIntermediateDirectories: true)
let cookiesDir = chromeProfile.appendingPathComponent("Network")
try FileManager.default.createDirectory(at: cookiesDir, withIntermediateDirectories: true)
FileManager.default.createFile(
atPath: cookiesDir.appendingPathComponent("Cookies").path,
contents: Data())
let detection = BrowserDetection(homeDirectory: temp.path, cacheTTL: 0)
let candidates = AlibabaCodingPlanCookieImporter.cookieImportCandidates(browserDetection: detection)
#expect(candidates.first == .safari)
#expect(candidates.contains(.chrome) == false)
}
}
#else
struct AlibabaCodingPlanCookieImporterTests {
@Test
func `non mac OS placeholder`() {
#expect(true)
}
}
#endif