From 15d01c8bed2d0f7bc201c896694ab383bd970162 Mon Sep 17 00:00:00 2001 From: Andrew Ruthven Date: Mon, 6 Feb 2023 00:15:32 +1300 Subject: [PATCH] Store DTSTART and DTEND from user in shadow columns We want to store the calculated dtstart and dtend in the database so we can use SQL to fetch records. However, we also need what the user sent us so we can allow prop-filters to be used as well. So we store what the user sends us in dtstart_orig and dtend_orig and only use for relevant prop-filter reports. --- dba/davical.sql | 4 +- dba/patches/1.3.5.sql | 25 ++++ inc/WritableCollection.php | 38 +++--- inc/caldav-PUT-functions.php | 80 ++++++++----- inc/caldav-REPORT-calquery.php | 10 +- .../binding/Really-Upgrade-Database.result | 2 +- .../carddav/Really-Upgrade-Database.result | 2 +- .../2500-is-defined-Setup-PUT-collection.data | 7 +- ...00-is-defined-Setup-PUT-resources-1.result | 46 ++++++++ ...2500-is-defined-Setup-PUT-resources-1.test | 39 +++++++ ...00-is-defined-Setup-PUT-resources-2.result | 46 ++++++++ ...2500-is-defined-Setup-PUT-resources-2.test | 39 +++++++ ...00-is-defined-Setup-PUT-resources-3.result | 48 ++++++++ ...2500-is-defined-Setup-PUT-resources-3.test | 41 +++++++ ...00-is-defined-Setup-PUT-resources-4.result | 47 ++++++++ ...2500-is-defined-Setup-PUT-resources-4.test | 40 +++++++ ...01-is-defined-REPORT-is-not-defined.result | 29 ++++- ...is-defined-REPORT-is-defined-STATUS.result | 58 +++++++++- ...03-is-defined-REPORT-is-defined-URL.result | 31 ++++- ...s-defined-REPORT-is-not-defined-URL.result | 56 ++++++++- ...05-is-defined-REPORT-is-defined-DUE.result | 56 ++++++++- ...s-defined-REPORT-is-not-defined-DUE.result | 31 ++++- ...-is-defined-REPORT-is-defined-CLASS.result | 56 ++++++++- ...defined-REPORT-is-not-defined-CLASS.result | 31 ++++- ...s-defined-REPORT-is-defined-DTSTART.result | 107 +++++++++++++++++ ...-is-defined-REPORT-is-defined-DTSTART.test | 33 ++++++ ...fined-REPORT-is-not-defined-DTSTART.result | 62 ++++++++++ ...defined-REPORT-is-not-defined-DTSTART.test | 33 ++++++ ...-is-defined-REPORT-is-defined-DTEND.result | 60 ++++++++++ ...11-is-defined-REPORT-is-defined-DTEND.test | 33 ++++++ ...defined-REPORT-is-not-defined-DTEND.result | 109 ++++++++++++++++++ ...s-defined-REPORT-is-not-defined-DTEND.test | 33 ++++++ ...-REPORT-is-not-defined-DTEND-VEVENT.result | 34 ++++++ ...ed-REPORT-is-not-defined-DTEND-VEVENT.test | 33 ++++++ .../Really-Upgrade-Database.result | 2 +- .../scheduling/Really-Upgrade-Database.result | 2 +- .../timezone/Really-Upgrade-Database.result | 2 +- 37 files changed, 1321 insertions(+), 84 deletions(-) create mode 100644 dba/patches/1.3.5.sql create mode 100644 testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-1.result create mode 100644 testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-1.test create mode 100644 testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-2.result create mode 100644 testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-2.test create mode 100644 testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-3.result create mode 100644 testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-3.test create mode 100644 testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-4.result create mode 100644 testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-4.test create mode 100644 testing/tests/regression-suite/2509-is-defined-REPORT-is-defined-DTSTART.result create mode 100644 testing/tests/regression-suite/2509-is-defined-REPORT-is-defined-DTSTART.test create mode 100644 testing/tests/regression-suite/2510-is-defined-REPORT-is-not-defined-DTSTART.result create mode 100644 testing/tests/regression-suite/2510-is-defined-REPORT-is-not-defined-DTSTART.test create mode 100644 testing/tests/regression-suite/2511-is-defined-REPORT-is-defined-DTEND.result create mode 100644 testing/tests/regression-suite/2511-is-defined-REPORT-is-defined-DTEND.test create mode 100644 testing/tests/regression-suite/2512-is-defined-REPORT-is-not-defined-DTEND.result create mode 100644 testing/tests/regression-suite/2512-is-defined-REPORT-is-not-defined-DTEND.test create mode 100644 testing/tests/regression-suite/2513-is-defined-REPORT-is-not-defined-DTEND-VEVENT.result create mode 100644 testing/tests/regression-suite/2513-is-defined-REPORT-is-not-defined-DTEND-VEVENT.test diff --git a/dba/davical.sql b/dba/davical.sql index 73048b8d..92287a73 100644 --- a/dba/davical.sql +++ b/dba/davical.sql @@ -151,7 +151,9 @@ CREATE TABLE calendar_item ( last_modified TIMESTAMP, dtstamp TIMESTAMP, dtstart TIMESTAMP WITH TIME ZONE, + dtstart_orig TIMESTAMP WITH TIME ZONE, dtend TIMESTAMP WITH TIME ZONE, + dtend_orig TIMESTAMP WITH TIME ZONE, due TIMESTAMP WITH TIME ZONE, summary TEXT, location TEXT, @@ -497,4 +499,4 @@ CREATE SEQUENCE metrics_count_delticket; CREATE SEQUENCE metrics_count_bind; CREATE SEQUENCE metrics_count_unknown; -SELECT new_db_revision(1,3,4, 'KwiecieĊ„' ); +SELECT new_db_revision(1,3,5, 'Maj' ); diff --git a/dba/patches/1.3.5.sql b/dba/patches/1.3.5.sql new file mode 100644 index 00000000..8751e7d1 --- /dev/null +++ b/dba/patches/1.3.5.sql @@ -0,0 +1,25 @@ + +-- Notable enhancement: add shadow columns to calendar_item + +BEGIN; +SELECT check_db_revision(1,3,4); + +ALTER TABLE calendar_item + ADD COLUMN dtstart_orig TIMESTAMP WITH TIME ZONE, + ADD COLUMN dtend_orig TIMESTAMP WITH TIME ZONE; + +-- We don't know what the user sent us without reparsing all the VCALENDAR +-- blobs, which I'm not going to do in SQL. We'll just have to wing it, and +-- hope this is good enough (it is no better than the current situation for +-- existing deployments) and dtstart_orig and dtend_orig will end up with +-- correct data over time as users re-upload the VCALENDAR blobs. +UPDATE calendar_item +SET + dtstart_orig = dtstart, + dtend_orig = dtend; + +-- http://blogs.transparent.com/polish/names-of-the-months-and-their-meaning/ +SELECT new_db_revision(1,3,5, 'Maj' ); + +COMMIT; +ROLLBACK; diff --git a/inc/WritableCollection.php b/inc/WritableCollection.php index b3c32b9d..1cf2e254 100644 --- a/inc/WritableCollection.php +++ b/inc/WritableCollection.php @@ -124,7 +124,14 @@ class WritableCollection extends DAVResource { return false; } + $dtstart = $first->GetPValue('DTSTART'); + $calitem_params[':dtstart_orig'] = $dtstart; + if ( (!isset($dtstart) || $dtstart == '') && $first->GetPValue('DUE') != '' ) { + $dtstart = $first->GetPValue('DUE'); + } + $dtend = $first->GetPValue('DTEND'); + $calitem_params[':dtend_orig'] = $dtend; if ( isset($dtend) && $dtend != '' ) { dbg_error_log( 'PUT', ' DTEND: "%s", DTSTART: "%s", DURATION: "%s"', $dtend, $first->GetPValue('DTSTART'), $first->GetPValue('DURATION') ); $calitem_params[':dtend'] = $dtend; @@ -218,26 +225,29 @@ class WritableCollection extends DAVResource { if ( $create_resource ) { $sql = <<user_no; $dtstart = $first->GetPValue('DTSTART'); + $calitem_params[':dtstart_orig'] = $dtstart; $calitem_params[':dtstart'] = $dtstart; + if ( (!isset($dtstart) || $dtstart == '') && $first->GetPValue('DUE') != '' ) { $dtstart = $first->GetPValue('DUE'); if ( isset($after) ) $dtstart_date = new RepeatRuleDateTime($first->GetProperty('DUE')); @@ -1121,6 +1129,8 @@ EOSQL; } $dtend = $first->GetPValue('DTEND'); + $calitem_params[':dtend_orig'] = $dtend; + if ( isset($dtend) && $dtend != '' ) { dbg_error_log( 'PUT', ' DTEND: "%s", DTSTART: "%s", DURATION: "%s"', $dtend, $dtstart, $first->GetPValue('DURATION') ); $calitem_params[':dtend'] = $dtend; @@ -1203,17 +1213,17 @@ EOSQL; } $sql = str_replace( '##dtend##', $dtend, ($inserting ? $calitem_insert : $calitem_update) ); + $calitem_params[':uid'] = $first->GetPValue('UID'); + $calitem_params[':url'] = $first->GetPValue('URL'); + $calitem_params[':due'] = $first->GetPValue('DUE'); $calitem_params[':tzid'] = $tzid; - $calitem_params[':uid'] = $first->GetPValue('UID'); - $calitem_params[':summary'] = $first->GetPValue('SUMMARY'); + $calitem_params[':transp'] = $first->GetPValue('TRANSP'); + $calitem_params[':status'] = $first->GetPValue('STATUS'); + $calitem_params[':summary'] = $first->GetPValue('SUMMARY'); $calitem_params[':location'] = $first->GetPValue('LOCATION'); - $calitem_params[':transp'] = $first->GetPValue('TRANSP'); - $calitem_params[':description'] = $first->GetPValue('DESCRIPTION'); - $calitem_params[':url'] = $first->GetPValue('URL'); $calitem_params[':priority'] = $first->GetPValue('PRIORITY'); - $calitem_params[':due'] = $first->GetPValue('DUE'); + $calitem_params[':description'] = $first->GetPValue('DESCRIPTION'); $calitem_params[':percent_complete'] = $first->GetPValue('PERCENT-COMPLETE'); - $calitem_params[':status'] = $first->GetPValue('STATUS'); // Intentionally not populating first_instance_start and last_instance_end // here, As they may depend on the default tzid of the collection, which as @@ -1469,12 +1479,16 @@ function write_resource( DAVResource $resource, $caldav_data, DAVResource $colle if ( $first->GetType() == 'VTODO' ) $due = $first->GetPValue('DUE'); $calitem_params[':due'] = $due; $dtstart = $first->GetPValue('DTSTART'); + $calitem_params[':dtstart_orig'] = $dtstart; + if ( empty($dtstart) ) $dtstart = $due; if (isset($dtstart) && preg_match("/^1[0-8][0-9][0-9][01][0-9][0-3][0-9]$/", $dtstart)) $dtstart = $dtstart . "T000000Z"; $calitem_params[':dtstart'] = $dtstart; $dtend = $first->GetPValue('DTEND'); + $calitem_params[':dtend_orig'] = $dtend; + if ( isset($dtend) && $dtend != '' ) { dbg_error_log( 'PUT', ' DTEND: "%s", DTSTART: "%s", DURATION: "%s"', $dtend, $dtstart, $first->GetPValue('DURATION') ); if (preg_match("/^1[0-8][0-9][0-9][01][0-9][0-3][0-9]$/", $dtend)) @@ -1632,15 +1646,15 @@ function write_resource( DAVResource $resource, $caldav_data, DAVResource $colle if ( $put_action_type == 'INSERT' ) { $sql = <<BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VEVENT +SUMMARY:No DTEND, from PUT +DTSTART;VALUE=DATE:19971102 +DTSTAMP:19970901T130000Z +UID:19970901T130000Z-123403@example.com +RRULE:FREQ=YEARLY +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +CLASS:CONFIDENTIAL +TRANSP:TRANSPARENT +END:VEVENT +END:VCALENDAR +< + caldav_type: >VEVENT< + class: >CONFIDENTIAL< + dav_etag: >7f689d339d2aaa93571b78742a2e0f33< + description: >NULL< + dtend: >1997-11-03 00:00:00+13< + dtend_orig: >NULL< + dtstamp: >1997-09-01 13:00:00< + dtstart: >1997-11-02 00:00:00+13< + dtstart_orig: >1997-11-02 00:00:00+13< + due: >NULL< + location: >NULL< + logged_user: >10< + percent_complete: >NULL< + priority: >NULL< + rrule: >FREQ=YEARLY< + status: >NULL< + summary: >No DTEND, from PUT< + transp: >TRANSPARENT< + uid: >19970901T130000Z-123403@example.com< + url: >NULL< + user_no: >10< + diff --git a/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-1.test b/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-1.test new file mode 100644 index 00000000..0b23f362 --- /dev/null +++ b/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-1.test @@ -0,0 +1,39 @@ +# +# PUT a events into the database +# +TYPE=PUT +URL=http://regression.host/caldav.php/user1/events/hand-crafted-vevent.ics +HEADER=User-Agent: DAViCal Testing/1.12.x +HEADER=Content-Type: text/calendar; charset=utf-8 +AUTH=user1:user1 + +HEAD + + +BEGINDATA +BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VEVENT +SUMMARY:No DTEND, from PUT +DTSTART;VALUE=DATE:19971102 +DTSTAMP:19970901T130000Z +UID:19970901T130000Z-123403@example.com +RRULE:FREQ=YEARLY +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +CLASS:CONFIDENTIAL +TRANSP:TRANSPARENT +END:VEVENT +END:VCALENDAR +ENDDATA + + +QUERY +SELECT caldav_data.user_no, caldav_data.dav_etag, caldav_type, logged_user, + uid, dtstamp, dtstart, dtstart_orig, dtend, dtend_orig, due, summary, + location, description, priority, class, transp, rrule, url, + percent_complete, status, caldav_data AS " CalDAV Data" +FROM caldav_data + JOIN calendar_item AS ci USING(dav_name) +WHERE caldav_data.dav_name = '/user1/events/hand-crafted-vevent.ics'; +ENDQUERY diff --git a/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-2.result b/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-2.result new file mode 100644 index 00000000..66842e81 --- /dev/null +++ b/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-2.result @@ -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: "1cb73d8b8271b3293874e4ecaae6b118" +Content-Length: 0 +Content-Type: text/plain; charset="utf-8" + + + CalDAV Data: >BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19980901T130000Z-123405@host.com +DTSTAMP:19980901T130000Z +DTSTART:19980415T133000Z +DUE:19980516T045959Z +SUMMARY:Status is not set, CLASS set, from PUT +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR +< + caldav_type: >VTODO< + class: >CONFIDENTIAL< + dav_etag: >1cb73d8b8271b3293874e4ecaae6b118< + description: >NULL< + dtend: >NULL< + dtend_orig: >NULL< + dtstamp: >1998-09-01 13:00:00< + dtstart: >1998-04-16 01:30:00+12< + dtstart_orig: >1998-04-16 01:30:00+12< + due: >1998-05-16 16:59:59+12< + location: >NULL< + logged_user: >10< + percent_complete: >NULL< + priority: >1< + rrule: >NULL< + status: >NULL< + summary: >Status is not set, CLASS set, from PUT< + transp: >NULL< + uid: >19980901T130000Z-123405@host.com< + url: >NULL< + user_no: >10< + diff --git a/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-2.test b/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-2.test new file mode 100644 index 00000000..c898df1d --- /dev/null +++ b/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-2.test @@ -0,0 +1,39 @@ +# +# PUT a todo into the database +# +TYPE=PUT +URL=http://regression.host/caldav.php/user1/events/hand-crafted-vtodo-1.ics +HEADER=User-Agent: DAViCal Testing/1.12.x +HEADER=Content-Type: text/calendar; charset=utf-8 +AUTH=user1:user1 + +HEAD + + +BEGINDATA +BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19980901T130000Z-123405@host.com +DTSTAMP:19980901T130000Z +DTSTART:19980415T133000Z +DUE:19980516T045959Z +SUMMARY:Status is not set, CLASS set, from PUT +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR +ENDDATA + + +QUERY +SELECT caldav_data.user_no, caldav_data.dav_etag, caldav_type, logged_user, + uid, dtstamp, dtstart, dtstart_orig, dtend, dtend_orig, due, summary, + location, description, priority, class, transp, rrule, url, + percent_complete, status, caldav_data AS " CalDAV Data" +FROM caldav_data + JOIN calendar_item AS ci USING(dav_name) +WHERE caldav_data.dav_name = '/user1/events/hand-crafted-vtodo-1.ics'; +ENDQUERY diff --git a/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-3.result b/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-3.result new file mode 100644 index 00000000..cc443717 --- /dev/null +++ b/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-3.result @@ -0,0 +1,48 @@ +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: "3f89f2173cd61aa277012407cf1f3d8e" +Content-Length: 0 +Content-Type: text/plain; charset="utf-8" + + + CalDAV Data: >BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19930901T130000Z-123407@host.com +DTSTAMP:19930901T130000Z +DUE:19930516T045959Z +SUMMARY:Status is set to COMPLETED, empty URL, CLASS set, from PUT +CLASS:PUBLIC +CATEGORIES:FAMILY,FINANCE +STATUS:COMPLETED +URL: +COMPLETED:19950101T000000Z +PRIORITY:1 +END:VTODO +END:VCALENDAR +< + caldav_type: >VTODO< + class: >PUBLIC< + dav_etag: >3f89f2173cd61aa277012407cf1f3d8e< + description: >NULL< + dtend: >NULL< + dtend_orig: >NULL< + dtstamp: >1993-09-01 13:00:00< + dtstart: >1993-05-16 16:59:59+12< + dtstart_orig: >NULL< + due: >1993-05-16 16:59:59+12< + location: >NULL< + logged_user: >10< + percent_complete: >NULL< + priority: >1< + rrule: >NULL< + status: >COMPLETED< + summary: >Status is set to COMPLETED, empty URL, CLASS set, from PUT< + transp: >NULL< + uid: >19930901T130000Z-123407@host.com< + url: >< + user_no: >10< + diff --git a/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-3.test b/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-3.test new file mode 100644 index 00000000..4350448d --- /dev/null +++ b/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-3.test @@ -0,0 +1,41 @@ +# +# PUT a todo into the database +# +TYPE=PUT +URL=http://regression.host/caldav.php/user1/events/hand-crafted-vtodo-2.ics +HEADER=User-Agent: DAViCal Testing/1.12.x +HEADER=Content-Type: text/calendar; charset=utf-8 +AUTH=user1:user1 + +HEAD + + +BEGINDATA +BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19930901T130000Z-123407@host.com +DTSTAMP:19930901T130000Z +DUE:19930516T045959Z +SUMMARY:Status is set to COMPLETED, empty URL, CLASS set, from PUT +CLASS:PUBLIC +CATEGORIES:FAMILY,FINANCE +STATUS:COMPLETED +URL: +COMPLETED:19950101T000000Z +PRIORITY:1 +END:VTODO +END:VCALENDAR +ENDDATA + + +QUERY +SELECT caldav_data.user_no, caldav_data.dav_etag, caldav_type, logged_user, + uid, dtstamp, dtstart, dtstart_orig, dtend, dtend_orig, due, summary, + location, description, priority, class, transp, rrule, url, + percent_complete, status, caldav_data AS " CalDAV Data" +FROM caldav_data + JOIN calendar_item AS ci USING(dav_name) +WHERE caldav_data.dav_name = '/user1/events/hand-crafted-vtodo-2.ics'; +ENDQUERY diff --git a/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-4.result b/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-4.result new file mode 100644 index 00000000..ad7b65ab --- /dev/null +++ b/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-4.result @@ -0,0 +1,47 @@ +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: "782dee4f8d7cfdac111d80ce74530419" +Content-Length: 0 +Content-Type: text/plain; charset="utf-8" + + + CalDAV Data: >BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19930901T130000Z-123408@host.com +DTSTAMP:19930901T130000Z +DTSTART:19930415T133000Z +DTEND:19930416T133000Z +SUMMARY:Status is IN-PROCESS, URL is set, CLASS isn't set, from PUT +STATUS:IN-PROCESS +URL:https://www.davical.org +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR +< + caldav_type: >VTODO< + class: >NULL< + dav_etag: >782dee4f8d7cfdac111d80ce74530419< + description: >NULL< + dtend: >1993-04-17 01:30:00+12< + dtend_orig: >1993-04-17 01:30:00+12< + dtstamp: >1993-09-01 13:00:00< + dtstart: >1993-04-16 01:30:00+12< + dtstart_orig: >1993-04-16 01:30:00+12< + due: >NULL< + location: >NULL< + logged_user: >10< + percent_complete: >NULL< + priority: >1< + rrule: >NULL< + status: >IN-PROCESS< + summary: >Status is IN-PROCESS, URL is set, CLASS isn't set, from PUT< + transp: >NULL< + uid: >19930901T130000Z-123408@host.com< + url: >https://www.davical.org< + user_no: >10< + diff --git a/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-4.test b/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-4.test new file mode 100644 index 00000000..10f85a29 --- /dev/null +++ b/testing/tests/regression-suite/2500-is-defined-Setup-PUT-resources-4.test @@ -0,0 +1,40 @@ +# +# PUT a todo into the database +# +TYPE=PUT +URL=http://regression.host/caldav.php/user1/events/hand-crafted-vtodo-3.ics +HEADER=User-Agent: DAViCal Testing/1.12.x +HEADER=Content-Type: text/calendar; charset=utf-8 +AUTH=user1:user1 + +HEAD + + +BEGINDATA +BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19930901T130000Z-123408@host.com +DTSTAMP:19930901T130000Z +DTSTART:19930415T133000Z +DTEND:19930416T133000Z +SUMMARY:Status is IN-PROCESS, URL is set, CLASS isn't set, from PUT +STATUS:IN-PROCESS +URL:https://www.davical.org +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR +ENDDATA + + +QUERY +SELECT caldav_data.user_no, caldav_data.dav_etag, caldav_type, logged_user, + uid, dtstamp, dtstart, dtstart_orig, dtend, dtend_orig, due, summary, + location, description, priority, class, transp, rrule, url, + percent_complete, status, caldav_data AS " CalDAV Data" +FROM caldav_data + JOIN calendar_item AS ci USING(dav_name) +WHERE caldav_data.dav_name = '/user1/events/hand-crafted-vtodo-3.ics'; +ENDQUERY diff --git a/testing/tests/regression-suite/2501-is-defined-REPORT-is-not-defined.result b/testing/tests/regression-suite/2501-is-defined-REPORT-is-not-defined.result index fade010d..af6b68b6 100644 --- a/testing/tests/regression-suite/2501-is-defined-REPORT-is-not-defined.result +++ b/testing/tests/regression-suite/2501-is-defined-REPORT-is-not-defined.result @@ -2,8 +2,8 @@ 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: "59f93496e3ef79135478f26203487b2c" -Content-Length: 683 +ETag: "3c108dfa61c05aef6748e4695e59b374" +Content-Length: 1249 Content-Type: text/xml; charset="utf-8" @@ -21,12 +21,35 @@ UID:19970901T130000Z-123405@host.com DTSTAMP:19970901T130000Z DTSTART:19970415T133000Z DUE:19970516T045959Z -SUMMARY:Status is not set +SUMMARY:Status is not set, CLASS set, from import CLASS:CONFIDENTIAL CATEGORIES:FAMILY,FINANCE PRIORITY:1 END:VTODO END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/hand-crafted-vtodo-1.ics + + + BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19980901T130000Z-123405@host.com +DTSTAMP:19980901T130000Z +DTSTART:19980415T133000Z +DUE:19980516T045959Z +SUMMARY:Status is not set, CLASS set, from PUT +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR HTTP/1.1 200 OK diff --git a/testing/tests/regression-suite/2502-is-defined-REPORT-is-defined-STATUS.result b/testing/tests/regression-suite/2502-is-defined-REPORT-is-defined-STATUS.result index d8071ab8..89977caa 100644 --- a/testing/tests/regression-suite/2502-is-defined-REPORT-is-defined-STATUS.result +++ b/testing/tests/regression-suite/2502-is-defined-REPORT-is-defined-STATUS.result @@ -2,8 +2,8 @@ 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: "e13eac7fed1103177aa17ad7379ea098" -Content-Length: 1333 +ETag: "a96e0f18e10c1fea687382f6923e6928" +Content-Length: 2555 Content-Type: text/xml; charset="utf-8" @@ -20,7 +20,7 @@ BEGIN:VTODO UID:19920901T130000Z-123407@host.com DTSTAMP:19920901T130000Z DUE:19920516T045959Z -SUMMARY:Status is set to COMPLETED, empty URL, CLASS set +SUMMARY:Status is set to COMPLETED, empty URL, CLASS set, from import CLASS:PUBLIC CATEGORIES:FAMILY,FINANCE STATUS:COMPLETED @@ -46,13 +46,63 @@ BEGIN:VTODO UID:19920901T130000Z-123408@host.com DTSTAMP:19920901T130000Z DTSTART:19920415T133000Z -SUMMARY:Status is IN-PROCESS, URL is set, CLASS isn't set +DTEND:19920416T133000Z +SUMMARY:Status is IN-PROCESS, URL is set, CLASS isn't set, from import STATUS:IN-PROCESS URL:https://www.davical.org CATEGORIES:FAMILY,FINANCE PRIORITY:1 END:VTODO END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/hand-crafted-vtodo-2.ics + + + BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19930901T130000Z-123407@host.com +DTSTAMP:19930901T130000Z +DUE:19930516T045959Z +SUMMARY:Status is set to COMPLETED, empty URL, CLASS set, from PUT +CLASS:PUBLIC +CATEGORIES:FAMILY,FINANCE +STATUS:COMPLETED +URL: +COMPLETED:19950101T000000Z +PRIORITY:1 +END:VTODO +END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/hand-crafted-vtodo-3.ics + + + BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19930901T130000Z-123408@host.com +DTSTAMP:19930901T130000Z +DTSTART:19930415T133000Z +DTEND:19930416T133000Z +SUMMARY:Status is IN-PROCESS, URL is set, CLASS isn't set, from PUT +STATUS:IN-PROCESS +URL:https://www.davical.org +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR HTTP/1.1 200 OK diff --git a/testing/tests/regression-suite/2503-is-defined-REPORT-is-defined-URL.result b/testing/tests/regression-suite/2503-is-defined-REPORT-is-defined-URL.result index e15e5d4f..d91b7c8c 100644 --- a/testing/tests/regression-suite/2503-is-defined-REPORT-is-defined-URL.result +++ b/testing/tests/regression-suite/2503-is-defined-REPORT-is-defined-URL.result @@ -2,8 +2,8 @@ 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: "b9f1d001b8dd22ce62bf8e98c0bbca20" -Content-Length: 721 +ETag: "2d3006a2bd83544b013f68196a3fc5d0" +Content-Length: 1350 Content-Type: text/xml; charset="utf-8" @@ -20,13 +20,38 @@ BEGIN:VTODO UID:19920901T130000Z-123408@host.com DTSTAMP:19920901T130000Z DTSTART:19920415T133000Z -SUMMARY:Status is IN-PROCESS, URL is set, CLASS isn't set +DTEND:19920416T133000Z +SUMMARY:Status is IN-PROCESS, URL is set, CLASS isn't set, from import STATUS:IN-PROCESS URL:https://www.davical.org CATEGORIES:FAMILY,FINANCE PRIORITY:1 END:VTODO END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/hand-crafted-vtodo-3.ics + + + BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19930901T130000Z-123408@host.com +DTSTAMP:19930901T130000Z +DTSTART:19930415T133000Z +DTEND:19930416T133000Z +SUMMARY:Status is IN-PROCESS, URL is set, CLASS isn't set, from PUT +STATUS:IN-PROCESS +URL:https://www.davical.org +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR HTTP/1.1 200 OK diff --git a/testing/tests/regression-suite/2504-is-defined-REPORT-is-not-defined-URL.result b/testing/tests/regression-suite/2504-is-defined-REPORT-is-not-defined-URL.result index 4915d675..7c52d1b6 100644 --- a/testing/tests/regression-suite/2504-is-defined-REPORT-is-not-defined-URL.result +++ b/testing/tests/regression-suite/2504-is-defined-REPORT-is-not-defined-URL.result @@ -2,8 +2,8 @@ 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: "50cac5fed58d0f6d00abd3453b758f25" -Content-Length: 1295 +ETag: "7cb8d3652fc88cbdce202a4028116fa2" +Content-Length: 2454 Content-Type: text/xml; charset="utf-8" @@ -21,7 +21,7 @@ UID:19970901T130000Z-123405@host.com DTSTAMP:19970901T130000Z DTSTART:19970415T133000Z DUE:19970516T045959Z -SUMMARY:Status is not set +SUMMARY:Status is not set, CLASS set, from import CLASS:CONFIDENTIAL CATEGORIES:FAMILY,FINANCE PRIORITY:1 @@ -44,7 +44,7 @@ BEGIN:VTODO UID:19920901T130000Z-123407@host.com DTSTAMP:19920901T130000Z DUE:19920516T045959Z -SUMMARY:Status is set to COMPLETED, empty URL, CLASS set +SUMMARY:Status is set to COMPLETED, empty URL, CLASS set, from import CLASS:PUBLIC CATEGORIES:FAMILY,FINANCE STATUS:COMPLETED @@ -53,6 +53,54 @@ COMPLETED:19940101T000000Z PRIORITY:1 END:VTODO END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/hand-crafted-vtodo-1.ics + + + BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19980901T130000Z-123405@host.com +DTSTAMP:19980901T130000Z +DTSTART:19980415T133000Z +DUE:19980516T045959Z +SUMMARY:Status is not set, CLASS set, from PUT +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/hand-crafted-vtodo-2.ics + + + BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19930901T130000Z-123407@host.com +DTSTAMP:19930901T130000Z +DUE:19930516T045959Z +SUMMARY:Status is set to COMPLETED, empty URL, CLASS set, from PUT +CLASS:PUBLIC +CATEGORIES:FAMILY,FINANCE +STATUS:COMPLETED +URL: +COMPLETED:19950101T000000Z +PRIORITY:1 +END:VTODO +END:VCALENDAR HTTP/1.1 200 OK diff --git a/testing/tests/regression-suite/2505-is-defined-REPORT-is-defined-DUE.result b/testing/tests/regression-suite/2505-is-defined-REPORT-is-defined-DUE.result index 4915d675..7c52d1b6 100644 --- a/testing/tests/regression-suite/2505-is-defined-REPORT-is-defined-DUE.result +++ b/testing/tests/regression-suite/2505-is-defined-REPORT-is-defined-DUE.result @@ -2,8 +2,8 @@ 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: "50cac5fed58d0f6d00abd3453b758f25" -Content-Length: 1295 +ETag: "7cb8d3652fc88cbdce202a4028116fa2" +Content-Length: 2454 Content-Type: text/xml; charset="utf-8" @@ -21,7 +21,7 @@ UID:19970901T130000Z-123405@host.com DTSTAMP:19970901T130000Z DTSTART:19970415T133000Z DUE:19970516T045959Z -SUMMARY:Status is not set +SUMMARY:Status is not set, CLASS set, from import CLASS:CONFIDENTIAL CATEGORIES:FAMILY,FINANCE PRIORITY:1 @@ -44,7 +44,7 @@ BEGIN:VTODO UID:19920901T130000Z-123407@host.com DTSTAMP:19920901T130000Z DUE:19920516T045959Z -SUMMARY:Status is set to COMPLETED, empty URL, CLASS set +SUMMARY:Status is set to COMPLETED, empty URL, CLASS set, from import CLASS:PUBLIC CATEGORIES:FAMILY,FINANCE STATUS:COMPLETED @@ -53,6 +53,54 @@ COMPLETED:19940101T000000Z PRIORITY:1 END:VTODO END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/hand-crafted-vtodo-1.ics + + + BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19980901T130000Z-123405@host.com +DTSTAMP:19980901T130000Z +DTSTART:19980415T133000Z +DUE:19980516T045959Z +SUMMARY:Status is not set, CLASS set, from PUT +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/hand-crafted-vtodo-2.ics + + + BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19930901T130000Z-123407@host.com +DTSTAMP:19930901T130000Z +DUE:19930516T045959Z +SUMMARY:Status is set to COMPLETED, empty URL, CLASS set, from PUT +CLASS:PUBLIC +CATEGORIES:FAMILY,FINANCE +STATUS:COMPLETED +URL: +COMPLETED:19950101T000000Z +PRIORITY:1 +END:VTODO +END:VCALENDAR HTTP/1.1 200 OK diff --git a/testing/tests/regression-suite/2506-is-defined-REPORT-is-not-defined-DUE.result b/testing/tests/regression-suite/2506-is-defined-REPORT-is-not-defined-DUE.result index e15e5d4f..d91b7c8c 100644 --- a/testing/tests/regression-suite/2506-is-defined-REPORT-is-not-defined-DUE.result +++ b/testing/tests/regression-suite/2506-is-defined-REPORT-is-not-defined-DUE.result @@ -2,8 +2,8 @@ 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: "b9f1d001b8dd22ce62bf8e98c0bbca20" -Content-Length: 721 +ETag: "2d3006a2bd83544b013f68196a3fc5d0" +Content-Length: 1350 Content-Type: text/xml; charset="utf-8" @@ -20,13 +20,38 @@ BEGIN:VTODO UID:19920901T130000Z-123408@host.com DTSTAMP:19920901T130000Z DTSTART:19920415T133000Z -SUMMARY:Status is IN-PROCESS, URL is set, CLASS isn't set +DTEND:19920416T133000Z +SUMMARY:Status is IN-PROCESS, URL is set, CLASS isn't set, from import STATUS:IN-PROCESS URL:https://www.davical.org CATEGORIES:FAMILY,FINANCE PRIORITY:1 END:VTODO END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/hand-crafted-vtodo-3.ics + + + BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19930901T130000Z-123408@host.com +DTSTAMP:19930901T130000Z +DTSTART:19930415T133000Z +DTEND:19930416T133000Z +SUMMARY:Status is IN-PROCESS, URL is set, CLASS isn't set, from PUT +STATUS:IN-PROCESS +URL:https://www.davical.org +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR HTTP/1.1 200 OK diff --git a/testing/tests/regression-suite/2507-is-defined-REPORT-is-defined-CLASS.result b/testing/tests/regression-suite/2507-is-defined-REPORT-is-defined-CLASS.result index 4915d675..7c52d1b6 100644 --- a/testing/tests/regression-suite/2507-is-defined-REPORT-is-defined-CLASS.result +++ b/testing/tests/regression-suite/2507-is-defined-REPORT-is-defined-CLASS.result @@ -2,8 +2,8 @@ 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: "50cac5fed58d0f6d00abd3453b758f25" -Content-Length: 1295 +ETag: "7cb8d3652fc88cbdce202a4028116fa2" +Content-Length: 2454 Content-Type: text/xml; charset="utf-8" @@ -21,7 +21,7 @@ UID:19970901T130000Z-123405@host.com DTSTAMP:19970901T130000Z DTSTART:19970415T133000Z DUE:19970516T045959Z -SUMMARY:Status is not set +SUMMARY:Status is not set, CLASS set, from import CLASS:CONFIDENTIAL CATEGORIES:FAMILY,FINANCE PRIORITY:1 @@ -44,7 +44,7 @@ BEGIN:VTODO UID:19920901T130000Z-123407@host.com DTSTAMP:19920901T130000Z DUE:19920516T045959Z -SUMMARY:Status is set to COMPLETED, empty URL, CLASS set +SUMMARY:Status is set to COMPLETED, empty URL, CLASS set, from import CLASS:PUBLIC CATEGORIES:FAMILY,FINANCE STATUS:COMPLETED @@ -53,6 +53,54 @@ COMPLETED:19940101T000000Z PRIORITY:1 END:VTODO END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/hand-crafted-vtodo-1.ics + + + BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19980901T130000Z-123405@host.com +DTSTAMP:19980901T130000Z +DTSTART:19980415T133000Z +DUE:19980516T045959Z +SUMMARY:Status is not set, CLASS set, from PUT +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/hand-crafted-vtodo-2.ics + + + BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19930901T130000Z-123407@host.com +DTSTAMP:19930901T130000Z +DUE:19930516T045959Z +SUMMARY:Status is set to COMPLETED, empty URL, CLASS set, from PUT +CLASS:PUBLIC +CATEGORIES:FAMILY,FINANCE +STATUS:COMPLETED +URL: +COMPLETED:19950101T000000Z +PRIORITY:1 +END:VTODO +END:VCALENDAR HTTP/1.1 200 OK diff --git a/testing/tests/regression-suite/2508-is-defined-REPORT-is-not-defined-CLASS.result b/testing/tests/regression-suite/2508-is-defined-REPORT-is-not-defined-CLASS.result index e15e5d4f..d91b7c8c 100644 --- a/testing/tests/regression-suite/2508-is-defined-REPORT-is-not-defined-CLASS.result +++ b/testing/tests/regression-suite/2508-is-defined-REPORT-is-not-defined-CLASS.result @@ -2,8 +2,8 @@ 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: "b9f1d001b8dd22ce62bf8e98c0bbca20" -Content-Length: 721 +ETag: "2d3006a2bd83544b013f68196a3fc5d0" +Content-Length: 1350 Content-Type: text/xml; charset="utf-8" @@ -20,13 +20,38 @@ BEGIN:VTODO UID:19920901T130000Z-123408@host.com DTSTAMP:19920901T130000Z DTSTART:19920415T133000Z -SUMMARY:Status is IN-PROCESS, URL is set, CLASS isn't set +DTEND:19920416T133000Z +SUMMARY:Status is IN-PROCESS, URL is set, CLASS isn't set, from import STATUS:IN-PROCESS URL:https://www.davical.org CATEGORIES:FAMILY,FINANCE PRIORITY:1 END:VTODO END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/hand-crafted-vtodo-3.ics + + + BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19930901T130000Z-123408@host.com +DTSTAMP:19930901T130000Z +DTSTART:19930415T133000Z +DTEND:19930416T133000Z +SUMMARY:Status is IN-PROCESS, URL is set, CLASS isn't set, from PUT +STATUS:IN-PROCESS +URL:https://www.davical.org +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR HTTP/1.1 200 OK diff --git a/testing/tests/regression-suite/2509-is-defined-REPORT-is-defined-DTSTART.result b/testing/tests/regression-suite/2509-is-defined-REPORT-is-defined-DTSTART.result new file mode 100644 index 00000000..8cf42989 --- /dev/null +++ b/testing/tests/regression-suite/2509-is-defined-REPORT-is-defined-DTSTART.result @@ -0,0 +1,107 @@ +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: "6d71edd0742cade0b6dd7cf7dbc2accb" +Content-Length: 2477 +Content-Type: text/xml; charset="utf-8" + + + + + /caldav.php/user1/events/19970901T130000Z-123405host.com.ics + + + BEGIN:VCALENDAR +PRODID:-//davical.org//NONSGML AWL Calendar//EN +VERSION:2.0 +CALSCALE:GREGORIAN +BEGIN:VTODO +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T130000Z +DTSTART:19970415T133000Z +DUE:19970516T045959Z +SUMMARY:Status is not set, CLASS set, from import +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/19920901T130000Z-123408host.com.ics + + + BEGIN:VCALENDAR +PRODID:-//davical.org//NONSGML AWL Calendar//EN +VERSION:2.0 +CALSCALE:GREGORIAN +BEGIN:VTODO +UID:19920901T130000Z-123408@host.com +DTSTAMP:19920901T130000Z +DTSTART:19920415T133000Z +DTEND:19920416T133000Z +SUMMARY:Status is IN-PROCESS, URL is set, CLASS isn't set, from import +STATUS:IN-PROCESS +URL:https://www.davical.org +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/hand-crafted-vtodo-1.ics + + + BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19980901T130000Z-123405@host.com +DTSTAMP:19980901T130000Z +DTSTART:19980415T133000Z +DUE:19980516T045959Z +SUMMARY:Status is not set, CLASS set, from PUT +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/hand-crafted-vtodo-3.ics + + + BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19930901T130000Z-123408@host.com +DTSTAMP:19930901T130000Z +DTSTART:19930415T133000Z +DTEND:19930416T133000Z +SUMMARY:Status is IN-PROCESS, URL is set, CLASS isn't set, from PUT +STATUS:IN-PROCESS +URL:https://www.davical.org +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/regression-suite/2509-is-defined-REPORT-is-defined-DTSTART.test b/testing/tests/regression-suite/2509-is-defined-REPORT-is-defined-DTSTART.test new file mode 100644 index 00000000..1af71b28 --- /dev/null +++ b/testing/tests/regression-suite/2509-is-defined-REPORT-is-defined-DTSTART.test @@ -0,0 +1,33 @@ +# +# is-defined REPORT +# +# Regression test for https://gitlab.com/davical-project/davical/-/issues/279 +# +# Check that DTSTART is defined. +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user1/events/ +HEADER=Content-Type: text/xml; charset="UTF-8" +HEADER=Depth: 0 +HEAD + + +BEGINDATA + + + + + + + + + + + + + + + +ENDDATA + + diff --git a/testing/tests/regression-suite/2510-is-defined-REPORT-is-not-defined-DTSTART.result b/testing/tests/regression-suite/2510-is-defined-REPORT-is-not-defined-DTSTART.result new file mode 100644 index 00000000..7d588383 --- /dev/null +++ b/testing/tests/regression-suite/2510-is-defined-REPORT-is-not-defined-DTSTART.result @@ -0,0 +1,62 @@ +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: "ed5bce12bc74602dd4a4d8eaeab6d868" +Content-Length: 1327 +Content-Type: text/xml; charset="utf-8" + + + + + /caldav.php/user1/events/19920901T130000Z-123407host.com.ics + + + BEGIN:VCALENDAR +PRODID:-//davical.org//NONSGML AWL Calendar//EN +VERSION:2.0 +CALSCALE:GREGORIAN +BEGIN:VTODO +UID:19920901T130000Z-123407@host.com +DTSTAMP:19920901T130000Z +DUE:19920516T045959Z +SUMMARY:Status is set to COMPLETED, empty URL, CLASS set, from import +CLASS:PUBLIC +CATEGORIES:FAMILY,FINANCE +STATUS:COMPLETED +URL: +COMPLETED:19940101T000000Z +PRIORITY:1 +END:VTODO +END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/hand-crafted-vtodo-2.ics + + + BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19930901T130000Z-123407@host.com +DTSTAMP:19930901T130000Z +DUE:19930516T045959Z +SUMMARY:Status is set to COMPLETED, empty URL, CLASS set, from PUT +CLASS:PUBLIC +CATEGORIES:FAMILY,FINANCE +STATUS:COMPLETED +URL: +COMPLETED:19950101T000000Z +PRIORITY:1 +END:VTODO +END:VCALENDAR + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/regression-suite/2510-is-defined-REPORT-is-not-defined-DTSTART.test b/testing/tests/regression-suite/2510-is-defined-REPORT-is-not-defined-DTSTART.test new file mode 100644 index 00000000..ec37623c --- /dev/null +++ b/testing/tests/regression-suite/2510-is-defined-REPORT-is-not-defined-DTSTART.test @@ -0,0 +1,33 @@ +# +# is-not-defined REPORT +# +# Regression test for https://gitlab.com/davical-project/davical/-/issues/279 +# +# Check that DTSTART is not defined. +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user1/events/ +HEADER=Content-Type: text/xml; charset="UTF-8" +HEADER=Depth: 0 +HEAD + + +BEGINDATA + + + + + + + + + + + + + + + +ENDDATA + + diff --git a/testing/tests/regression-suite/2511-is-defined-REPORT-is-defined-DTEND.result b/testing/tests/regression-suite/2511-is-defined-REPORT-is-defined-DTEND.result new file mode 100644 index 00000000..d91b7c8c --- /dev/null +++ b/testing/tests/regression-suite/2511-is-defined-REPORT-is-defined-DTEND.result @@ -0,0 +1,60 @@ +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: "2d3006a2bd83544b013f68196a3fc5d0" +Content-Length: 1350 +Content-Type: text/xml; charset="utf-8" + + + + + /caldav.php/user1/events/19920901T130000Z-123408host.com.ics + + + BEGIN:VCALENDAR +PRODID:-//davical.org//NONSGML AWL Calendar//EN +VERSION:2.0 +CALSCALE:GREGORIAN +BEGIN:VTODO +UID:19920901T130000Z-123408@host.com +DTSTAMP:19920901T130000Z +DTSTART:19920415T133000Z +DTEND:19920416T133000Z +SUMMARY:Status is IN-PROCESS, URL is set, CLASS isn't set, from import +STATUS:IN-PROCESS +URL:https://www.davical.org +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/hand-crafted-vtodo-3.ics + + + BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19930901T130000Z-123408@host.com +DTSTAMP:19930901T130000Z +DTSTART:19930415T133000Z +DTEND:19930416T133000Z +SUMMARY:Status is IN-PROCESS, URL is set, CLASS isn't set, from PUT +STATUS:IN-PROCESS +URL:https://www.davical.org +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/regression-suite/2511-is-defined-REPORT-is-defined-DTEND.test b/testing/tests/regression-suite/2511-is-defined-REPORT-is-defined-DTEND.test new file mode 100644 index 00000000..69e89c80 --- /dev/null +++ b/testing/tests/regression-suite/2511-is-defined-REPORT-is-defined-DTEND.test @@ -0,0 +1,33 @@ +# +# is-defined REPORT +# +# Regression test for https://gitlab.com/davical-project/davical/-/issues/279 +# +# Check that DTEND is defined. +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user1/events/ +HEADER=Content-Type: text/xml; charset="UTF-8" +HEADER=Depth: 0 +HEAD + + +BEGINDATA + + + + + + + + + + + + + + + +ENDDATA + + diff --git a/testing/tests/regression-suite/2512-is-defined-REPORT-is-not-defined-DTEND.result b/testing/tests/regression-suite/2512-is-defined-REPORT-is-not-defined-DTEND.result new file mode 100644 index 00000000..7c52d1b6 --- /dev/null +++ b/testing/tests/regression-suite/2512-is-defined-REPORT-is-not-defined-DTEND.result @@ -0,0 +1,109 @@ +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: "7cb8d3652fc88cbdce202a4028116fa2" +Content-Length: 2454 +Content-Type: text/xml; charset="utf-8" + + + + + /caldav.php/user1/events/19970901T130000Z-123405host.com.ics + + + BEGIN:VCALENDAR +PRODID:-//davical.org//NONSGML AWL Calendar//EN +VERSION:2.0 +CALSCALE:GREGORIAN +BEGIN:VTODO +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T130000Z +DTSTART:19970415T133000Z +DUE:19970516T045959Z +SUMMARY:Status is not set, CLASS set, from import +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/19920901T130000Z-123407host.com.ics + + + BEGIN:VCALENDAR +PRODID:-//davical.org//NONSGML AWL Calendar//EN +VERSION:2.0 +CALSCALE:GREGORIAN +BEGIN:VTODO +UID:19920901T130000Z-123407@host.com +DTSTAMP:19920901T130000Z +DUE:19920516T045959Z +SUMMARY:Status is set to COMPLETED, empty URL, CLASS set, from import +CLASS:PUBLIC +CATEGORIES:FAMILY,FINANCE +STATUS:COMPLETED +URL: +COMPLETED:19940101T000000Z +PRIORITY:1 +END:VTODO +END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/hand-crafted-vtodo-1.ics + + + BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19980901T130000Z-123405@host.com +DTSTAMP:19980901T130000Z +DTSTART:19980415T133000Z +DUE:19980516T045959Z +SUMMARY:Status is not set, CLASS set, from PUT +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +END:VTODO +END:VCALENDAR + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/events/hand-crafted-vtodo-2.ics + + + BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VTODO +UID:19930901T130000Z-123407@host.com +DTSTAMP:19930901T130000Z +DUE:19930516T045959Z +SUMMARY:Status is set to COMPLETED, empty URL, CLASS set, from PUT +CLASS:PUBLIC +CATEGORIES:FAMILY,FINANCE +STATUS:COMPLETED +URL: +COMPLETED:19950101T000000Z +PRIORITY:1 +END:VTODO +END:VCALENDAR + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/regression-suite/2512-is-defined-REPORT-is-not-defined-DTEND.test b/testing/tests/regression-suite/2512-is-defined-REPORT-is-not-defined-DTEND.test new file mode 100644 index 00000000..f7fd40a5 --- /dev/null +++ b/testing/tests/regression-suite/2512-is-defined-REPORT-is-not-defined-DTEND.test @@ -0,0 +1,33 @@ +# +# is-not-defined REPORT +# +# Regression test for https://gitlab.com/davical-project/davical/-/issues/279 +# +# Check that DTEND is not defined. +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user1/events/ +HEADER=Content-Type: text/xml; charset="UTF-8" +HEADER=Depth: 0 +HEAD + + +BEGINDATA + + + + + + + + + + + + + + + +ENDDATA + + diff --git a/testing/tests/regression-suite/2513-is-defined-REPORT-is-not-defined-DTEND-VEVENT.result b/testing/tests/regression-suite/2513-is-defined-REPORT-is-not-defined-DTEND-VEVENT.result new file mode 100644 index 00000000..96165fb0 --- /dev/null +++ b/testing/tests/regression-suite/2513-is-defined-REPORT-is-not-defined-DTEND-VEVENT.result @@ -0,0 +1,34 @@ +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: "d7f94e424da8a0734990704f42b308d4" +Content-Length: 679 +Content-Type: text/xml; charset="utf-8" + + + + + /caldav.php/user1/events/hand-crafted-vevent.ics + + + BEGIN:VCALENDAR +PRODID:-//Puck Handcrafted VCAL//NONSGML Sunbird//EN +VERSION:2.0 +BEGIN:VEVENT +SUMMARY:No DTEND, from PUT +DTSTART;VALUE=DATE:19971102 +DTSTAMP:19970901T130000Z +UID:19970901T130000Z-123403@example.com +RRULE:FREQ=YEARLY +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +CLASS:CONFIDENTIAL +TRANSP:TRANSPARENT +END:VEVENT +END:VCALENDAR + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/regression-suite/2513-is-defined-REPORT-is-not-defined-DTEND-VEVENT.test b/testing/tests/regression-suite/2513-is-defined-REPORT-is-not-defined-DTEND-VEVENT.test new file mode 100644 index 00000000..14e0dc5e --- /dev/null +++ b/testing/tests/regression-suite/2513-is-defined-REPORT-is-not-defined-DTEND-VEVENT.test @@ -0,0 +1,33 @@ +# +# is-not-defined REPORT +# +# Regression test for https://gitlab.com/davical-project/davical/-/issues/279 +# +# Check that DTEND is not defined for a VEVENT. +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user1/events/ +HEADER=Content-Type: text/xml; charset="UTF-8" +HEADER=Depth: 0 +HEAD + + +BEGINDATA + + + + + + + + + + + + + + + +ENDDATA + + diff --git a/testing/tests/regression-suite/Really-Upgrade-Database.result b/testing/tests/regression-suite/Really-Upgrade-Database.result index 9bdec045..1a6af925 100644 --- a/testing/tests/regression-suite/Really-Upgrade-Database.result +++ b/testing/tests/regression-suite/Really-Upgrade-Database.result @@ -1,4 +1,4 @@ -The database is version XX currently at revision 1.3.4. +The database is version XX currently at revision 1.3.5. No patches were applied. Supported locales updated. Updated view: dav_principal.sql applied. diff --git a/testing/tests/scheduling/Really-Upgrade-Database.result b/testing/tests/scheduling/Really-Upgrade-Database.result index 9bdec045..1a6af925 100644 --- a/testing/tests/scheduling/Really-Upgrade-Database.result +++ b/testing/tests/scheduling/Really-Upgrade-Database.result @@ -1,4 +1,4 @@ -The database is version XX currently at revision 1.3.4. +The database is version XX currently at revision 1.3.5. No patches were applied. Supported locales updated. Updated view: dav_principal.sql applied. diff --git a/testing/tests/timezone/Really-Upgrade-Database.result b/testing/tests/timezone/Really-Upgrade-Database.result index 299acd5c..1a6af925 100644 --- a/testing/tests/timezone/Really-Upgrade-Database.result +++ b/testing/tests/timezone/Really-Upgrade-Database.result @@ -1,4 +1,4 @@ -The database is version XX currently at revision 1.3.3. +The database is version XX currently at revision 1.3.5. No patches were applied. Supported locales updated. Updated view: dav_principal.sql applied.