121 lines · 5.1 KB · Swift
RawDownload
import CodexBarCoreimport Foundationimport Testing #if os(macOS)import SweetCookieKit @Suitestruct BrowserDetectionTests {    @Test    func safariAlwaysInstalled() {        #expect(BrowserDetection(cacheTTL: 0).isAppInstalled(.safari) == true)        #expect(BrowserDetection(cacheTTL: 0).isCookieSourceAvailable(.safari) == true)    }     @Test    func filterInstalledIncludesSafari() {        let detection = BrowserDetection(cacheTTL: 0)        let browsers: [Browser] = [.safari, .chrome, .firefox]        #expect(browsers.cookieImportCandidates(using: detection).contains(.safari))    }     @Test    func filterPreservesOrder() {        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 chromeCookiesDir = chromeProfile.appendingPathComponent("Network")        try? FileManager.default.createDirectory(at: chromeCookiesDir, withIntermediateDirectories: true)        FileManager.default.createFile(            atPath: chromeCookiesDir.appendingPathComponent("Cookies").path,            contents: Data())         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 browsers: [Browser] = [.firefox, .safari, .chrome]        #expect(browsers.cookieImportCandidates(using: detection) == browsers)    }     @Test    func chromeRequiresProfileData() throws {        let temp = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString)        try FileManager.default.createDirectory(at: temp, withIntermediateDirectories: true)        defer { try? FileManager.default.removeItem(at: temp) }         let detection = BrowserDetection(homeDirectory: temp.path, cacheTTL: 0)        #expect(detection.isCookieSourceAvailable(.chrome) == false)         let profile = temp            .appendingPathComponent("Library")            .appendingPathComponent("Application Support")            .appendingPathComponent("Google")            .appendingPathComponent("Chrome")            .appendingPathComponent("Default")        try FileManager.default.createDirectory(at: profile, withIntermediateDirectories: true)        let cookiesDir = profile.appendingPathComponent("Network")        try FileManager.default.createDirectory(at: cookiesDir, withIntermediateDirectories: true)        FileManager.default.createFile(atPath: cookiesDir.appendingPathComponent("Cookies").path, contents: Data())         #expect(detection.isCookieSourceAvailable(.chrome) == true)    }     @Test    func firefoxRequiresDefaultProfileDir() throws {        let temp = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString)        try FileManager.default.createDirectory(at: temp, withIntermediateDirectories: true)        defer { try? FileManager.default.removeItem(at: temp) }         let profiles = temp            .appendingPathComponent("Library")            .appendingPathComponent("Application Support")            .appendingPathComponent("Firefox")            .appendingPathComponent("Profiles")        try FileManager.default.createDirectory(at: profiles, withIntermediateDirectories: true)         let detection = BrowserDetection(homeDirectory: temp.path, cacheTTL: 0)        #expect(detection.isCookieSourceAvailable(.firefox) == false)         let profile = profiles.appendingPathComponent("abc.default-release")        try FileManager.default.createDirectory(at: profile, withIntermediateDirectories: true)        FileManager.default.createFile(atPath: profile.appendingPathComponent("cookies.sqlite").path, contents: Data())        #expect(detection.isCookieSourceAvailable(.firefox) == true)    }} #else @Suitestruct BrowserDetectionTests {    @Test    func nonMacOSReturnsNoBrowsers() {        #expect(BrowserDetection(cacheTTL: 0).isCookieSourceAvailable(Browser()) == false)    }     @Test    func nonMacOSFilterReturnsEmpty() {        let detection = BrowserDetection(cacheTTL: 0)        let browsers = [Browser(), Browser()]        #expect(browsers.cookieImportCandidates(using: detection).isEmpty == true)    }} #endif