52 lines
2.0 KiB
Swift
52 lines
2.0 KiB
Swift
import ClawdbotKit
|
|
import Foundation
|
|
import Testing
|
|
@testable import Clawdbot
|
|
|
|
@Suite(.serialized)
|
|
struct MacNodeRuntimeTests {
|
|
@Test func handleInvokeRejectsUnknownCommand() async {
|
|
let runtime = MacNodeRuntime()
|
|
let response = await runtime.handleInvoke(
|
|
BridgeInvokeRequest(id: "req-1", command: "unknown.command"))
|
|
#expect(response.ok == false)
|
|
}
|
|
|
|
@Test func handleInvokeRejectsEmptySystemRun() async throws {
|
|
let runtime = MacNodeRuntime()
|
|
let params = ClawdbotSystemRunParams(command: [])
|
|
let json = String(data: try JSONEncoder().encode(params), encoding: .utf8)
|
|
let response = await runtime.handleInvoke(
|
|
BridgeInvokeRequest(id: "req-2", command: ClawdbotSystemCommand.run.rawValue, paramsJSON: json))
|
|
#expect(response.ok == false)
|
|
}
|
|
|
|
@Test func handleInvokeRejectsEmptyNotification() async throws {
|
|
let runtime = MacNodeRuntime()
|
|
let params = ClawdbotSystemNotifyParams(title: "", body: "")
|
|
let json = String(data: try JSONEncoder().encode(params), encoding: .utf8)
|
|
let response = await runtime.handleInvoke(
|
|
BridgeInvokeRequest(id: "req-3", command: ClawdbotSystemCommand.notify.rawValue, paramsJSON: json))
|
|
#expect(response.ok == false)
|
|
}
|
|
|
|
@Test func handleInvokeCameraListRequiresEnabledCamera() async {
|
|
let defaults = UserDefaults.standard
|
|
let previous = defaults.object(forKey: cameraEnabledKey)
|
|
defaults.set(false, forKey: cameraEnabledKey)
|
|
defer {
|
|
if let previous {
|
|
defaults.set(previous, forKey: cameraEnabledKey)
|
|
} else {
|
|
defaults.removeObject(forKey: cameraEnabledKey)
|
|
}
|
|
}
|
|
|
|
let runtime = MacNodeRuntime()
|
|
let response = await runtime.handleInvoke(
|
|
BridgeInvokeRequest(id: "req-4", command: ClawdbotCameraCommand.list.rawValue))
|
|
#expect(response.ok == false)
|
|
#expect(response.error?.message.contains("CAMERA_DISABLED") == true)
|
|
}
|
|
}
|