Add native security key registration, reference import, and signing on macOS and iOS. Store references in Vault metadata and route authentication through connection, Assistant, MCP, and agent forwarding flows. Preserve signing cancellation and actionable authentication errors for security keys and Secure Enclave. Pin the released libssh2 forks as nested submodules and refresh package resolution.
44 lines
2.0 KiB
Swift
44 lines
2.0 KiB
Swift
import Foundation
|
|
import TermindPresentation
|
|
import Testing
|
|
import UniformTypeIdentifiers
|
|
|
|
@Suite
|
|
struct ReferenceDropLoaderTests {
|
|
@Test func readsDraggedText() async throws {
|
|
let provider = NSItemProvider(object: "termind-fido2-v1:reference" as NSString)
|
|
#expect(try await ReferenceDropLoader.load(provider) == "termind-fido2-v1:reference")
|
|
}
|
|
|
|
@Test func readsDraggedFileURL() async throws {
|
|
let url = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString)
|
|
defer { try? FileManager.default.removeItem(at: url) }
|
|
try "reference from file".write(to: url, atomically: true, encoding: .utf8)
|
|
let provider = NSItemProvider(object: url as NSURL)
|
|
#expect(try await ReferenceDropLoader.load(provider) == "reference from file")
|
|
}
|
|
|
|
@Test func readsTemporaryFileRepresentationBeforeProviderReleasesIt() async throws {
|
|
let provider = NSItemProvider()
|
|
provider.suggestedName = "reference.txt"
|
|
provider.registerFileRepresentation(forTypeIdentifier: UTType.plainText.identifier, visibility: .all) {
|
|
completion in
|
|
let url = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString)
|
|
do {
|
|
try "temporary reference".write(to: url, atomically: true, encoding: .utf8)
|
|
completion(url, false, nil)
|
|
} catch { completion(nil, false, error) }
|
|
try? FileManager.default.removeItem(at: url)
|
|
return nil
|
|
}
|
|
#expect(try await ReferenceDropLoader.load(provider) == "temporary reference")
|
|
}
|
|
|
|
@Test func rejectsDirectoriesAndOversizedText() async throws {
|
|
let directory = NSItemProvider(object: FileManager.default.temporaryDirectory as NSURL)
|
|
await #expect(throws: (any Error).self) { try await ReferenceDropLoader.load(directory) }
|
|
let text = NSItemProvider(object: String(repeating: "a", count: 1024 * 1024 + 1) as NSString)
|
|
await #expect(throws: (any Error).self) { try await ReferenceDropLoader.load(text) }
|
|
}
|
|
}
|