From e61e843a36517ab6915574c9d63938654fa7a73f Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Thu, 19 Mar 2009 10:11:50 +1300 Subject: [PATCH] Changes to support usernames containing a space, or other strange non-'/' character. --- dba/sample-data.sql | 2 + inc/always.php | 6 +- inc/always.php.in | 6 +- .../000-Setup-PUT-collection-user3.result | 110 ++++++++++++++++ .../000-Setup-PUT-collection-user3.test | 26 +++- .../000-Setup-PUT-collection-user6.result | 118 ++++++++++++++++++ .../000-Setup-PUT-collection-user6.test | 77 ++++++++++++ .../308-Chandler-OPTIONS-3.result | 6 +- .../309-Chandler-PROPFIND-3.result | 22 +--- .../regression-suite/605-Soho-MKCALENDAR.test | 4 +- .../606-Soho-PROPPATCH.result | 6 +- .../regression-suite/606-Soho-PROPPATCH.test | 4 +- .../840-Spec-PROPPATCH-1.result | 4 +- .../861-Spec-REPORT-principal.result | 16 ++- .../regression-suite/910-Space-OPTIONS.result | 7 ++ .../regression-suite/910-Space-OPTIONS.test | 6 + .../911-Space-MKCALENDAR.result | 13 ++ .../911-Space-MKCALENDAR.test | 30 +++++ .../912-Space-PROPFIND.result | 81 ++++++++++++ .../regression-suite/912-Space-PROPFIND.test | 26 ++++ 20 files changed, 531 insertions(+), 39 deletions(-) create mode 100644 testing/tests/regression-suite/000-Setup-PUT-collection-user6.result create mode 100644 testing/tests/regression-suite/000-Setup-PUT-collection-user6.test create mode 100644 testing/tests/regression-suite/910-Space-OPTIONS.result create mode 100644 testing/tests/regression-suite/910-Space-OPTIONS.test create mode 100644 testing/tests/regression-suite/911-Space-MKCALENDAR.result create mode 100644 testing/tests/regression-suite/911-Space-MKCALENDAR.test create mode 100644 testing/tests/regression-suite/912-Space-PROPFIND.result create mode 100644 testing/tests/regression-suite/912-Space-PROPFIND.test diff --git a/dba/sample-data.sql b/dba/sample-data.sql index b0690f5a..a3354f6c 100644 --- a/dba/sample-data.sql +++ b/dba/sample-data.sql @@ -16,6 +16,8 @@ INSERT INTO usr ( user_no, active, email_ok, updated, username, password, fullna VALUES( 13, TRUE, current_date, current_date, 'user4', '**user4', 'User 4', 'user4@example.net' ); INSERT INTO usr ( user_no, active, email_ok, updated, username, password, fullname, email ) VALUES( 14, TRUE, current_date, current_date, 'user5', '**user5', 'User 5', 'user5@example.net' ); +INSERT INTO usr ( user_no, active, email_ok, updated, username, password, fullname, email ) + VALUES( 15, TRUE, current_date, current_date, 'User Six', '**user6', 'User 6', 'user6@example.net' ); INSERT INTO usr ( user_no, active, email_ok, updated, username, password, fullname, email ) VALUES( 20, TRUE, current_date, current_date, 'manager1', '**manager1', 'Manager 1', 'manager1@example.net' ); diff --git a/inc/always.php b/inc/always.php index 46349581..43a036ee 100644 --- a/inc/always.php +++ b/inc/always.php @@ -231,12 +231,16 @@ function getStatusMessage($status) { /** -* Construct a URL from the supplied dav_name +* Construct a URL from the supplied dav_name. The URL will be urlencoded, +* except for any '/' characters in it. * @param string $partial_path The part of the path after the script name */ function ConstructURL( $partial_path ) { global $c; + $partial_path = rawurlencode($partial_path); + $partial_path = str_replace( '%2F', '/', $partial_path); + if ( ! isset($c->_url_script_path) ) { $c->_url_script_path = (preg_match('#/$#', $c->protocol_server_port_script) ? 'caldav.php' : ''); $c->_url_script_path = $c->protocol_server_port_script . $c->_url_script_path; diff --git a/inc/always.php.in b/inc/always.php.in index 4872b541..ffd2fded 100644 --- a/inc/always.php.in +++ b/inc/always.php.in @@ -231,12 +231,16 @@ function getStatusMessage($status) { /** -* Construct a URL from the supplied dav_name +* Construct a URL from the supplied dav_name. The URL will be urlencoded, +* except for any '/' characters in it. * @param string $partial_path The part of the path after the script name */ function ConstructURL( $partial_path ) { global $c; + $partial_path = rawurlencode($partial_path); + $partial_path = str_replace( '%2F', '/', $partial_path); + if ( ! isset($c->_url_script_path) ) { $c->_url_script_path = (preg_match('#/$#', $c->protocol_server_port_script) ? 'caldav.php' : ''); $c->_url_script_path = $c->protocol_server_port_script . $c->_url_script_path; diff --git a/testing/tests/regression-suite/000-Setup-PUT-collection-user3.result b/testing/tests/regression-suite/000-Setup-PUT-collection-user3.result index ec833044..19497e0e 100644 --- a/testing/tests/regression-suite/000-Setup-PUT-collection-user3.result +++ b/testing/tests/regression-suite/000-Setup-PUT-collection-user3.result @@ -6,3 +6,113 @@ DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule Content-Length: 0 Content-Type: text/plain; charset="utf-8" + A1 CalDAV DATA: >BEGIN:VCALENDAR +PRODID:-//davical.org//NONSGML AWL Calendar//EN +VERSION:2.0 +CALSCALE:GREGORIAN +BEGIN:VEVENT +SEQUENCE:3 +TRANSP:OPAQUE +UID:55F6EC95-2D21-4FB9-9AE1-A6E020B44AEB +DTSTART;TZID=Europe/Helsinki:20081025T133000 +DTSTAMP:20081024T200745Z +RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=1TU,2WE,3TH,4FR;BYMONTH=3,6,9,10,12 +SUMMARY:Irregular meeting for User 3 +CREATED:20081024T200734Z +DTEND;TZID=Europe/Helsinki:20081025T143000 +END:VEVENT +BEGIN:VTIMEZONE +TZID:Europe/Helsinki +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +DTSTART:19810329T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +TZNAME:EEST +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +DTSTART:19961027T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +TZNAME:EET +END:STANDARD +END:VTIMEZONE +END:VCALENDAR +< + caldav_type: >VEVENT< + class: >PUBLIC< + description: >NULL< + dtend: >2008-10-25 14:30:00+13< + dtstamp: >2008-10-24 20:07:45< + dtstart: >2008-10-25 13:30:00+13< + due: >NULL< + location: >NULL< + logged_user: >12< + percent_complete: >NULL< + priority: >NULL< + rrule: >FREQ=MONTHLY;INTERVAL=1;BYDAY=1TU,2WE,3TH,4FR;BYMONTH=3,6,9,10,12< + status: >NULL< + summary: >Irregular meeting for User 3< + transp: >OPAQUE< + tz_id: >Europe/Helsinki< + uid: >55F6EC95-2D21-4FB9-9AE1-A6E020B44AEB< + url: >NULL< + user_no: >12< + + A1 CalDAV DATA: >BEGIN:VCALENDAR +PRODID:-//davical.org//NONSGML AWL Calendar//EN +VERSION:2.0 +CALSCALE:GREGORIAN +BEGIN:VEVENT +SEQUENCE:2 +TRANSP:OPAQUE +UID:174F9C2A-1223-40C4-9E06-6E91F2EA9491 +DTSTART;TZID=Europe/Helsinki:20081024T084500 +DTSTAMP:20081025T112653Z +SUMMARY:Dentist\'s Council meeting +RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=TU,FR +CREATED:20081025T112648Z +DTEND;TZID=Europe/Helsinki:20081024T113000 +END:VEVENT +BEGIN:VTIMEZONE +TZID:Europe/Helsinki +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +DTSTART:19810329T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +TZNAME:EEST +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +DTSTART:19961027T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +TZNAME:EET +END:STANDARD +END:VTIMEZONE +END:VCALENDAR +< + caldav_type: >VEVENT< + class: >PUBLIC< + description: >NULL< + dtend: >2008-10-24 11:30:00+13< + dtstamp: >2008-10-25 11:26:53< + dtstart: >2008-10-24 08:45:00+13< + due: >NULL< + location: >NULL< + logged_user: >12< + percent_complete: >NULL< + priority: >NULL< + rrule: >FREQ=MONTHLY;INTERVAL=1;BYDAY=TU,FR< + status: >NULL< + summary: >Dentist\'s Council meeting< + transp: >OPAQUE< + tz_id: >Europe/Helsinki< + uid: >174F9C2A-1223-40C4-9E06-6E91F2EA9491< + url: >NULL< + user_no: >12< + + count: >2< + diff --git a/testing/tests/regression-suite/000-Setup-PUT-collection-user3.test b/testing/tests/regression-suite/000-Setup-PUT-collection-user3.test index 128cbe25..aaab7d77 100644 --- a/testing/tests/regression-suite/000-Setup-PUT-collection-user3.test +++ b/testing/tests/regression-suite/000-Setup-PUT-collection-user3.test @@ -37,18 +37,18 @@ BEGIN:VEVENT SEQUENCE:3 TRANSP:OPAQUE UID:55F6EC95-2D21-4FB9-9AE1-A6E020B44AEB -DTSTART;TZID=Europe/Helsinki:20081001T133000 +DTSTART;TZID=Europe/Helsinki:20081025T133000 DTSTAMP:20081024T200745Z RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=1TU,2WE,3TH,4FR;BYMONTH=3,6,9,10,12 -SUMMARY:User 3 +SUMMARY:Irregular meeting for User 3 CREATED:20081024T200734Z -DTEND;TZID=Europe/Helsinki:20081025T133000 +DTEND;TZID=Europe/Helsinki:20081025T143000 END:VEVENT BEGIN:VEVENT SEQUENCE:2 TRANSP:OPAQUE UID:174F9C2A-1223-40C4-9E06-6E91F2EA9491 -DTSTART;TZID=Europe/Helsinki:20081017T084500 +DTSTART;TZID=Europe/Helsinki:20081024T084500 DTSTAMP:20081025T112653Z SUMMARY:Dentist\'s Council meeting RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=TU,FR @@ -57,3 +57,21 @@ DTEND;TZID=Europe/Helsinki:20081024T113000 END:VEVENT END:VCALENDAR ENDDATA + + +QUERY +SELECT caldav_data.user_no, caldav_type, logged_user, + uid, dtstamp, dtstart, dtend, due, summary, location, + description, priority, class, transp, rrule, url, + percent_complete, tz_id, status, + caldav_data AS "A1 CalDAV DATA" +FROM caldav_data JOIN calendar_item USING(dav_name) +WHERE caldav_data.dav_name ~ '^/user3/home/' +ENDQUERY + +QUERY +SELECT count(*) + FROM caldav_data JOIN calendar_item USING(dav_name) + WHERE caldav_data.dav_name ~ '^/user3/home/' +ENDQUERY + diff --git a/testing/tests/regression-suite/000-Setup-PUT-collection-user6.result b/testing/tests/regression-suite/000-Setup-PUT-collection-user6.result new file mode 100644 index 00000000..f77d58f1 --- /dev/null +++ b/testing/tests/regression-suite/000-Setup-PUT-collection-user6.result @@ -0,0 +1,118 @@ +HTTP/1.1 100 Continue + +HTTP/1.1 200 OK +Date: Dow, 01 Jan 2000 00:00:00 GMT +DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule +Content-Length: 0 +Content-Type: text/plain; charset="utf-8" + + A1 CalDAV DATA: >BEGIN:VCALENDAR +PRODID:-//davical.org//NONSGML AWL Calendar//EN +VERSION:2.0 +CALSCALE:GREGORIAN +BEGIN:VEVENT +SEQUENCE:3 +TRANSP:OPAQUE +UID:55F6EC95-2D21-4FB9-9AE1-A6E020B44AEB +DTSTART;TZID=Europe/Helsinki:20081025T133000 +DTSTAMP:20081024T200745Z +RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=1TU,2WE,3TH,4FR;BYMONTH=3,6,9,10,12 +SUMMARY:Irregular meeting for User 3 +CREATED:20081024T200734Z +DTEND;TZID=Europe/Helsinki:20081025T143000 +END:VEVENT +BEGIN:VTIMEZONE +TZID:Europe/Helsinki +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +DTSTART:19810329T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +TZNAME:EEST +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +DTSTART:19961027T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +TZNAME:EET +END:STANDARD +END:VTIMEZONE +END:VCALENDAR +< + caldav_type: >VEVENT< + class: >PUBLIC< + description: >NULL< + dtend: >2008-10-25 14:30:00+13< + dtstamp: >2008-10-24 20:07:45< + dtstart: >2008-10-25 13:30:00+13< + due: >NULL< + location: >NULL< + logged_user: >15< + percent_complete: >NULL< + priority: >NULL< + rrule: >FREQ=MONTHLY;INTERVAL=1;BYDAY=1TU,2WE,3TH,4FR;BYMONTH=3,6,9,10,12< + status: >NULL< + summary: >Irregular meeting for User 3< + transp: >OPAQUE< + tz_id: >Europe/Helsinki< + uid: >55F6EC95-2D21-4FB9-9AE1-A6E020B44AEB< + url: >NULL< + user_no: >15< + + A1 CalDAV DATA: >BEGIN:VCALENDAR +PRODID:-//davical.org//NONSGML AWL Calendar//EN +VERSION:2.0 +CALSCALE:GREGORIAN +BEGIN:VEVENT +SEQUENCE:2 +TRANSP:OPAQUE +UID:174F9C2A-1223-40C4-9E06-6E91F2EA9491 +DTSTART;TZID=Europe/Helsinki:20081024T084500 +DTSTAMP:20081025T112653Z +SUMMARY:Dentist\'s Council meeting +RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=TU,FR +CREATED:20081025T112648Z +DTEND;TZID=Europe/Helsinki:20081024T113000 +END:VEVENT +BEGIN:VTIMEZONE +TZID:Europe/Helsinki +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +DTSTART:19810329T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +TZNAME:EEST +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +DTSTART:19961027T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +TZNAME:EET +END:STANDARD +END:VTIMEZONE +END:VCALENDAR +< + caldav_type: >VEVENT< + class: >PUBLIC< + description: >NULL< + dtend: >2008-10-24 11:30:00+13< + dtstamp: >2008-10-25 11:26:53< + dtstart: >2008-10-24 08:45:00+13< + due: >NULL< + location: >NULL< + logged_user: >15< + percent_complete: >NULL< + priority: >NULL< + rrule: >FREQ=MONTHLY;INTERVAL=1;BYDAY=TU,FR< + status: >NULL< + summary: >Dentist\'s Council meeting< + transp: >OPAQUE< + tz_id: >Europe/Helsinki< + uid: >174F9C2A-1223-40C4-9E06-6E91F2EA9491< + url: >NULL< + user_no: >15< + + count: >2< + diff --git a/testing/tests/regression-suite/000-Setup-PUT-collection-user6.test b/testing/tests/regression-suite/000-Setup-PUT-collection-user6.test new file mode 100644 index 00000000..a4d29963 --- /dev/null +++ b/testing/tests/regression-suite/000-Setup-PUT-collection-user6.test @@ -0,0 +1,77 @@ +# +# PUT a calendar collection to user3 so we have some starting events +# +# There is no CalDAV defined behaviour for this. +# +TYPE=PUT +URL=http://mycaldav/caldav.php/User%20Six/home/ +HEADER=User-Agent: RSCDS Testing/0.9.x +HEADER=Content-Type: text/calendar; charset=utf-8 +AUTH=User Six:user6 + +HEAD + +BEGINDATA +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Apple Inc.//iCal 3.0//EN +CALSCALE:GREGORIAN +BEGIN:VTIMEZONE +TZID:Europe/Helsinki +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +DTSTART:19810329T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +TZNAME:EEST +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +DTSTART:19961027T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +TZNAME:EET +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SEQUENCE:3 +TRANSP:OPAQUE +UID:55F6EC95-2D21-4FB9-9AE1-A6E020B44AEB +DTSTART;TZID=Europe/Helsinki:20081025T133000 +DTSTAMP:20081024T200745Z +RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=1TU,2WE,3TH,4FR;BYMONTH=3,6,9,10,12 +SUMMARY:Irregular meeting for User 3 +CREATED:20081024T200734Z +DTEND;TZID=Europe/Helsinki:20081025T143000 +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +TRANSP:OPAQUE +UID:174F9C2A-1223-40C4-9E06-6E91F2EA9491 +DTSTART;TZID=Europe/Helsinki:20081024T084500 +DTSTAMP:20081025T112653Z +SUMMARY:Dentist\'s Council meeting +RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=TU,FR +CREATED:20081025T112648Z +DTEND;TZID=Europe/Helsinki:20081024T113000 +END:VEVENT +END:VCALENDAR +ENDDATA + + +QUERY +SELECT caldav_data.user_no, caldav_type, logged_user, + uid, dtstamp, dtstart, dtend, due, summary, location, + description, priority, class, transp, rrule, url, + percent_complete, tz_id, status, + caldav_data AS "A1 CalDAV DATA" +FROM caldav_data JOIN calendar_item USING(dav_name) +WHERE caldav_data.dav_name ~ '^/User Six/home/' +ENDQUERY + +QUERY +SELECT count(*) + FROM caldav_data JOIN calendar_item USING(dav_name) + WHERE caldav_data.dav_name ~ '^/User Six/home/' +ENDQUERY + diff --git a/testing/tests/regression-suite/308-Chandler-OPTIONS-3.result b/testing/tests/regression-suite/308-Chandler-OPTIONS-3.result index 1ca23afb..7b628fd2 100644 --- a/testing/tests/regression-suite/308-Chandler-OPTIONS-3.result +++ b/testing/tests/regression-suite/308-Chandler-OPTIONS-3.result @@ -1,7 +1,7 @@ -HTTP/1.1 200 OK +HTTP/1.1 404 Not Found Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule -Allow: OPTIONS, GET, HEAD, PUT, DELETE, PROPFIND, MKCOL, MKCALENDAR, LOCK, UNLOCK, REPORT, PROPPATCH, POST -Content-Length: 0 +Content-Length: 37 Content-Type: text/plain; charset="utf-8" +No collection found at that location. \ No newline at end of file diff --git a/testing/tests/regression-suite/309-Chandler-PROPFIND-3.result b/testing/tests/regression-suite/309-Chandler-PROPFIND-3.result index 248a2652..3405dab3 100644 --- a/testing/tests/regression-suite/309-Chandler-PROPFIND-3.result +++ b/testing/tests/regression-suite/309-Chandler-PROPFIND-3.result @@ -1,25 +1,9 @@ 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 -ETag: "0c15a8bfc4ea79dadb1dc60a6e443e04" -Content-Length: 497 +ETag: "07474790757c5e1b526ce4901889d6d3" +Content-Length: 68 Content-Type: text/xml; charset="utf-8" - - - /caldav.php/user1/home/.chandler/ - - - - - - - - /user1/home/.chandler/ - "a150b8e5ab38926a153b90c6546dc610" - - HTTP/1.1 200 OK - - - + diff --git a/testing/tests/regression-suite/605-Soho-MKCALENDAR.test b/testing/tests/regression-suite/605-Soho-MKCALENDAR.test index 0c30cc67..6f6a3719 100644 --- a/testing/tests/regression-suite/605-Soho-MKCALENDAR.test +++ b/testing/tests/regression-suite/605-Soho-MKCALENDAR.test @@ -20,7 +20,7 @@ BEGINDATA - SOHO+collection + SOHO collection #0000FFFF @@ -35,5 +35,5 @@ BEGINDATA ENDDATA QUERY -SELECT * FROM collection WHERE dav_name = '/user1/SOHO+collection'; +SELECT * FROM collection WHERE dav_name = '/user1/SOHO collection'; ENDQUERY diff --git a/testing/tests/regression-suite/606-Soho-PROPPATCH.result b/testing/tests/regression-suite/606-Soho-PROPPATCH.result index 2a47668a..cebfef59 100644 --- a/testing/tests/regression-suite/606-Soho-PROPPATCH.result +++ b/testing/tests/regression-suite/606-Soho-PROPPATCH.result @@ -1,14 +1,14 @@ HTTP/1.1 200 OK Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule -Content-Location: /caldav.php/user1/SOHO+collection/ -Content-Length: 235 +Content-Location: /caldav.php/user1/SOHO%20collection/ +Content-Length: 237 Content-Type: text/xml; charset="utf-8" - /caldav.php/user1/SOHO+collection/ + /caldav.php/user1/SOHO%20collection/ All requested changes were made. diff --git a/testing/tests/regression-suite/606-Soho-PROPPATCH.test b/testing/tests/regression-suite/606-Soho-PROPPATCH.test index 40065594..9eaabf2e 100644 --- a/testing/tests/regression-suite/606-Soho-PROPPATCH.test +++ b/testing/tests/regression-suite/606-Soho-PROPPATCH.test @@ -6,7 +6,7 @@ TYPE=PROPPATCH # Note the URL doesn't have a trailling '/' -URL=http://mycaldav/caldav.php/user1/SOHO+collection +URL=http://mycaldav/caldav.php/user1/SOHO%20collection HEADER=User-Agent: SOHO Organizer/6.5.2 libcurl/7.17.0 OpenSSL/0.9.7l zlib/1.2.3 libssh2/0.17 HEADER=Content-Type: text/xml; charset=utf-8 @@ -22,5 +22,5 @@ ENDDATA QUERY SELECT * FROM collection JOIN property USING (dav_name) - WHERE collection.dav_name = '/user1/SOHO+collection'; + WHERE collection.dav_name = '/user1/SOHO collection'; ENDQUERY diff --git a/testing/tests/regression-suite/840-Spec-PROPPATCH-1.result b/testing/tests/regression-suite/840-Spec-PROPPATCH-1.result index 30ceaa83..23289049 100644 --- a/testing/tests/regression-suite/840-Spec-PROPPATCH-1.result +++ b/testing/tests/regression-suite/840-Spec-PROPPATCH-1.result @@ -29,13 +29,13 @@ changed_last_30se: >1< changed_by: >10< changed_last_30se: >1< - dav_name: >/user1/SOHO+collection/< + dav_name: >/user1/SOHO collection/< property_name: >com.apple.ical::calendarcolor< property_value: >#FF8000FF< changed_by: >10< changed_last_30se: >1< - dav_name: >/user1/SOHO+collection/< + dav_name: >/user1/SOHO collection/< property_name: >urn:ietf:params:xml:ns:caldav:calendar-description< property_value: >Calendar description< diff --git a/testing/tests/regression-suite/861-Spec-REPORT-principal.result b/testing/tests/regression-suite/861-Spec-REPORT-principal.result index dd8dd5d5..b6a1d8a8 100644 --- a/testing/tests/regression-suite/861-Spec-REPORT-principal.result +++ b/testing/tests/regression-suite/861-Spec-REPORT-principal.result @@ -1,8 +1,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 -ETag: "faa56d44ed127283279410dc201ac450" -Content-Length: 3757 +ETag: "8f4ecca4cebdbf26f6a439035ec65d61" +Content-Length: 4038 Content-Type: text/xml; charset="utf-8" @@ -91,6 +91,18 @@ Content-Type: text/xml; charset="utf-8" HTTP/1.1 200 OK + + /caldav.php/User%20Six/ + + + + /caldav.php/User%20Six/ + + User 6 + + HTTP/1.1 200 OK + + /caldav.php/manager1/ diff --git a/testing/tests/regression-suite/910-Space-OPTIONS.result b/testing/tests/regression-suite/910-Space-OPTIONS.result new file mode 100644 index 00000000..1ca23afb --- /dev/null +++ b/testing/tests/regression-suite/910-Space-OPTIONS.result @@ -0,0 +1,7 @@ +HTTP/1.1 200 OK +Date: Dow, 01 Jan 2000 00:00:00 GMT +DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule +Allow: OPTIONS, GET, HEAD, PUT, DELETE, PROPFIND, MKCOL, MKCALENDAR, LOCK, UNLOCK, REPORT, PROPPATCH, POST +Content-Length: 0 +Content-Type: text/plain; charset="utf-8" + diff --git a/testing/tests/regression-suite/910-Space-OPTIONS.test b/testing/tests/regression-suite/910-Space-OPTIONS.test new file mode 100644 index 00000000..b1cd5e76 --- /dev/null +++ b/testing/tests/regression-suite/910-Space-OPTIONS.test @@ -0,0 +1,6 @@ +# +# Do an OPTIONS request on a URL with a space +TYPE=OPTIONS +URL=http://mycaldav/caldav.php/User%20Six/home/ +AUTH=User Six:user6 +HEAD diff --git a/testing/tests/regression-suite/911-Space-MKCALENDAR.result b/testing/tests/regression-suite/911-Space-MKCALENDAR.result new file mode 100644 index 00000000..3c0f6c62 --- /dev/null +++ b/testing/tests/regression-suite/911-Space-MKCALENDAR.result @@ -0,0 +1,13 @@ +HTTP/1.1 201 Created +Date: Dow, 01 Jan 2000 00:00:00 GMT +DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule +Cache-Control: no-cache +Content-Length: 0 +Content-Type: text/plain; charset="utf-8" + + dav_displayname: >Space Calendar< + is_calendar: >1< + parent_container: >/User Six/< +public_events_onl: >0< + user_no: >15< + diff --git a/testing/tests/regression-suite/911-Space-MKCALENDAR.test b/testing/tests/regression-suite/911-Space-MKCALENDAR.test new file mode 100644 index 00000000..a97fd57a --- /dev/null +++ b/testing/tests/regression-suite/911-Space-MKCALENDAR.test @@ -0,0 +1,30 @@ +# +# MKCALENDAR test for username with a space +# +TYPE=MKCALENDAR +URL=http://mycaldav/caldav.php/User%20Six/DEADBEEF-EFD9-4F0F-9BDC-5335E04D47E0/ +HEADER=Content-Type: text/xml +AUTH=User Six:user6 +HEAD + + +BEGINDATA + + + + + Space Calendar + #391B71A0 + + + +ENDDATA + + +QUERY +SELECT user_no, parent_container, dav_displayname, + is_calendar, public_events_only +FROM collection +WHERE dav_name = '/User Six/DEADBEEF-EFD9-4F0F-9BDC-5335E04D47E0/'; +ENDQUERY + diff --git a/testing/tests/regression-suite/912-Space-PROPFIND.result b/testing/tests/regression-suite/912-Space-PROPFIND.result new file mode 100644 index 00000000..854617fc --- /dev/null +++ b/testing/tests/regression-suite/912-Space-PROPFIND.result @@ -0,0 +1,81 @@ +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 +ETag: "d9e474e1d625534857e60566ab57af44" +Content-Length: 1914 +Content-Type: text/xml; charset="utf-8" + + + + + /caldav.php/User%20Six/ + + + + + + + User 6 + "6892a953b4f6ae6179a98759c8de3de2" + + HTTP/1.1 200 OK + + + + + + + + + HTTP/1.1 404 Not Found + + + + /caldav.php/User%20Six/home/ + + + + + + + + home + "6cc47e929c65c2342a578dcba09a2492" + + HTTP/1.1 200 OK + + + + + + + + + HTTP/1.1 404 Not Found + + + + /caldav.php/User%20Six/DEADBEEF-EFD9-4F0F-9BDC-5335E04D47E0/ + + + + + + + + Space Calendar + "d0711d9c33f6c22359ee83adb7751cda" + #391B71A0 + + HTTP/1.1 200 OK + + + + + + + + HTTP/1.1 404 Not Found + + + diff --git a/testing/tests/regression-suite/912-Space-PROPFIND.test b/testing/tests/regression-suite/912-Space-PROPFIND.test new file mode 100644 index 00000000..5060485c --- /dev/null +++ b/testing/tests/regression-suite/912-Space-PROPFIND.test @@ -0,0 +1,26 @@ +# +# Testing username with a space, similar to iCal 10.5 +# +TYPE=PROPFIND +URL=http://mycaldav/caldav.php/User%20Six/ +AUTH=User Six:user6 +HEAD + +HEADER=User-Agent: DAVKit/3.0.4 (652); CalendarStore/3.0.5 (841); iCal/3.0.5 (1270); Mac OS X/10.5.5 (9F33) +HEADER=Content-Type: text/xml +HEADER=Depth: 1 + +BEGINDATA + + + + + + + + + + + + +ENDDATA