
























@@ -25,115 +25,18 @@ struct DeviceIdentityStoreTests {
2525}
26262727@Test
28-func `migrates legacy identity state into shared app group storage`() throws {
28+func `shared app group storage wins over legacy app support storage`() throws {
2929let tempDir = FileManager.default.temporaryDirectory
3030.appendingPathComponent(UUID().uuidString, isDirectory: true)
3131defer { try? FileManager.default.removeItem(at: tempDir) }
3232let legacyURL = tempDir.appendingPathComponent("legacy", isDirectory: true)
3333let sharedURL = tempDir.appendingPathComponent("shared", isDirectory: true)
3434let legacyIdentityURL = legacyURL.appendingPathComponent("identity", isDirectory: true)
3535let legacyDeviceURL = legacyIdentityURL.appendingPathComponent("device.json", isDirectory: false)
36-let legacyAuthURL = legacyIdentityURL.appendingPathComponent("device-auth.json", isDirectory: false)
3736let sharedIdentityURL = sharedURL.appendingPathComponent("identity", isDirectory: true)
3837let sharedDeviceURL = sharedIdentityURL.appendingPathComponent("device.json", isDirectory: false)
39-let sharedAuthURL = sharedIdentityURL.appendingPathComponent("device-auth.json", isDirectory: false)
40-let storedIdentity = try Self.identityJSON(
41- publicKeyPem: Self.pem(
42- label: "PUBLIC KEY",
43- body: "MCowBQYDK2VwAyEAA6EHv/POEL4dcN0Y50vAmWfk1jCbpQ1fHdyGZBJVMbg="),
44- privateKeyPem: Self.pem(
45- label: "PRIVATE KEY",
46- body: "MC4CAQAwBQYDK2VwBCIEIAABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4f"))
47-let storedAuth = """
48- {
49- "version": 1,
50- "deviceId": "legacy-device",
51- "tokens": {
52- "node": {
53- "token": "legacy-node-token",
54- "role": "node",
55- "scopes": [],
56- "updatedAtMs": 1700000000000
57- }
58- }
59- }
60- """
61-try FileManager.default.createDirectory(at: legacyIdentityURL, withIntermediateDirectories: true)
62-try storedIdentity.write(to: legacyDeviceURL, atomically: true, encoding: .utf8)
63-try storedAuth.write(to: legacyAuthURL, atomically: true, encoding: .utf8)
64-65-let selected = DeviceIdentityPaths.stateDirURL(
66- overrideURL: nil,
67- legacyStateDirURL: legacyURL,
68- appGroupStateDirURL: sharedURL,
69- temporaryDirectory: tempDir)
70-71- #expect(selected == sharedURL)
72- #expect(try String(contentsOf: sharedDeviceURL, encoding: .utf8) == storedIdentity)
73- #expect(try String(contentsOf: sharedAuthURL, encoding: .utf8) == storedAuth)
74-let markerURL = sharedIdentityURL
75-.appendingPathComponent(DeviceIdentityPaths.legacyMigrationMarkerFileName, isDirectory: false)
76- #expect(FileManager.default.fileExists(atPath: markerURL.path))
77-}
78-79-@Test
80-func `legacy app identity replaces extension-created app group identity before migration is marked`() throws {
81-let tempDir = FileManager.default.temporaryDirectory
82-.appendingPathComponent(UUID().uuidString, isDirectory: true)
83-defer { try? FileManager.default.removeItem(at: tempDir) }
84-let legacyURL = tempDir.appendingPathComponent("legacy", isDirectory: true)
85-let sharedURL = tempDir.appendingPathComponent("shared", isDirectory: true)
86-let legacyIdentityURL = legacyURL.appendingPathComponent("identity", isDirectory: true)
87-let sharedIdentityURL = sharedURL.appendingPathComponent("identity", isDirectory: true)
88-let legacyDeviceURL = legacyIdentityURL.appendingPathComponent("device.json", isDirectory: false)
89-let sharedDeviceURL = sharedIdentityURL.appendingPathComponent("device.json", isDirectory: false)
90-let legacyAuthURL = legacyIdentityURL.appendingPathComponent("device-auth.json", isDirectory: false)
91-let sharedAuthURL = sharedIdentityURL.appendingPathComponent("device-auth.json", isDirectory: false)
92-let legacyDevice = "legacy-device\n"
93-let legacyAuth = "legacy-auth\n"
94-let extensionDevice = "extension-device\n"
95-let extensionAuth = "extension-auth\n"
96-try FileManager.default.createDirectory(at: legacyIdentityURL, withIntermediateDirectories: true)
97-try FileManager.default.createDirectory(at: sharedIdentityURL, withIntermediateDirectories: true)
98-try legacyDevice.write(to: legacyDeviceURL, atomically: true, encoding: .utf8)
99-try legacyAuth.write(to: legacyAuthURL, atomically: true, encoding: .utf8)
100-try extensionDevice.write(to: sharedDeviceURL, atomically: true, encoding: .utf8)
101-try extensionAuth.write(to: sharedAuthURL, atomically: true, encoding: .utf8)
102-103-let selected = DeviceIdentityPaths.stateDirURL(
104- overrideURL: nil,
105- legacyStateDirURL: legacyURL,
106- appGroupStateDirURL: sharedURL,
107- temporaryDirectory: tempDir)
108-109- #expect(selected == sharedURL)
110- #expect(try String(contentsOf: sharedDeviceURL, encoding: .utf8) == legacyDevice)
111- #expect(try String(contentsOf: sharedAuthURL, encoding: .utf8) == legacyAuth)
112-let markerURL = sharedIdentityURL
113-.appendingPathComponent(DeviceIdentityPaths.legacyMigrationMarkerFileName, isDirectory: false)
114- #expect(FileManager.default.fileExists(atPath: markerURL.path))
115-}
116-117-@Test
118-func `does not replace marked shared app group identity state`() throws {
119-let tempDir = FileManager.default.temporaryDirectory
120-.appendingPathComponent(UUID().uuidString, isDirectory: true)
121-defer { try? FileManager.default.removeItem(at: tempDir) }
122-let legacyURL = tempDir.appendingPathComponent("legacy", isDirectory: true)
123-let sharedURL = tempDir.appendingPathComponent("shared", isDirectory: true)
124-let legacyIdentityURL = legacyURL.appendingPathComponent("identity", isDirectory: true)
125-let sharedIdentityURL = sharedURL.appendingPathComponent("identity", isDirectory: true)
126-let legacyDeviceURL = legacyIdentityURL.appendingPathComponent("device.json", isDirectory: false)
127-let sharedDeviceURL = sharedIdentityURL.appendingPathComponent("device.json", isDirectory: false)
128-let markerURL = sharedIdentityURL
129-.appendingPathComponent(DeviceIdentityPaths.legacyMigrationMarkerFileName, isDirectory: false)
130-let sharedDevice = "shared-device\n"
131-let legacyDevice = "legacy-device\n"
13238try FileManager.default.createDirectory(at: legacyIdentityURL, withIntermediateDirectories: true)
133-try FileManager.default.createDirectory(at: sharedIdentityURL, withIntermediateDirectories: true)
134-try legacyDevice.write(to: legacyDeviceURL, atomically: true, encoding: .utf8)
135-try sharedDevice.write(to: sharedDeviceURL, atomically: true, encoding: .utf8)
136-try Data("1\n".utf8).write(to: markerURL, options: [.atomic])
39+try "legacy-device\n".write(to: legacyDeviceURL, atomically: true, encoding: .utf8)
1374013841let selected = DeviceIdentityPaths.stateDirURL(
13942 overrideURL: nil,
@@ -142,9 +45,7 @@ struct DeviceIdentityStoreTests {
14245 temporaryDirectory: tempDir)
1434614447 #expect(selected == sharedURL)
145- #expect(try String(contentsOf: sharedDeviceURL, encoding: .utf8) == sharedDevice)
146-let sharedAuthURL = sharedIdentityURL.appendingPathComponent("device-auth.json", isDirectory: false)
147- #expect(!FileManager.default.fileExists(atPath: sharedAuthURL.path))
48+ #expect(!FileManager.default.fileExists(atPath: sharedDeviceURL.path))
14849}
1495015051@Test
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。