Files
clawdbot/apps/macos/Tests/ClawdbotIPCTests/PermissionManagerTests.swift
2026-01-08 02:36:29 +00:00

39 lines
1.5 KiB
Swift

import ClawdbotIPC
import CoreLocation
import Testing
@testable import Clawdbot
@Suite(.serialized)
@MainActor
struct PermissionManagerTests {
@Test func voiceWakePermissionHelpersMatchStatus() async {
let direct = PermissionManager.voiceWakePermissionsGranted()
let ensured = await PermissionManager.ensureVoiceWakePermissions(interactive: false)
#expect(ensured == direct)
}
@Test func statusCanQueryNonInteractiveCaps() async {
let caps: [Capability] = [.microphone, .speechRecognition, .screenRecording]
let status = await PermissionManager.status(caps)
#expect(status.keys.count == caps.count)
}
@Test func ensureNonInteractiveDoesNotThrow() async {
let caps: [Capability] = [.microphone, .speechRecognition, .screenRecording]
let ensured = await PermissionManager.ensure(caps, interactive: false)
#expect(ensured.keys.count == caps.count)
}
@Test func locationStatusMatchesAuthorizationAlways() async {
let status = CLLocationManager().authorizationStatus
let results = await PermissionManager.status([.location])
#expect(results[.location] == (status == .authorizedAlways))
}
@Test func ensureLocationNonInteractiveMatchesAuthorizationAlways() async {
let status = CLLocationManager().authorizationStatus
let ensured = await PermissionManager.ensure([.location], interactive: false)
#expect(ensured[.location] == (status == .authorizedAlways))
}
}