EN · DE · RU · FR · ES

#1862: CardDavServerDebugWriterTest.kt

projectforge-carddav/src/test/kotlin/org/projectforge/carddav/CardDavServerDebugWriterTest.kt Prueba unitaria — paquete org.projectforge.carddav, projectforge-carddav/src/test/kotlin/org/projectforge/carddav/CardDavServerDebugWriterTest.kt 38 líneas · 13 código · 22 comentarios · 3 en blanco
Prueba unitaria enfocada que valida el escape de cadenas CSV en CardDavServerDebugWriter.asCsvValue(). Asegura que los caracteres de comillas dobles incrustados se escapen correctamente duplicándolos (convención CSV RFC 4180) y que las cadenas vacías se envuelvan entre comillas. Esto es crítico para el registro de depuración del tráfico CardDAV donde los campos pueden contener caracteres especiales.

Arquitectura

Esta prueba se dirige a la clase de utilidad CardDavServerDebugWriter, responsable de escribir la salida de depuración del servidor CardDAV en formato CSV. El escape CSV es esencial para registrar correctamente los datos de solicitud/respuesta HTTP que pueden contener comillas incrustadas, saltos de línea u otros caracteres especiales.

Importaciones y dependencias

Reglas de escape CSV probadas

EntradaSalida esperadaRegla
"" (cadena vacía)"""" (dos pares de comillas)Las cadenas vacías se envuelven entre comillas, produciendo una cadena vacía escapada entre comillas: "" (comillas exteriores) que contiene "" (vacío escapado). En realidad, la prueba espera """" que representa un campo vacío entre comillas: las comillas exteriores envuelven el campo, y la comilla doble interior es el carácter de comilla escapado según RFC 4180.
Test "usuario"\r\nHola mundo"Test ""usuario""\r\nHola mundo"Las comillas dobles dentro del valor se escapan duplicándolas ("" se convierte en ""). Las secuencias CR+LF se conservan como \r\n literales. El valor completo se envuelve entre comillas exteriores.

Contexto de diseño

La clase CardDavServerDebugWriter produce salida CSV para registrar/depurar las interacciones del servidor CardDAV. Se eligió CSV porque es fácilmente importable en aplicaciones de hoja de cálculo para análisis. El escape sigue las convenciones de RFC 4180:

Nota: La prueba utiliza \\r\\n (barra invertida literal-r-barra invertida-n) en la cadena esperada, lo que sugiere que el método asCsvValue conserva los caracteres CR+LF reales en lugar de convertirlos en secuencias de escape.

Historial de Git

868d6abb7 2025 -> 2026
63081666f Encabezados de archivos fuente: 2024 -> 2025.
f86cfa20a WIP: Servidor CardDav.