EN · DE · RU · FR · ES

#1868: CardDavControllerTest.kt

projectforge-carddav/src/test/kotlin/org/projectforge/carddav/config/CardDavControllerTest.kt Модульный тест — пакет org.projectforge.web, projectforge-carddav/src/test/kotlin/org/projectforge/carddav/config/CardDavControllerTest.kt 61 строка · 34 кода · 24 комментария · 3 пустых
Тестирует утилиты генерации XML-ответов для контроллера CardDAV, а именно CardDavXmlUtils.appendMultiStatusStart() и appendMultiStatusEnd() — построители XML-конвертов для WebDAV multistatus-ответов. Расположен в пакете org.projectforge.web (тесты веб-слоя), ссылается на утилиты carddav из доменного слоя.

Архитектура

Этот тест находится в пакете org.projectforge.web — слой Wicket/веб — и тестирует утилиты генерации XML, импортированные из org.projectforge.carddav. Это представляет собой кросс-слойный тест: веб-контроллер использует доменные утилиты CardDAV для генерации XML-ответов для HTTP-клиентов.

Импорты

Тестируемые методы

1. appendMultiStatusStart(sb, withXmlDeclaration=true)

Добавляет открытие WebDAV XML-документа multistatus в StringBuilder. С withXmlDeclaration=true (по умолчанию) создаёт:

<?xml version="1.0" encoding="UTF-8"?>
<d:multistatus xmlns:d="DAV:" xmlns:card="urn:ietf:params:xml:ns:carddav"
    xmlns:cs="http://calendarserver.org/ns/" xmlns:me="http://me.com/_namespace/">

Без объявления (false): опускает строку XML-декларации — полезно, когда multistatus является частью большего XML-документа или когда объявление обрабатывается отдельно.

2. appendMultiStatusEnd(sb)

Добавляет закрывающий тег </d:multistatus>. Чрезвычайно прост, но тестируется для полноты и стабильности API.

Объявления пространств имён

ПрефиксURIСтандарт
dDAV:RFC 4918 (ядро WebDAV)
cardurn:ietf:params:xml:ns:carddavRFC 6352 (CardDAV)
cshttp://calendarserver.org/ns/Расширения Apple CalendarServer
mehttp://me.com/_namespace/Пользовательское пространство имён Micromata

Закомментированный код

Тест содержит закомментированный код, который должен был тестировать CardDavXmlWriter.appendPropfindContact() — метод для генерации записей ответа PROPFIND для отдельных контактов. Это предполагает, что генерация ответа PROPFIND для контактов всё ещё находилась в разработке или ожидала завершения на момент написания теста. Объекты User("kai") и Contact(42L, "Kai", "Reinhard", Date(1234567890)) создаются, но утверждение закомментировано.

Закомментированное утверждение //Assertions.assertEquals(response, sb.toString()) ссылается на неопределённую переменную response — этот тест неполон и представляет собой снимок незавершённой работы, сохранённый для документации.

Кросс-слойная зависимость

Расположение в projectforge-carddav/src/test/kotlin/org/projectforge/web/ с пакетом org.projectforge.web примечательно — он тестирует использование веб-слоем доменных утилит CardDAV. Тестовая директория зеркалирует структуру пакетов продакшена, что указывает на то, что веб-контроллер тестировался отдельно от доменной логики.

История Git

868d6abb7 2025 -> 2026
63081666f Заголовки исходных файлов: 2024-> 2025.
0d7a81f91 WIP: Carddav
744d238de WIP: Carddav
c4062ed97 WIP: Carddav
2ad0cfe66 WIP: Carddav
b5d8f83c1 WIP: Carddav
953455ae5 WIP: Carddav