EN · DE · RU · FR · ES

#1863: CardDavUtilsTest.kt

projectforge-carddav/src/test/kotlin/org/projectforge/carddav/CardDavUtilsTest.kt Prueba unitaria — paquete org.projectforge.carddav, projectforge-carddav/src/test/kotlin/org/projectforge/carddav/CardDavUtilsTest.kt 50 líneas · 23 código · 22 comentarios · 5 en blanco
Prueba las utilidades de manipulación de URL en CardDavUtils: generación de URL principal, normalización de URI (eliminando prefijos de CardDAV) y extracción de ID de contacto desde rutas de archivos VCF y foto. Estas son ayudantes de enrutamiento centrales para la implementación del servidor CardDAV.

Arquitectura

CardDavUtils es una clase de utilidad que proporciona métodos auxiliares estáticos para la implementación del protocolo CardDAV. Esta prueba cubre tres funciones clave de manipulación de URL/ruta esenciales para el direccionamiento de recursos CardDAV.

Importaciones

Métodos probados

1. getPrincipalsUsersUrl(uri, user)

Convierte una ruta de URL de recurso en la URL principal correspondiente. En WebDAV/CardDAV, cada usuario tiene un recurso principal que representa su identidad. Este método asigna las URL de colección de usuarios a las URL principales:

El método elimina los sufijos de URL (el ... representa segmentos de ruta finales) y reescribe users como principals/users/{username}. Esto está definido en RFC 3744 (Control de acceso WebDAV) y RFC 6352 (CardDAV).

2. normalizedUri(uri)

Elimina el prefijo CardDAV de las URI, normalizándolas a su tipo de recurso base:

Este método se usa internamente por el despachador CardDAV para determinar qué manejador debe procesar una solicitud después de que el filtro decida que es tráfico CardDAV.

3. extractContactId(path)

Extrae el ID numérico de contacto de ProjectForge de varios patrones de ruta de archivo:

El método usa coincidencia de expresiones regulares en los patrones ProjectForge-{id} y contact-{id}, lo que permite al servidor mapear las URL de recursos CardDAV de vuelta a los IDs de la base de datos de ProjectForge.

Patrón de construcción del objeto de usuario

La prueba usa el patrón de función de alcance apply de Kotlin: PFUserDO().also { it.username = "joe" }. Esto crea un PFUserDO parcialmente inicializado con solo el nombre de usuario establecido, suficiente para los métodos de generación de URL que solo necesitan la propiedad del nombre de usuario.

Los tres métodos son funciones puras (sin efectos secundarios, sin dependencias externas), lo que los hace ideales para pruebas unitarias sin simulaciones. La única dependencia es la entidad PFUserDO que se construye directamente en la prueba.

Historial de Git

868d6abb7 2025 -> 2026
63081666f Encabezados de archivos fuente: 2024 -> 2025.
cc9abacea Servidor CardDAV: WIP: manejo de imágenes.
c4062ed97 WIP: Carddav
40e554cbe WIP: Carddav