EN · DE · RU · FR · ES

#1861 : CardDavFilterTest.kt

projectforge-carddav/src/test/kotlin/org/projectforge/carddav/CardDavFilterTest.kt Test unitaire — package org.projectforge.carddav, projectforge-carddav/src/test/kotlin/org/projectforge/carddav/CardDavFilterTest.kt 79 lignes · 43 code · 24 commentaires · 12 vides
Test unitaire qui vérifie que la méthode statique CardDavFilter.handledByCardDavFilter() route correctement les requêtes HTTP vers le servlet CardDAV en fonction de la méthode HTTP et des motifs d'URI de requête. Garantit que seules les requêtes pertinentes pour CardDAV (OPTIONS, PROPFIND, REPORT, GET sur des chemins connus) sont interceptées par le filtre, tandis que les requêtes non liées passent à travers.

Architecture

Ce test valide la logique de routage des requêtes CardDAV dans CardDavFilter. Le système utilise un modèle de filtre de servlet — les requêtes HTTP arrivent sur le serveur d'application et le filtre décide de les transmettre au gestionnaire CardDAV ou de les laisser poursuivre dans le pipeline normal de requêtes.

Importations et dépendances

Conception du test

Le test utilise un modèle de méthode d'assistance paramétrée : checkRequest(method, requestUri, expected, msg?) crée un HttpServletRequest simulé via Mockito, stub requestURI et method, puis vérifie que la valeur de retour de CardDavFilter.handledByCardDavFilter(request) correspond à expected.

Couverture du test — Matrice de routage des requêtes

Méthode HTTPMotif URIAttenduJustification
OPTIONS/carddav, /carddav/users/kai, /users/kai, /users, /principalstrueOPTIONS est une vérification CORS preflight / capacité DAV — tous les chemins CardDAV connus répondent
PROPFIND/carddav, /carddav/users/kai, /users/kai, /carddav/users/, /users, /carddav/principals/, /principalstruePROPFIND est la méthode de récupération de propriétés WebDAV ; interceptée sur toutes les URL d'utilisateurs et de responsables
OPTIONS/.well-known/carddavtrueDécouverte d'URI bien connue selon la RFC 6764 pour la localisation du service CardDAV
GET/.well-known/carddavtrueGET sur l'URI bien connue retourne les informations de découverte du service
GET/principalsfalseGET sur la liste des responsables sans en-têtes DAV n'est pas CardDAV
GET/carddavtrueGET sur le chemin de base carddav
GET/carddav/users/joe/addressbooks/ProjectForge-123.vcftrueTéléchargement VCF avec motif d'identifiant séparé par un tiret "ProjectForge-123"
GET/users/joe/addressbooks/ProjectForge-123.vcftrueIdentique sans le préfixe /carddav
GET/users/joe/addressbooks/ProjectForge123.vcffalseSéparateur tiret manquant — non reconnu comme identifiant ProjectForge
GET/users/joe/address/ProjectForge-123.vcffalseSegment de chemin incorrect "address" au lieu de "addressbooks"

Stratégie de simulation

Utilise Mockito.mock(HttpServletRequest::class.java) pour créer des requêtes de servlet simulées. Ensuite, Mockito.when(request.method).thenReturn(method) et Mockito.when(request.requestURI).thenReturn(requestUri) configurent le dispositif de test. Aucun serveur HTTP réel n'est impliqué — pur test unitaire de la fonction de routage.

Le test couvre à la fois les cas positifs (retours true pour les requêtes CardDAV valides) et les cas négatifs (retours false pour les requêtes non CardDAV), y compris les cas limites comme l'absence de séparateur tiret dans les noms de fichiers VCF et les segments de chemin incorrects.

Historique Git

868d6abb7 2025 -> 2026
63081666f En-têtes des fichiers source : 2024 -> 2025.
fc6301b43 WIP : CardDavServer.
6c1daac93 WIP : Carddav
78a5132bf WIP : Carddav
c4062ed97 WIP : Carddav
40e554cbe WIP : Carddav
ad8b47d1f WIP : CardDavWIP : CardDav