OpenNIT

Quelltext des aktuellen Standes

Fassung 1.1.1

AnonymizationServiceTest.php

2 KB
<?php

declare(strict_types=1);

use OpenNIT\AI\AnonymizationService;

return static function (): void {

    test('anonymize ersetzt registrierte Werte', function () {
        $a = new AnonymizationService(true);
        $p = $a->registerPerson('Max Mustermann');
        assertSame('[PERSON_1]', $p, 'erster Platzhalter');
        assertSame('Hallo [PERSON_1]!', $a->anonymize('Hallo Max Mustermann!'), 'anonymize');
    });

    test('deanonymize: [PERSON_1] zerstört [PERSON_10] NICHT (Längen-Sortierung)', function () {
        $a = new AnonymizationService(true);
        // 10 Personen registrieren → [PERSON_1] … [PERSON_10]
        for ($i = 1; $i <= 10; $i++) {
            $a->registerPerson('Person Nummer ' . $i);
        }
        $text = 'A: [PERSON_1], B: [PERSON_10]';
        $out  = $a->deanonymize($text);
        assertSame('A: Person Nummer 1, B: Person Nummer 10', $out, 'korrekte Rück-Ersetzung');
        assertTrue(strpos($out, 'Person Nummer 10') !== false, '[PERSON_10] intakt');
    });

    test('deaktiviert: register gibt echten Wert, anonymize/deanonymize sind No-Op', function () {
        $a = new AnonymizationService(false);
        assertSame('Max Mustermann', $a->registerPerson('Max Mustermann'), 'register = echter Wert');
        assertSame('Hallo Max Mustermann', $a->anonymize('Hallo Max Mustermann'), 'anonymize No-Op');
        assertSame('Text [PERSON_1]', $a->deanonymize('Text [PERSON_1]'), 'deanonymize No-Op');
        assertFalse($a->isEnabled(), 'isEnabled false');
    });

    test('setEnabled schaltet um', function () {
        $a = new AnonymizationService(false);
        $a->setEnabled(true);
        assertTrue($a->isEnabled(), 'enabled true nach setEnabled');
        $a->registerPerson('Erika Beispiel');
        assertSame('[PERSON_1]', $a->anonymize('Erika Beispiel'));
    });

    test('gleicher Wert → gleicher Platzhalter', function () {
        $a = new AnonymizationService(true);
        $p1 = $a->registerPerson('Anna Schmidt');
        $p2 = $a->registerPerson('anna schmidt'); // case-insensitive
        assertSame($p1, $p2, 'idempotent / case-insensitive');
    });
};