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