CardDavFilterTest.ktCardDavFilter.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.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.
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.
| Método HTTP | Patrón de URI | Esperado | Justificación |
|---|---|---|---|
| OPTIONS | /carddav, /carddav/users/kai, /users/kai, /users, /principals | true | OPTIONS 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/, /principals | true | PROPFIND es el método de obtención de propiedades WebDAV; interceptado en todas las URLs de usuario y principal |
| OPTIONS | /.well-known/carddav | true | Descubrimiento de URI bien conocido según RFC 6764 para la ubicación del servicio CardDAV |
| GET | /.well-known/carddav | true | GET en URI bien conocido devuelve información de descubrimiento del servicio |
| GET | /principals | false | Listado de principales GET sin cabeceras DAV no es CardDAV |
| GET | /carddav | true | GET en la ruta base carddav |
| GET | /carddav/users/joe/addressbooks/ProjectForge-123.vcf | true | Descarga VCF con patrón de ID separado por guión "ProjectForge-123" |
| GET | /users/joe/addressbooks/ProjectForge-123.vcf | true | Mismo caso sin prefijo /carddav |
| GET | /users/joe/addressbooks/ProjectForge123.vcf | false | Falta el separador de guión — no se reconoce como identificador de ProjectForge |
| GET | /users/joe/address/ProjectForge-123.vcf | false | Segmento de ruta incorrecto "address" en lugar de "addressbooks" |
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.
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