PropTest.ktProp.extractProps() — XML-парсер, который извлекает запрошенные имена свойств DAV из тел запросов PROPFIND и sync-collection. Проверяет, что элементы свойств внутри блоков <prop> или <d:prop> корректно идентифицируются, сортируются по алфавиту и сопоставляются со значениями перечисления PropType.Класс Prop представляет одно свойство DAV, запрошенное клиентом. Статический метод extractProps(xml: String): List<Prop> разбирает тела XML-запросов WebDAV, чтобы определить, какие свойства клиент хочет получить.
| PropType | XML-элемент | Назначение DAV/CardDAV |
|---|---|---|
CURRENT_USER_PRINCIPAL | <current-user-principal /> | URL основного ресурса аутентифицированного пользователя (RFC 5397) |
CURRENT_USER_PRIVILEGE_SET | <current-user-privilege-set /> | Привилегии, предоставленные текущему пользователю (RFC 3744) |
DISPLAYNAME | <displayname /> | Человекочитаемое имя ресурса (RFC 4918) |
RESOURCETYPE | <resourcetype /> | Является ли ресурс коллекцией (RFC 4918) |
GETCTAG | <cs:getctag /> | Тег коллекции календарного сервера для обнаружения изменений (расширение Apple) |
GETETAG | <d:getetag /> | HTTP-тег сущности для ресурса (RFC 4918) |
SYNCTOKEN | <sync-token /> | Токен для инкрементальной синхронизации коллекции (RFC 6578) |
Входные данные — тело запроса PROPFIND с использованием пространства имён XML по умолчанию (xmlns="DAV:") — элементы без префиксов. Тест проверяет:
PropType каждого свойства корректно определёнВходные данные имитируют запрос отчёта sync-collection (часть расширения WebDAV Sync RFC 6578). XML использует префиксы пространств имён (d:, cs:). Тест проверяет:
Метод extractProps должен:
<prop> или <d:prop> внутри XMLPropTypePropTypeList<Prop><prop> назван <d:prop> внутри внешней обёртки <propfind>), но тест корректно его обрабатывает — демонстрируя устойчивость парсера к различным типам DAV-запросов.868d6abb7 2025 -> 2026 63081666f Заголовки исходных файлов: 2024-> 2025. 5167dab99 WIP: Carddav 78a5132bf WIP: Carddav caee35750 WIP: Carddav 2ad0cfe66 WIP: Carddav