Files
KayandClaude Sonnet 5 8a5df3338a M25: Einrichten-Wizard-Politur + SSH-Trust-Persistenz endlich verifiziert
- 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>
2026-09-16 12:41:47 +02:00

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, "")
}
}