fix: skip blank xml nodes and attributes when anonymizing data
This commit is contained in:
@@ -236,6 +236,85 @@ XML;
|
||||
$this->assertSame('900002', $secondCustomerId);
|
||||
}
|
||||
|
||||
public function testAnonymizePreservesEmptyNodesAndAttributes(): void
|
||||
{
|
||||
$xml = <<<'XML'
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<anfrage>
|
||||
<user></user>
|
||||
<key/>
|
||||
<email> </email>
|
||||
<passwort></passwort>
|
||||
<anmelder id="">
|
||||
<name/>
|
||||
<vorname> </vorname>
|
||||
<anrede></anrede>
|
||||
<geschlecht>W</geschlecht>
|
||||
<nationalitaet></nationalitaet>
|
||||
<geburtsdatum/>
|
||||
<anschrift>
|
||||
<id></id>
|
||||
<strasse/>
|
||||
<plz>12345</plz>
|
||||
<ort> </ort>
|
||||
<land></land>
|
||||
</anschrift>
|
||||
<kommunikation>
|
||||
<email></email>
|
||||
<telefonmobil>01701234567</telefonmobil>
|
||||
<telefonprivat/>
|
||||
<newsletter></newsletter>
|
||||
</kommunikation>
|
||||
<bankverbindung>
|
||||
<iban></iban>
|
||||
</bankverbindung>
|
||||
<sonstiges1/>
|
||||
<sonstiges2>75</sonstiges2>
|
||||
<sonstiges3></sonstiges3>
|
||||
</anmelder>
|
||||
<kundennamen>
|
||||
<kunde id="" art="Teilnehmer" name="" vorname="Ada"/>
|
||||
</kundennamen>
|
||||
</anfrage>
|
||||
XML;
|
||||
|
||||
$anonymizer = new BpnXmlAnonymizer();
|
||||
$result = $anonymizer->anonymize($xml);
|
||||
|
||||
$document = new \DOMDocument();
|
||||
$this->assertTrue($document->loadXML($result));
|
||||
|
||||
$xpath = new \DOMXPath($document);
|
||||
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(/anfrage/user)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(/anfrage/key)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(/anfrage/email)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(/anfrage/passwort)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(//anmelder/@id)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(//anmelder/name)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(//anmelder/vorname)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(//anmelder/anrede)')));
|
||||
$this->assertSame('D', trim((string) $xpath->evaluate('string(//anmelder/geschlecht)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(//anmelder/nationalitaet)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(//anmelder/geburtsdatum)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(//anmelder/anschrift/id)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(//anmelder/anschrift/strasse)')));
|
||||
$this->assertNotSame('12345', trim((string) $xpath->evaluate('string(//anmelder/anschrift/plz)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(//anmelder/anschrift/ort)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(//anmelder/anschrift/land)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(//anmelder/kommunikation/email)')));
|
||||
$this->assertSame('01000000002', trim((string) $xpath->evaluate('string(//anmelder/kommunikation/telefonmobil)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(//anmelder/kommunikation/telefonprivat)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(//anmelder/kommunikation/newsletter)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(//anmelder/bankverbindung/iban)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(//anmelder/sonstiges1)')));
|
||||
$this->assertSame('70', trim((string) $xpath->evaluate('string(//anmelder/sonstiges2)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(//anmelder/sonstiges3)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(//kundennamen/kunde/@id)')));
|
||||
$this->assertSame('', trim((string) $xpath->evaluate('string(//kundennamen/kunde/@name)')));
|
||||
$this->assertNotSame('Ada', trim((string) $xpath->evaluate('string(//kundennamen/kunde/@vorname)')));
|
||||
}
|
||||
|
||||
public function testAnonymizeThrowsOnInvalidXml(): void
|
||||
{
|
||||
$anonymizer = new BpnXmlAnonymizer();
|
||||
|
||||
Reference in New Issue
Block a user