commit 91da1787ca4af03c61a9bf1dd10e61b66746f126
parent 22cf4fd131673bab9cd51d12969bac9df1c33993
Author: triesap <tyson@radroots.org>
Date: Fri, 12 Jun 2026 00:05:34 -0700
kit: expose local state reset from radroots kit
- move reusable app local-state reset into the production kit target
- keep UI-test launch configuration in RadrootsKitTesting
- cover missing-state and keychain-service reset behavior
Diffstat:
4 files changed, 29 insertions(+), 13 deletions(-)
diff --git a/Package.swift b/Package.swift
@@ -27,10 +27,7 @@ let package = Package(
),
.target(
name: "RadrootsKitTesting",
- dependencies: ["RadrootsKit"],
- linkerSettings: [
- .linkedFramework("Security")
- ]
+ dependencies: ["RadrootsKit"]
),
.testTarget(
name: "RadrootsKitTests",
diff --git a/Sources/RadrootsKitTesting/RadrootsAppLocalStateReset.swift b/Sources/RadrootsKit/RadrootsAppLocalStateReset.swift
diff --git a/Tests/RadrootsKitTestingTests/RadrootsKitTestingTests.swift b/Tests/RadrootsKitTestingTests/RadrootsKitTestingTests.swift
@@ -30,12 +30,3 @@ import RadrootsKitTesting
"C": "keep"
])
}
-
-@Test func resetAllowsMissingState() throws {
- let request = RadrootsAppLocalStateResetRequest(
- appIdentifier: "org.radroots.tests.\(UUID().uuidString)",
- keychainServiceNames: ["org.radroots.tests.\(UUID().uuidString)"]
- )
-
- try RadrootsAppLocalStateReset.reset(request)
-}
diff --git a/Tests/RadrootsKitTests/RadrootsSecureStoreTests.swift b/Tests/RadrootsKitTests/RadrootsSecureStoreTests.swift
@@ -28,6 +28,34 @@ import Testing
#expect(try store.get(key) == nil)
}
+@Test func resetAllowsMissingState() throws {
+ let request = RadrootsAppLocalStateResetRequest(
+ appIdentifier: "org.radroots.tests.\(UUID().uuidString)",
+ keychainServiceNames: ["org.radroots.tests.\(UUID().uuidString)"]
+ )
+
+ try RadrootsAppLocalStateReset.reset(request)
+}
+
+@Test func resetClearsNamedKeychainService() throws {
+ let servicePrefix = "org.radroots.tests.\(UUID().uuidString)"
+ let store = RadrootsAppleKeychainSecureStore(servicePrefix: servicePrefix)
+ let key = RadrootsSecureStoreKey(namespace: "reset", name: "secret")
+ let serviceName = try key.serviceName(servicePrefix: servicePrefix)
+
+ try store.put(Data("secret".utf8), for: key)
+ #expect(try store.get(key) == Data("secret".utf8))
+
+ try RadrootsAppLocalStateReset.reset(
+ RadrootsAppLocalStateResetRequest(
+ appIdentifier: "org.radroots.tests.\(UUID().uuidString)",
+ keychainServiceNames: [serviceName]
+ )
+ )
+
+ #expect(try store.get(key) == nil)
+}
+
@Test func userPresenceStatusIsInspectable() async {
let userPresence = RadrootsAppleUserPresence()
let status = await userPresence.currentStatus()