Files
openclaw/apps/shared/OpenClawKit/Tests/OpenClawKitTests/ShareGatewayRelaySettingsTests.swift
Pavan Kumar Gondhi 8862cc46b3 fix(ios): harden share relay persistence (#121900)
* fix(ios): harden share relay persistence

* fix(ios): make relay migration transactional

* fix(ios): make relay migration host-owned

* fix(ios): reject legacy auth in share extension

* fix(ios): reject failed relay credential migration

* style(ios): fix relay settings indentation
2026-08-11 18:46:34 +05:30

88 lines
2.5 KiB
Swift

import Testing
@testable import OpenClawKit
struct ShareGatewayRelaySettingsTests {
private let config = ShareGatewayRelayConfig(
gatewayURLString: "wss://relay.example.com",
gatewayStableID: "manual|relay.example.com|443",
token: "token",
password: "password",
sessionKey: "main")
@Test func `failed credential persistence leaves metadata unchanged`() {
var metadataWrites = 0
let saved = ShareGatewayRelaySettings.commitConfig(
self.config,
saveCredentials: { _ in false },
saveMetadata: { _ in metadataWrites += 1 })
#expect(!saved)
#expect(metadataWrites == 0)
}
@Test func `successful credential persistence commits metadata once`() {
var metadataWrites = 0
let saved = ShareGatewayRelaySettings.commitConfig(
self.config,
saveCredentials: { _ in true },
saveMetadata: { _ in metadataWrites += 1 })
#expect(saved)
#expect(metadataWrites == 1)
}
@Test func `extension-first upgrade discards and rejects legacy credentials`() {
var migrations = 0
var discards = 0
let resolved = ShareGatewayRelaySettings.resolveLegacyConfig(
self.config,
isAppExtension: true,
migrate: { _ in
migrations += 1
return true
},
discard: { discards += 1 })
#expect(resolved == nil)
#expect(migrations == 0)
#expect(discards == 1)
}
@Test func `host app owns legacy migration`() {
var migrated: ShareGatewayRelayConfig?
var discards = 0
let resolved = ShareGatewayRelaySettings.resolveLegacyConfig(
self.config,
isAppExtension: false,
migrate: { config in
migrated = config
return true
},
discard: { discards += 1 })
#expect(resolved == self.config)
#expect(migrated == self.config)
#expect(discards == 0)
}
@Test func `failed host migration discards and rejects legacy credentials`() {
var calls: [String] = []
let resolved = ShareGatewayRelaySettings.resolveLegacyConfig(
self.config,
isAppExtension: false,
migrate: { _ in
calls.append("migrate")
return false
},
discard: { calls.append("discard") })
#expect(resolved == nil)
#expect(calls == ["migrate", "discard"])
}
}