Fix double nested CalDAV and CardDAV property tags (fixes #1591)

This commit is contained in:
mdecimus
2025-05-29 18:58:04 +02:00
parent 42fd7d4de1
commit aed60c3441
3 changed files with 26 additions and 33 deletions

View File

@@ -109,11 +109,9 @@ impl Display for DavValue {
write!( write!(
f, f,
concat!( concat!(
"<B:supported-address-data>",
"<B:address-data-type content-type=\"text/vcard\" version=\"4.0\"/>", "<B:address-data-type content-type=\"text/vcard\" version=\"4.0\"/>",
"<B:address-data-type content-type=\"text/vcard\" version=\"3.0\"/>", "<B:address-data-type content-type=\"text/vcard\" version=\"3.0\"/>",
"<B:address-data-type content-type=\"text/vcard\" version=\"2.1\"/>", "<B:address-data-type content-type=\"text/vcard\" version=\"2.1\"/>",
"</B:supported-address-data>"
) )
) )
} }
@@ -121,10 +119,8 @@ impl Display for DavValue {
write!( write!(
f, f,
concat!( concat!(
"<A:supported-calendar-data>",
"<A:calendar-data-type content-type=\"text/calendar\" version=\"2.0\"/>", "<A:calendar-data-type content-type=\"text/calendar\" version=\"2.0\"/>",
"<A:calendar-data-type content-type=\"text/calendar\" version=\"1.0\"/>", "<A:calendar-data-type content-type=\"text/calendar\" version=\"1.0\"/>",
"</A:supported-calendar-data>"
) )
) )
} }
@@ -132,7 +128,6 @@ impl Display for DavValue {
write!( write!(
f, f,
concat!( concat!(
"<A:supported-calendar-component-set>",
"<A:comp name=\"VEVENT\"/>", "<A:comp name=\"VEVENT\"/>",
"<A:comp name=\"VTODO\"/>", "<A:comp name=\"VTODO\"/>",
"<A:comp name=\"VJOURNAL\"/>", "<A:comp name=\"VJOURNAL\"/>",
@@ -146,7 +141,6 @@ impl Display for DavValue {
"<A:comp name=\"PARTICIPANT\"/>", "<A:comp name=\"PARTICIPANT\"/>",
"<A:comp name=\"VLOCATION\"/>", "<A:comp name=\"VLOCATION\"/>",
"<A:comp name=\"VRESOURCE\"/>", "<A:comp name=\"VRESOURCE\"/>",
"</A:supported-calendar-component-set>"
) )
) )
} }

View File

@@ -21,7 +21,10 @@ use common::{
core::BuildServer, core::BuildServer,
manager::boot::build_ipc, 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 directory::Permission;
use groupware::{DavResourceName, cache::GroupwareCache}; use groupware::{DavResourceName, cache::GroupwareCache};
use http::HttpSessionManager; use http::HttpSessionManager;
@@ -604,6 +607,8 @@ impl DavResponse {
eprintln!(" {}: {:?}", key, value); eprintln!(" {}: {:?}", key, value);
} }
if !self.xml.is_empty() { if !self.xml.is_empty() {
eprintln!("XML: {}", xml_pretty_print(self.body.as_ref().unwrap()));
for (key, value) in self.xml.iter() { for (key, value) in self.xml.iter() {
eprintln!("{} -> {:?}", key, value); eprintln!("{} -> {:?}", key, value);
} }

View File

@@ -323,29 +323,26 @@ pub async fn test(test: &WebDavTest) {
CalDavProperty::SupportedCalendarComponentSet, CalDavProperty::SupportedCalendarComponentSet,
)) ))
.with_values([ .with_values([
"A:supported-calendar-component-set.A:comp.[name]:VAVAILABILITY", "A:comp.[name]:VAVAILABILITY",
"A:supported-calendar-component-set.A:comp.[name]:AVAILABLE", "A:comp.[name]:AVAILABLE",
"A:supported-calendar-component-set.A:comp.[name]:VRESOURCE", "A:comp.[name]:VRESOURCE",
"A:supported-calendar-component-set.A:comp.[name]:VTODO", "A:comp.[name]:VTODO",
"A:supported-calendar-component-set.A:comp.[name]:DAYLIGHT", "A:comp.[name]:DAYLIGHT",
"A:supported-calendar-component-set.A:comp.[name]:STANDARD", "A:comp.[name]:STANDARD",
"A:supported-calendar-component-set.A:comp.[name]:VLOCATION", "A:comp.[name]:VLOCATION",
"A:supported-calendar-component-set.A:comp.[name]:VTIMEZONE", "A:comp.[name]:VTIMEZONE",
"A:supported-calendar-component-set.A:comp.[name]:VFREEBUSY", "A:comp.[name]:VFREEBUSY",
"A:supported-calendar-component-set.A:comp.[name]:VEVENT", "A:comp.[name]:VEVENT",
"A:supported-calendar-component-set.A:comp.[name]:VJOURNAL", "A:comp.[name]:VJOURNAL",
"A:supported-calendar-component-set.A:comp.[name]:PARTICIPANT", "A:comp.[name]:PARTICIPANT",
"A:supported-calendar-component-set.A:comp.[name]:VALARM", "A:comp.[name]:VALARM",
]); ]);
properties properties
.get(DavProperty::CalDav(CalDavProperty::SupportedCalendarData)) .get(DavProperty::CalDav(CalDavProperty::SupportedCalendarData))
.with_values([ .with_values([
concat!( concat!("A:calendar-data-type.", "[content-type]:text/calendar"),
"A:supported-calendar-data.A:calendar-data-type.", "A:calendar-data-type.[version]:2.0",
"[content-type]:text/calendar" "A:calendar-data-type.[version]:1.0",
),
"A:supported-calendar-data.A:calendar-data-type.[version]:2.0",
"A:supported-calendar-data.A:calendar-data-type.[version]:1.0",
]); ]);
properties properties
.get(DavProperty::CalDav(CalDavProperty::SupportedCollationSet)) .get(DavProperty::CalDav(CalDavProperty::SupportedCollationSet))
@@ -382,13 +379,10 @@ pub async fn test(test: &WebDavTest) {
properties properties
.get(DavProperty::CardDav(CardDavProperty::SupportedAddressData)) .get(DavProperty::CardDav(CardDavProperty::SupportedAddressData))
.with_values([ .with_values([
concat!( concat!("B:address-data-type.", "[content-type]:text/vcard"),
"B:supported-address-data.B:address-data-type.", "B:address-data-type.[version]:3.0",
"[content-type]:text/vcard" "B:address-data-type.[version]:4.0",
), "B:address-data-type.[version]:2.1",
"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",
]); ]);
properties properties
.get(DavProperty::CardDav(CardDavProperty::SupportedCollationSet)) .get(DavProperty::CardDav(CardDavProperty::SupportedCollationSet))