From aed60c3441d562e8303d6a08907d8481bc7e3f2e Mon Sep 17 00:00:00 2001 From: mdecimus Date: Thu, 29 May 2025 18:58:04 +0200 Subject: [PATCH] Fix double nested CalDAV and CardDAV property tags (fixes #1591) --- crates/dav-proto/src/responses/property.rs | 6 --- tests/src/webdav/mod.rs | 7 +++- tests/src/webdav/prop.rs | 46 ++++++++++------------ 3 files changed, 26 insertions(+), 33 deletions(-) diff --git a/crates/dav-proto/src/responses/property.rs b/crates/dav-proto/src/responses/property.rs index d7e77e5b..4fd82e6b 100644 --- a/crates/dav-proto/src/responses/property.rs +++ b/crates/dav-proto/src/responses/property.rs @@ -109,11 +109,9 @@ impl Display for DavValue { write!( f, concat!( - "", "", "", "", - "" ) ) } @@ -121,10 +119,8 @@ impl Display for DavValue { write!( f, concat!( - "", "", "", - "" ) ) } @@ -132,7 +128,6 @@ impl Display for DavValue { write!( f, concat!( - "", "", "", "", @@ -146,7 +141,6 @@ impl Display for DavValue { "", "", "", - "" ) ) } diff --git a/tests/src/webdav/mod.rs b/tests/src/webdav/mod.rs index 2640eb96..ff7eaf1f 100644 --- a/tests/src/webdav/mod.rs +++ b/tests/src/webdav/mod.rs @@ -21,7 +21,10 @@ use common::{ core::BuildServer, manager::boot::build_ipc, }; -use dav_proto::schema::property::{DavProperty, WebDavProperty}; +use dav_proto::{ + schema::property::{DavProperty, WebDavProperty}, + xml_pretty_print, +}; use directory::Permission; use groupware::{DavResourceName, cache::GroupwareCache}; use http::HttpSessionManager; @@ -604,6 +607,8 @@ impl DavResponse { eprintln!(" {}: {:?}", key, value); } if !self.xml.is_empty() { + eprintln!("XML: {}", xml_pretty_print(self.body.as_ref().unwrap())); + for (key, value) in self.xml.iter() { eprintln!("{} -> {:?}", key, value); } diff --git a/tests/src/webdav/prop.rs b/tests/src/webdav/prop.rs index 35cccc57..550eef8f 100644 --- a/tests/src/webdav/prop.rs +++ b/tests/src/webdav/prop.rs @@ -323,29 +323,26 @@ pub async fn test(test: &WebDavTest) { CalDavProperty::SupportedCalendarComponentSet, )) .with_values([ - "A:supported-calendar-component-set.A:comp.[name]:VAVAILABILITY", - "A:supported-calendar-component-set.A:comp.[name]:AVAILABLE", - "A:supported-calendar-component-set.A:comp.[name]:VRESOURCE", - "A:supported-calendar-component-set.A:comp.[name]:VTODO", - "A:supported-calendar-component-set.A:comp.[name]:DAYLIGHT", - "A:supported-calendar-component-set.A:comp.[name]:STANDARD", - "A:supported-calendar-component-set.A:comp.[name]:VLOCATION", - "A:supported-calendar-component-set.A:comp.[name]:VTIMEZONE", - "A:supported-calendar-component-set.A:comp.[name]:VFREEBUSY", - "A:supported-calendar-component-set.A:comp.[name]:VEVENT", - "A:supported-calendar-component-set.A:comp.[name]:VJOURNAL", - "A:supported-calendar-component-set.A:comp.[name]:PARTICIPANT", - "A:supported-calendar-component-set.A:comp.[name]:VALARM", + "A:comp.[name]:VAVAILABILITY", + "A:comp.[name]:AVAILABLE", + "A:comp.[name]:VRESOURCE", + "A:comp.[name]:VTODO", + "A:comp.[name]:DAYLIGHT", + "A:comp.[name]:STANDARD", + "A:comp.[name]:VLOCATION", + "A:comp.[name]:VTIMEZONE", + "A:comp.[name]:VFREEBUSY", + "A:comp.[name]:VEVENT", + "A:comp.[name]:VJOURNAL", + "A:comp.[name]:PARTICIPANT", + "A:comp.[name]:VALARM", ]); properties .get(DavProperty::CalDav(CalDavProperty::SupportedCalendarData)) .with_values([ - concat!( - "A:supported-calendar-data.A:calendar-data-type.", - "[content-type]:text/calendar" - ), - "A:supported-calendar-data.A:calendar-data-type.[version]:2.0", - "A:supported-calendar-data.A:calendar-data-type.[version]:1.0", + concat!("A:calendar-data-type.", "[content-type]:text/calendar"), + "A:calendar-data-type.[version]:2.0", + "A:calendar-data-type.[version]:1.0", ]); properties .get(DavProperty::CalDav(CalDavProperty::SupportedCollationSet)) @@ -382,13 +379,10 @@ pub async fn test(test: &WebDavTest) { properties .get(DavProperty::CardDav(CardDavProperty::SupportedAddressData)) .with_values([ - concat!( - "B:supported-address-data.B:address-data-type.", - "[content-type]:text/vcard" - ), - "B:supported-address-data.B:address-data-type.[version]:3.0", - "B:supported-address-data.B:address-data-type.[version]:4.0", - "B:supported-address-data.B:address-data-type.[version]:2.1", + concat!("B:address-data-type.", "[content-type]:text/vcard"), + "B:address-data-type.[version]:3.0", + "B:address-data-type.[version]:4.0", + "B:address-data-type.[version]:2.1", ]); properties .get(DavProperty::CardDav(CardDavProperty::SupportedCollationSet))