forked from kay/RouterOS
- WAN-Schritt: fehlenden "Zurück"-Button ergänzt (beide Modi) - "Abbrechen"/"Jetzt sichern" prominent gemacht (wie "Neu scannen") - LAN-/VLAN-Schritt: Adressfelder starten leer, nur Format-Beispiel im Feld sichtbar statt vorbelegter Werte. VlanStepView bekam dafür eine Validierungssperre auf "Weiter" (fehlte bisher, war ok solange Defaults immer gültig waren). Zwei Tests entsprechend angepasst. - SSH-Host-Key-Trust aus M24 hatte sich entgegen der Live-Bestätigung nie tatsächlich persistiert (defaults read zeigte leeren Schlüssel, Ursache ungeklärt) — betraf BackupServices dedizierte SSH-Verbindung beim ersten Experte-Tab-Schreibversuch pro Sitzung. Erneut über den bestehenden Trust-Dialog bestätigt, diesmal per defaults read verifiziert statt nur der UI-Bestätigung vertraut. Alles live bestätigt. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
39 lines
1.8 KiB
Swift
39 lines
1.8 KiB
Swift
import XCTest
|
|
@testable import RouterOSAssistant
|
|
|
|
final class VlanEntryTests: XCTestCase {
|
|
func testBuildCommandsCreatesVlanInterfaceThenDhcpStack() {
|
|
let vlan = VlanEntry(name: "Gäste", vlanID: 20, parentInterface: "bridge")
|
|
let commands = vlan.buildCommands()
|
|
|
|
XCTAssertEqual(commands.count, 8)
|
|
XCTAssertEqual(commands[0].menuPath, "/interface vlan")
|
|
XCTAssertEqual(commands[0].arguments["vlan-id"], "20")
|
|
XCTAssertEqual(commands[0].arguments["interface"], "bridge")
|
|
XCTAssertEqual(commands[0].arguments["name"], "vlan20")
|
|
|
|
XCTAssertEqual(commands[1].menuPath, "/interface bridge port")
|
|
XCTAssertEqual(commands[2].menuPath, "/ip address")
|
|
XCTAssertEqual(commands[2].arguments["interface"], "vlan20")
|
|
XCTAssertEqual(commands[3].menuPath, "/ip pool")
|
|
XCTAssertEqual(commands[4].menuPath, "/ip dhcp-server")
|
|
XCTAssertEqual(commands[5].menuPath, "/ip dhcp-server network")
|
|
XCTAssertEqual(commands[6].menuPath, "/interface list")
|
|
XCTAssertEqual(commands[7].menuPath, "/interface list member")
|
|
XCTAssertEqual(commands[7].arguments["interface"], "vlan20")
|
|
}
|
|
|
|
/// Address fields start empty by design (Nutzerwunsch, 2026-09-16: "die auszufüllenden
|
|
/// Felder leer lassen, nur Beispiele zeigen ... so sieht man das Schema dahinter") — a
|
|
/// previous version auto-derived these from the VLAN ID; replaced with this test.
|
|
func testDefaultAddressesStartEmptyForExamplePlaceholder() {
|
|
let vlan = VlanEntry(vlanID: 30, parentInterface: "bridge")
|
|
|
|
XCTAssertEqual(vlan.routerAddress, "")
|
|
XCTAssertEqual(vlan.networkAddress, "")
|
|
XCTAssertEqual(vlan.poolRangeStart, "")
|
|
XCTAssertEqual(vlan.poolRangeEnd, "")
|
|
XCTAssertEqual(vlan.dnsServers, "")
|
|
}
|
|
}
|