Updates to regression tests. Starting a review of the design.

This commit is contained in:
Andrew McMillan 2006-11-20 09:29:35 +13:00
parent 8056e9bc40
commit 9420cac5f5
15 changed files with 79 additions and 89 deletions

View File

@ -5,18 +5,41 @@ At present these regression tests are basically written to work in my
own environment. While I am, of course, happy to see patches that make
them more generic they are still very much a work in progress.
Mulberry
========
At present the most demanding client to support is Mulberry, so the first
regression tests imitate Mulberry taking RSCDS through it's paces:
set of regression tests imitate Mulberry taking RSCDS through it's paces:
- Initial OPTIONS request at the root
- Initial PROPFIND request at the root with Depth 1
- Second PROPFIND request at the second level
- MKCALENDAR request to create a calendar at /user1/home/
- Third PROPFIND request duplicating the Second one (but finding a calendar now).
- Fourth PROPFIND request solely looking for the new calendar, requesting 'getetag'
- Not that Mulberry would let us do this, but we try to MKCALENDAR again at /user1/home/ to check for the error we expect.
- PUT our first event into the calendar.
- PUT the same event a second time, which should not give an error, but should respond with 'Replaced' rather than 'Created'.
1. Initial OPTIONS request at the root
2. Initial PROPFIND request at the root with Depth 1
3. Second PROPFIND request at the second level
4. MKCALENDAR request to create a calendar at /user1/home/
5. Third PROPFIND request duplicating the Second one (but finding a calendar now).
6. Fourth PROPFIND request solely looking for the new calendar, requesting 'getetag'
7. Not that Mulberry would let us do this, but we try to MKCALENDAR again at /user1/home/ to check for the error we expect.
10. PUT our first event into the calendar.
11. PUT the same event a second time, which should not give an error, but should respond with 'Replaced' rather than 'Created'.
12. PUT a second event into the calendar.
13. PROPFIND which should now show us both events.
14. PUT an update to that second event.
15. PROPFIND which should show us both events, with changes.
16. MKCALENDAR somewhere else that we have rights to do so.
17. MKCALENDAR somewhere else where we do not have rights, and which should fail.
18. PUT into the other calendar we have just created.
19. OPTIONS request against an illegal path, which should fail.
20. DELETE the first appointment we created, but with an If-Match header that will cause it to return a 412 Precondition Failed.
21. DELETE the first appointment, but this time with a correct If-Match header, it should succeed.
Evolution
=========
Evolution does things quite differently to Mulberry, only doing one OPTIONS request to confirm that
calendaring support is available, and then going for REPORT and GET. It maintains an internal cache
so does not GET events listed in a REPORT unless they are new or changed.
100. Initial unauthenticated OPTIONS request.
101. Initial authenticated OPTIONS request.
102. Initial REPORT request.
=====>>>> We are up to here...

View File

@ -2,7 +2,7 @@ HTTP/1.1 200 OK
Date: Dow, 01 Jan 2000 00:00:00 GMT
Server: Apache/2.2.3 (Debian) DAV/2
Content-length: 0
Allow: OPTIONS, GET, PUT, DELETE, PROPFIND, MKCOL, MKCALENDAR
Allow: OPTIONS, GET, PUT, DELETE, PROPFIND, PROPPATCH, MKCOL, MKCALENDAR
DAV: 1, 2, access-control
Content-Type: text/plain; charset=UTF-8

View File

@ -0,0 +1,7 @@
HTTP/1.1 412 Precondition Failed
Date: Dow, 01 Jan 2000 00:00:00 GMT
Server: Apache/2.2.3 (Debian) DAV/2
Content-Length: 56
Content-Type: text/plain; charset=UTF-8
Resource does not match 'If-Match' header - not deleted

View File

@ -0,0 +1,6 @@
#
# Do a DELETE with a bogus etag so it will fail.
TYPE=DELETE
URL=http://mycaldav/caldav.php/user1/home/F56B49B10FC923D20FE2DC92D6580340-0.ics
HEADER=If-Match: "bogus-etag-b000d7defa19ccb7cd21e546b54155ee"
HEAD

View File

@ -0,0 +1,6 @@
HTTP/1.1 200 Deleted
Date: Dow, 01 Jan 2000 00:00:00 GMT
Server: Apache/2.2.3 (Debian) DAV/2
Content-length: 0
Content-Type: text/html; charset=UTF-8

