EN · DE · RU · FR · ES

#1863 : CardDavUtilsTest.kt

projectforge-carddav/src/test/kotlin/org/projectforge/carddav/CardDavUtilsTest.kt Test unitaire — package org.projectforge.carddav, projectforge-carddav/src/test/kotlin/org/projectforge/carddav/CardDavUtilsTest.kt 50 lignes · 23 code · 22 commentaires · 5 vides
Teste les utilitaires de manipulation d'URL dans CardDavUtils : génération d'URL principale, normalisation d'URI (suppression des préfixes CardDAV) et extraction d'ID de contact à partir de chemins de fichiers VCF et photo. Ce sont des aides de routage essentielles pour l'implémentation du serveur CardDAV.

Architecture

CardDavUtils est une classe utilitaire fournissant des méthodes statiques d'aide pour l'implémentation du protocole CardDAV. Ce test couvre trois fonctions clés de manipulation d'URL/chemin indispensables pour l'adressage des ressources CardDAV.

Importations

Méthodes testées

1. getPrincipalsUsersUrl(uri, user)

Convertit un chemin d'URL de ressource en l'URL principale correspondante. Dans WebDAV/CardDAV, chaque utilisateur possède une ressource principale représentant son identité. Cette méthode mappe les URL de collection d'utilisateurs vers les URL principales :

La méthode supprime les suffixes d'URL (le ... représente les segments de chemin suivants) et réécrit users en principals/users/{username}. Ceci est défini dans la RFC 3744 (Contrôle d'accès WebDAV) et la RFC 6352 (CardDAV).

2. normalizedUri(uri)

Supprime le préfixe CardDAV des URI, en les normalisant vers leur type de ressource de base :

Cette méthode est utilisée en interne par le répartiteur CardDAV pour déterminer quel gestionnaire doit traiter une demande après que le filtre a décidé qu'il s'agit de trafic CardDAV.

3. extractContactId(path)

Extrait l'ID numérique du contact ProjectForge à partir de différents modèles de chemin de fichier :

La méthode utilise une correspondance regex sur les modèles ProjectForge-{id} et contact-{id}, permettant au serveur de mapper les URL de ressources CardDAV vers les ID de base de données ProjectForge.

Modèle de construction d'objet utilisateur

Le test utilise le modèle de fonction de portée apply de Kotlin : PFUserDO().also { it.username = "joe" }. Cela crée un PFUserDO partiellement initialisé avec seulement le nom d'utilisateur défini — suffisant pour les méthodes de génération d'URL qui n'ont besoin que de la propriété du nom d'utilisateur.

Les trois méthodes sont des fonctions pures (aucun effet secondaire, aucune dépendance externe), ce qui les rend idéales pour les tests unitaires sans simulations. La seule dépendance est l'entité PFUserDO qui est construite directement dans le test.

Historique Git

868d6abb7 2025 -> 2026
63081666f En-têtes de fichiers source : 2024 -> 2025.
cc9abacea Serveur CardDAV : WIP : gestion des images.
c4062ed97 WIP : Carddav
40e554cbe WIP : Carddav