Files
CleanMM/Packages/AtlasInfrastructure/Tests/AtlasInfrastructureTests/AtlasHelperClientTests.swift
2026-03-10 17:09:35 +08:00

20 lines
1.1 KiB
Swift

import XCTest
@testable import AtlasInfrastructure
import AtlasProtocol
final class AtlasHelperClientTests: XCTestCase {
func testHelperClientDecodesStructuredJSONResponse() async throws {
let scriptURL = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString)
let script = "#!/bin/sh\ncat >/dev/null\nprintf '%s' '{\"action\":{\"id\":\"00000000-0000-0000-0000-000000000111\",\"kind\":\"trashItems\",\"targetPath\":\"/Applications/Sample.app\"},\"message\":\"ok\",\"resolvedPath\":\"/Trash/Sample.app\",\"success\":true}'\n"
try script.write(to: scriptURL, atomically: true, encoding: .utf8)
try FileManager.default.setAttributes([.posixPermissions: 0o755], ofItemAtPath: scriptURL.path)
let client = AtlasPrivilegedHelperClient(executableURL: scriptURL)
let result = try await client.perform(AtlasHelperAction(kind: .trashItems, targetPath: "/Applications/Sample.app"))
XCTAssertTrue(result.success)
XCTAssertEqual(result.message, "ok")
XCTAssertEqual(result.resolvedPath, "/Trash/Sample.app")
}
}