OpenNIT

Quelltext des aktuellen Standes

Fassung 1.1.1

MonitoringLanguageTest.php

3 KB
<?php

declare(strict_types=1);

use OpenNIT\Controllers\MonitoringController;

/**
 * Deckt ab, dass eine Monitoring-Meldung unabhängig von der Sprache der
 * Oberfläche richtig eingestuft wird: Zabbix, Checkmk und Icinga geben
 * Schweregrad und Zustand als übersetztes Wort aus.
 */
return static function (): void {

    /** Ruft die private, sprachunabhängige Auswertung auf. */
    $ruf = static function (string $name, mixed ...$argumente): mixed {
        $m = new \ReflectionMethod(MonitoringController::class, $name);
        $m->setAccessible(true);
        return $m->invoke(null, ...$argumente);
    };

    test('Der englische Zustand gilt weiterhin als behoben', function () use ($ruf) {
        foreach (['RESOLVED', 'resolved', 'OK', 'UP', 'RECOVERY', '0'] as $zustand) {
            assertTrue((bool)$ruf('istBehoben', $zustand), $zustand . ' muss als behoben gelten');
        }
    });

    test('Der deutsche Zustand gilt ebenso als behoben', function () use ($ruf) {
        foreach (['Gelöst', 'GELÖST', 'gelöst', 'Behoben', 'Aufgelöst', 'Erledigt'] as $zustand) {
            assertTrue((bool)$ruf('istBehoben', $zustand), $zustand . ' muss als behoben gelten');
        }
    });

    test('Ein offenes Problem bleibt ein offenes Problem', function () use ($ruf) {
        foreach (['PROBLEM', 'Problem', '1', 'DOWN', 'CRITICAL', 'Ausfall'] as $zustand) {
            assertFalse((bool)$ruf('istBehoben', $zustand), $zustand . ' darf nicht als behoben gelten');
        }
    });

    test('Englische Schweregrade werden unverändert abgebildet', function () use ($ruf) {
        assertSame('not_classified', $ruf('schweregrad', 'Not classified'));
        assertSame('information', $ruf('schweregrad', 'Information'));
        assertSame('warning', $ruf('schweregrad', 'Warning'));
        assertSame('average', $ruf('schweregrad', 'Average'));
        assertSame('high', $ruf('schweregrad', 'High'));
        assertSame('disaster', $ruf('schweregrad', 'Disaster'));
    });

    test('Deutsche Schweregrade landen auf derselben Stufe', function () use ($ruf) {
        assertSame('not_classified', $ruf('schweregrad', 'Nicht klassifiziert'));
        assertSame('information', $ruf('schweregrad', 'Informationen'));
        assertSame('warning', $ruf('schweregrad', 'Warnung'));
        assertSame('average', $ruf('schweregrad', 'Durchschnitt'));
        assertSame('high', $ruf('schweregrad', 'Hoch'));
        assertSame('disaster', $ruf('schweregrad', 'Desaster'));
        assertSame('disaster', $ruf('schweregrad', 'Katastrophe'));
    });

    test('Ein unbekanntes Wort fällt auf den Ausweichwert', function () use ($ruf) {
        assertSame('warning', $ruf('schweregrad', 'Sonstiges'));
        assertSame('information', $ruf('schweregrad', 'Sonstiges', 'information'));
    });

    test('Groß- und Kleinschreibung samt Umlaut spielt keine Rolle', function () use ($ruf) {
        assertSame('warning', $ruf('schweregrad', '  WARNUNG  '));
        assertTrue((bool)$ruf('istBehoben', '  GELÖST  '));
    });
};