Files
RouterOS/RouterOSAssistantTests/WifiNetworkConfigTests.swift
KayandClaude Sonnet 5 016f57f613 M5: WLAN-Schritt + echte set-Operation im Befehlsmodell
RouterOSCommand unterstützt jetzt neben .add auch .set (bestehenden
Eintrag ändern statt neuen anzulegen) — nötig, weil WLAN-Interfaces
schon vor jeder Konfiguration existieren. SSH löst das per CLI-eigenem
"set [find field=value] ..." inline auf; REST hat dafür keine
Entsprechung und muss den Eintrag erst per GET suchen (matchField/
matchValue), seine .id auslesen, dann PATCH auf restPath/<id> senden
(RestTransport.findItemID). Mit dem Nutzer abgestimmte Entscheidung
gegen die einfachere "WLAN nur über SSH"-Variante.

WifiNetworkConfig: pro erkanntem Legacy-Wireless-Interface
(/interface wireless, type=wlan) eine SSID/Passwort-Konfiguration,
Sicherheitsprofil (WPA2) wird zuerst angelegt, dann per set mit dem
Interface verknüpft. Geräte ohne WLAN zeigen einen Hinweistext statt
des Formulars (User-Anforderung: muss berücksichtigt werden). Geräte
mit dem neueren "wifi"-Treiber (type=wifi, wifiwave2/802.11ax) werden
erkannt, aber bewusst nicht unterstützt -- anderes Menü, eigener
Umbau nötig, dazu Hinweistext.

cliPath wurde in allen bisherigen Command-Buildern (Wan/Lan/Vlan) zu
menuPath + .add migriert, da RouterOSCommand jetzt operation-basiert
ist statt den Aktionswort im Pfad-String zu verstecken.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HReLXMbmPvtQ23p1iWiJNW
2026-09-12 13:41:25 +02:00

26 lines
1.1 KiB
Swift

import XCTest
@testable import RouterOSAssistant
final class WifiNetworkConfigTests: XCTestCase {
func testDisabledNetworkProducesNoCommands() {
let network = WifiNetworkConfig(interfaceName: "wlan1", enabled: false, ssid: "Home", password: "secret123")
XCTAssertEqual(network.buildCommands().count, 0)
}
func testEnabledNetworkAddsSecurityProfileThenSetsInterface() {
let network = WifiNetworkConfig(interfaceName: "wlan1", enabled: true, ssid: "Home", password: "secret123")
let commands = network.buildCommands()
XCTAssertEqual(commands.count, 2)
XCTAssertEqual(commands[0].menuPath, "/interface wireless security-profiles")
XCTAssertEqual(commands[0].operation, .add)
XCTAssertEqual(commands[0].arguments["wpa2-pre-shared-key"], "secret123")
XCTAssertEqual(commands[1].menuPath, "/interface wireless")
XCTAssertEqual(commands[1].operation, .set(matchField: "name", matchValue: "wlan1"))
XCTAssertEqual(commands[1].arguments["ssid"], "Home")
XCTAssertEqual(commands[1].arguments["security-profile"], "sec_wlan1")
}
}