PropTest.ktProp.extractProps() — el analizador XML que extrae los nombres de propiedades DAV solicitadas de los cuerpos de solicitud PROPFIND y sync-collection. Valida que los elementos de propiedad dentro de los bloques <prop> o <d:prop> se identifiquen correctamente, se ordenen alfabéticamente y se asignen a sus valores enum PropType.La clase Prop representa una única propiedad DAV solicitada por un cliente. El método estático extractProps(xml: String): List<Prop> analiza los cuerpos de solicitud XML de WebDAV para determinar qué propiedades desea recuperar el cliente.
| PropType | Elemento XML | Propósito DAV/CardDAV |
|---|---|---|
CURRENT_USER_PRINCIPAL | <current-user-principal /> | URL del recurso principal del usuario autenticado (RFC 5397) |
CURRENT_USER_PRIVILEGE_SET | <current-user-privilege-set /> | Privilegios otorgados al usuario actual (RFC 3744) |
DISPLAYNAME | <displayname /> | Nombre legible del recurso (RFC 4918) |
RESOURCETYPE | <resourcetype /> | Indica si el recurso es una colección (RFC 4918) |
GETCTAG | <cs:getctag /> | Etiqueta de colección del servidor de calendario para detección de cambios (extensión Apple) |
GETETAG | <d:getetag /> | Etiqueta de entidad HTTP para el recurso (RFC 4918) |
SYNCTOKEN | <sync-token /> | Token para sincronización incremental de colecciones (RFC 6578) |
La entrada es un cuerpo de solicitud PROPFIND que utiliza un espacio de nombres XML predeterminado (xmlns="DAV:") — los elementos no tienen prefijo. La prueba verifica:
PropType de cada propiedad se identifica correctamenteLa entrada simula una solicitud de informe sync-collection (parte de la extensión WebDAV Sync RFC 6578). El XML utiliza prefijos de espacio de nombres (d:, cs:). La prueba verifica:
El método extractProps debe:
<prop> o <d:prop> dentro del XMLPropTypePropTypeList<Prop><prop> se llama <d:prop> dentro de un contenedor externo <propfind>), pero la prueba lo maneja correctamente, lo que demuestra la robustez del analizador en diferentes tipos de solicitudes DAV.868d6abb7 2025 -> 2026 63081666f Encabezados de archivos fuente: 2024 -> 2025. 5167dab99 WIP: Carddav 78a5132bf WIP: Carddav caee35750 WIP: Carddav 2ad0cfe66 WIP: Carddav