CardDavFilterTest.kt (веб-уровень)CardDavFilter.handledByCardDavFilter() — логика принятия решения сервлетным фильтром. Более компактный, чем тест уровня домена CardDavFilterTest (#1861), с фокусом на well-known URI, методы DAV и негативные сценарии. Проверяет, что только OPTIONS/PROPFIND/REPORT на известных путях перехватываются, в то время как GET-запросы и неизвестные пути пропускаются.Это второй CardDavFilterTest, расположенный в пакете org.projectforge.web (веб-уровень). Он тестирует тот же статический метод CardDavFilter.handledByCardDavFilter(), но с другим фокусом: аспекты маршрутизации веб-уровня и конечная точка обнаружения .well-known.
В отличие от плоского списка тестовых случаев в #1861, этот тест организует утверждения с помощью иерархии вспомогательных методов:
checkRequest(uri, method, expected) — Создаёт мокированный запрос и проверяет решение фильтраcheckMethod(method) — Тестирует метод на нескольких URI (общий путь, "users", "/carddav/users/")| Тест | URI | Метод | Ожидаемый | Обоснование |
|---|---|---|---|---|
| Обнаружение well-known | /.well-known/carddav | PROPFIND | true | Обнаружение сервиса RFC 6764 — клиенты сначала обращаются к этому пути |
| Пользователи CardDAV | /carddav/users/ | PROPFIND | true | Стандартный путь коллекции пользователей CardDAV |
| Приложение Wicket | /wa/... | PROPFIND | false | Путь приложения Wicket — НЕ должен перехватываться |
| Общий GET | .... | GET | false | GET на неизвестном пути — не CardDAV |
| GET пользователей | /users | GET | false | GET без заголовков DAV на пути пользователей — вероятно, запрос веб-приложения |
| Проверка метода: общий | .... | OPTIONS/PROPFIND/REPORT | false | Методы DAV на неизвестных URI пропускаются |
| Проверка метода: users | users | OPTIONS/PROPFIND/REPORT | true | Методы DAV на пути "users" перехватываются |
| Проверка метода: carddav | /carddav/users/ | OPTIONS/PROPFIND/REPORT | true | Полный путь CardDAV с методами DAV |
| Аспект | #1861 (домен) | #1869 (веб) |
|---|---|---|
| Пакет | org.projectforge.carddav | org.projectforge.web |
| Well-known URI | Тестирует OPTIONS + GET | Тестирует только PROPFIND |
| Путь Wicket | Не тестируется | Тестирует /wa/... (приложение Wicket) |
| Итерация методов | Встроенные проверки | Параметризованный checkMethod() с arrayOf().forEach |
| Шаблоны VCF | Детальное тестирование имён VCF-файлов | Не покрывается |
| Метод REPORT | Не тестируется | Тестируется (REPORT на путях users/carddav) |
CardDavFilter.handledByCardDavFilter()), но из разных контекстов пакетов и с разным покрытием. Это представляет собой дублирование тестов, вероятно, возникшее из-за параллельных потоков разработки, которые не были полностью консолидированы. Тест уровня домена (#1861) более полон для шаблонов VCF; тест веб-уровня (#1869) добавляет исключение пути Wicket и проверки метода REPORT.Тот же шаблон, что и в #1861: создаёт Mockito.mock(HttpServletRequest::class.java), заглушает method и requestURI, проверяет возвращаемое логическое значение.
868d6abb7 2025 -> 2026 63081666f Заголовки исходных файлов: 2024-> 2025. 40e554cbe WIP: Carddav 2ad0cfe66 WIP: Carddav ad8b47d1f WIP: CardDavWIP: CardDav 7f2c255ae WIP: CardDav