View File

@ -0,0 +1,6 @@
#
# Do a DELETE with a correct etag which will succeed.
TYPE=DELETE
URL=http://mycaldav/caldav.php/user1/home/F56B49B10FC923D20FE2DC92D6580340-0.ics
HEADER=If-Match: "b000d7defa19ccb7cd21e546b54155ee"
HEAD

View File

@ -2,7 +2,7 @@ HTTP/1.1 200 OK
Date: Dow, 01 Jan 2000 00:00:00 GMT
Server: Apache/2.2.3 (Debian) DAV/2
Content-length: 0
Allow: OPTIONS, GET, PUT, DELETE, PROPFIND, MKCOL, MKCALENDAR, REPORT
Allow: OPTIONS, GET, PUT, DELETE, PROPFIND, PROPPATCH, MKCOL, MKCALENDAR, REPORT
DAV: 1, 2, access-control, calendar-access
Content-Type: text/plain; charset=UTF-8

View File

@ -1,21 +1,12 @@
HTTP/1.1 207 Multi-Status
Date: Dow, 01 Jan 2000 00:00:00 GMT
Server: Apache/2.2.3 (Debian) DAV/2
ETag: "999029ee508d00d69a8251bc727d6e52"
Content-Length: 600
ETag: "9af8e0a0b4fe1d20dd7b016d8916a1c0"
Content-Length: 341
Content-Type: text/xml;charset=UTF-8
<?xml version="1.0" encoding="UTF-8" ?>
<multistatus xmlns="DAV:">
<response>
<href>http://mycaldav/caldav.php/user1/home/F56B49B10FC923D20FE2DC92D6580340-0.ics</href>
<propstat>
<prop>
<getetag>"b000d7defa19ccb7cd21e546b54155ee"</getetag>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
<response>
<href>http://mycaldav/caldav.php/user1/home/3F4CF6227300FD062D9EF3CDFB30D32D-0.ics</href>
<propstat>

View File

@ -1,15 +1,14 @@
HTTP/1.1 200 OK
Date: Dow, 01 Jan 2000 00:00:00 GMT
Server: Apache/2.2.3 (Debian) DAV/2
ETag: "b000d7defa19ccb7cd21e546b54155ee"
Content-Length: 720
ETag: "2c32a2f8aba853654eb17fe037a4db4d"
Content-Length: 747
Content-Type: text/calendar
BEGIN:VCALENDAR
CALSCALE:GREGORIAN
PRODID:-//mulberrymail.com//Mulberry v4.0//EN
VERSION:2.0
X-WR-CALNAME:home
BEGIN:VTIMEZONE
LAST-MODIFIED:20040110T032845Z
TZID:New Zealand Standard Time
@ -30,10 +29,12 @@ TZOFFSETTO:+1200
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:20061025T101327Z
DTSTART;TZID=New Zealand Standard Time:20061025T091500
DTSTAMP:20061102T090217Z
DTSTART;TZID=New Zealand Standard Time:20061102T123000
DURATION:PT1H
SUMMARY:A first event
UID:B18CBB57295D01D7661A6DD4@D76FAF7B10D9E8D2D41F779C
LAST-MODIFIED:20061104T002921Z
SEQUENCE:1
SUMMARY:Lunch with David
UID:5A55230C8866CA8D3D325F3A@CA1CBED546AAE36FF3BC722E
END:VEVENT
END:VCALENDAR

View File

@ -2,6 +2,6 @@
# Now we GET the entry that was in the report.
#
TYPE=GET
URL=http://mycaldav/caldav.php/user1/home/F56B49B10FC923D20FE2DC92D6580340-0.ics
URL=http://mycaldav/caldav.php/user1/home/3F4CF6227300FD062D9EF3CDFB30D32D-0.ics
HEADER=User-Agent: Evolution/1.8.1
HEAD

View File

@ -1,21 +1,12 @@
HTTP/1.1 207 Multi-Status
Date: Dow, 01 Jan 2000 00:00:00 GMT
Server: Apache/2.2.3 (Debian) DAV/2
ETag: "aec354a7e336855131053ef08ca190b8"
Content-Length: 841
ETag: "0ebe2932552a8091e8d9e941663d6b44"
Content-Length: 582
Content-Type: text/xml;charset=UTF-8
<?xml version="1.0" encoding="UTF-8" ?>
<multistatus xmlns="DAV:">
<response>
<href>http://mycaldav/caldav.php/user1/home/F56B49B10FC923D20FE2DC92D6580340-0.ics</href>
<propstat>
<prop>
<getetag>"b000d7defa19ccb7cd21e546b54155ee"</getetag>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
<response>
<href>http://mycaldav/caldav.php/user1/home/3F4CF6227300FD062D9EF3CDFB30D32D-0.ics</href>
<propstat>

