initial tests for issue 268

This commit is contained in:
Andrew Ruthven 2022-12-14 10:27:02 +13:00
parent a5d19142bb
commit 80102c2700
6 changed files with 223 additions and 0 deletions

View File

@ -0,0 +1,46 @@
HTTP/1.1 201 Created
Date: Dow, 01 Jan 2000 00:00:00 GMT
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
ETag: "460f45321d679808addb06c1370d4253"
Content-Length: 0
Content-Type: text/plain; charset="utf-8"
CalDAV Data: >BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//davical.org//NONSGML AWL Calendar//EN
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:America/New_York
END:VTIMEZONE
BEGIN:VEVENT
SUMMARY:Repeating event
UID:complex-rrule-issue268
DTSTART;TZID=America/New_York:20220720T091000
RRULE:FREQ=MINUTELY;INTERVAL=15;BYDAY=MO,TU,WE,TH,FR;BYHOUR=9,10
,11,12,13,14,15,16
END:VEVENT
END:VCALENDAR
<
caldav_type: >VEVENT<
class: >PUBLIC<
dav_etag: >460f45321d679808addb06c1370d4253<
description: >NULL<
dtend: >2022-07-20 09:10:00<
dtstart: >2022-07-20 09:10:00<
due: >NULL<
location: >NULL<
logged_user: >10<
percent_complete: >NULL<
priority: >NULL<
rrule: >FREQ=MINUTELY;INTERVAL=15;BYDAY=MO,TU,WE,TH,FR;BYHOUR=9,10,11,12,13,14,15,16<
status: >NULL<
summary: >Repeating event<
transp: >NULL<
tz_id: >America/New_York<
uid: >complex-rrule-issue268<
url: >NULL<
user_no: >10<
~Duration: >00:00:00<

View File

@ -0,0 +1,40 @@
#
# Create a recurring event, ensure we can fetch future events.
# To test: https://gitlab.com/davical-project/davical/-/issues/268
#
TYPE=PUT
URL=http://regression.host/caldav.php/user1/home/complex-rrule-issue268.ics
HEADER=Content-Type: text/calendar
HEAD
BEGINDATA
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//davical.org//NONSGML AWL Calendar//EN
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:America/New_York
END:VTIMEZONE
BEGIN:VEVENT
SUMMARY:Repeating event
UID:complex-rrule-issue268
DTSTART;TZID=America/New_York:20220720T091000
RRULE:FREQ=MINUTELY;INTERVAL=15;BYDAY=MO,TU,WE,TH,FR;BYHOUR=9,10
,11,12,13,14,15,16
END:VEVENT
END:VCALENDAR
ENDDATA
QUERY
SELECT caldav_data.user_no, caldav_data.dav_etag, caldav_type, logged_user,
uid, dtstart at time zone olson_name as dtstart,
dtend at time zone olson_name as dtend, due, summary, location,
description, priority, class, transp, rrule, url,
percent_complete, tz_id, status,
caldav_data AS " CalDAV Data",
dtend - dtstart AS "~Duration"
FROM caldav_data JOIN calendar_item USING(dav_name) JOIN timezones ON (tz_id=tzid)
WHERE caldav_data.dav_name =
'/user1/home/complex-rrule-issue268.ics';
ENDQUERY

View File

@ -0,0 +1,33 @@
HTTP/1.1 207 Multi-Status
Date: Dow, 01 Jan 2000 00:00:00 GMT
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
ETag: "looks like an etag"
Content-Length: 659
Content-Type: text/xml; charset="utf-8"
<?xml version="1.0" encoding="utf-8" ?>
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
<response>
<href>/caldav.php/user1/home/complex-rrule-issue268.ics</href>
<propstat>
<prop>
<getetag>"460f45321d679808addb06c1370d4253"</getetag>
<C:calendar-data>BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//davical.org//NONSGML AWL Calendar//EN
CALSCALE:GREGORIAN
BEGIN:VEVENT
SUMMARY:Repeating event
UID:complex-rrule-issue268
DTSTART:20220720T155500Z
DURATION:P0D
RECURRENCE-ID:20220720T155500Z
END:VEVENT
END:VCALENDAR
</C:calendar-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>

View File

@ -0,0 +1,36 @@
#
#
# Fetch an instance from a recurring event.
# To test: https://gitlab.com/davical-project/davical/-/issues/268
#
TYPE=REPORT
URL=http://regression.host/caldav.php/user1/home/
HEADER=Content-Type: text/xml
HEADER=Depth: 1
HEAD
BEGINDATA
<?xml version="1.0" encoding="utf-8" ?>
<c:calendar-query
xmlns:c="urn:ietf:params:xml:ns:caldav"
xmlns:cs="http://calendarserver.org/ns/"
xmlns:ca="http://apple.com/ns/ical/"
xmlns:d="DAV:">
<d:prop>
<d:getetag/>
<c:calendar-data>
<c:expand start="20220720T154500Z" end="20220720T160000Z"/>
</c:calendar-data>
</d:prop>
<c:filter>
<c:comp-filter name="VCALENDAR">
<c:comp-filter name="VEVENT">
<c:time-range start="20220720T154500Z" end="20220720T160000Z"/>
</c:comp-filter>
</c:comp-filter>
</c:filter>
</c:calendar-query>
ENDDATA
REPLACE=/ETag: "[a-z0-9]+"/ETag: "looks like an etag"/

View File

@ -0,0 +1,33 @@
HTTP/1.1 207 Multi-Status
Date: Dow, 01 Jan 2000 00:00:00 GMT
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy
ETag: "looks like an etag"
Content-Length: 659
Content-Type: text/xml; charset="utf-8"
<?xml version="1.0" encoding="utf-8" ?>
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
<response>
<href>/caldav.php/user1/home/complex-rrule-issue268.ics</href>
<propstat>
<prop>
<getetag>"460f45321d679808addb06c1370d4253"</getetag>
<C:calendar-data>BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//davical.org//NONSGML AWL Calendar//EN
CALSCALE:GREGORIAN
BEGIN:VEVENT
SUMMARY:Repeating event
UID:complex-rrule-issue268
DTSTART:20220721T155500Z
DURATION:P0D
RECURRENCE-ID:20220721T155500Z
END:VEVENT
END:VCALENDAR
</C:calendar-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>

View File

@ -0,0 +1,35 @@
#
# Fetch a future instance from a recurring event.
# To test: https://gitlab.com/davical-project/davical/-/issues/268
#
TYPE=REPORT
URL=http://regression.host/caldav.php/user1/home/
HEADER=Content-Type: text/xml
HEADER=Depth: 1
HEAD
BEGINDATA
<?xml version="1.0" encoding="utf-8" ?>
<c:calendar-query
xmlns:c="urn:ietf:params:xml:ns:caldav"
xmlns:cs="http://calendarserver.org/ns/"
xmlns:ca="http://apple.com/ns/ical/"
xmlns:d="DAV:">
<d:prop>
<d:getetag/>
<c:calendar-data>
<c:expand start="20220721T154500Z" end="20220721T160000Z"/>
</c:calendar-data>
</d:prop>
<c:filter>
<c:comp-filter name="VCALENDAR">
<c:comp-filter name="VEVENT">
<c:time-range start="20220721T154500Z" end="20220721T160000Z"/>
</c:comp-filter>
</c:comp-filter>
</c:filter>
</c:calendar-query>
ENDDATA
REPLACE=/ETag: "[a-z0-9]+"/ETag: "looks like an etag"/