EN · DE · RU · FR · ES

#1869: CardDavFilterTest.kt (веб-уровень)

projectforge-carddav/src/test/kotlin/org/projectforge/carddav/config/CardDavFilterTest.kt Модульный тест — пакет org.projectforge.web, projectforge-carddav/src/test/kotlin/org/projectforge/carddav/config/CardDavFilterTest.kt 59 строк · 30 кода · 22 комментария · 7 пустых
Веб-тест для CardDavFilter.handledByCardDavFilter() — логика принятия решения сервлетным фильтром. Более компактный, чем тест уровня домена CardDavFilterTest (#1861), с фокусом на well-known URI, методы DAV и негативные сценарии. Проверяет, что только OPTIONS/PROPFIND/REPORT на известных путях перехватываются, в то время как GET-запросы и неизвестные пути пропускаются.

Архитектура

Это второй CardDavFilterTest, расположенный в пакете org.projectforge.web (веб-уровень). Он тестирует тот же статический метод CardDavFilter.handledByCardDavFilter(), но с другим фокусом: аспекты маршрутизации веб-уровня и конечная точка обнаружения .well-known.

Импорты

Структура теста

В отличие от плоского списка тестовых случаев в #1861, этот тест организует утверждения с помощью иерархии вспомогательных методов:

Покрытие теста

ТестURIМетодОжидаемыйОбоснование
Обнаружение well-known/.well-known/carddavPROPFINDtrueОбнаружение сервиса RFC 6764 — клиенты сначала обращаются к этому пути
Пользователи CardDAV/carddav/users/PROPFINDtrueСтандартный путь коллекции пользователей CardDAV
Приложение Wicket/wa/...PROPFINDfalseПуть приложения Wicket — НЕ должен перехватываться
Общий GET....GETfalseGET на неизвестном пути — не CardDAV
GET пользователей/usersGETfalseGET без заголовков DAV на пути пользователей — вероятно, запрос веб-приложения
Проверка метода: общий....OPTIONS/PROPFIND/REPORTfalseМетоды DAV на неизвестных URI пропускаются
Проверка метода: usersusersOPTIONS/PROPFIND/REPORTtrueМетоды DAV на пути "users" перехватываются
Проверка метода: carddav/carddav/users/OPTIONS/PROPFIND/REPORTtrueПолный путь CardDAV с методами DAV

Ключевые отличия от #1861 (тест уровня домена)

Аспект#1861 (домен)#1869 (веб)
Пакетorg.projectforge.carddavorg.projectforge.web
Well-known URIТестирует OPTIONS + GETТестирует только PROPFIND
Путь WicketНе тестируетсяТестирует /wa/... (приложение Wicket)
Итерация методовВстроенные проверкиПараметризованный checkMethod() с arrayOf().forEach
Шаблоны VCFДетальное тестирование имён VCF-файловНе покрывается
Метод REPORTНе тестируетсяТестируется (REPORT на путях users/carddav)
Оба теста (#1861 и #1869) тестируют одну и ту же функцию (CardDavFilter.handledByCardDavFilter()), но из разных контекстов пакетов и с разным покрытием. Это представляет собой дублирование тестов, вероятно, возникшее из-за параллельных потоков разработки, которые не были полностью консолидированы. Тест уровня домена (#1861) более полон для шаблонов VCF; тест веб-уровня (#1869) добавляет исключение пути Wicket и проверки метода REPORT.

Шаблон мокирования

Тот же шаблон, что и в #1861: создаёт Mockito.mock(HttpServletRequest::class.java), заглушает method и requestURI, проверяет возвращаемое логическое значение.

История Git

868d6abb7 2025 -> 2026
63081666f Заголовки исходных файлов: 2024-> 2025.
40e554cbe WIP: Carddav
2ad0cfe66 WIP: Carddav
ad8b47d1f WIP: CardDavWIP: CardDav
7f2c255ae WIP: CardDav