aboutsummaryrefslogtreecommitdiff
path: root/aerogramme/tests
diff options
context:
space:
mode:
authorQuentin Dufour <quentin@deuxfleurs.fr>2024-05-27 08:03:21 +0200
committerQuentin Dufour <quentin@deuxfleurs.fr>2024-05-27 08:03:21 +0200
commit418adf92be86ea83008a145180837f1e0ad3018a (patch)
tree5e3e9c0efea5c11577ebeaaa9e221b20c43ebb7c /aerogramme/tests
parent68e08bed4f8f589d2e45bcd82a99090032a56b95 (diff)
downloadaerogramme-418adf92be86ea83008a145180837f1e0ad3018a.tar.gz
aerogramme-418adf92be86ea83008a145180837f1e0ad3018a.zip
debug support of calendar-data pruning
Diffstat (limited to 'aerogramme/tests')
-rw-r--r--aerogramme/tests/behavior.rs50
-rw-r--r--aerogramme/tests/common/constants.rs28
2 files changed, 77 insertions, 1 deletions
diff --git a/aerogramme/tests/behavior.rs b/aerogramme/tests/behavior.rs
index 7b93d51..c88583f 100644
--- a/aerogramme/tests/behavior.rs
+++ b/aerogramme/tests/behavior.rs
@@ -956,7 +956,55 @@ fn rfc4791_webdav_caldav() {
);
// --- REPORT calendar-query, with calendar-data tx ---
- //@FIXME add support for calendar-data...
+ let cal_query = r#"<?xml version="1.0" encoding="utf-8" ?>
+ <C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
+ <D:prop>
+ <D:getetag/>
+ <C:calendar-data>
+ <C:comp name="VCALENDAR">
+ <C:prop name="VERSION"/>
+ <C:comp name="VEVENT">
+ <C:prop name="UID"/>
+ <C:prop name="DTSTART"/>
+ <C:prop name="DTEND"/>
+ <C:prop name="DURATION"/>
+ <C:prop name="RRULE"/>
+ <C:prop name="RDATE"/>
+ <C:prop name="EXRULE"/>
+ <C:prop name="EXDATE"/>
+ <C:prop name="RECURRENCE-ID"/>
+ </C:comp>
+ <C:comp name="VTIMEZONE"/>
+ </C:comp>
+ </C:calendar-data>
+ </D:prop>
+ <C:filter>
+ <C:comp-filter name="VCALENDAR">
+ <C:comp-filter name="VEVENT">
+ <C:time-range start="20060104T000000Z" end="20060105T000000Z"/>
+ </C:comp-filter>
+ </C:comp-filter>
+ </C:filter>
+ </C:calendar-query>"#;
+
+ let resp = http
+ .request(
+ reqwest::Method::from_bytes(b"REPORT")?,
+ "http://localhost:8087/alice/calendar/Personal/",
+ )
+ .body(cal_query)
+ .send()?;
+ assert_eq!(resp.status(), 207);
+ let multistatus = dav_deserialize::<dav::Multistatus<All>>(&resp.text()?);
+ assert_eq!(multistatus.responses.len(), 1);
+ check_cal(
+ &multistatus,
+ (
+ "/alice/calendar/Personal/rfc3.ics",
+ Some(obj3_etag.to_str().expect("etag header convertible to str")),
+ Some(ICAL_RFC3_STRIPPED),
+ ),
+ );
Ok(())
})
diff --git a/aerogramme/tests/common/constants.rs b/aerogramme/tests/common/constants.rs
index c04bae0..16daec6 100644
--- a/aerogramme/tests/common/constants.rs
+++ b/aerogramme/tests/common/constants.rs
@@ -125,6 +125,34 @@ END:VEVENT
END:VCALENDAR
";
+pub static ICAL_RFC3_STRIPPED: &[u8] = b"BEGIN:VCALENDAR\r
+VERSION:2.0\r
+BEGIN:VTIMEZONE\r
+LAST-MODIFIED:20040110T032845Z\r
+TZID:US/Eastern\r
+BEGIN:DAYLIGHT\r
+DTSTART:20000404T020000\r
+RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4\r
+TZNAME:EDT\r
+TZOFFSETFROM:-0500\r
+TZOFFSETTO:-0400\r
+END:DAYLIGHT\r
+BEGIN:STANDARD\r
+DTSTART:20001026T020000\r
+RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10\r
+TZNAME:EST\r
+TZOFFSETFROM:-0400\r
+TZOFFSETTO:-0500\r
+END:STANDARD\r
+END:VTIMEZONE\r
+BEGIN:VEVENT\r
+DTSTART;TZID=US/Eastern:20060104T100000\r
+DURATION:PT1H\r
+UID:DC6C50A017428C5216A2F1CD@example.com\r
+END:VEVENT\r
+END:VCALENDAR\r
+";
+
pub static ICAL_RFC4: &[u8] = br#"BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Example Corp.//CalDAV Client//EN