View File

@ -2,7 +2,7 @@ HTTP/1.1 200 OK
Date: Dow, 01 Jan 2000 00:00:00 GMT
Server: Apache/2.2.3 (Debian) DAV/2
Content-length: 0
Allow: OPTIONS, GET, PUT, DELETE, PROPFIND, MKCOL, MKCALENDAR, REPORT
Allow: OPTIONS, GET, PUT, DELETE, PROPFIND, PROPPATCH, MKCOL, MKCALENDAR, REPORT
DAV: 1, 2, access-control, calendar-access
Content-Type: text/plain; charset=UTF-8

View File

@ -1,8 +1,8 @@
HTTP/1.1 207 Multi-Status
Date: Dow, 01 Jan 2000 00:00:00 GMT
Server: Apache/2.2.3 (Debian) DAV/2
ETag: "d544d88a68854d4b3abb2241a0ce6ef5"
Content-Length: 3415
ETag: "5b96765475e589f86d394a09499d000e"
Content-Length: 2420
Content-Type: text/xml;charset=UTF-8
<?xml version="1.0" encoding="UTF-8" ?>
@ -93,47 +93,6 @@ SUMMARY:Lunch with David
UID:5A55230C8866CA8D3D325F3A@CA1CBED546AAE36FF3BC722E
END:VEVENT
END:VCALENDAR
</calendar-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
<response>
<href>http://mycaldav/caldav.php/user1/home/F56B49B10FC923D20FE2DC92D6580340-0.ics</href>
<propstat>
<prop>
<calendar-data xmlns="urn:ietf:params:xml:ns:caldav">BEGIN:VCALENDAR
CALSCALE:GREGORIAN
PRODID:-//mulberrymail.com//Mulberry v4.0//EN
VERSION:2.0
X-WR-CALNAME:home
BEGIN:VTIMEZONE
LAST-MODIFIED:20040110T032845Z
TZID:New Zealand Standard Time
X-LIC-LOCATION:Pacific/Auckland
BEGIN:DAYLIGHT
DTSTART:20000404T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
TZNAME:NZDT
TZOFFSETFROM:+1200
TZOFFSETTO:+1300
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:20001026T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=10
TZNAME:NZST
TZOFFSETFROM:+1300
TZOFFSETTO:+1200
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:20061025T101327Z
DTSTART;TZID=New Zealand Standard Time:20061025T091500
DURATION:PT1H
SUMMARY:A first event
UID:B18CBB57295D01D7661A6DD4@D76FAF7B10D9E8D2D41F779C
END:VEVENT
END:VCALENDAR
</calendar-data>
</prop>
<status>HTTP/1.1 200 OK</status>

View File

@ -2,7 +2,7 @@ HTTP/1.1 200 OK
Date: Dow, 01 Jan 2000 00:00:00 GMT
Server: Apache/2.2.3 (Debian) DAV/2
Content-length: 0
Allow: OPTIONS, GET, PUT, DELETE, PROPFIND, MKCOL, MKCALENDAR, REPORT
Allow: OPTIONS, GET, PUT, DELETE, PROPFIND, PROPPATCH, MKCOL, MKCALENDAR, REPORT
DAV: 1, 2, access-control, calendar-access
Content-Type: text/plain; charset=UTF-8

View File

@ -2,7 +2,7 @@ HTTP/1.1 200 OK
Date: Dow, 01 Jan 2000 00:00:00 GMT
Server: Apache/2.2.3 (Debian) DAV/2
Content-length: 0
Allow: OPTIONS, GET, PUT, DELETE, PROPFIND, MKCOL, MKCALENDAR
DAV: 1, 2, access-control
Allow: OPTIONS, GET, PUT, DELETE, PROPFIND, PROPPATCH, MKCOL, MKCALENDAR, REPORT
DAV: 1, 2, access-control, calendar-access
Content-Type: text/plain; charset=UTF-8