CardDavFilterTest.ktCardDavFilter.handledByCardDavFilter() HTTP-Anfragen basierend auf HTTP-Methode und Anfrage-URI-Mustern korrekt an das CardDAV-Servlet weiterleitet. Stellt sicher, dass nur CardDAV-relevante Anfragen (OPTIONS, PROPFIND, REPORT, GET auf bekannten Pfaden) vom Filter abgefangen werden, während nicht verwandte Anfragen durchgelassen werden.Dieser Test validiert die CardDAV-Anfrageweiterleitungslogik in CardDavFilter. Das System verwendet ein Servlet-Filter-Muster – HTTP-Anfragen treffen beim Anwendungsserver ein und der Filter entscheidet, ob sie an den CardDAV-Handler weitergeleitet oder durch die normale Anfragepipeline laufen gelassen werden.
Der Test verwendet ein parametrisiertes Helfermethoden-Muster: checkRequest(methode, requestUri, erwartet, msg?) erstellt einen gemockten HttpServletRequest über Mockito, stubt requestURI und method und prüft dann, ob der Rückgabewert von CardDavFilter.handledByCardDavFilter(request) dem erwartet-Wert entspricht.
| HTTP-Methode | URI-Muster | Erwartet | Begründung |
|---|---|---|---|
| OPTIONS | /carddav, /carddav/users/kai, /users/kai, /users, /principals | true | OPTIONS ist ein CORS-Preflight-/DAV-Fähigkeitscheck – alle bekannten CardDAV-Pfade antworten |
| PROPFIND | /carddav, /carddav/users/kai, /users/kai, /carddav/users/, /users, /carddav/principals/, /principals | true | PROPFIND ist die WebDAV-Eigenschaftsabrufmethode; wird auf allen Benutzer- und Principal-URLs abgefangen |
| OPTIONS | /.well-known/carddav | true | Well-Known-URI-Discovery gemäß RFC 6764 für die CardDAV-Dienstortbestimmung |
| GET | /.well-known/carddav | true | GET auf der Well-Known-URI gibt Dienstdiscovery-Informationen zurück |
| GET | /principals | false | GET-Principal-Auflistung ohne DAV-Header ist kein CardDAV |
| GET | /carddav | true | GET auf dem Basis-Carddav-Pfad |
| GET | /carddav/users/joe/addressbooks/ProjectForge-123.vcf | true | VCF-Download mit Bindestrich-getrenntem ID-Muster "ProjectForge-123" |
| GET | /users/joe/addressbooks/ProjectForge-123.vcf | true | Gleiches Muster ohne /carddav-Präfix |
| GET | /users/joe/addressbooks/ProjectForge123.vcf | false | Fehlender Bindestrich-Trenner – wird nicht als ProjectForge-Identifikator erkannt |
| GET | /users/joe/address/ProjectForge-123.vcf | false | Falsches Pfadsegment "address" anstelle von "addressbooks" |
Verwendet Mockito.mock(HttpServletRequest::class.java), um gemockte Servlet-Anfragen zu erstellen. Anschließend werden mit Mockito.when(request.method).thenReturn(methode) und Mockito.when(request.requestURI).thenReturn(requestUri) die Testdaten eingerichtet. Es ist kein echter HTTP-Server beteiligt – reiner Unit-Test der Weiterleitungsfunktion.
868d6abb7 2025 -> 2026 63081666f Quellcode-Dateiköpfe: 2024 -> 2025. fc6301b43 WIP: CardDavServer. 6c1daac93 WIP: Carddav 78a5132bf WIP: Carddav c4062ed97 WIP: Carddav 40e554cbe WIP: Carddav ad8b47d1f WIP: CardDavWIP: CardDav