OpenNIT

Quelltext des aktuellen Standes

Fassung 1.1.1

MacAddressTest.php

2 KB
<?php

declare(strict_types=1);

use OpenNIT\Core\MacAddress;

/**
 * Deckt die zentrale MAC-Normalisierung ab (löst die zuvor mehrfach
 * reimplementierte Logik in UniFiController/IpamManager ab).
 */
return static function (): void {

    test('normalize entfernt Trennzeichen und wandelt in lowercase', function () {
        assertSame('001a2b3c4d5e', MacAddress::normalize('00:1A:2B:3C:4D:5E'));
        assertSame('001a2b3c4d5e', MacAddress::normalize('00-1a-2b-3c-4d-5e'));
        assertSame('001a2b3c4d5e', MacAddress::normalize('001a.2b3c.4d5e'));
        assertSame('001a2b3c4d5e', MacAddress::normalize('001A2B3C4D5E'));
    });

    test('normalize toleriert per Barcode-Scanner angehängte Steuerzeichen', function () {
        assertSame('001a2b3c4d5e', MacAddress::normalize("001A2B3C4D5E\r\n"));
        assertSame('001a2b3c4d5e', MacAddress::normalize('  001A2B3C4D5E  '));
    });

    test('normalize liefert null bei ungültiger Länge oder null', function () {
        assertSame(null, MacAddress::normalize(null));
        assertSame(null, MacAddress::normalize(''));
        assertSame(null, MacAddress::normalize('00:1A:2B'));          // zu kurz
        assertSame(null, MacAddress::normalize('001A2B3C4D5E6F'));     // zu lang
    });

    test('strip liefert Hex-Folge ohne Längenprüfung', function () {
        assertSame('001a2b', MacAddress::strip('00:1A:2B'));
        assertSame('', MacAddress::strip(null));
        assertSame('', MacAddress::strip('xx:yy'));
    });

    test('equals vergleicht formatunabhängig', function () {
        assertTrue(MacAddress::equals('00:1A:2B:3C:4D:5E', '001a2b3c4d5e'));
        assertTrue(MacAddress::equals('00-1A-2B-3C-4D-5E', '001A.2B3C.4D5E'));
        assertFalse(MacAddress::equals('00:1A:2B:3C:4D:5E', '00:1A:2B:3C:4D:5F'));
        assertFalse(MacAddress::equals(null, '001a2b3c4d5e'));
        assertFalse(MacAddress::equals('kurz', 'kurz'));
    });

    test('format erzeugt aa:bb:cc:dd:ee:ff', function () {
        assertSame('00:1a:2b:3c:4d:5e', MacAddress::format('001A2B3C4D5E'));
        assertSame('00:1a:2b:3c:4d:5e', MacAddress::format('00-1a-2b-3c-4d-5e'));
    });

    test('format gibt ungültige Eingabe unverändert zurück', function () {
        assertSame('keine-mac', MacAddress::format('keine-mac'));
    });
};