From 6b9720844aaa86ad25a77c0821dcdbc772937065 Mon Sep 17 00:00:00 2001 From: Quentin Dufour Date: Sun, 26 May 2024 10:33:04 +0200 Subject: better support for time-range --- aerogramme/tests/behavior.rs | 51 ++++++++++++++++++++---------------- aerogramme/tests/common/constants.rs | 17 ++++++++++++ 2 files changed, 45 insertions(+), 23 deletions(-) (limited to 'aerogramme') diff --git a/aerogramme/tests/behavior.rs b/aerogramme/tests/behavior.rs index 0e6dab6..d6c73e3 100644 --- a/aerogramme/tests/behavior.rs +++ b/aerogramme/tests/behavior.rs @@ -590,6 +590,13 @@ fn rfc4791_webdav_caldav() { .send()?; let _obj5_etag = resp.headers().get("etag").expect("etag must be set"); assert_eq!(resp.status(), 201); + let resp = http + .put("http://localhost:8087/alice/calendar/Personal/rfc6.ics") + .header("If-None-Match", "*") + .body(ICAL_RFC6) + .send()?; + let _obj6_etag = resp.headers().get("etag").expect("etag must be set"); + assert_eq!(resp.status(), 201); // A generic function to check a query result let check_cal = @@ -611,25 +618,17 @@ fn rfc4791_webdav_caldav() { .iter() .find(|p| p.status.0.as_u16() == 200) .expect("some propstats must be 200"); - let etag = obj_success - .prop - .0 - .iter() - .find_map(|p| match p { - dav::AnyProperty::Value(dav::Property::GetEtag(x)) => Some(x.as_str()), - _ => None, - }); + let etag = obj_success.prop.0.iter().find_map(|p| match p { + dav::AnyProperty::Value(dav::Property::GetEtag(x)) => Some(x.as_str()), + _ => None, + }); assert_eq!(etag, ref_etag); - let calendar_data = obj_success - .prop - .0 - .iter() - .find_map(|p| match p { - dav::AnyProperty::Value(dav::Property::Extension( - realization::Property::Cal(cal::Property::CalendarData(x)), - )) => Some(x.payload.as_bytes()), - _ => None, - }); + let calendar_data = obj_success.prop.0.iter().find_map(|p| match p { + dav::AnyProperty::Value(dav::Property::Extension( + realization::Property::Cal(cal::Property::CalendarData(x)), + )) => Some(x.payload.as_bytes()), + _ => None, + }); assert_eq!(calendar_data, ref_ical); }; @@ -753,7 +752,14 @@ fn rfc4791_webdav_caldav() { assert_eq!(resp.status(), 207); let multistatus = dav_deserialize::>(&resp.text()?); assert_eq!(multistatus.responses.len(), 1); - check_cal(&multistatus, ("/alice/calendar/Personal/rfc2.ics", Some(obj2_etag.to_str().expect("etag header convertible to str")), None)); + check_cal( + &multistatus, + ( + "/alice/calendar/Personal/rfc2.ics", + Some(obj2_etag.to_str().expect("etag header convertible to str")), + None, + ), + ); // 7.8.5. Example: Retrieval of To-Dos by Alarm Time Range let cal_query = r#" @@ -766,7 +772,7 @@ fn rfc4791_webdav_caldav() { - + @@ -781,18 +787,17 @@ fn rfc4791_webdav_caldav() { .send()?; assert_eq!(resp.status(), 207); let multistatus = dav_deserialize::>(&resp.text()?); - //assert_eq!(multistatus.responses.len(), 1); + assert_eq!(multistatus.responses.len(), 1); // 7.8.6. Example: Retrieval of Event by UID // @TODO // 7.8.7. Example: Retrieval of Events by PARTSTAT // @TODO - + // 7.8.9. Example: Retrieval of All Pending To-Dos // @TODO - // --- REPORT calendar-multiget --- let cal_query = r#" diff --git a/aerogramme/tests/common/constants.rs b/aerogramme/tests/common/constants.rs index 8874876..91ee159 100644 --- a/aerogramme/tests/common/constants.rs +++ b/aerogramme/tests/common/constants.rs @@ -158,3 +158,20 @@ UID:E10BA47467C5C69BB74E8725@example.com END:VTODO END:VCALENDAR "#; + +pub static ICAL_RFC6: &[u8] = br#"BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Example Corp.//CalDAV Client//EN +BEGIN:VTODO +DTSTART:20060205T235335Z +DUE;VALUE=DATE:20060104 +STATUS:NEEDS-ACTION +SUMMARY:Task #1 +UID:DDDEEB7915FA61233B861457@example.com +BEGIN:VALARM +ACTION:AUDIO +TRIGGER;RELATED=START:-PT10M +END:VALARM +END:VTODO +END:VCALENDAR +"#; -- cgit v1.2.3