Quelltext des aktuellen Standes
<?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 '));
});
};