Files
openclaw/apps/macos/Tests/OpenClawIPCTests/GeneralSettingsStatusTests.swift
Peter Steinberger 0dbdf994b3 feat(macos): isolate named app profiles (#121136)
* feat(macos): isolate named app profiles

* refactor(macos): isolate profile launch ownership

* fix(macos): avoid overlapping approvals socket access

* fix(macos): declare profile defaults concurrency ownership

* fix(macos): return profiled node launch arguments

* chore(i18n): refresh macOS profile source inventory

* fix(macos): gate profile startup before services

* test(macos): evaluate profile state before assertions

* fix(daemon): skip absent launchd deactivation

* fix(macos): fail closed on profile port conflicts

* chore(i18n): refresh profile conflict inventory

* fix(macos): ignore non-gateway launch agent claims

* test(macos): stabilize profile lifecycle timing

* fix(macos): remove stale dashboard URL

* chore(macos): refresh native source baseline
2026-08-09 14:50:15 -07:00

73 lines
2.7 KiB
Swift

import Testing
@testable import OpenClaw
@MainActor
struct GeneralSettingsStatusTests {
@Test func `local profile conflict outranks connected state`() {
let status = GeneralStatusPresentation.resolve(
mode: .local,
isPaused: true,
controlState: .connected,
localFailure: "Profile p2380 cannot use Gateway port 55636")
#expect(status.title == "OpenClaw needs attention")
#expect(status.subtitle.contains("55636"))
#expect(status.tone == .attention)
#expect(status.showsConnectionAction)
}
@Test func `connected remote gateway is healthy`() {
let status = GeneralStatusPresentation.resolve(
mode: .remote,
isPaused: false,
controlState: .connected)
#expect(status.title == "OpenClaw active")
#expect(status.subtitle == "Connected to your remote Gateway.")
#expect(status.tone == .healthy)
#expect(!status.showsConnectionAction)
}
@Test func `remote authentication failure is actionable`() {
let reason = RemoteGatewayAuthIssue.tokenMismatch.statusMessage
let status = GeneralStatusPresentation.resolve(
mode: .remote,
isPaused: false,
controlState: .degraded(reason))
#expect(status.title == "OpenClaw needs attention")
#expect(status.subtitle.contains(reason))
#expect(status.subtitle.contains("Open Connection settings"))
#expect(status.tone == .attention)
#expect(status.showsConnectionAction)
}
@Test func `remote connection attempt is transient`() {
let status = GeneralStatusPresentation.resolve(
mode: .remote,
isPaused: false,
controlState: .connecting)
#expect(status.title == "OpenClaw connecting")
#expect(status.subtitle == "Connecting to your remote Gateway…")
#expect(status.tone == .transient)
#expect(!status.showsConnectionAction)
}
@Test func `local and unconfigured copy stay independent of remote health`() {
let local = GeneralStatusPresentation.resolve(
mode: .local,
isPaused: false,
controlState: .degraded("ignored"))
let unconfigured = GeneralStatusPresentation.resolve(
mode: .unconfigured,
isPaused: false,
controlState: .degraded("ignored"))
#expect(local.subtitle == "Processing messages through the local Gateway on this Mac.")
#expect(local.tone == .healthy)
#expect(unconfigured.subtitle == "Ready to run after you choose a Gateway connection.")
#expect(unconfigured.tone == .healthy)
}
}