krz/keycask

Password manager: Swift core library, CLI for macOS/Linux/Windows, iOS/macOS app. cli password-manager swift

Tests/KeycaskCLITests/PathsTests.swift

v0.1.0
keycask/Tests/KeycaskCLITests/PathsTests.swift history · blame · raw

38 lines · 1299 bytes

 1import Foundation
 2import Testing
 3
 4@testable import keycask
 5
 6@Suite struct PathsTests {
 7    @Test func overrideWinsOverEverything() {
 8        let url = Paths.vaultURL(
 9            override: "/x/v.kc", environment: ["KEYCASK_VAULT": "/y", "HOME": "/h"])
10        #expect(url.path == "/x/v.kc")
11    }
12
13    @Test func environmentVariableWinsOverDefaults() {
14        let url = Paths.vaultURL(
15            override: nil, environment: ["KEYCASK_VAULT": "/y/v.kc", "HOME": "/h"])
16        #expect(url.path == "/y/v.kc")
17    }
18
19    #if os(Windows)
20        @Test func windowsUsesLocalAppData() {
21            let url = Paths.vaultURL(
22                override: nil, environment: ["LOCALAPPDATA": "C:\\Users\\u\\AppData\\Local"])
23            #expect(
24                url.path.hasSuffix("keycask/vault.kc") || url.path.hasSuffix("keycask\\vault.kc"))
25        }
26    #else
27        @Test func xdgDataHomeIsUsedWhenSet() {
28            let url = Paths.vaultURL(
29                override: nil, environment: ["XDG_DATA_HOME": "/d", "HOME": "/h"])
30            #expect(url.path == "/d/keycask/vault.kc")
31        }
32
33        @Test func homeFallback() {
34            let url = Paths.vaultURL(override: nil, environment: ["HOME": "/h"])
35            #expect(url.path == "/h/.local/share/keycask/vault.kc")
36        }
37    #endif
38}