CardDavFilterTest.kt (Web-Schicht)CardDavFilter.handledByCardDavFilter() — die Entscheidungslogik des Servlet-Filters. Kompakter als der Domain-Schicht-Test CardDavFilterTest (#1861), mit Fokus auf Well-Known-URIs, DAV-Methoden und Negativfälle. Testet, dass nur OPTIONS/PROPFIND/REPORT auf bekannten Pfaden abgefangen werden, während GET-Anfragen und unbekannte Pfade durchgelassen werden.Dies ist ein zweiter CardDavFilterTest, der sich im Paket org.projectforge.web (Web-Schicht) befindet. Er testet dieselbe statische Methode CardDavFilter.handledByCardDavFilter(), jedoch mit einem anderen Fokus: Routing-Aspekte der Web-Schicht und der .well-known-Discovery-Endpunkt.
Im Gegensatz zur flachen Liste von Testfällen in #1861 organisiert dieser Test die Assertions mithilfe einer Hilfsmethoden-Hierarchie:
checkRequest(uri, method, expected) — Erstellt eine gemockte Anfrage und prüft die FilterentscheidungcheckMethod(method) — Testet eine Methode gegen mehrere URIs (generischer Pfad, "users", "/carddav/users/")| Test | URI | Methode | Erwartet | Begründung |
|---|---|---|---|---|
| Well-Known-Discovery | /.well-known/carddav | PROPFIND | true | RFC 6764 Service-Discovery — Clients fragen zuerst diesen Pfad ab |
| CardDAV-Benutzer | /carddav/users/ | PROPFIND | true | Standard-CardDAV-Benutzersammlungspfad |
| Wicket-App | /wa/... | PROPFIND | false | Wicket-Anwendungspfad — darf NICHT abgefangen werden |
| Generisches GET | .... | GET | false | GET auf unbekanntem Pfad — kein CardDAV |
| Benutzer GET | /users | GET | false | GET ohne DAV-Header auf Benutzerpfad — wahrscheinlich Web-App-Anfrage |
| Methodenprüfung: generisch | .... | OPTIONS/PROPFIND/REPORT | false | DAV-Methoden auf unbekannten URIs werden durchgelassen |
| Methodenprüfung: users | users | OPTIONS/PROPFIND/REPORT | true | DAV-Methoden auf "users"-Pfad werden abgefangen |
| Methodenprüfung: carddav | /carddav/users/ | OPTIONS/PROPFIND/REPORT | true | Vollständiger CardDAV-Pfad mit DAV-Methoden |
| Aspekt | #1861 (Domain) | #1869 (Web) |
|---|---|---|
| Paket | org.projectforge.carddav | org.projectforge.web |
| Well-Known-URI | Testet OPTIONS + GET | Testet nur PROPFIND |
| Wicket-Pfad | Nicht getestet | Testet /wa/... (Wicket-Anwendung) |
| Methodeniteration | Inline-Prüfungen | Parametrisiertes checkMethod() mit arrayOf().forEach |
| VCF-Muster | Detaillierte VCF-Dateinamentests | Nicht abgedeckt |
| REPORT-Methode | Nicht getestet | Getestet (REPORT auf users/carddav-Pfaden) |
CardDavFilter.handledByCardDavFilter()), jedoch aus unterschiedlichen Paketkontexten und mit unterschiedlicher Abdeckung. Dies stellt eine Testduplizierung dar, die wahrscheinlich aus parallelen Entwicklungsströmen resultiert, die nicht vollständig konsolidiert wurden. Der Domain-Schicht-Test (#1861) ist umfassender für VCF-Muster; der Web-Schicht-Test (#1869) fügt die Wicket-Pfadausnahme und REPORT-Methodenprüfungen hinzu.Gleiches Muster wie #1861: erstellt Mockito.mock(HttpServletRequest::class.java), stubbed method und requestURI, prüft den booleschen Rückgabewert.
868d6abb7 2025 -> 2026 63081666f Quellcode-Dateiköpfe: 2024 -> 2025. 40e554cbe WIP: Carddav 2ad0cfe66 WIP: Carddav ad8b47d1f WIP: CardDavWIP: CardDav 7f2c255ae WIP: CardDav