EN · DE · RU · FR · ES

#1861: CardDavFilterTest.kt

projectforge-carddav/src/test/kotlin/org/projectforge/carddav/CardDavFilterTest.kt Prueba unitaria — paquete org.projectforge.carddav, projectforge-carddav/src/test/kotlin/org/projectforge/carddav/CardDavFilterTest.kt 79 líneas · 43 código · 24 comentarios · 12 en blanco
Prueba unitaria que verifica que el método estático CardDavFilter.handledByCardDavFilter() enruta correctamente las solicitudes HTTP al servlet CardDAV según el método HTTP y los patrones de URI de solicitud. Asegura que solo las solicitudes relevantes para CardDAV (OPTIONS, PROPFIND, REPORT, GET en rutas conocidas) sean interceptadas por el filtro, mientras que las solicitudes no relacionadas pasan sin ser interceptadas.

Arquitectura

Esta prueba valida la lógica de enrutamiento de solicitudes CardDAV en CardDavFilter. El sistema utiliza un patrón de Filtro de Servlet: las solicitudes HTTP llegan al servidor de aplicaciones y el filtro decide si reenviarlas al manejador CardDAV o dejarlas continuar a través del pipeline normal de solicitudes.

Importaciones y dependencias

Diseño de la prueba

La prueba emplea un patrón de método auxiliar parametrizado: checkRequest(method, requestUri, expected, msg?) crea un HttpServletRequest simulado mediante Mockito, simula requestURI y method, y luego verifica que el valor de retorno de CardDavFilter.handledByCardDavFilter(request) coincida con expected.

Cobertura de la prueba — Matriz de enrutamiento de solicitudes

Método HTTPPatrón de URIEsperadoJustificación
OPTIONS/carddav, /carddav/users/kai, /users/kai, /users, /principalstrueOPTIONS es una verificación de capacidad CORS preflight / DAV — todas las rutas CardDAV conocidas responden
PROPFIND/carddav, /carddav/users/kai, /users/kai, /carddav/users/, /users, /carddav/principals/, /principalstruePROPFIND es el método de obtención de propiedades WebDAV; interceptado en todas las URLs de usuario y principal
OPTIONS/.well-known/carddavtrueDescubrimiento de URI bien conocido según RFC 6764 para la ubicación del servicio CardDAV
GET/.well-known/carddavtrueGET en URI bien conocido devuelve información de descubrimiento del servicio
GET/principalsfalseListado de principales GET sin cabeceras DAV no es CardDAV
GET/carddavtrueGET en la ruta base carddav
GET/carddav/users/joe/addressbooks/ProjectForge-123.vcftrueDescarga VCF con patrón de ID separado por guión "ProjectForge-123"
GET/users/joe/addressbooks/ProjectForge-123.vcftrueMismo caso sin prefijo /carddav
GET/users/joe/addressbooks/ProjectForge123.vcffalseFalta el separador de guión — no se reconoce como identificador de ProjectForge
GET/users/joe/address/ProjectForge-123.vcffalseSegmento de ruta incorrecto "address" en lugar de "addressbooks"

Estrategia de simulación

Utiliza Mockito.mock(HttpServletRequest::class.java) para crear solicitudes de servlet simuladas. Luego, Mockito.when(request.method).thenReturn(method) y Mockito.when(request.requestURI).thenReturn(requestUri) configuran el entorno de prueba. No hay un servidor HTTP real involucrado — prueba unitaria pura de la función de enrutamiento.

La prueba cubre tanto casos positivos (retorno true para solicitudes CardDAV válidas) como casos negativos (retorno false para solicitudes no CardDAV), incluyendo casos límite como la ausencia de separadores de guión en nombres de archivo VCF y segmentos de ruta incorrectos.

Historial de Git

868d6abb7 2025 -> 2026
63081666f Encabezados de archivos fuente: 2024 -> 2025.
fc6301b43 WIP: CardDavServer.
6c1daac93 WIP: Carddav
78a5132bf WIP: Carddav
c4062ed97 WIP: Carddav
40e554cbe WIP: Carddav
ad8b47d1f WIP: CardDavWIP: CardDav