Test more dates in the past and future

There is now a Perl script that'll generate tests and result files to a
wide variety of dates. From this we currently don't support < 1 AD or >
9999 AD.

run_regressions is modified to remove the UNTIL option as I want to use a
character after the test number to allow "subtests".
This commit is contained in:
Andrew Ruthven 2024-03-03 21:06:51 +13:00
parent 9c10ef5eb2
commit 0c9e0d6a87
57 changed files with 1938 additions and 61 deletions

View File

@ -45,7 +45,6 @@ fi
SUITE=${1:-"regression-suite"}
ACCEPT_ALL=${2:-""}
[ -z "${UNTIL}" ] && UNTIL=99999
[ -z "${SUITE}" ] && SUITE="regression-suite"
# psql ${PSQLOPTS} -l
@ -250,9 +249,6 @@ run_regression_suite() {
TEST="`basename ${T} .test`"
TESTNUM="`echo ${TEST} | cut -f1 -d'-'`"
TESTNUM="${TEST/-*}"
if [ "${TESTNUM}" -gt "${UNTIL}" ] ; then
break;
fi
RESULT=999
while [ "${RESULT}" -gt 0 ]; do

View File

@ -1,13 +0,0 @@
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART;VALUE=DATE:21110917
DTEND;VALUE=DATE:21110918
SUMMARY:Test date in the far future
TRANSP:TRANSPARENT
UID:2701-Future-Event
END:VEVENT
END:VCALENDAR

View File

@ -1,8 +0,0 @@
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: "576d29bf0ae5b8d45adac8c037254d73"
Content-Length: 0
Content-Type: text/plain; charset="utf-8"

View File

@ -1,12 +0,0 @@
#
# PUT an event that is far in the future.
# Note, in 2111-09-17 we'll need to update this test. Might be up to my
# great grandkids.
#
TYPE=PUT
URL=http://regression.host/caldav.php/user1/home/2701-Future-Event.ics
HEADER=User-Agent: CalDavSynchronizer/4.4
HEADER=Content-Type: text/calendar; charset=utf-8
HEAD
#
DATA=2701-Future-Event.ics

View File

@ -2,7 +2,15 @@ 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: "36fb08aef42b676c00a2926f1a40f820"
Cache-Control: no-cache
Content-Length: 0
Content-Type: text/plain; charset="utf-8"
dav_displayname: >Past and Future dates<
is_addressbook: >0<
is_calendar: >1<
parent_container: >/user1/<
public_events_onl: >0<
user_no: >10<

View File

@ -0,0 +1,33 @@
# Ensure we test various dates past and future.
SCRIPT_DIR=tests/regression-suite
SCRIPT=./2701-generate-date-tests.pl
TYPE=MKCOL
URL=http://regression.host/caldav.php/user1/past-and-future
HEADER=Content-Type: text/xml
HEAD
BEGINDATA
<?xml version="1.0" encoding="UTF-8" ?>
<mkcol xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
<set>
<prop>
<resourcetype>
<collection/>
<C:calendar/>
</resourcetype>
<displayname>Past and Future dates</displayname>
</prop>
</set>
</mkcol>
ENDDATA
QUERY
SELECT user_no, parent_container, dav_displayname,
is_calendar, public_events_only, is_addressbook
FROM collection
WHERE dav_name ~ '/user1/past-and-future';
ENDQUERY

View File

@ -0,0 +1,312 @@
#!/usr/bin/perl -w
# Generate test files for a selection of different dates, in an easily
# extendable and reproducible manner.
#
# When adding result blocks, in vi to append carriage return (aka ^M) use:
# ^v^m
#
# Make all the dates UTC when we create them, otherwise we need to deal with
# the timezone changes in the past. NZ used to be +11:39:04?!
use strict;
use v5.10;
use Template;
use Inline::Files;
die "Run in the same directory as the script"
unless -f '2701-generate-date-tests.pl';
# PostgreSQL allows 4713 BC - 294276 AD for timestamps.
# https://www.postgresql.org/docs/16/datatype-datetime.html
# To create dates prior to 1 AD in PostgreSQL you need to use 1000-01-01 BC,
# not ISO 8601 style which is -1001-01-01 (-1001 because 0 = -1 BC). We also
# need to allow a minus on all ISO date regexes.
#
# Currently DAViCal only support years < 10,000 due to various regexes that
# assume a maximum for 4 digits for the year. Due to some logic that attends
# 720 # days to a year for filtering, the maximum year we realistically
# support is 9997.
my @dates = qw/
00010102 08040229 50000701 18500820 19010101 20000101 30000101 99970820
/;
my $collection = 'past-and-future';
my $user = 'user1';
my @files = (
{
name => '[% num %]a-PUT-Event.test',
handle => 'PUT',
},
{
name => '[% num %]a-PUT-Event.result',
handle => 'PUT_RESULT',
},
{
name => '[% num %]b-REPORT-Event.test',
handle => 'REPORT',
},
{
name => '[% num %]b-REPORT-Event.result',
handle => 'REPORT_RESULT',
},
{
name => '[% num %]c-FREEBUSY-Event.test',
handle => 'FREEBUSY',
},
{
name => '[% num %]c-FREEBUSY-Event.result',
handle => 'FREEBUSY_RESULT',
},
);
my $start_number = 2702;
my $tt = new Template;
# Load all the templates into a hash.
for my $file (@files) {
local $/ = undef;
my $handle = $file->{handle};
$file->{template} = <$handle>;
}
for my $date (sort @dates) {
my $vars = {
user => $user,
date => $date,
num => $start_number++,
duration => 'P1H',
collection => $collection,
};
if ($date =~ /^-?(\d{4}\d{2}\d{2})$/) {
# Just a date
$vars->{'caldav_date'} = ":${date}T000000Z";
$vars->{'timestamp'} = "${date}T000000Z";
$vars->{'range_end'} = "${date}T020000Z";
} else {
# Timestamp
$vars->{'caldav_date'} = ":${date}";
$vars->{'timestamp'} = $date;
}
for my $file (@files) {
# Template the filename to write to.
my $filename;
$tt->process(\$file->{name}, $vars, \$filename)
|| die $tt->error(), "\n";
# Actually write to the file.
$tt->process(\$file->{template}, $vars, $filename)
|| die $tt->error(), "\n";
}
}
__PUT__
#
# PUT an event in [% date %]
#
TYPE=PUT
URL=http://regression.host/caldav.php/[% user %]/[% collection %]/[% num %]-PUT-Event-[% date %].ics
AUTH=[% user %]:[% user %]
HEADER=User-Agent: test-suite/1.0
HEADER=Content-Type: text/calendar; charset=utf-8
HEAD
#
REPLACE=/^ETag: "[0-9a-f]+"/ETag: "a fine looking etag"/
BEGINDATA
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART[% caldav_date %]
DURATION:[% duration %]
SUMMARY:Test date in [% date %]
TRANSP:OPAQUE
UID:[% num %]-PUT-Event-[% date %]
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
ENDDATA
QUERY
SELECT caldav_data.user_no, caldav_type, logged_user,
uid, dtstamp, 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,
calendar_item.last_modified,
caldav_data AS "A1 CalDAV DATA"
FROM caldav_data JOIN calendar_item USING(dav_name) LEFT JOIN timezones ON (tz_id=tzid)
WHERE caldav_data.dav_name ~ '^/[% user %]/[% collection %]/'
AND uid = '[% num %]-PUT-Event-[% date %]'
ENDQUERY
__PUT_RESULT__
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: "a fine looking etag"
Content-Length: 0
Content-Type: text/plain; charset="utf-8"
A1 CalDAV DATA: >BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART[% caldav_date %]
DURATION:[% duration %]
SUMMARY:Test date in [% date %]
TRANSP:OPAQUE
UID:[% num %]-PUT-Event-[% date %]
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
<
caldav_type: >VEVENT<
class: >PUBLIC<
description: >NULL<
dtend: >NULL<
dtstamp: >2024-01-20 03:47:00<
dtstart: >NULL<
due: >NULL<
last_modified: >2024-01-20 03:47:00<
location: >NULL<
logged_user: >10<
percent_complete: >NULL<
priority: >NULL<
rrule: >FREQ=WEEKLY;COUNT=2<
status: >NULL<
summary: >Test date in [% date %]<
transp: >OPAQUE<
tz_id: >NULL<
uid: >[% num %]-PUT-Event-[% date %]<
url: >NULL<
user_no: >10<
__REPORT__
#
# REPORT on event for [% date %], created by previous test.
#
TYPE=REPORT
URL=http://regression.host/caldav.php/[% user %]/[% collection %]/
AUTH=[% user %]:[% user %]
HEADER=Content-Type: text/xml; charset="UTF-8"
HEADER=Depth: 0
HEAD
REPLACE=/^ETag: "[0-9a-f]+"/ETag: "a fine looking etag"/
REPLACE=/^DTSTAMP:\d+T\d+Z/DTSTAMP:xx/
REPLACE=/^Content-Length: \d+/Content-Length: xx/
BEGINDATA
<?xml version='1.0' encoding='utf-8'?>
<C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:prop>
<C:calendar-data/>
</D:prop>
<C:filter>
<C:comp-filter name="VCALENDAR">
<C:comp-filter name="VEVENT">
<C:time-range start="[% timestamp %]" end="[% range_end %]"/>
</C:comp-filter>
</C:comp-filter>
</C:filter>
</C:calendar-query>
ENDDATA
__REPORT_RESULT__
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: "a fine looking etag"
Content-Length: xx
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/[% user %]/[% collection %]/[% num %]-PUT-Event-[% date %].ics</href>
<propstat>
<prop>
<C:calendar-data>BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:xx
DTSTART:[% timestamp %]
DURATION:P1H
SUMMARY:Test date in [% date %]
TRANSP:OPAQUE
UID:[% num %]-PUT-Event-[% date %]
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
</C:calendar-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>
__FREEBUSY__
#
# Free/Busy should show two busy periods one that starts at the timestamp
# and another a week later. I haven't added logic to the script which
# generates this file to work out what those other dates are, so as long
# as we have two busy periods, we'll call that done.
#
TYPE=REPORT
URL=http://regression.host/caldav.php/[% user %]/[% collection %]/
AUTH=[% user %]:[% user %]
HEADER=Content-Type: text/xml; charset="UTF-8"
HEADER=Depth: 0
HEAD
REPLACE=/^Content-Length: [0-9]+/Content-Length: xx/
REPLACE=/^DTSTAMP:\d+T\d+Z/DTSTAMP:xx/
REPLACE=/^DTEND:\d+T\d+Z/DTEND:xx/
REPLACE=,^FREEBUSY:[% timestamp %]/\d+T\d+Z,FREEBUSY:[% timestamp %]/xx,
REPLACE=,^FREEBUSY:(?![% timestamp %])\d+T\d+Z/\d+T\d+Z,FREEBUSY:xx/xx,
BEGINDATA
<?xml version="1.0" encoding="utf-8" ?>
<C:free-busy-query xmlns:C="urn:ietf:params:xml:ns:caldav">
<C:time-range start="[% timestamp %]" />
</C:free-busy-query>
ENDDATA
__FREEBUSY_RESULT__
HTTP/1.1 200 OK
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
Content-Length: xx
Content-Type: text/calendar;charset=UTF-8
BEGIN:VCALENDAR
PRODID:-//davical.org//NONSGML AWL Calendar//EN
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VFREEBUSY
DTSTAMP:xx
DTSTART:[% timestamp %]
DTEND:xx
FREEBUSY:[% timestamp %]/xx
FREEBUSY:xx/xx
END:VFREEBUSY
END:VCALENDAR

View File

@ -1,13 +0,0 @@
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART;VALUE=DATE:05000917
DTEND;VALUE=DATE:05000918
SUMMARY:Test date in the distant future
TRANSP:TRANSPARENT
UID:2702-Past-Event
END:VEVENT
END:VCALENDAR

View File

@ -1,10 +0,0 @@
#
# PUT an event that is far in the past.
#
TYPE=PUT
URL=http://regression.host/caldav.php/user1/home/2702-Past-Event.ics
HEADER=User-Agent: test-suite/1.0
HEADER=Content-Type: text/calendar; charset=utf-8
HEAD
#
DATA=2702-Past-Event.ics

View File

@ -0,0 +1,45 @@
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: "a fine looking etag"
Content-Length: 0
Content-Type: text/plain; charset="utf-8"
A1 CalDAV DATA: >BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART:00010102T000000Z
DURATION:P1H
SUMMARY:Test date in 00010102
TRANSP:OPAQUE
UID:2702-PUT-Event-00010102
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
<
caldav_type: >VEVENT<
class: >PUBLIC<
description: >NULL<
dtend: >NULL<
dtstamp: >2024-01-20 03:47:00<
dtstart: >NULL<
due: >NULL<
last_modified: >2024-01-20 03:47:00<
location: >NULL<
logged_user: >10<
percent_complete: >NULL<
priority: >NULL<
rrule: >FREQ=WEEKLY;COUNT=2<
status: >NULL<
summary: >Test date in 00010102<
transp: >OPAQUE<
tz_id: >NULL<
uid: >2702-PUT-Event-00010102<
url: >NULL<
user_no: >10<

View File

@ -0,0 +1,44 @@
#
# PUT an event in 00010102
#
TYPE=PUT
URL=http://regression.host/caldav.php/user1/past-and-future/2702-PUT-Event-00010102.ics
AUTH=user1:user1
HEADER=User-Agent: test-suite/1.0
HEADER=Content-Type: text/calendar; charset=utf-8
HEAD
#
REPLACE=/^ETag: "[0-9a-f]+"/ETag: "a fine looking etag"/
BEGINDATA
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART:00010102T000000Z
DURATION:P1H
SUMMARY:Test date in 00010102
TRANSP:OPAQUE
UID:2702-PUT-Event-00010102
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
ENDDATA
QUERY
SELECT caldav_data.user_no, caldav_type, logged_user,
uid, dtstamp, 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,
calendar_item.last_modified,
caldav_data AS "A1 CalDAV DATA"
FROM caldav_data JOIN calendar_item USING(dav_name) LEFT JOIN timezones ON (tz_id=tzid)
WHERE caldav_data.dav_name ~ '^/user1/past-and-future/'
AND uid = '2702-PUT-Event-00010102'
ENDQUERY

View File

@ -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: "a fine looking etag"
Content-Length: xx
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/past-and-future/2702-PUT-Event-00010102.ics</href>
<propstat>
<prop>
<C:calendar-data>BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:xx
DTSTART:00010102T000000Z
DURATION:P1H
SUMMARY:Test date in 00010102
TRANSP:OPAQUE
UID:2702-PUT-Event-00010102
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
</C:calendar-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>

View File

@ -0,0 +1,30 @@
#
# REPORT on event for 00010102, created by previous test.
#
TYPE=REPORT
URL=http://regression.host/caldav.php/user1/past-and-future/
AUTH=user1:user1
HEADER=Content-Type: text/xml; charset="UTF-8"
HEADER=Depth: 0
HEAD
REPLACE=/^ETag: "[0-9a-f]+"/ETag: "a fine looking etag"/
REPLACE=/^DTSTAMP:\d+T\d+Z/DTSTAMP:xx/
REPLACE=/^Content-Length: \d+/Content-Length: xx/
BEGINDATA
<?xml version='1.0' encoding='utf-8'?>
<C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:prop>
<C:calendar-data/>
</D:prop>
<C:filter>
<C:comp-filter name="VCALENDAR">
<C:comp-filter name="VEVENT">
<C:time-range start="00010102T000000Z" end="00010102T020000Z"/>
</C:comp-filter>
</C:comp-filter>
</C:filter>
</C:calendar-query>
ENDDATA

View File

@ -0,0 +1,19 @@
HTTP/1.1 200 OK
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
Content-Length: xx
Content-Type: text/calendar;charset=UTF-8
BEGIN:VCALENDAR
PRODID:-//davical.org//NONSGML AWL Calendar//EN
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VFREEBUSY
DTSTAMP:xx
DTSTART:00010102T000000Z
DTEND:xx
FREEBUSY:00010102T000000Z/xx
FREEBUSY:xx/xx
END:VFREEBUSY
END:VCALENDAR

View File

@ -0,0 +1,26 @@
#
# Free/Busy should show two busy periods one that starts at the timestamp
# and another a week later. I haven't added logic to the script which
# generates this file to work out what those other dates are, so as long
# as we have two busy periods, we'll call that done.
#
TYPE=REPORT
URL=http://regression.host/caldav.php/user1/past-and-future/
AUTH=user1:user1
HEADER=Content-Type: text/xml; charset="UTF-8"
HEADER=Depth: 0
HEAD
REPLACE=/^Content-Length: [0-9]+/Content-Length: xx/
REPLACE=/^DTSTAMP:\d+T\d+Z/DTSTAMP:xx/
REPLACE=/^DTEND:\d+T\d+Z/DTEND:xx/
REPLACE=,^FREEBUSY:00010102T000000Z/\d+T\d+Z,FREEBUSY:00010102T000000Z/xx,
REPLACE=,^FREEBUSY:(?!00010102T000000Z)\d+T\d+Z/\d+T\d+Z,FREEBUSY:xx/xx,
BEGINDATA
<?xml version="1.0" encoding="utf-8" ?>
<C:free-busy-query xmlns:C="urn:ietf:params:xml:ns:caldav">
<C:time-range start="00010102T000000Z" />
</C:free-busy-query>
ENDDATA

View File

@ -0,0 +1,45 @@
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: "a fine looking etag"
Content-Length: 0
Content-Type: text/plain; charset="utf-8"
A1 CalDAV DATA: >BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART:08040229T000000Z
DURATION:P1H
SUMMARY:Test date in 08040229
TRANSP:OPAQUE
UID:2703-PUT-Event-08040229
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
<
caldav_type: >VEVENT<
class: >PUBLIC<
description: >NULL<
dtend: >NULL<
dtstamp: >2024-01-20 03:47:00<
dtstart: >NULL<
due: >NULL<
last_modified: >2024-01-20 03:47:00<
location: >NULL<
logged_user: >10<
percent_complete: >NULL<
priority: >NULL<
rrule: >FREQ=WEEKLY;COUNT=2<
status: >NULL<
summary: >Test date in 08040229<
transp: >OPAQUE<
tz_id: >NULL<
uid: >2703-PUT-Event-08040229<
url: >NULL<
user_no: >10<

View File

@ -0,0 +1,44 @@
#
# PUT an event in 08040229
#
TYPE=PUT
URL=http://regression.host/caldav.php/user1/past-and-future/2703-PUT-Event-08040229.ics
AUTH=user1:user1
HEADER=User-Agent: test-suite/1.0
HEADER=Content-Type: text/calendar; charset=utf-8
HEAD
#
REPLACE=/^ETag: "[0-9a-f]+"/ETag: "a fine looking etag"/
BEGINDATA
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART:08040229T000000Z
DURATION:P1H
SUMMARY:Test date in 08040229
TRANSP:OPAQUE
UID:2703-PUT-Event-08040229
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
ENDDATA
QUERY
SELECT caldav_data.user_no, caldav_type, logged_user,
uid, dtstamp, 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,
calendar_item.last_modified,
caldav_data AS "A1 CalDAV DATA"
FROM caldav_data JOIN calendar_item USING(dav_name) LEFT JOIN timezones ON (tz_id=tzid)
WHERE caldav_data.dav_name ~ '^/user1/past-and-future/'
AND uid = '2703-PUT-Event-08040229'
ENDQUERY

View File

@ -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: "a fine looking etag"
Content-Length: xx
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/past-and-future/2703-PUT-Event-08040229.ics</href>
<propstat>
<prop>
<C:calendar-data>BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:xx
DTSTART:08040229T000000Z
DURATION:P1H
SUMMARY:Test date in 08040229
TRANSP:OPAQUE
UID:2703-PUT-Event-08040229
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
</C:calendar-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>

View File

@ -0,0 +1,30 @@
#
# REPORT on event for 08040229, created by previous test.
#
TYPE=REPORT
URL=http://regression.host/caldav.php/user1/past-and-future/
AUTH=user1:user1
HEADER=Content-Type: text/xml; charset="UTF-8"
HEADER=Depth: 0
HEAD
REPLACE=/^ETag: "[0-9a-f]+"/ETag: "a fine looking etag"/
REPLACE=/^DTSTAMP:\d+T\d+Z/DTSTAMP:xx/
REPLACE=/^Content-Length: \d+/Content-Length: xx/
BEGINDATA
<?xml version='1.0' encoding='utf-8'?>
<C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:prop>
<C:calendar-data/>
</D:prop>
<C:filter>
<C:comp-filter name="VCALENDAR">
<C:comp-filter name="VEVENT">
<C:time-range start="08040229T000000Z" end="08040229T020000Z"/>
</C:comp-filter>
</C:comp-filter>
</C:filter>
</C:calendar-query>
ENDDATA

View File

@ -0,0 +1,19 @@
HTTP/1.1 200 OK
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
Content-Length: xx
Content-Type: text/calendar;charset=UTF-8
BEGIN:VCALENDAR
PRODID:-//davical.org//NONSGML AWL Calendar//EN
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VFREEBUSY
DTSTAMP:xx
DTSTART:08040229T000000Z
DTEND:xx
FREEBUSY:08040229T000000Z/xx
FREEBUSY:xx/xx
END:VFREEBUSY
END:VCALENDAR

View File

@ -0,0 +1,26 @@
#
# Free/Busy should show two busy periods one that starts at the timestamp
# and another a week later. I haven't added logic to the script which
# generates this file to work out what those other dates are, so as long
# as we have two busy periods, we'll call that done.
#
TYPE=REPORT
URL=http://regression.host/caldav.php/user1/past-and-future/
AUTH=user1:user1
HEADER=Content-Type: text/xml; charset="UTF-8"
HEADER=Depth: 0
HEAD
REPLACE=/^Content-Length: [0-9]+/Content-Length: xx/
REPLACE=/^DTSTAMP:\d+T\d+Z/DTSTAMP:xx/
REPLACE=/^DTEND:\d+T\d+Z/DTEND:xx/
REPLACE=,^FREEBUSY:08040229T000000Z/\d+T\d+Z,FREEBUSY:08040229T000000Z/xx,
REPLACE=,^FREEBUSY:(?!08040229T000000Z)\d+T\d+Z/\d+T\d+Z,FREEBUSY:xx/xx,
BEGINDATA
<?xml version="1.0" encoding="utf-8" ?>
<C:free-busy-query xmlns:C="urn:ietf:params:xml:ns:caldav">
<C:time-range start="08040229T000000Z" />
</C:free-busy-query>
ENDDATA

View File

@ -0,0 +1,45 @@
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: "a fine looking etag"
Content-Length: 0
Content-Type: text/plain; charset="utf-8"
A1 CalDAV DATA: >BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART:18500820T000000Z
DURATION:P1H
SUMMARY:Test date in 18500820
TRANSP:OPAQUE
UID:2704-PUT-Event-18500820
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
<
caldav_type: >VEVENT<
class: >PUBLIC<
description: >NULL<
dtend: >NULL<
dtstamp: >2024-01-20 03:47:00<
dtstart: >NULL<
due: >NULL<
last_modified: >2024-01-20 03:47:00<
location: >NULL<
logged_user: >10<
percent_complete: >NULL<
priority: >NULL<
rrule: >FREQ=WEEKLY;COUNT=2<
status: >NULL<
summary: >Test date in 18500820<
transp: >OPAQUE<
tz_id: >NULL<
uid: >2704-PUT-Event-18500820<
url: >NULL<
user_no: >10<

View File

@ -0,0 +1,44 @@
#
# PUT an event in 18500820
#
TYPE=PUT
URL=http://regression.host/caldav.php/user1/past-and-future/2704-PUT-Event-18500820.ics
AUTH=user1:user1
HEADER=User-Agent: test-suite/1.0
HEADER=Content-Type: text/calendar; charset=utf-8
HEAD
#
REPLACE=/^ETag: "[0-9a-f]+"/ETag: "a fine looking etag"/
BEGINDATA
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART:18500820T000000Z
DURATION:P1H
SUMMARY:Test date in 18500820
TRANSP:OPAQUE
UID:2704-PUT-Event-18500820
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
ENDDATA
QUERY
SELECT caldav_data.user_no, caldav_type, logged_user,
uid, dtstamp, 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,
calendar_item.last_modified,
caldav_data AS "A1 CalDAV DATA"
FROM caldav_data JOIN calendar_item USING(dav_name) LEFT JOIN timezones ON (tz_id=tzid)
WHERE caldav_data.dav_name ~ '^/user1/past-and-future/'
AND uid = '2704-PUT-Event-18500820'
ENDQUERY

View File

@ -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: "a fine looking etag"
Content-Length: xx
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/past-and-future/2704-PUT-Event-18500820.ics</href>
<propstat>
<prop>
<C:calendar-data>BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:xx
DTSTART:18500820T000000Z
DURATION:P1H
SUMMARY:Test date in 18500820
TRANSP:OPAQUE
UID:2704-PUT-Event-18500820
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
</C:calendar-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>

View File

@ -0,0 +1,30 @@
#
# REPORT on event for 18500820, created by previous test.
#
TYPE=REPORT
URL=http://regression.host/caldav.php/user1/past-and-future/
AUTH=user1:user1
HEADER=Content-Type: text/xml; charset="UTF-8"
HEADER=Depth: 0
HEAD
REPLACE=/^ETag: "[0-9a-f]+"/ETag: "a fine looking etag"/
REPLACE=/^DTSTAMP:\d+T\d+Z/DTSTAMP:xx/
REPLACE=/^Content-Length: \d+/Content-Length: xx/
BEGINDATA
<?xml version='1.0' encoding='utf-8'?>
<C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:prop>
<C:calendar-data/>
</D:prop>
<C:filter>
<C:comp-filter name="VCALENDAR">
<C:comp-filter name="VEVENT">
<C:time-range start="18500820T000000Z" end="18500820T020000Z"/>
</C:comp-filter>
</C:comp-filter>
</C:filter>
</C:calendar-query>
ENDDATA

View File

@ -0,0 +1,19 @@
HTTP/1.1 200 OK
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
Content-Length: xx
Content-Type: text/calendar;charset=UTF-8
BEGIN:VCALENDAR
PRODID:-//davical.org//NONSGML AWL Calendar//EN
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VFREEBUSY
DTSTAMP:xx
DTSTART:18500820T000000Z
DTEND:xx
FREEBUSY:18500820T000000Z/xx
FREEBUSY:xx/xx
END:VFREEBUSY
END:VCALENDAR

View File

@ -0,0 +1,26 @@
#
# Free/Busy should show two busy periods one that starts at the timestamp
# and another a week later. I haven't added logic to the script which
# generates this file to work out what those other dates are, so as long
# as we have two busy periods, we'll call that done.
#
TYPE=REPORT
URL=http://regression.host/caldav.php/user1/past-and-future/
AUTH=user1:user1
HEADER=Content-Type: text/xml; charset="UTF-8"
HEADER=Depth: 0
HEAD
REPLACE=/^Content-Length: [0-9]+/Content-Length: xx/
REPLACE=/^DTSTAMP:\d+T\d+Z/DTSTAMP:xx/
REPLACE=/^DTEND:\d+T\d+Z/DTEND:xx/
REPLACE=,^FREEBUSY:18500820T000000Z/\d+T\d+Z,FREEBUSY:18500820T000000Z/xx,
REPLACE=,^FREEBUSY:(?!18500820T000000Z)\d+T\d+Z/\d+T\d+Z,FREEBUSY:xx/xx,
BEGINDATA
<?xml version="1.0" encoding="utf-8" ?>
<C:free-busy-query xmlns:C="urn:ietf:params:xml:ns:caldav">
<C:time-range start="18500820T000000Z" />
</C:free-busy-query>
ENDDATA

View File

@ -0,0 +1,45 @@
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: "a fine looking etag"
Content-Length: 0
Content-Type: text/plain; charset="utf-8"
A1 CalDAV DATA: >BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART:19010101T000000Z
DURATION:P1H
SUMMARY:Test date in 19010101
TRANSP:OPAQUE
UID:2705-PUT-Event-19010101
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
<
caldav_type: >VEVENT<
class: >PUBLIC<
description: >NULL<
dtend: >NULL<
dtstamp: >2024-01-20 03:47:00<
dtstart: >NULL<
due: >NULL<
last_modified: >2024-01-20 03:47:00<
location: >NULL<
logged_user: >10<
percent_complete: >NULL<
priority: >NULL<
rrule: >FREQ=WEEKLY;COUNT=2<
status: >NULL<
summary: >Test date in 19010101<
transp: >OPAQUE<
tz_id: >NULL<
uid: >2705-PUT-Event-19010101<
url: >NULL<
user_no: >10<

View File

@ -0,0 +1,44 @@
#
# PUT an event in 19010101
#
TYPE=PUT
URL=http://regression.host/caldav.php/user1/past-and-future/2705-PUT-Event-19010101.ics
AUTH=user1:user1
HEADER=User-Agent: test-suite/1.0
HEADER=Content-Type: text/calendar; charset=utf-8
HEAD
#
REPLACE=/^ETag: "[0-9a-f]+"/ETag: "a fine looking etag"/
BEGINDATA
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART:19010101T000000Z
DURATION:P1H
SUMMARY:Test date in 19010101
TRANSP:OPAQUE
UID:2705-PUT-Event-19010101
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
ENDDATA
QUERY
SELECT caldav_data.user_no, caldav_type, logged_user,
uid, dtstamp, 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,
calendar_item.last_modified,
caldav_data AS "A1 CalDAV DATA"
FROM caldav_data JOIN calendar_item USING(dav_name) LEFT JOIN timezones ON (tz_id=tzid)
WHERE caldav_data.dav_name ~ '^/user1/past-and-future/'
AND uid = '2705-PUT-Event-19010101'
ENDQUERY

View File

@ -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: "a fine looking etag"
Content-Length: xx
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/past-and-future/2705-PUT-Event-19010101.ics</href>
<propstat>
<prop>
<C:calendar-data>BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:xx
DTSTART:19010101T000000Z
DURATION:P1H
SUMMARY:Test date in 19010101
TRANSP:OPAQUE
UID:2705-PUT-Event-19010101
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
</C:calendar-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>

View File

@ -0,0 +1,30 @@
#
# REPORT on event for 19010101, created by previous test.
#
TYPE=REPORT
URL=http://regression.host/caldav.php/user1/past-and-future/
AUTH=user1:user1
HEADER=Content-Type: text/xml; charset="UTF-8"
HEADER=Depth: 0
HEAD
REPLACE=/^ETag: "[0-9a-f]+"/ETag: "a fine looking etag"/
REPLACE=/^DTSTAMP:\d+T\d+Z/DTSTAMP:xx/
REPLACE=/^Content-Length: \d+/Content-Length: xx/
BEGINDATA
<?xml version='1.0' encoding='utf-8'?>
<C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:prop>
<C:calendar-data/>
</D:prop>
<C:filter>
<C:comp-filter name="VCALENDAR">
<C:comp-filter name="VEVENT">
<C:time-range start="19010101T000000Z" end="19010101T020000Z"/>
</C:comp-filter>
</C:comp-filter>
</C:filter>
</C:calendar-query>
ENDDATA

View File

@ -0,0 +1,19 @@
HTTP/1.1 200 OK
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
Content-Length: xx
Content-Type: text/calendar;charset=UTF-8
BEGIN:VCALENDAR
PRODID:-//davical.org//NONSGML AWL Calendar//EN
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VFREEBUSY
DTSTAMP:xx
DTSTART:19010101T000000Z
DTEND:xx
FREEBUSY:19010101T000000Z/xx
FREEBUSY:xx/xx
END:VFREEBUSY
END:VCALENDAR

View File

@ -0,0 +1,26 @@
#
# Free/Busy should show two busy periods one that starts at the timestamp
# and another a week later. I haven't added logic to the script which
# generates this file to work out what those other dates are, so as long
# as we have two busy periods, we'll call that done.
#
TYPE=REPORT
URL=http://regression.host/caldav.php/user1/past-and-future/
AUTH=user1:user1
HEADER=Content-Type: text/xml; charset="UTF-8"
HEADER=Depth: 0
HEAD
REPLACE=/^Content-Length: [0-9]+/Content-Length: xx/
REPLACE=/^DTSTAMP:\d+T\d+Z/DTSTAMP:xx/
REPLACE=/^DTEND:\d+T\d+Z/DTEND:xx/
REPLACE=,^FREEBUSY:19010101T000000Z/\d+T\d+Z,FREEBUSY:19010101T000000Z/xx,
REPLACE=,^FREEBUSY:(?!19010101T000000Z)\d+T\d+Z/\d+T\d+Z,FREEBUSY:xx/xx,
BEGINDATA
<?xml version="1.0" encoding="utf-8" ?>
<C:free-busy-query xmlns:C="urn:ietf:params:xml:ns:caldav">
<C:time-range start="19010101T000000Z" />
</C:free-busy-query>
ENDDATA

View File

@ -0,0 +1,45 @@
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: "a fine looking etag"
Content-Length: 0
Content-Type: text/plain; charset="utf-8"
A1 CalDAV DATA: >BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART:20000101T000000Z
DURATION:P1H
SUMMARY:Test date in 20000101
TRANSP:OPAQUE
UID:2706-PUT-Event-20000101
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
<
caldav_type: >VEVENT<
class: >PUBLIC<
description: >NULL<
dtend: >NULL<
dtstamp: >2024-01-20 03:47:00<
dtstart: >NULL<
due: >NULL<
last_modified: >2024-01-20 03:47:00<
location: >NULL<
logged_user: >10<
percent_complete: >NULL<
priority: >NULL<
rrule: >FREQ=WEEKLY;COUNT=2<
status: >NULL<
summary: >Test date in 20000101<
transp: >OPAQUE<
tz_id: >NULL<
uid: >2706-PUT-Event-20000101<
url: >NULL<
user_no: >10<

View File

@ -0,0 +1,44 @@
#
# PUT an event in 20000101
#
TYPE=PUT
URL=http://regression.host/caldav.php/user1/past-and-future/2706-PUT-Event-20000101.ics
AUTH=user1:user1
HEADER=User-Agent: test-suite/1.0
HEADER=Content-Type: text/calendar; charset=utf-8
HEAD
#
REPLACE=/^ETag: "[0-9a-f]+"/ETag: "a fine looking etag"/
BEGINDATA
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART:20000101T000000Z
DURATION:P1H
SUMMARY:Test date in 20000101
TRANSP:OPAQUE
UID:2706-PUT-Event-20000101
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
ENDDATA
QUERY
SELECT caldav_data.user_no, caldav_type, logged_user,
uid, dtstamp, 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,
calendar_item.last_modified,
caldav_data AS "A1 CalDAV DATA"
FROM caldav_data JOIN calendar_item USING(dav_name) LEFT JOIN timezones ON (tz_id=tzid)
WHERE caldav_data.dav_name ~ '^/user1/past-and-future/'
AND uid = '2706-PUT-Event-20000101'
ENDQUERY

View File

@ -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: "a fine looking etag"
Content-Length: xx
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/past-and-future/2706-PUT-Event-20000101.ics</href>
<propstat>
<prop>
<C:calendar-data>BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:xx
DTSTART:20000101T000000Z
DURATION:P1H
SUMMARY:Test date in 20000101
TRANSP:OPAQUE
UID:2706-PUT-Event-20000101
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
</C:calendar-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>

View File

@ -0,0 +1,30 @@
#
# REPORT on event for 20000101, created by previous test.
#
TYPE=REPORT
URL=http://regression.host/caldav.php/user1/past-and-future/
AUTH=user1:user1
HEADER=Content-Type: text/xml; charset="UTF-8"
HEADER=Depth: 0
HEAD
REPLACE=/^ETag: "[0-9a-f]+"/ETag: "a fine looking etag"/
REPLACE=/^DTSTAMP:\d+T\d+Z/DTSTAMP:xx/
REPLACE=/^Content-Length: \d+/Content-Length: xx/
BEGINDATA
<?xml version='1.0' encoding='utf-8'?>
<C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:prop>
<C:calendar-data/>
</D:prop>
<C:filter>
<C:comp-filter name="VCALENDAR">
<C:comp-filter name="VEVENT">
<C:time-range start="20000101T000000Z" end="20000101T020000Z"/>
</C:comp-filter>
</C:comp-filter>
</C:filter>
</C:calendar-query>
ENDDATA

View File

@ -0,0 +1,19 @@
HTTP/1.1 200 OK
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
Content-Length: xx
Content-Type: text/calendar;charset=UTF-8
BEGIN:VCALENDAR
PRODID:-//davical.org//NONSGML AWL Calendar//EN
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VFREEBUSY
DTSTAMP:xx
DTSTART:20000101T000000Z
DTEND:xx
FREEBUSY:20000101T000000Z/xx
FREEBUSY:xx/xx
END:VFREEBUSY
END:VCALENDAR

View File

@ -0,0 +1,26 @@
#
# Free/Busy should show two busy periods one that starts at the timestamp
# and another a week later. I haven't added logic to the script which
# generates this file to work out what those other dates are, so as long
# as we have two busy periods, we'll call that done.
#
TYPE=REPORT
URL=http://regression.host/caldav.php/user1/past-and-future/
AUTH=user1:user1
HEADER=Content-Type: text/xml; charset="UTF-8"
HEADER=Depth: 0
HEAD
REPLACE=/^Content-Length: [0-9]+/Content-Length: xx/
REPLACE=/^DTSTAMP:\d+T\d+Z/DTSTAMP:xx/
REPLACE=/^DTEND:\d+T\d+Z/DTEND:xx/
REPLACE=,^FREEBUSY:20000101T000000Z/\d+T\d+Z,FREEBUSY:20000101T000000Z/xx,
REPLACE=,^FREEBUSY:(?!20000101T000000Z)\d+T\d+Z/\d+T\d+Z,FREEBUSY:xx/xx,
BEGINDATA
<?xml version="1.0" encoding="utf-8" ?>
<C:free-busy-query xmlns:C="urn:ietf:params:xml:ns:caldav">
<C:time-range start="20000101T000000Z" />
</C:free-busy-query>
ENDDATA

View File

@ -0,0 +1,45 @@
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: "a fine looking etag"
Content-Length: 0
Content-Type: text/plain; charset="utf-8"
A1 CalDAV DATA: >BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART:30000101T000000Z
DURATION:P1H
SUMMARY:Test date in 30000101
TRANSP:OPAQUE
UID:2707-PUT-Event-30000101
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
<
caldav_type: >VEVENT<
class: >PUBLIC<
description: >NULL<
dtend: >NULL<
dtstamp: >2024-01-20 03:47:00<
dtstart: >NULL<
due: >NULL<
last_modified: >2024-01-20 03:47:00<
location: >NULL<
logged_user: >10<
percent_complete: >NULL<
priority: >NULL<
rrule: >FREQ=WEEKLY;COUNT=2<
status: >NULL<
summary: >Test date in 30000101<
transp: >OPAQUE<
tz_id: >NULL<
uid: >2707-PUT-Event-30000101<
url: >NULL<
user_no: >10<

View File

@ -0,0 +1,44 @@
#
# PUT an event in 30000101
#
TYPE=PUT
URL=http://regression.host/caldav.php/user1/past-and-future/2707-PUT-Event-30000101.ics
AUTH=user1:user1
HEADER=User-Agent: test-suite/1.0
HEADER=Content-Type: text/calendar; charset=utf-8
HEAD
#
REPLACE=/^ETag: "[0-9a-f]+"/ETag: "a fine looking etag"/
BEGINDATA
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART:30000101T000000Z
DURATION:P1H
SUMMARY:Test date in 30000101
TRANSP:OPAQUE
UID:2707-PUT-Event-30000101
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
ENDDATA
QUERY
SELECT caldav_data.user_no, caldav_type, logged_user,
uid, dtstamp, 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,
calendar_item.last_modified,
caldav_data AS "A1 CalDAV DATA"
FROM caldav_data JOIN calendar_item USING(dav_name) LEFT JOIN timezones ON (tz_id=tzid)
WHERE caldav_data.dav_name ~ '^/user1/past-and-future/'
AND uid = '2707-PUT-Event-30000101'
ENDQUERY

View File

@ -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: "a fine looking etag"
Content-Length: xx
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/past-and-future/2707-PUT-Event-30000101.ics</href>
<propstat>
<prop>
<C:calendar-data>BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:xx
DTSTART:30000101T000000Z
DURATION:P1H
SUMMARY:Test date in 30000101
TRANSP:OPAQUE
UID:2707-PUT-Event-30000101
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
</C:calendar-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>

View File

@ -0,0 +1,30 @@
#
# REPORT on event for 30000101, created by previous test.
#
TYPE=REPORT
URL=http://regression.host/caldav.php/user1/past-and-future/
AUTH=user1:user1
HEADER=Content-Type: text/xml; charset="UTF-8"
HEADER=Depth: 0
HEAD
REPLACE=/^ETag: "[0-9a-f]+"/ETag: "a fine looking etag"/
REPLACE=/^DTSTAMP:\d+T\d+Z/DTSTAMP:xx/
REPLACE=/^Content-Length: \d+/Content-Length: xx/
BEGINDATA
<?xml version='1.0' encoding='utf-8'?>
<C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:prop>
<C:calendar-data/>
</D:prop>
<C:filter>
<C:comp-filter name="VCALENDAR">
<C:comp-filter name="VEVENT">
<C:time-range start="30000101T000000Z" end="30000101T020000Z"/>
</C:comp-filter>
</C:comp-filter>
</C:filter>
</C:calendar-query>
ENDDATA

View File

@ -0,0 +1,19 @@
HTTP/1.1 200 OK
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
Content-Length: xx
Content-Type: text/calendar;charset=UTF-8
BEGIN:VCALENDAR
PRODID:-//davical.org//NONSGML AWL Calendar//EN
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VFREEBUSY
DTSTAMP:xx
DTSTART:30000101T000000Z
DTEND:xx
FREEBUSY:30000101T000000Z/xx
FREEBUSY:xx/xx
END:VFREEBUSY
END:VCALENDAR

View File

@ -0,0 +1,26 @@
#
# Free/Busy should show two busy periods one that starts at the timestamp
# and another a week later. I haven't added logic to the script which
# generates this file to work out what those other dates are, so as long
# as we have two busy periods, we'll call that done.
#
TYPE=REPORT
URL=http://regression.host/caldav.php/user1/past-and-future/
AUTH=user1:user1
HEADER=Content-Type: text/xml; charset="UTF-8"
HEADER=Depth: 0
HEAD
REPLACE=/^Content-Length: [0-9]+/Content-Length: xx/
REPLACE=/^DTSTAMP:\d+T\d+Z/DTSTAMP:xx/
REPLACE=/^DTEND:\d+T\d+Z/DTEND:xx/
REPLACE=,^FREEBUSY:30000101T000000Z/\d+T\d+Z,FREEBUSY:30000101T000000Z/xx,
REPLACE=,^FREEBUSY:(?!30000101T000000Z)\d+T\d+Z/\d+T\d+Z,FREEBUSY:xx/xx,
BEGINDATA
<?xml version="1.0" encoding="utf-8" ?>
<C:free-busy-query xmlns:C="urn:ietf:params:xml:ns:caldav">
<C:time-range start="30000101T000000Z" />
</C:free-busy-query>
ENDDATA

View File

@ -0,0 +1,45 @@
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: "a fine looking etag"
Content-Length: 0
Content-Type: text/plain; charset="utf-8"
A1 CalDAV DATA: >BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART:50000701T000000Z
DURATION:P1H
SUMMARY:Test date in 50000701
TRANSP:OPAQUE
UID:2708-PUT-Event-50000701
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
<
caldav_type: >VEVENT<
class: >PUBLIC<
description: >NULL<
dtend: >NULL<
dtstamp: >2024-01-20 03:47:00<
dtstart: >NULL<
due: >NULL<
last_modified: >2024-01-20 03:47:00<
location: >NULL<
logged_user: >10<
percent_complete: >NULL<
priority: >NULL<
rrule: >FREQ=WEEKLY;COUNT=2<
status: >NULL<
summary: >Test date in 50000701<
transp: >OPAQUE<
tz_id: >NULL<
uid: >2708-PUT-Event-50000701<
url: >NULL<
user_no: >10<

View File

@ -0,0 +1,44 @@
#
# PUT an event in 50000701
#
TYPE=PUT
URL=http://regression.host/caldav.php/user1/past-and-future/2708-PUT-Event-50000701.ics
AUTH=user1:user1
HEADER=User-Agent: test-suite/1.0
HEADER=Content-Type: text/calendar; charset=utf-8
HEAD
#
REPLACE=/^ETag: "[0-9a-f]+"/ETag: "a fine looking etag"/
BEGINDATA
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART:50000701T000000Z
DURATION:P1H
SUMMARY:Test date in 50000701
TRANSP:OPAQUE
UID:2708-PUT-Event-50000701
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
ENDDATA
QUERY
SELECT caldav_data.user_no, caldav_type, logged_user,
uid, dtstamp, 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,
calendar_item.last_modified,
caldav_data AS "A1 CalDAV DATA"
FROM caldav_data JOIN calendar_item USING(dav_name) LEFT JOIN timezones ON (tz_id=tzid)
WHERE caldav_data.dav_name ~ '^/user1/past-and-future/'
AND uid = '2708-PUT-Event-50000701'
ENDQUERY

View File

@ -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: "a fine looking etag"
Content-Length: xx
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/past-and-future/2708-PUT-Event-50000701.ics</href>
<propstat>
<prop>
<C:calendar-data>BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:xx
DTSTART:50000701T000000Z
DURATION:P1H
SUMMARY:Test date in 50000701
TRANSP:OPAQUE
UID:2708-PUT-Event-50000701
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
</C:calendar-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>

View File

@ -0,0 +1,30 @@
#
# REPORT on event for 50000701, created by previous test.
#
TYPE=REPORT
URL=http://regression.host/caldav.php/user1/past-and-future/
AUTH=user1:user1
HEADER=Content-Type: text/xml; charset="UTF-8"
HEADER=Depth: 0
HEAD
REPLACE=/^ETag: "[0-9a-f]+"/ETag: "a fine looking etag"/
REPLACE=/^DTSTAMP:\d+T\d+Z/DTSTAMP:xx/
REPLACE=/^Content-Length: \d+/Content-Length: xx/
BEGINDATA
<?xml version='1.0' encoding='utf-8'?>
<C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:prop>
<C:calendar-data/>
</D:prop>
<C:filter>
<C:comp-filter name="VCALENDAR">
<C:comp-filter name="VEVENT">
<C:time-range start="50000701T000000Z" end="50000701T020000Z"/>
</C:comp-filter>
</C:comp-filter>
</C:filter>
</C:calendar-query>
ENDDATA

View File

@ -0,0 +1,19 @@
HTTP/1.1 200 OK
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
Content-Length: xx
Content-Type: text/calendar;charset=UTF-8
BEGIN:VCALENDAR
PRODID:-//davical.org//NONSGML AWL Calendar//EN
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VFREEBUSY
DTSTAMP:xx
DTSTART:50000701T000000Z
DTEND:xx
FREEBUSY:50000701T000000Z/xx
FREEBUSY:xx/xx
END:VFREEBUSY
END:VCALENDAR

View File

@ -0,0 +1,26 @@
#
# Free/Busy should show two busy periods one that starts at the timestamp
# and another a week later. I haven't added logic to the script which
# generates this file to work out what those other dates are, so as long
# as we have two busy periods, we'll call that done.
#
TYPE=REPORT
URL=http://regression.host/caldav.php/user1/past-and-future/
AUTH=user1:user1
HEADER=Content-Type: text/xml; charset="UTF-8"
HEADER=Depth: 0
HEAD
REPLACE=/^Content-Length: [0-9]+/Content-Length: xx/
REPLACE=/^DTSTAMP:\d+T\d+Z/DTSTAMP:xx/
REPLACE=/^DTEND:\d+T\d+Z/DTEND:xx/
REPLACE=,^FREEBUSY:50000701T000000Z/\d+T\d+Z,FREEBUSY:50000701T000000Z/xx,
REPLACE=,^FREEBUSY:(?!50000701T000000Z)\d+T\d+Z/\d+T\d+Z,FREEBUSY:xx/xx,
BEGINDATA
<?xml version="1.0" encoding="utf-8" ?>
<C:free-busy-query xmlns:C="urn:ietf:params:xml:ns:caldav">
<C:time-range start="50000701T000000Z" />
</C:free-busy-query>
ENDDATA

View File

@ -0,0 +1,45 @@
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: "a fine looking etag"
Content-Length: 0
Content-Type: text/plain; charset="utf-8"
A1 CalDAV DATA: >BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART:99970820T000000Z
DURATION:P1H
SUMMARY:Test date in 99970820
TRANSP:OPAQUE
UID:2709-PUT-Event-99970820
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
<
caldav_type: >VEVENT<
class: >PUBLIC<
description: >NULL<
dtend: >NULL<
dtstamp: >2024-01-20 03:47:00<
dtstart: >NULL<
due: >NULL<
last_modified: >2024-01-20 03:47:00<
location: >NULL<
logged_user: >10<
percent_complete: >NULL<
priority: >NULL<
rrule: >FREQ=WEEKLY;COUNT=2<
status: >NULL<
summary: >Test date in 99970820<
transp: >OPAQUE<
tz_id: >NULL<
uid: >2709-PUT-Event-99970820<
url: >NULL<
user_no: >10<

View File

@ -0,0 +1,44 @@
#
# PUT an event in 99970820
#
TYPE=PUT
URL=http://regression.host/caldav.php/user1/past-and-future/2709-PUT-Event-99970820.ics
AUTH=user1:user1
HEADER=User-Agent: test-suite/1.0
HEADER=Content-Type: text/calendar; charset=utf-8
HEAD
#
REPLACE=/^ETag: "[0-9a-f]+"/ETag: "a fine looking etag"/
BEGINDATA
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:20240120T034700Z
DTSTART:99970820T000000Z
DURATION:P1H
SUMMARY:Test date in 99970820
TRANSP:OPAQUE
UID:2709-PUT-Event-99970820
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
ENDDATA
QUERY
SELECT caldav_data.user_no, caldav_type, logged_user,
uid, dtstamp, 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,
calendar_item.last_modified,
caldav_data AS "A1 CalDAV DATA"
FROM caldav_data JOIN calendar_item USING(dav_name) LEFT JOIN timezones ON (tz_id=tzid)
WHERE caldav_data.dav_name ~ '^/user1/past-and-future/'
AND uid = '2709-PUT-Event-99970820'
ENDQUERY

View File

@ -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: "a fine looking etag"
Content-Length: xx
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/past-and-future/2709-PUT-Event-99970820.ics</href>
<propstat>
<prop>
<C:calendar-data>BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//artisanal-handcrafted-ICS.com//NONSGML Artisanal.iCal 1.0//EN
BEGIN:VEVENT
CLASS:PUBLIC
DTSTAMP:xx
DTSTART:99970820T000000Z
DURATION:P1H
SUMMARY:Test date in 99970820
TRANSP:OPAQUE
UID:2709-PUT-Event-99970820
RRULE:FREQ=WEEKLY;COUNT=2
END:VEVENT
END:VCALENDAR
</C:calendar-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>

View File

@ -0,0 +1,30 @@
#
# REPORT on event for 99970820, created by previous test.
#
TYPE=REPORT
URL=http://regression.host/caldav.php/user1/past-and-future/
AUTH=user1:user1
HEADER=Content-Type: text/xml; charset="UTF-8"
HEADER=Depth: 0
HEAD
REPLACE=/^ETag: "[0-9a-f]+"/ETag: "a fine looking etag"/
REPLACE=/^DTSTAMP:\d+T\d+Z/DTSTAMP:xx/
REPLACE=/^Content-Length: \d+/Content-Length: xx/
BEGINDATA
<?xml version='1.0' encoding='utf-8'?>
<C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:prop>
<C:calendar-data/>
</D:prop>
<C:filter>
<C:comp-filter name="VCALENDAR">
<C:comp-filter name="VEVENT">
<C:time-range start="99970820T000000Z" end="99970820T020000Z"/>
</C:comp-filter>
</C:comp-filter>
</C:filter>
</C:calendar-query>
ENDDATA

View File

@ -0,0 +1,19 @@
HTTP/1.1 200 OK
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
Content-Length: xx
Content-Type: text/calendar;charset=UTF-8
BEGIN:VCALENDAR
PRODID:-//davical.org//NONSGML AWL Calendar//EN
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VFREEBUSY
DTSTAMP:xx
DTSTART:99970820T000000Z
DTEND:xx
FREEBUSY:99970820T000000Z/xx
FREEBUSY:xx/xx
END:VFREEBUSY
END:VCALENDAR

View File

@ -0,0 +1,26 @@
#
# Free/Busy should show two busy periods one that starts at the timestamp
# and another a week later. I haven't added logic to the script which
# generates this file to work out what those other dates are, so as long
# as we have two busy periods, we'll call that done.
#
TYPE=REPORT
URL=http://regression.host/caldav.php/user1/past-and-future/
AUTH=user1:user1
HEADER=Content-Type: text/xml; charset="UTF-8"
HEADER=Depth: 0
HEAD
REPLACE=/^Content-Length: [0-9]+/Content-Length: xx/
REPLACE=/^DTSTAMP:\d+T\d+Z/DTSTAMP:xx/
REPLACE=/^DTEND:\d+T\d+Z/DTEND:xx/
REPLACE=,^FREEBUSY:99970820T000000Z/\d+T\d+Z,FREEBUSY:99970820T000000Z/xx,
REPLACE=,^FREEBUSY:(?!99970820T000000Z)\d+T\d+Z/\d+T\d+Z,FREEBUSY:xx/xx,
BEGINDATA
<?xml version="1.0" encoding="utf-8" ?>
<C:free-busy-query xmlns:C="urn:ietf:params:xml:ns:caldav">
<C:time-range start="99970820T000000Z" />
</C:free-busy-query>
ENDDATA