EN · DE · RU · FR · ES

#1862: CardDavServerDebugWriterTest.kt

projectforge-carddav/src/test/kotlin/org/projectforge/carddav/CardDavServerDebugWriterTest.kt Unit-Test — Paket org.projectforge.carddav, projectforge-carddav/src/test/kotlin/org/projectforge/carddav/CardDavServerDebugWriterTest.kt 38 Zeilen · 13 Code · 22 Kommentare · 3 leer
Fokussierter Unit-Test, der die CSV-Zeichenketten-Escaping in CardDavServerDebugWriter.asCsvValue() validiert. Stellt sicher, dass eingebettete doppelte Anführungszeichen durch Verdopplung korrekt maskiert werden (RFC 4180 CSV-Konvention) und dass leere Zeichenketten in Anführungszeichen gesetzt werden. Dies ist entscheidend für das Debug-Logging von CardDAV-Datenverkehr, bei dem Felder Sonderzeichen enthalten können.

Architektur

Dieser Test zielt auf die Hilfsklasse CardDavServerDebugWriter ab, die für das Schreiben von CardDAV-Server-Debug-Ausgaben im CSV-Format verantwortlich ist. CSV-Escaping ist für die korrekte Protokollierung von HTTP-Anfrage-/Antwortdaten unerlässlich, die eingebettete Anführungszeichen, Zeilenumbrüche oder andere Sonderzeichen enthalten können.

Importe und Abhängigkeiten

Getestete CSV-Escaping-Regeln

EingabeErwartete AusgabeRegel
"" (leere Zeichenkette)"""" (zwei Anführungszeichenpaare)Leere Zeichenketten werden in Anführungszeichen gesetzt, was eine maskierte leere Zeichenkette in Anführungszeichen ergibt: "" (äußere Anführungszeichen) enthalten "" (maskierte Leere). Tatsächlich erwartet der Test """", was ein leeres Feld in Anführungszeichen darstellt – die äußeren Anführungszeichen umschließen das Feld, und das innere verdoppelte Anführungszeichen ist das maskierte Anführungszeichen gemäß RFC 4180.
Test "user"\r\nHallo Welt"Test ""user""\r\nHallo Welt"Doppelte Anführungszeichen innerhalb des Werts werden durch Verdopplung maskiert ("" wird zu ""). CR+LF-Sequenzen werden als literales \r\n beibehalten. Der gesamte Wert wird in äußere Anführungszeichen gesetzt.

Entwurfskontext

Die Klasse CardDavServerDebugWriter erzeugt CSV-Ausgaben für das Logging/Debuggen von CardDAV-Server-Interaktionen. CSV wurde gewählt, weil es für die Analyse leicht in Tabellenkalkulationsanwendungen importiert werden kann. Das Escaping folgt den Konventionen von RFC 4180:

Hinweis: Der Test verwendet \\r\\n (literales Backslash-r-Backslash-n) in der erwarteten Zeichenkette, was darauf hindeutet, dass die Methode asCsvValue tatsächliche CR+LF-Zeichen beibehält, anstatt sie in Escape-Sequenzen umzuwandeln.

Git-Verlauf

868d6abb7 2025 -> 2026
63081666f Quellcode-Dateiköpfe: 2024 -> 2025.
f86cfa20a WIP: CardDAV-Server.