M4: VLAN-Schritt (separates virtuelles Netz)
Neuer optionaler Schritt im Einrichten-Wizard, standardmäßig übersprungen (Toggle): legt ein VLAN-Interface auf einem gewählten Basis-Anschluss an, mit eigenem IP-Bereich und eigenem DHCP-Server — z.B. für Gäste/IoT. Bewusst ohne Port-Zuweisung (Access/Trunk): das bräuchte RouterOS Bridge-VLAN-Filtering mit "set"-Operationen auf bestehende Einträge, die unser bisheriges reines "add"-Befehlsmodell (identisch für REST+SSH) nicht abdeckt. Wer ein VLAN auf einem bestimmten Switch-Port braucht, muss den Trunk weiterhin manuell einrichten. Entscheidung mit Nutzer abgestimmt. DHCP-Befehlsbau (Adresse+Pool+Server+Netzwerk) aus dem LAN-Schritt in DhcpServerCommandBuilder extrahiert, da jetzt zweimal identisch gebraucht (LAN direkt, VLAN pro Eintrag). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HReLXMbmPvtQ23p1iWiJNW
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
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, 5)
|
||||
XCTAssertEqual(commands[0].cliPath, "/interface vlan add")
|
||||
XCTAssertEqual(commands[0].arguments["vlan-id"], "20")
|
||||
XCTAssertEqual(commands[0].arguments["interface"], "bridge")
|
||||
XCTAssertEqual(commands[0].arguments["name"], "vlan20")
|
||||
|
||||
XCTAssertEqual(commands[1].cliPath, "/ip address add")
|
||||
XCTAssertEqual(commands[1].arguments["interface"], "vlan20")
|
||||
XCTAssertEqual(commands[2].cliPath, "/ip pool add")
|
||||
XCTAssertEqual(commands[3].cliPath, "/ip dhcp-server add")
|
||||
XCTAssertEqual(commands[4].cliPath, "/ip dhcp-server network add")
|
||||
}
|
||||
|
||||
func testDefaultAddressesAreDerivedFromVlanID() {
|
||||
let vlan = VlanEntry(vlanID: 30, parentInterface: "bridge")
|
||||
|
||||
XCTAssertEqual(vlan.routerAddress, "192.168.30.1/24")
|
||||
XCTAssertEqual(vlan.networkAddress, "192.168.30.0/24")
|
||||
XCTAssertEqual(vlan.poolRangeStart, "192.168.30.10")
|
||||
XCTAssertEqual(vlan.poolRangeEnd, "192.168.30.254")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user