aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/sabre/dav/tests
diff options
context:
space:
mode:
authorredmatrix <git@macgirvin.com>2016-05-10 17:26:44 -0700
committerredmatrix <git@macgirvin.com>2016-05-10 17:26:44 -0700
commit0b02a6d123b2014705998c94ddf3d460948d3eac (patch)
tree78ff2cab9944a4f5ab3f80ec93cbe1120de90bb2 /vendor/sabre/dav/tests
parent40b5b6e9d2da7ab65c8b4d38cdceac83a4d78deb (diff)
downloadvolse-hubzilla-0b02a6d123b2014705998c94ddf3d460948d3eac.tar.gz
volse-hubzilla-0b02a6d123b2014705998c94ddf3d460948d3eac.tar.bz2
volse-hubzilla-0b02a6d123b2014705998c94ddf3d460948d3eac.zip
initial sabre upgrade (needs lots of work - to wit: authentication, redo the browser interface, and rework event export/import)
Diffstat (limited to 'vendor/sabre/dav/tests')
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php733
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractTest.php184
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Backend/Mock.php267
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Backend/PDOMySQLTest.php6
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Backend/PDOSqliteTest.php16
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/CalendarObjectTest.php50
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryParserTest.php540
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryValidatorTest.php70
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/CalendarTest.php74
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDTest.php55
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDbyDayTest.php49
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDoubleEventsTest.php6
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyReportTest.php71
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyRequestTest.php282
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/GetEventsByTimerangeTest.php68
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/ICSExportPluginTest.php544
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Issue203Test.php60
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Issue205Test.php4
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Issue211Test.php4
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Issue220Test.php6
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Issue228Test.php4
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/CollectionTest.php4
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/NodeTest.php10
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/Notification/InviteReplyTest.php134
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/Notification/InviteTest.php230
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/Notification/SystemStatusTest.php61
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/OutboxPostTest.php545
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/PluginTest.php869
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Principal/UserTest.php2
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Property/AllowedSharingModesTest.php46
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Property/InviteTest.php196
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Property/ScheduleCalendarTranspTest.php99
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Property/SupportedCalendarComponentSetTest.php67
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Property/SupportedCalendarDataTest.php44
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Property/SupportedCollationSetTest.php46
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Schedule/IMip/Mock.php50
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/Schedule/OutboxTest.php21
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/ShareableCalendarTest.php10
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/SharedCalendarTest.php91
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/SharingPluginTest.php84
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/UserCalendarsSharedCalendarsTest.php93
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/UserCalendarsTest.php207
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/ValidateICalTest.php91
-rw-r--r--vendor/sabre/dav/tests/Sabre/CalDAV/VersionTest.php17
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/AbstractPluginTest.php2
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryParserTest.php329
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryTest.php134
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookRootTest.php2
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookTest.php56
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php129
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php30
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php48
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOSqliteTest.php57
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/CardTest.php33
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/MultiGetTest.php50
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/PluginTest.php96
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/Property/SupportedAddressDataTest.php44
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/SogoStripContentTypeTest.php17
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/TestUtil.php18
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/UserAddressBooksTest.php162
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/VCFExportTest.php25
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/ValidateVCardTest.php47
-rw-r--r--vendor/sabre/dav/tests/Sabre/CardDAV/VersionTest.php17
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/AbstractServer.php3
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractBasicTest.php69
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php124
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/ApacheTest.php53
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/FileTest.php2
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php82
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/PDOMySQLTest.php18
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Auth/PluginTest.php94
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/BasicNodeTest.php1
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Browser/GuessContentTypeTest.php10
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Browser/MapGetToPropFindTest.php14
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Browser/PluginTest.php154
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/ClientMock.php18
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/ClientTest.php1071
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/FSExt/FileTest.php73
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/FSExt/NodeTest.php178
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/FSExt/ServerTest.php236
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/HTTPPreferParsingTest.php146
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/HttpDeleteTest.php90
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/HttpPutTest.php273
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Issue33Test.php11
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/FSTest.php31
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Locks/GetIfConditionsTest.php375
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Locks/MSWordTest.php31
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Locks/PluginTest.php501
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Mock/Collection.php61
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Mock/File.php46
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Mount/PluginTest.php10
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/ObjectTreeTest.php2
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/FileMock.php54
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/PluginTest.php119
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php38
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Property/GetLastModifiedTest.php75
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Property/HrefListTest.php91
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Property/HrefTest.php119
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Property/ResourceTypeTest.php111
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Property/ResponseListTest.php19
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Property/ResponseTest.php230
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Property/SupportedReportSetTest.php128
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/ServerCopyMoveTest.php268
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/ServerEventsTest.php74
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/ServerMKCOLTest.php159
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/ServerPluginTest.php37
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/ServerPreconditionTest.php227
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/ServerPropsTest.php342
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/ServerRangeTest.php350
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/ServerSimpleTest.php454
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/ServerUpdatePropertiesTest.php75
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/SimpleFileTest.php4
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/TemporaryFileFilterTest.php159
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/TestPlugin.php14
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Tree/FilesystemTest.php88
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/TreeTest.php104
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/URLUtilTest.php131
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/XMLUtilTest.php284
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/ACLMethodTest.php55
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/AllowAccessTest.php92
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/BlockAccessTest.php100
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/ExpandPropertiesTest.php102
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/PluginAdminTest.php49
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/PluginPropertiesTest.php335
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/PluginUpdatePropertiesTest.php64
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/AbstractPDOTest.php50
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php144
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/PDOMySQLTest.php33
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/PDOSqliteTest.php23
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalCollectionTest.php9
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalPropertySearchTest.php192
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalSearchPropertySetTest.php32
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalTest.php10
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/Property/ACLRestrictionsTest.php35
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/Property/ACLTest.php335
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/Property/CurrentUserPrivilegeSetTest.php68
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/Property/PrincipalTest.php181
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/Property/SupportedPrivilegeSetTest.php106
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/SimplePluginTest.php51
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVACL/VersionTest.php17
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAVServerTest.php120
-rw-r--r--vendor/sabre/dav/tests/Sabre/HTTP/AWSAuthTest.php242
-rw-r--r--vendor/sabre/dav/tests/Sabre/HTTP/BasicAuthTest.php132
-rw-r--r--vendor/sabre/dav/tests/Sabre/HTTP/DigestAuthTest.php228
-rw-r--r--vendor/sabre/dav/tests/Sabre/HTTP/RequestTest.php150
-rw-r--r--vendor/sabre/dav/tests/Sabre/HTTP/ResponseMock.php35
-rw-r--r--vendor/sabre/dav/tests/Sabre/HTTP/ResponseTest.php70
-rw-r--r--vendor/sabre/dav/tests/Sabre/HTTP/UtilTest.php78
-rw-r--r--vendor/sabre/dav/tests/Sabre/HTTP/VersionTest.php17
-rw-r--r--vendor/sabre/dav/tests/Sabre/TestUtil.php7
-rw-r--r--vendor/sabre/dav/tests/bootstrap.php37
-rw-r--r--vendor/sabre/dav/tests/phpunit.xml34
152 files changed, 5877 insertions, 12293 deletions
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php
index 2224f0b63..25f8b1794 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractPDOTest.php
@@ -1,8 +1,10 @@
<?php
namespace Sabre\CalDAV\Backend;
+
use Sabre\CalDAV;
use Sabre\DAV;
+use Sabre\DAV\PropPatch;
abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
@@ -22,7 +24,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
$backend = new PDO($this->pdo);
$calendars = $backend->getCalendarsForUser('principals/user2');
- $this->assertEquals(array(),$calendars);
+ $this->assertEquals([], $calendars);
}
@@ -32,28 +34,28 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
function testCreateCalendarAndFetch() {
$backend = new PDO($this->pdo);
- $returnedId = $backend->createCalendar('principals/user2','somerandomid',array(
- '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new CalDAV\Property\SupportedCalendarComponentSet(array('VEVENT')),
- '{DAV:}displayname' => 'Hello!',
- '{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp' => new CalDAV\Property\ScheduleCalendarTransp('transparent'),
- ));
+ $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', [
+ '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new CalDAV\Xml\Property\SupportedCalendarComponentSet(['VEVENT']),
+ '{DAV:}displayname' => 'Hello!',
+ '{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp' => new CalDAV\Xml\Property\ScheduleCalendarTransp('transparent'),
+ ]);
$calendars = $backend->getCalendarsForUser('principals/user2');
- $elementCheck = array(
- 'id' => $returnedId,
- 'uri' => 'somerandomid',
- '{DAV:}displayname' => 'Hello!',
- '{urn:ietf:params:xml:ns:caldav}calendar-description' => '',
- '{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp' => new CalDAV\Property\ScheduleCalendarTransp('transparent'),
- );
+ $elementCheck = [
+ 'id' => $returnedId,
+ 'uri' => 'somerandomid',
+ '{DAV:}displayname' => 'Hello!',
+ '{urn:ietf:params:xml:ns:caldav}calendar-description' => '',
+ '{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp' => new CalDAV\Xml\Property\ScheduleCalendarTransp('transparent'),
+ ];
- $this->assertInternalType('array',$calendars);
- $this->assertEquals(1,count($calendars));
+ $this->assertInternalType('array', $calendars);
+ $this->assertEquals(1, count($calendars));
- foreach($elementCheck as $name=>$value) {
+ foreach ($elementCheck as $name => $value) {
$this->assertArrayHasKey($name, $calendars[0]);
- $this->assertEquals($value,$calendars[0][$name]);
+ $this->assertEquals($value, $calendars[0][$name]);
}
@@ -67,38 +69,41 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
$backend = new PDO($this->pdo);
//Creating a new calendar
- $newId = $backend->createCalendar('principals/user2','somerandomid',array());
+ $newId = $backend->createCalendar('principals/user2', 'somerandomid', []);
+
+ $propPatch = new PropPatch([
+ '{DAV:}displayname' => 'myCalendar',
+ '{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp' => new CalDAV\Xml\Property\ScheduleCalendarTransp('transparent'),
+ ]);
// Updating the calendar
- $result = $backend->updateCalendar($newId,array(
- '{DAV:}displayname' => 'myCalendar',
- '{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp' => new CalDAV\Property\ScheduleCalendarTransp('transparent'),
- ));
+ $backend->updateCalendar($newId, $propPatch);
+ $result = $propPatch->commit();
// Verifying the result of the update
- $this->assertEquals(true, $result);
+ $this->assertTrue($result);
// Fetching all calendars from this user
$calendars = $backend->getCalendarsForUser('principals/user2');
// Checking if all the information is still correct
- $elementCheck = array(
- 'id' => $newId,
- 'uri' => 'somerandomid',
- '{DAV:}displayname' => 'myCalendar',
- '{urn:ietf:params:xml:ns:caldav}calendar-description' => '',
- '{urn:ietf:params:xml:ns:caldav}calendar-timezone' => '',
- '{http://calendarserver.org/ns/}getctag' => '2',
- '{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp' => new CalDAV\Property\ScheduleCalendarTransp('transparent'),
- );
+ $elementCheck = [
+ 'id' => $newId,
+ 'uri' => 'somerandomid',
+ '{DAV:}displayname' => 'myCalendar',
+ '{urn:ietf:params:xml:ns:caldav}calendar-description' => '',
+ '{urn:ietf:params:xml:ns:caldav}calendar-timezone' => '',
+ '{http://calendarserver.org/ns/}getctag' => 'http://sabre.io/ns/sync/2',
+ '{urn:ietf:params:xml:ns:caldav}schedule-calendar-transp' => new CalDAV\Xml\Property\ScheduleCalendarTransp('transparent'),
+ ];
- $this->assertInternalType('array',$calendars);
- $this->assertEquals(1,count($calendars));
+ $this->assertInternalType('array', $calendars);
+ $this->assertEquals(1, count($calendars));
- foreach($elementCheck as $name=>$value) {
+ foreach ($elementCheck as $name => $value) {
$this->assertArrayHasKey($name, $calendars[0]);
- $this->assertEquals($value,$calendars[0][$name]);
+ $this->assertEquals($value, $calendars[0][$name]);
}
@@ -112,19 +117,22 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
$backend = new PDO($this->pdo);
//Creating a new calendar
- $newId = $backend->createCalendar('principals/user2','somerandomid',array());
+ $newId = $backend->createCalendar('principals/user2', 'somerandomid', []);
- // Updating the calendar
- $result = $backend->updateCalendar($newId,array(
+ $propPatch = new PropPatch([
'{DAV:}displayname' => 'myCalendar',
'{DAV:}yourmom' => 'wittycomment',
- ));
+ ]);
+
+ // Updating the calendar
+ $backend->updateCalendar($newId, $propPatch);
+ $propPatch->commit();
// Verifying the result of the update
- $this->assertEquals(array(
- '403' => array('{DAV:}yourmom' => null),
- '424' => array('{DAV:}displayname' => null),
- ), $result);
+ $this->assertEquals([
+ '{DAV:}yourmom' => 403,
+ '{DAV:}displayname' => 424,
+ ], $propPatch->getResult());
}
@@ -134,15 +142,15 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
function testDeleteCalendar() {
$backend = new PDO($this->pdo);
- $returnedId = $backend->createCalendar('principals/user2','somerandomid',array(
- '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new CalDAV\Property\SupportedCalendarComponentSet(array('VEVENT')),
- '{DAV:}displayname' => 'Hello!',
- ));
+ $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', [
+ '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new CalDAV\Xml\Property\SupportedCalendarComponentSet(['VEVENT']),
+ '{DAV:}displayname' => 'Hello!',
+ ]);
$backend->deleteCalendar($returnedId);
$calendars = $backend->getCalendarsForUser('principals/user2');
- $this->assertEquals(array(),$calendars);
+ $this->assertEquals([], $calendars);
}
@@ -155,30 +163,78 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
$backend = new PDO($this->pdo);
//Creating a new calendar
- $newId = $backend->createCalendar('principals/user2','somerandomid',array(
+ $newId = $backend->createCalendar('principals/user2', 'somerandomid', [
'{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => 'blabla',
- ));
+ ]);
}
function testCreateCalendarObject() {
$backend = new PDO($this->pdo);
- $returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
+ $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
$object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
$backend->createCalendarObject($returnedId, 'random-id', $object);
$result = $this->pdo->query('SELECT etag, size, calendardata, firstoccurence, lastoccurence, componenttype FROM calendarobjects WHERE uri = "random-id"');
- $this->assertEquals(array(
- 'etag' => md5($object),
- 'size' => strlen($object),
- 'calendardata' => $object,
+ $this->assertEquals([
+ 'etag' => md5($object),
+ 'size' => strlen($object),
+ 'calendardata' => $object,
'firstoccurence' => strtotime('20120101'),
- 'lastoccurence' => strtotime('20120101')+(3600*24),
- 'componenttype' => 'VEVENT',
- ), $result->fetch(\PDO::FETCH_ASSOC));
+ 'lastoccurence' => strtotime('20120101') + (3600 * 24),
+ 'componenttype' => 'VEVENT',
+ ], $result->fetch(\PDO::FETCH_ASSOC));
+
+ }
+ function testGetMultipleObjects() {
+
+ $backend = new PDO($this->pdo);
+ $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
+
+ $object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
+
+ $backend->createCalendarObject($returnedId, 'id-1', $object);
+ $backend->createCalendarObject($returnedId, 'id-2', $object);
+
+ $check = [
+ [
+ 'id' => 1,
+ 'etag' => '"' . md5($object) . '"',
+ 'uri' => 'id-1',
+ 'size' => strlen($object),
+ 'calendardata' => $object,
+ 'lastmodified' => null,
+ 'calendarid' => $returnedId,
+ ],
+ [
+ 'id' => 2,
+ 'etag' => '"' . md5($object) . '"',
+ 'uri' => 'id-2',
+ 'size' => strlen($object),
+ 'calendardata' => $object,
+ 'lastmodified' => null,
+ 'calendarid' => $returnedId,
+ ],
+ ];
+
+ $result = $backend->getMultipleCalendarObjects($returnedId, [ 'id-1', 'id-2' ]);
+
+ foreach ($check as $index => $props) {
+
+ foreach ($props as $key => $value) {
+
+ if ($key !== 'lastmodified') {
+ $this->assertEquals($value, $result[$index][$key]);
+ } else {
+ $this->assertTrue(isset($result[$index][$key]));
+ }
+
+ }
+
+ }
}
@@ -189,7 +245,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
function testCreateCalendarObjectNoComponent() {
$backend = new PDO($this->pdo);
- $returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
+ $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
$object = "BEGIN:VCALENDAR\r\nBEGIN:VTIMEZONE\r\nEND:VTIMEZONE\r\nEND:VCALENDAR\r\n";
@@ -203,21 +259,21 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
function testCreateCalendarObjectDuration() {
$backend = new PDO($this->pdo);
- $returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
+ $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
$object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120101\r\nDURATION:P2D\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
$backend->createCalendarObject($returnedId, 'random-id', $object);
$result = $this->pdo->query('SELECT etag, size, calendardata, firstoccurence, lastoccurence, componenttype FROM calendarobjects WHERE uri = "random-id"');
- $this->assertEquals(array(
- 'etag' => md5($object),
- 'size' => strlen($object),
- 'calendardata' => $object,
+ $this->assertEquals([
+ 'etag' => md5($object),
+ 'size' => strlen($object),
+ 'calendardata' => $object,
'firstoccurence' => strtotime('20120101'),
- 'lastoccurence' => strtotime('20120101')+(3600*48),
- 'componenttype' => 'VEVENT',
- ), $result->fetch(\PDO::FETCH_ASSOC));
+ 'lastoccurence' => strtotime('20120101') + (3600 * 48),
+ 'componenttype' => 'VEVENT',
+ ], $result->fetch(\PDO::FETCH_ASSOC));
}
@@ -227,21 +283,45 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
function testCreateCalendarObjectNoDTEND() {
$backend = new PDO($this->pdo);
- $returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
+ $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
$object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE-TIME:20120101T100000Z\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
$backend->createCalendarObject($returnedId, 'random-id', $object);
$result = $this->pdo->query('SELECT etag, size, calendardata, firstoccurence, lastoccurence, componenttype FROM calendarobjects WHERE uri = "random-id"');
- $this->assertEquals(array(
- 'etag' => md5($object),
- 'size' => strlen($object),
- 'calendardata' => $object,
+ $this->assertEquals([
+ 'etag' => md5($object),
+ 'size' => strlen($object),
+ 'calendardata' => $object,
'firstoccurence' => strtotime('2012-01-01 10:00:00'),
- 'lastoccurence' => strtotime('2012-01-01 10:00:00'),
- 'componenttype' => 'VEVENT',
- ), $result->fetch(\PDO::FETCH_ASSOC));
+ 'lastoccurence' => strtotime('2012-01-01 10:00:00'),
+ 'componenttype' => 'VEVENT',
+ ], $result->fetch(\PDO::FETCH_ASSOC));
+
+ }
+
+ /**
+ * @depends testCreateCalendarObject
+ */
+ function testCreateCalendarObjectWithDTEND() {
+
+ $backend = new PDO($this->pdo);
+ $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
+
+ $object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE-TIME:20120101T100000Z\r\nDTEND:20120101T110000Z\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
+
+ $backend->createCalendarObject($returnedId, 'random-id', $object);
+
+ $result = $this->pdo->query('SELECT etag, size, calendardata, firstoccurence, lastoccurence, componenttype FROM calendarobjects WHERE uri = "random-id"');
+ $this->assertEquals([
+ 'etag' => md5($object),
+ 'size' => strlen($object),
+ 'calendardata' => $object,
+ 'firstoccurence' => strtotime('2012-01-01 10:00:00'),
+ 'lastoccurence' => strtotime('2012-01-01 11:00:00'),
+ 'componenttype' => 'VEVENT',
+ ], $result->fetch(\PDO::FETCH_ASSOC));
}
@@ -251,21 +331,21 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
function testCreateCalendarObjectInfiniteReccurence() {
$backend = new PDO($this->pdo);
- $returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
+ $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
- $object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE-TIME:20120101T100000Z\r\nRRULE:FREQ=DAILY\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
+ $object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE-TIME:20120101T100000Z\r\nRRULE:FREQ=DAILY\r\nUID:foo\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
$backend->createCalendarObject($returnedId, 'random-id', $object);
$result = $this->pdo->query('SELECT etag, size, calendardata, firstoccurence, lastoccurence, componenttype FROM calendarobjects WHERE uri = "random-id"');
- $this->assertEquals(array(
- 'etag' => md5($object),
- 'size' => strlen($object),
- 'calendardata' => $object,
+ $this->assertEquals([
+ 'etag' => md5($object),
+ 'size' => strlen($object),
+ 'calendardata' => $object,
'firstoccurence' => strtotime('2012-01-01 10:00:00'),
- 'lastoccurence' => strtotime(PDO::MAX_DATE),
- 'componenttype' => 'VEVENT',
- ), $result->fetch(\PDO::FETCH_ASSOC));
+ 'lastoccurence' => strtotime(PDO::MAX_DATE),
+ 'componenttype' => 'VEVENT',
+ ], $result->fetch(\PDO::FETCH_ASSOC));
}
@@ -275,21 +355,21 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
function testCreateCalendarObjectEndingReccurence() {
$backend = new PDO($this->pdo);
- $returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
+ $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
- $object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE-TIME:20120101T100000Z\r\nDTEND;VALUE=DATE-TIME:20120101T110000Z\r\nRRULE:FREQ=DAILY;COUNT=1000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
+ $object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE-TIME:20120101T100000Z\r\nDTEND;VALUE=DATE-TIME:20120101T110000Z\r\nUID:foo\r\nRRULE:FREQ=DAILY;COUNT=1000\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
$backend->createCalendarObject($returnedId, 'random-id', $object);
$result = $this->pdo->query('SELECT etag, size, calendardata, firstoccurence, lastoccurence, componenttype FROM calendarobjects WHERE uri = "random-id"');
- $this->assertEquals(array(
- 'etag' => md5($object),
- 'size' => strlen($object),
- 'calendardata' => $object,
+ $this->assertEquals([
+ 'etag' => md5($object),
+ 'size' => strlen($object),
+ 'calendardata' => $object,
'firstoccurence' => strtotime('2012-01-01 10:00:00'),
- 'lastoccurence' => strtotime('2012-01-01 11:00:00') + (3600 * 24 * 999),
- 'componenttype' => 'VEVENT',
- ), $result->fetch(\PDO::FETCH_ASSOC));
+ 'lastoccurence' => strtotime('2012-01-01 11:00:00') + (3600 * 24 * 999),
+ 'componenttype' => 'VEVENT',
+ ], $result->fetch(\PDO::FETCH_ASSOC));
}
@@ -299,21 +379,21 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
function testCreateCalendarObjectTask() {
$backend = new PDO($this->pdo);
- $returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
+ $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
$object = "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nDUE;VALUE=DATE-TIME:20120101T100000Z\r\nEND:VTODO\r\nEND:VCALENDAR\r\n";
$backend->createCalendarObject($returnedId, 'random-id', $object);
$result = $this->pdo->query('SELECT etag, size, calendardata, firstoccurence, lastoccurence, componenttype FROM calendarobjects WHERE uri = "random-id"');
- $this->assertEquals(array(
- 'etag' => md5($object),
- 'size' => strlen($object),
- 'calendardata' => $object,
+ $this->assertEquals([
+ 'etag' => md5($object),
+ 'size' => strlen($object),
+ 'calendardata' => $object,
'firstoccurence' => null,
- 'lastoccurence' => null,
- 'componenttype' => 'VTODO',
- ), $result->fetch(\PDO::FETCH_ASSOC));
+ 'lastoccurence' => null,
+ 'componenttype' => 'VTODO',
+ ], $result->fetch(\PDO::FETCH_ASSOC));
}
@@ -323,22 +403,42 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
function testGetCalendarObjects() {
$backend = new PDO($this->pdo);
- $returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
+ $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
$object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
$backend->createCalendarObject($returnedId, 'random-id', $object);
- $data = $backend->getCalendarObjects($returnedId,'random-id');
+ $data = $backend->getCalendarObjects($returnedId, 'random-id');
$this->assertEquals(1, count($data));
$data = $data[0];
$this->assertEquals($returnedId, $data['calendarid']);
$this->assertEquals('random-id', $data['uri']);
- $this->assertEquals(strlen($object),$data['size']);
+ $this->assertEquals(strlen($object), $data['size']);
}
+ /**
+ * @depends testCreateCalendarObject
+ */
+ function testGetCalendarObjectByUID() {
+
+ $backend = new PDO($this->pdo);
+ $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
+
+ $object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nDTSTART;VALUE=DATE:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
+ $backend->createCalendarObject($returnedId, 'random-id', $object);
+
+ $this->assertNull(
+ $backend->getCalendarObjectByUID('principals/user2', 'bar')
+ );
+ $this->assertEquals(
+ 'somerandomid/random-id',
+ $backend->getCalendarObjectByUID('principals/user2', 'foo')
+ );
+
+ }
/**
* @depends testCreateCalendarObject
@@ -346,14 +446,14 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
function testUpdateCalendarObject() {
$backend = new PDO($this->pdo);
- $returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
+ $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
$object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
$object2 = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20130101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
$backend->createCalendarObject($returnedId, 'random-id', $object);
$backend->updateCalendarObject($returnedId, 'random-id', $object2);
- $data = $backend->getCalendarObject($returnedId,'random-id');
+ $data = $backend->getCalendarObject($returnedId, 'random-id');
$this->assertEquals($object2, $data['calendardata']);
$this->assertEquals($returnedId, $data['calendarid']);
@@ -368,13 +468,13 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
function testDeleteCalendarObject() {
$backend = new PDO($this->pdo);
- $returnedId = $backend->createCalendar('principals/user2','somerandomid',array());
+ $returnedId = $backend->createCalendar('principals/user2', 'somerandomid', []);
$object = "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n";
$backend->createCalendarObject($returnedId, 'random-id', $object);
$backend->deleteCalendarObject($returnedId, 'random-id');
- $data = $backend->getCalendarObject($returnedId,'random-id');
+ $data = $backend->getCalendarObject($returnedId, 'random-id');
$this->assertNull($data);
}
@@ -382,24 +482,24 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
function testCalendarQueryNoResult() {
$abstract = new PDO($this->pdo);
- $filters = array(
- 'name' => 'VCALENDAR',
- 'comp-filters' => array(
- array(
- 'name' => 'VJOURNAL',
- 'comp-filters' => array(),
- 'prop-filters' => array(),
+ $filters = [
+ 'name' => 'VCALENDAR',
+ 'comp-filters' => [
+ [
+ 'name' => 'VJOURNAL',
+ 'comp-filters' => [],
+ 'prop-filters' => [],
'is-not-defined' => false,
- 'time-range' => null,
- ),
- ),
- 'prop-filters' => array(),
+ 'time-range' => null,
+ ],
+ ],
+ 'prop-filters' => [],
'is-not-defined' => false,
- 'time-range' => null,
- );
+ 'time-range' => null,
+ ];
- $this->assertEquals(array(
- ), $abstract->calendarQuery(1, $filters));
+ $this->assertEquals([
+ ], $abstract->calendarQuery(1, $filters));
}
@@ -409,25 +509,25 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
$backend->createCalendarObject(1, "todo", "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n");
$backend->createCalendarObject(1, "event", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n");
- $filters = array(
- 'name' => 'VCALENDAR',
- 'comp-filters' => array(
- array(
- 'name' => 'VTODO',
- 'comp-filters' => array(),
- 'prop-filters' => array(),
+ $filters = [
+ 'name' => 'VCALENDAR',
+ 'comp-filters' => [
+ [
+ 'name' => 'VTODO',
+ 'comp-filters' => [],
+ 'prop-filters' => [],
'is-not-defined' => false,
- 'time-range' => null,
- ),
- ),
- 'prop-filters' => array(),
+ 'time-range' => null,
+ ],
+ ],
+ 'prop-filters' => [],
'is-not-defined' => false,
- 'time-range' => null,
- );
+ 'time-range' => null,
+ ];
- $this->assertEquals(array(
+ $this->assertEquals([
"todo",
- ), $backend->calendarQuery(1, $filters));
+ ], $backend->calendarQuery(1, $filters));
}
function testCalendarQueryTodoNotMatch() {
@@ -436,32 +536,32 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
$backend->createCalendarObject(1, "todo", "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n");
$backend->createCalendarObject(1, "event", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n");
- $filters = array(
- 'name' => 'VCALENDAR',
- 'comp-filters' => array(
- array(
- 'name' => 'VTODO',
- 'comp-filters' => array(),
- 'prop-filters' => array(
- array(
- 'name' => 'summary',
- 'text-match' => null,
- 'time-range' => null,
- 'param-filters' => array(),
+ $filters = [
+ 'name' => 'VCALENDAR',
+ 'comp-filters' => [
+ [
+ 'name' => 'VTODO',
+ 'comp-filters' => [],
+ 'prop-filters' => [
+ [
+ 'name' => 'summary',
+ 'text-match' => null,
+ 'time-range' => null,
+ 'param-filters' => [],
'is-not-defined' => false,
- ),
- ),
+ ],
+ ],
'is-not-defined' => false,
- 'time-range' => null,
- ),
- ),
- 'prop-filters' => array(),
+ 'time-range' => null,
+ ],
+ ],
+ 'prop-filters' => [],
'is-not-defined' => false,
- 'time-range' => null,
- );
+ 'time-range' => null,
+ ];
- $this->assertEquals(array(
- ), $backend->calendarQuery(1, $filters));
+ $this->assertEquals([
+ ], $backend->calendarQuery(1, $filters));
}
@@ -471,13 +571,13 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
$backend->createCalendarObject(1, "todo", "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n");
$backend->createCalendarObject(1, "event", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n");
- $filters = array(
- 'name' => 'VCALENDAR',
- 'comp-filters' => array(),
- 'prop-filters' => array(),
+ $filters = [
+ 'name' => 'VCALENDAR',
+ 'comp-filters' => [],
+ 'prop-filters' => [],
'is-not-defined' => false,
- 'time-range' => null,
- );
+ 'time-range' => null,
+ ];
$result = $backend->calendarQuery(1, $filters);
$this->assertTrue(in_array('todo', $result));
@@ -492,28 +592,28 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
$backend->createCalendarObject(1, "event", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n");
$backend->createCalendarObject(1, "event2", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART;VALUE=DATE:20120103\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n");
- $filters = array(
- 'name' => 'VCALENDAR',
- 'comp-filters' => array(
- array(
- 'name' => 'VEVENT',
- 'comp-filters' => array(),
- 'prop-filters' => array(),
+ $filters = [
+ 'name' => 'VCALENDAR',
+ 'comp-filters' => [
+ [
+ 'name' => 'VEVENT',
+ 'comp-filters' => [],
+ 'prop-filters' => [],
'is-not-defined' => false,
- 'time-range' => array(
+ 'time-range' => [
'start' => new \DateTime('20120103'),
'end' => new \DateTime('20120104'),
- ),
- ),
- ),
- 'prop-filters' => array(),
+ ],
+ ],
+ ],
+ 'prop-filters' => [],
'is-not-defined' => false,
- 'time-range' => null,
- );
+ 'time-range' => null,
+ ];
- $this->assertEquals(array(
+ $this->assertEquals([
"event2",
- ), $backend->calendarQuery(1, $filters));
+ ], $backend->calendarQuery(1, $filters));
}
function testCalendarQueryTimeRangeNoEnd() {
@@ -523,28 +623,261 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
$backend->createCalendarObject(1, "event", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120101\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n");
$backend->createCalendarObject(1, "event2", "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nDTSTART:20120103\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n");
- $filters = array(
- 'name' => 'VCALENDAR',
- 'comp-filters' => array(
- array(
- 'name' => 'VEVENT',
- 'comp-filters' => array(),
- 'prop-filters' => array(),
+ $filters = [
+ 'name' => 'VCALENDAR',
+ 'comp-filters' => [
+ [
+ 'name' => 'VEVENT',
+ 'comp-filters' => [],
+ 'prop-filters' => [],
'is-not-defined' => false,
- 'time-range' => array(
+ 'time-range' => [
'start' => new \DateTime('20120102'),
- 'end' => null,
- ),
- ),
- ),
- 'prop-filters' => array(),
+ 'end' => null,
+ ],
+ ],
+ ],
+ 'prop-filters' => [],
'is-not-defined' => false,
- 'time-range' => null,
- );
+ 'time-range' => null,
+ ];
- $this->assertEquals(array(
+ $this->assertEquals([
"event2",
- ), $backend->calendarQuery(1, $filters));
+ ], $backend->calendarQuery(1, $filters));
}
+
+ function testGetChanges() {
+
+ $backend = new PDO($this->pdo);
+ $id = $backend->createCalendar(
+ 'principals/user1',
+ 'bla',
+ []
+ );
+ $result = $backend->getChangesForCalendar($id, null, 1);
+
+ $this->assertEquals([
+ 'syncToken' => 1,
+ 'modified' => [],
+ 'deleted' => [],
+ 'added' => [],
+ ], $result);
+
+ $currentToken = $result['syncToken'];
+
+ $dummyTodo = "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n";
+
+ $backend->createCalendarObject($id, "todo1.ics", $dummyTodo);
+ $backend->createCalendarObject($id, "todo2.ics", $dummyTodo);
+ $backend->createCalendarObject($id, "todo3.ics", $dummyTodo);
+ $backend->updateCalendarObject($id, "todo1.ics", $dummyTodo);
+ $backend->deleteCalendarObject($id, "todo2.ics");
+
+ $result = $backend->getChangesForCalendar($id, $currentToken, 1);
+
+ $this->assertEquals([
+ 'syncToken' => 6,
+ 'modified' => ["todo1.ics"],
+ 'deleted' => ["todo2.ics"],
+ 'added' => ["todo3.ics"],
+ ], $result);
+
+ $result = $backend->getChangesForCalendar($id, null, 1);
+
+ $this->assertEquals([
+ 'syncToken' => 6,
+ 'modified' => [],
+ 'deleted' => [],
+ 'added' => ["todo1.ics", "todo3.ics"],
+ ], $result);
+ }
+
+ function testCreateSubscriptions() {
+
+ $props = [
+ '{http://calendarserver.org/ns/}source' => new \Sabre\DAV\Xml\Property\Href('http://example.org/cal.ics', false),
+ '{DAV:}displayname' => 'cal',
+ '{http://apple.com/ns/ical/}refreshrate' => 'P1W',
+ '{http://apple.com/ns/ical/}calendar-color' => '#FF00FFFF',
+ '{http://calendarserver.org/ns/}subscribed-strip-todos' => true,
+ //'{http://calendarserver.org/ns/}subscribed-strip-alarms' => true,
+ '{http://calendarserver.org/ns/}subscribed-strip-attachments' => true,
+ ];
+
+ $backend = new PDO($this->pdo);
+ $backend->createSubscription('principals/user1', 'sub1', $props);
+
+ $subs = $backend->getSubscriptionsForUser('principals/user1');
+
+ $expected = $props;
+ $expected['id'] = 1;
+ $expected['uri'] = 'sub1';
+ $expected['principaluri'] = 'principals/user1';
+
+ unset($expected['{http://calendarserver.org/ns/}source']);
+ $expected['source'] = 'http://example.org/cal.ics';
+
+ $this->assertEquals(1, count($subs));
+ foreach ($expected as $k => $v) {
+ $this->assertEquals($subs[0][$k], $expected[$k]);
+ }
+
+ }
+
+ /**
+ * @expectedException \Sabre\DAV\Exception\Forbidden
+ */
+ function testCreateSubscriptionFail() {
+
+ $props = [
+ ];
+
+ $backend = new PDO($this->pdo);
+ $backend->createSubscription('principals/user1', 'sub1', $props);
+
+ }
+
+ function testUpdateSubscriptions() {
+
+ $props = [
+ '{http://calendarserver.org/ns/}source' => new \Sabre\DAV\Xml\Property\Href('http://example.org/cal.ics', false),
+ '{DAV:}displayname' => 'cal',
+ '{http://apple.com/ns/ical/}refreshrate' => 'P1W',
+ '{http://apple.com/ns/ical/}calendar-color' => '#FF00FFFF',
+ '{http://calendarserver.org/ns/}subscribed-strip-todos' => true,
+ //'{http://calendarserver.org/ns/}subscribed-strip-alarms' => true,
+ '{http://calendarserver.org/ns/}subscribed-strip-attachments' => true,
+ ];
+
+ $backend = new PDO($this->pdo);
+ $backend->createSubscription('principals/user1', 'sub1', $props);
+
+ $newProps = [
+ '{DAV:}displayname' => 'new displayname',
+ '{http://calendarserver.org/ns/}source' => new \Sabre\DAV\Xml\Property\Href('http://example.org/cal2.ics', false),
+ ];
+
+ $propPatch = new DAV\PropPatch($newProps);
+ $backend->updateSubscription(1, $propPatch);
+ $result = $propPatch->commit();
+
+ $this->assertTrue($result);
+
+ $subs = $backend->getSubscriptionsForUser('principals/user1');
+
+ $expected = array_merge($props, $newProps);
+ $expected['id'] = 1;
+ $expected['uri'] = 'sub1';
+ $expected['principaluri'] = 'principals/user1';
+
+ unset($expected['{http://calendarserver.org/ns/}source']);
+ $expected['source'] = 'http://example.org/cal2.ics';
+
+ $this->assertEquals(1, count($subs));
+ foreach ($expected as $k => $v) {
+ $this->assertEquals($subs[0][$k], $expected[$k]);
+ }
+
+ }
+
+ function testUpdateSubscriptionsFail() {
+
+ $props = [
+ '{http://calendarserver.org/ns/}source' => new \Sabre\DAV\Xml\Property\Href('http://example.org/cal.ics', false),
+ '{DAV:}displayname' => 'cal',
+ '{http://apple.com/ns/ical/}refreshrate' => 'P1W',
+ '{http://apple.com/ns/ical/}calendar-color' => '#FF00FFFF',
+ '{http://calendarserver.org/ns/}subscribed-strip-todos' => true,
+ //'{http://calendarserver.org/ns/}subscribed-strip-alarms' => true,
+ '{http://calendarserver.org/ns/}subscribed-strip-attachments' => true,
+ ];
+
+ $backend = new PDO($this->pdo);
+ $backend->createSubscription('principals/user1', 'sub1', $props);
+
+ $propPatch = new DAV\PropPatch([
+ '{DAV:}displayname' => 'new displayname',
+ '{http://calendarserver.org/ns/}source' => new \Sabre\DAV\Xml\Property\Href('http://example.org/cal2.ics', false),
+ '{DAV:}unknown' => 'foo',
+ ]);
+
+ $backend->updateSubscription(1, $propPatch);
+ $propPatch->commit();
+
+ $this->assertEquals([
+ '{DAV:}unknown' => 403,
+ '{DAV:}displayname' => 424,
+ '{http://calendarserver.org/ns/}source' => 424,
+ ], $propPatch->getResult());
+
+ }
+
+ function testDeleteSubscriptions() {
+
+ $props = [
+ '{http://calendarserver.org/ns/}source' => new \Sabre\DAV\Xml\Property\Href('http://example.org/cal.ics', false),
+ '{DAV:}displayname' => 'cal',
+ '{http://apple.com/ns/ical/}refreshrate' => 'P1W',
+ '{http://apple.com/ns/ical/}calendar-color' => '#FF00FFFF',
+ '{http://calendarserver.org/ns/}subscribed-strip-todos' => true,
+ //'{http://calendarserver.org/ns/}subscribed-strip-alarms' => true,
+ '{http://calendarserver.org/ns/}subscribed-strip-attachments' => true,
+ ];
+
+ $backend = new PDO($this->pdo);
+ $backend->createSubscription('principals/user1', 'sub1', $props);
+
+ $newProps = [
+ '{DAV:}displayname' => 'new displayname',
+ '{http://calendarserver.org/ns/}source' => new \Sabre\DAV\Xml\Property\Href('http://example.org/cal2.ics', false),
+ ];
+
+ $backend->deleteSubscription(1);
+
+ $subs = $backend->getSubscriptionsForUser('principals/user1');
+ $this->assertEquals(0, count($subs));
+ }
+
+ function testSchedulingMethods() {
+
+ $backend = new PDO($this->pdo);
+
+ $calData = "BEGIN:VCALENDAR\r\nEND:VCALENDAR\r\n";
+
+ $backend->createSchedulingObject(
+ 'principals/user1',
+ 'schedule1.ics',
+ $calData
+ );
+
+ $expected = [
+ 'calendardata' => $calData,
+ 'uri' => 'schedule1.ics',
+ 'etag' => '"' . md5($calData) . '"',
+ 'size' => strlen($calData)
+ ];
+
+ $result = $backend->getSchedulingObject('principals/user1', 'schedule1.ics');
+ foreach ($expected as $k => $v) {
+ $this->assertArrayHasKey($k, $result);
+ $this->assertEquals($v, $result[$k]);
+ }
+
+ $results = $backend->getSchedulingObjects('principals/user1');
+
+ $this->assertEquals(1, count($results));
+ $result = $results[0];
+ foreach ($expected as $k => $v) {
+ $this->assertEquals($v, $result[$k]);
+ }
+
+ $backend->deleteSchedulingObject('principals/user1', 'schedule1.ics');
+ $result = $backend->getSchedulingObject('principals/user1', 'schedule1.ics');
+
+ $this->assertNull($result);
+
+ }
+
}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractTest.php
index 04fb16df5..7f642efc9 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/AbstractTest.php
@@ -2,37 +2,92 @@
namespace Sabre\CalDAV\Backend;
+use
+ Sabre\DAV\PropPatch;
+
class AbstractTest extends \PHPUnit_Framework_TestCase {
function testUpdateCalendar() {
$abstract = new AbstractMock();
- $this->assertEquals(false, $abstract->updateCalendar('randomid', array('{DAV:}displayname' => 'anything')));
+ $propPatch = new PropPatch(['{DAV:}displayname' => 'anything']);
+
+ $abstract->updateCalendar('randomid', $propPatch);
+ $result = $propPatch->commit();
+
+ $this->assertFalse($result);
}
function testCalendarQuery() {
$abstract = new AbstractMock();
- $filters = array(
- 'name' => 'VCALENDAR',
- 'comp-filters' => array(
- array(
- 'name' => 'VEVENT',
- 'comp-filters' => array(),
- 'prop-filters' => array(),
+ $filters = [
+ 'name' => 'VCALENDAR',
+ 'comp-filters' => [
+ [
+ 'name' => 'VEVENT',
+ 'comp-filters' => [],
+ 'prop-filters' => [],
'is-not-defined' => false,
- 'time-range' => null,
- ),
- ),
- 'prop-filters' => array(),
+ 'time-range' => null,
+ ],
+ ],
+ 'prop-filters' => [],
'is-not-defined' => false,
- 'time-range' => null,
+ 'time-range' => null,
+ ];
+
+ $this->assertEquals([
+ 'event1.ics',
+ ], $abstract->calendarQuery(1, $filters));
+
+ }
+
+ function testGetCalendarObjectByUID() {
+
+ $abstract = new AbstractMock();
+ $this->assertNull(
+ $abstract->getCalendarObjectByUID('principal1', 'zim')
+ );
+ $this->assertEquals(
+ 'cal1/event1.ics',
+ $abstract->getCalendarObjectByUID('principal1', 'foo')
+ );
+ $this->assertNull(
+ $abstract->getCalendarObjectByUID('principal3', 'foo')
);
+ $this->assertNull(
+ $abstract->getCalendarObjectByUID('principal1', 'shared')
+ );
+
+ }
- $this->assertEquals(array(
+ function testGetMultipleCalendarObjects() {
+
+ $abstract = new AbstractMock();
+ $result = $abstract->getMultipleCalendarObjects(1, [
'event1.ics',
- ), $abstract->calendarQuery(1, $filters));
+ 'task1.ics',
+ ]);
+
+ $expected = [
+ [
+ 'id' => 1,
+ 'calendarid' => 1,
+ 'uri' => 'event1.ics',
+ 'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n",
+ ],
+ [
+ 'id' => 2,
+ 'calendarid' => 1,
+ 'uri' => 'task1.ics',
+ 'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n",
+ ],
+ ];
+
+ $this->assertEquals($expected, $result);
+
}
@@ -40,49 +95,84 @@ class AbstractTest extends \PHPUnit_Framework_TestCase {
class AbstractMock extends AbstractBackend {
- function getCalendarsForUser($principalUri) { }
- function createCalendar($principalUri,$calendarUri,array $properties) { }
+ function getCalendarsForUser($principalUri) {
+
+ return [
+ [
+ 'id' => 1,
+ 'principaluri' => 'principal1',
+ 'uri' => 'cal1',
+ ],
+ [
+ 'id' => 2,
+ 'principaluri' => 'principal1',
+ '{http://sabredav.org/ns}owner-principal' => 'principal2',
+ 'uri' => 'cal1',
+ ],
+ ];
+
+ }
+ function createCalendar($principalUri, $calendarUri, array $properties) { }
function deleteCalendar($calendarId) { }
- function getCalendarObjects($calendarId) {
-
- return array(
- array(
- 'id' => 1,
- 'calendarid' => 1,
- 'uri' => 'event1.ics',
- ),
- array(
- 'id' => 2,
- 'calendarid' => 1,
- 'uri' => 'task1.ics',
- ),
- );
+ function getCalendarObjects($calendarId) {
+
+ switch ($calendarId) {
+ case 1:
+ return [
+ [
+ 'id' => 1,
+ 'calendarid' => 1,
+ 'uri' => 'event1.ics',
+ ],
+ [
+ 'id' => 2,
+ 'calendarid' => 1,
+ 'uri' => 'task1.ics',
+ ],
+ ];
+ case 2:
+ return [
+ [
+ 'id' => 3,
+ 'calendarid' => 2,
+ 'uri' => 'shared-event.ics',
+ ]
+ ];
+ }
}
- function getCalendarObject($calendarId,$objectUri) {
- switch($objectUri) {
+ function getCalendarObject($calendarId, $objectUri) {
+
+ switch ($objectUri) {
case 'event1.ics' :
- return array(
- 'id' => 1,
- 'calendarid' => 1,
- 'uri' => 'event1.ics',
- 'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n",
- );
+ return [
+ 'id' => 1,
+ 'calendarid' => 1,
+ 'uri' => 'event1.ics',
+ 'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n",
+ ];
case 'task1.ics' :
- return array(
- 'id' => 1,
- 'calendarid' => 1,
- 'uri' => 'event1.ics',
+ return [
+ 'id' => 2,
+ 'calendarid' => 1,
+ 'uri' => 'task1.ics',
'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VTODO\r\nEND:VTODO\r\nEND:VCALENDAR\r\n",
- );
+ ];
+ case 'shared-event.ics' :
+ return [
+ 'id' => 3,
+ 'calendarid' => 2,
+ 'uri' => 'event1.ics',
+ 'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:shared\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n",
+ ];
}
}
- function createCalendarObject($calendarId,$objectUri,$calendarData) { }
- function updateCalendarObject($calendarId,$objectUri,$calendarData) { }
- function deleteCalendarObject($calendarId,$objectUri) { }
+ function createCalendarObject($calendarId, $objectUri, $calendarData) { }
+ function updateCalendarObject($calendarId, $objectUri, $calendarData) { }
+ function deleteCalendarObject($calendarId, $objectUri) { }
}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/Mock.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/Mock.php
index d196297f7..4412e5531 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/Mock.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/Mock.php
@@ -1,21 +1,25 @@
<?php
namespace Sabre\CalDAV\Backend;
+
use Sabre\DAV;
use Sabre\CalDAV;
-class Mock extends AbstractBackend implements NotificationSupport, SharingSupport {
+class Mock extends AbstractBackend {
+
+ protected $calendarData;
+ protected $calendars;
- private $calendarData;
- private $calendars;
- private $notifications;
- private $shares = array();
+ function __construct(array $calendars = [], array $calendarData = []) {
- function __construct(array $calendars, array $calendarData, array $notifications = array()) {
+ foreach ($calendars as &$calendar) {
+ if (!isset($calendar['id'])) {
+ $calendar['id'] = DAV\UUIDUtil::getUUID();
+ }
+ }
$this->calendars = $calendars;
$this->calendarData = $calendarData;
- $this->notifications = $notifications;
}
@@ -38,8 +42,8 @@ class Mock extends AbstractBackend implements NotificationSupport, SharingSuppor
*/
function getCalendarsForUser($principalUri) {
- $r = array();
- foreach($this->calendars as $row) {
+ $r = [];
+ foreach ($this->calendars as $row) {
if ($row['principaluri'] == $principalUri) {
$r[] = $row;
}
@@ -63,71 +67,29 @@ class Mock extends AbstractBackend implements NotificationSupport, SharingSuppor
* @param array $properties
* @return string|int
*/
- function createCalendar($principalUri,$calendarUri,array $properties) {
+ function createCalendar($principalUri, $calendarUri, array $properties) {
$id = DAV\UUIDUtil::getUUID();
- $this->calendars[] = array_merge(array(
- 'id' => $id,
- 'principaluri' => $principalUri,
- 'uri' => $calendarUri,
- '{' . CalDAV\Plugin::NS_CALDAV . '}supported-calendar-component-set' => new CalDAV\Property\SupportedCalendarComponentSet(array('VEVENT','VTODO')),
- ), $properties);
+ $this->calendars[] = array_merge([
+ 'id' => $id,
+ 'principaluri' => $principalUri,
+ 'uri' => $calendarUri,
+ '{' . CalDAV\Plugin::NS_CALDAV . '}supported-calendar-component-set' => new CalDAV\Xml\Property\SupportedCalendarComponentSet(['VEVENT', 'VTODO']),
+ ], $properties);
return $id;
}
/**
- * Updates properties on this node,
- *
- * The properties array uses the propertyName in clark-notation as key,
- * and the array value for the property value. In the case a property
- * should be deleted, the property value will be null.
- *
- * This method must be atomic. If one property cannot be changed, the
- * entire operation must fail.
- *
- * If the operation was successful, true can be returned.
- * If the operation failed, false can be returned.
- *
- * Deletion of a non-existent property is always successful.
- *
- * Lastly, it is optional to return detailed information about any
- * failures. In this case an array should be returned with the following
- * structure:
- *
- * array(
- * 403 => array(
- * '{DAV:}displayname' => null,
- * ),
- * 424 => array(
- * '{DAV:}owner' => null,
- * )
- * )
- *
- * In this example it was forbidden to update {DAV:}displayname.
- * (403 Forbidden), which in turn also caused {DAV:}owner to fail
- * (424 Failed Dependency) because the request needs to be atomic.
- *
- * @param string $calendarId
- * @param array $properties
- * @return bool|array
- */
- public function updateCalendar($calendarId, array $properties) {
-
- return false;
-
- }
-
- /**
* Delete a calendar and all it's objects
*
* @param string $calendarId
* @return void
*/
- public function deleteCalendar($calendarId) {
+ function deleteCalendar($calendarId) {
- foreach($this->calendars as $k=>$calendar) {
+ foreach ($this->calendars as $k => $calendar) {
if ($calendar['id'] === $calendarId) {
unset($this->calendars[$k]);
}
@@ -157,17 +119,17 @@ class Mock extends AbstractBackend implements NotificationSupport, SharingSuppor
* @param string $calendarId
* @return array
*/
- public function getCalendarObjects($calendarId) {
+ function getCalendarObjects($calendarId) {
if (!isset($this->calendarData[$calendarId]))
- return array();
+ return [];
$objects = $this->calendarData[$calendarId];
- foreach($objects as $uri => &$object) {
+ foreach ($objects as $uri => &$object) {
$object['calendarid'] = $calendarId;
$object['uri'] = $uri;
-
+ $object['lastmodified'] = null;
}
return $objects;
@@ -185,7 +147,7 @@ class Mock extends AbstractBackend implements NotificationSupport, SharingSuppor
* @param string $objectUri
* @return array
*/
- function getCalendarObject($calendarId,$objectUri) {
+ function getCalendarObject($calendarId, $objectUri) {
if (!isset($this->calendarData[$calendarId][$objectUri])) {
throw new DAV\Exception\NotFound('Object could not be found');
@@ -193,6 +155,7 @@ class Mock extends AbstractBackend implements NotificationSupport, SharingSuppor
$object = $this->calendarData[$calendarId][$objectUri];
$object['calendarid'] = $calendarId;
$object['uri'] = $objectUri;
+ $object['lastmodified'] = null;
return $object;
}
@@ -205,13 +168,14 @@ class Mock extends AbstractBackend implements NotificationSupport, SharingSuppor
* @param string $calendarData
* @return void
*/
- function createCalendarObject($calendarId,$objectUri,$calendarData) {
+ function createCalendarObject($calendarId, $objectUri, $calendarData) {
- $this->calendarData[$calendarId][$objectUri] = array(
+ $this->calendarData[$calendarId][$objectUri] = [
'calendardata' => $calendarData,
- 'calendarid' => $calendarId,
- 'uri' => $objectUri,
- );
+ 'calendarid' => $calendarId,
+ 'uri' => $objectUri,
+ ];
+ return '"' . md5($calendarData) . '"';
}
@@ -223,13 +187,14 @@ class Mock extends AbstractBackend implements NotificationSupport, SharingSuppor
* @param string $calendarData
* @return void
*/
- function updateCalendarObject($calendarId,$objectUri,$calendarData) {
+ function updateCalendarObject($calendarId, $objectUri, $calendarData) {
- $this->calendarData[$calendarId][$objectUri] = array(
+ $this->calendarData[$calendarId][$objectUri] = [
'calendardata' => $calendarData,
- 'calendarid' => $calendarId,
- 'uri' => $objectUri,
- );
+ 'calendarid' => $calendarId,
+ 'uri' => $objectUri,
+ ];
+ return '"' . md5($calendarData) . '"';
}
@@ -240,161 +205,11 @@ class Mock extends AbstractBackend implements NotificationSupport, SharingSuppor
* @param string $objectUri
* @return void
*/
- function deleteCalendarObject($calendarId,$objectUri) {
+ function deleteCalendarObject($calendarId, $objectUri) {
throw new Exception('Not implemented');
}
- /**
- * Returns a list of notifications for a given principal url.
- *
- * The returned array should only consist of implementations of
- * Sabre\CalDAV\Notifications\INotificationType.
- *
- * @param string $principalUri
- * @return array
- */
- public function getNotificationsForPrincipal($principalUri) {
-
- if (isset($this->notifications[$principalUri])) {
- return $this->notifications[$principalUri];
- }
- return array();
-
- }
-
- /**
- * This deletes a specific notifcation.
- *
- * This may be called by a client once it deems a notification handled.
- *
- * @param string $principalUri
- * @param Sabre\CalDAV\Notifications\INotificationType $notification
- * @return void
- */
- public function deleteNotification($principalUri, CalDAV\Notifications\INotificationType $notification) {
-
- foreach($this->notifications[$principalUri] as $key=>$value) {
- if ($notification === $value) {
- unset($this->notifications[$principalUri][$key]);
- }
- }
-
- }
-
- /**
- * Updates the list of shares.
- *
- * The first array is a list of people that are to be added to the
- * calendar.
- *
- * Every element in the add array has the following properties:
- * * href - A url. Usually a mailto: address
- * * commonName - Usually a first and last name, or false
- * * summary - A description of the share, can also be false
- * * readOnly - A boolean value
- *
- * Every element in the remove array is just the address string.
- *
- * Note that if the calendar is currently marked as 'not shared' by and
- * this method is called, the calendar should be 'upgraded' to a shared
- * calendar.
- *
- * @param mixed $calendarId
- * @param array $add
- * @param array $remove
- * @return void
- */
- public function updateShares($calendarId, array $add, array $remove) {
-
- if (!isset($this->shares[$calendarId])) {
- $this->shares[$calendarId] = array();
- }
-
- foreach($add as $val) {
- $val['status'] = CalDAV\SharingPlugin::STATUS_NORESPONSE;
- $this->shares[$calendarId][] = $val;
- }
-
- foreach($this->shares[$calendarId] as $k=>$share) {
-
- if (in_array($share['href'], $remove)) {
- unset($this->shares[$calendarId][$k]);
- }
-
- }
-
- // Re-numbering keys
- $this->shares[$calendarId] = array_values($this->shares[$calendarId]);
-
- }
-
- /**
- * Returns the list of people whom this calendar is shared with.
- *
- * Every element in this array should have the following properties:
- * * href - Often a mailto: address
- * * commonName - Optional, for example a first + last name
- * * status - See the Sabre\CalDAV\SharingPlugin::STATUS_ constants.
- * * readOnly - boolean
- * * summary - Optional, a description for the share
- *
- * @param mixed $calendarId
- * @return array
- */
- public function getShares($calendarId) {
-
- if (!isset($this->shares[$calendarId])) {
- return array();
- }
-
- return $this->shares[$calendarId];
-
- }
-
- /**
- * This method is called when a user replied to a request to share.
- *
- * @param string href The sharee who is replying (often a mailto: address)
- * @param int status One of the SharingPlugin::STATUS_* constants
- * @param string $calendarUri The url to the calendar thats being shared
- * @param string $inReplyTo The unique id this message is a response to
- * @param string $summary A description of the reply
- * @return void
- */
- public function shareReply($href, $status, $calendarUri, $inReplyTo, $summary = null) {
-
- // This operation basically doesn't do anything yet
- if ($status === CalDAV\SharingPlugin::STATUS_ACCEPTED) {
- return 'calendars/blabla/calendar';
- }
-
- }
-
- /**
- * Publishes a calendar
- *
- * @param mixed $calendarId
- * @param bool $value
- * @return void
- */
- public function setPublishStatus($calendarId, $value) {
-
- foreach($this->calendars as $k=>$cal) {
- if ($cal['id'] === $calendarId) {
- if (!$value) {
- unset($cal['{http://calendarserver.org/ns/}publish-url']);
- } else {
- $cal['{http://calendarserver.org/ns/}publish-url'] = 'http://example.org/public/ ' . $calendarId . '.ics';
- }
- return;
- }
- }
-
- throw new DAV\Exception('Calendar with id "' . $calendarId . '" not found');
-
- }
-
}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/PDOMySQLTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/PDOMySQLTest.php
index 15c1d91fd..c215ca171 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/PDOMySQLTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/PDOMySQLTest.php
@@ -14,15 +14,15 @@ class PDOMySQLTest extends AbstractPDOTest {
$pdo = \Sabre\TestUtil::getMySQLDB();
if (!$pdo) $this->markTestSkipped('Could not connect to mysql database');
- $pdo->query('DROP TABLE IF EXISTS calendarobjects, calendars');
+ $pdo->query('DROP TABLE IF EXISTS calendarobjects, calendars, calendarchanges, calendarsubscriptions, schedulingobjects');
$queries = explode(
';',
file_get_contents(__DIR__ . '/../../../../examples/sql/mysql.calendars.sql')
);
- foreach($queries as $query) {
- $query = trim($query," \r\n\t");
+ foreach ($queries as $query) {
+ $query = trim($query, " \r\n\t");
if ($query)
$pdo->exec($query);
}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/PDOSqliteTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/PDOSqliteTest.php
index c50f06986..4074259f2 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/PDOSqliteTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/PDOSqliteTest.php
@@ -6,12 +6,24 @@ use Sabre\CalDAV;
require_once 'Sabre/CalDAV/Backend/AbstractPDOTest.php';
-class PDOSQLiteTest extends AbstractPDOTest {
+class PDOSqliteTest extends AbstractPDOTest {
function setup() {
if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
- $this->pdo = CalDAV\TestUtil::getSQLiteDB();
+
+ if (file_exists(SABRE_TEMPDIR . '/testdb.sqlite'))
+ unlink(SABRE_TEMPDIR . '/testdb.sqlite');
+
+ $pdo = new \PDO('sqlite:' . SABRE_TEMPDIR . '/testdb.sqlite');
+ $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
+
+ // Yup this is definitely not 'fool proof', but good enough for now.
+ $queries = explode(';', file_get_contents(__DIR__ . '/../../../../examples/sql/sqlite.calendars.sql'));
+ foreach ($queries as $query) {
+ $pdo->exec($query);
+ }
+ $this->pdo = $pdo;
}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarObjectTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarObjectTest.php
index eab10eae7..9fc1eee4c 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarObjectTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarObjectTest.php
@@ -43,7 +43,7 @@ class CalendarObjectTest extends \PHPUnit_Framework_TestCase {
$this->assertInternalType('string',$children[0]->getName());
$this->assertInternalType('string',$children[0]->get());
$this->assertInternalType('string',$children[0]->getETag());
- $this->assertEquals('text/calendar; charset=utf-8', $children[0]->getContentType());
+ $this->assertEquals('text/calendar; charset=utf-8; component=vevent', $children[0]->getContentType());
}
@@ -180,6 +180,46 @@ class CalendarObjectTest extends \PHPUnit_Framework_TestCase {
'protected' => true,
),
array(
+ 'privilege' => '{DAV:}read',
+ 'principal' => 'principals/user1/calendar-proxy-write',
+ 'protected' => true,
+ ),
+ array(
+ 'privilege' => '{DAV:}read',
+ 'principal' => 'principals/user1/calendar-proxy-read',
+ 'protected' => true,
+ ),
+ array(
+ 'privilege' => '{DAV:}write',
+ 'principal' => 'principals/user1',
+ 'protected' => true,
+ ),
+ array(
+ 'privilege' => '{DAV:}write',
+ 'principal' => 'principals/user1/calendar-proxy-write',
+ 'protected' => true,
+ ),
+ );
+
+ $children = $this->calendar->getChildren();
+ $this->assertTrue($children[0] instanceof CalendarObject);
+
+ $obj = $children[0];
+ $this->assertEquals($expected, $obj->getACL());
+
+ }
+
+ function testDefaultACL() {
+
+ $backend = new Backend\Mock([], []);
+ $calendarObject = new CalendarObject($backend, ['principaluri' => 'principals/user1'], ['calendarid' => 1, 'uri' => 'foo']);
+ $expected = array(
+ array(
+ 'privilege' => '{DAV:}read',
+ 'principal' => 'principals/user1',
+ 'protected' => true,
+ ),
+ array(
'privilege' => '{DAV:}write',
'principal' => 'principals/user1',
'protected' => true,
@@ -200,12 +240,8 @@ class CalendarObjectTest extends \PHPUnit_Framework_TestCase {
'protected' => true,
),
);
+ $this->assertEquals($expected, $calendarObject->getACL());
- $children = $this->calendar->getChildren();
- $this->assertTrue($children[0] instanceof CalendarObject);
-
- $obj = $children[0];
- $this->assertEquals($expected, $obj->getACL());
}
@@ -278,7 +314,7 @@ END:VCALENDAR";
),
)
));
- $obj = new CalendarObject($backend, array(), array('calendarid' => 1, 'uri' => 'foo'));
+ $obj = new CalendarObject($backend, array('id' => 1), array('uri' => 'foo'));
$this->assertEquals('foo', $obj->get());
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryParserTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryParserTest.php
deleted file mode 100644
index fdfe4de89..000000000
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryParserTest.php
+++ /dev/null
@@ -1,540 +0,0 @@
-<?php
-
-namespace Sabre\CalDAV;
-use Sabre\DAV;
-
-class CalendarQueryParserTest extends \PHPUnit_Framework_TestCase {
-
- function parse($xml) {
-
- $xml =
-'<?xml version="1.0"?>
-<c:calendar-query xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:">
-' . implode("\n", $xml) . '
-</c:calendar-query>';
-
- $dom = DAV\XMLUtil::loadDOMDocument($xml);
-
- $q = new CalendarQueryParser($dom);
- $q->parse();
- return $q->filters;
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\BadRequest
- */
- function testNoFilter() {
-
- $xml = array();
- $this->parse($xml);
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\BadRequest
- */
- function testTwoCompFilter() {
-
- $xml = array(
- '<c:filter>',
- ' <c:comp-filter name="VEVENT" />',
- ' <c:comp-filter name="VEVENT" />',
- '</c:filter>'
- );
- $this->parse($xml);
-
- }
-
- function testBasicFilter() {
-
- $xml = array(
- '<c:filter>',
- ' <c:comp-filter name="VCALENDAR" />',
- '</c:filter>'
- );
- $result = $this->parse($xml);
-
- $expected = array(
- 'name' => 'VCALENDAR',
- 'comp-filters' => array(),
- 'prop-filters' => array(),
- 'is-not-defined' => false,
- 'time-range' => false
- );
-
- $this->assertEquals(
- $expected,
- $result
- );
-
- }
-
- function testCompIsNotDefined() {
-
- $xml = array(
- '<c:filter>',
- ' <c:comp-filter name="VCALENDAR">',
- ' <c:comp-filter name="VEVENT">',
- ' <c:is-not-defined/>',
- ' </c:comp-filter>',
- ' </c:comp-filter>',
- '</c:filter>'
- );
- $result = $this->parse($xml);
-
- $expected = array(
- 'name' => 'VCALENDAR',
- 'comp-filters' => array(
- array(
- 'name' => 'VEVENT',
- 'comp-filters' => array(),
- 'prop-filters' => array(),
- 'is-not-defined' => true,
- 'time-range' => false
- ),
- ),
- 'prop-filters' => array(),
- 'is-not-defined' => false,
- 'time-range' => false
- );
-
- $this->assertEquals(
- $expected,
- $result
- );
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\BadRequest
- */
- function testCompTimeRangeOnVCALENDAR() {
-
- $xml = array(
- '<c:filter>',
- ' <c:comp-filter name="VCALENDAR">',
- ' <c:time-range start="20110101T000000Z" end="20111231T235959Z" />',
- ' </c:comp-filter>',
- '</c:filter>'
- );
- $result = $this->parse($xml);
-
- }
-
- function testCompTimeRange() {
-
- $xml = array(
- '<c:filter>',
- ' <c:comp-filter name="VCALENDAR">',
- ' <c:comp-filter name="VEVENT">',
- ' <c:time-range start="20110101T000000Z" end="20111231T235959Z" />',
- ' </c:comp-filter>',
- ' <c:comp-filter name="VTODO">',
- ' <c:time-range start="20110101T000000Z" />',
- ' </c:comp-filter>',
- ' <c:comp-filter name="VJOURNAL">',
- ' <c:time-range end="20111231T235959Z" />',
- ' </c:comp-filter>',
- ' </c:comp-filter>',
- '</c:filter>'
- );
- $result = $this->parse($xml);
-
- $expected = array(
- 'name' => 'VCALENDAR',
- 'comp-filters' => array(
- array(
- 'name' => 'VEVENT',
- 'comp-filters' => array(),
- 'prop-filters' => array(),
- 'is-not-defined' => false,
- 'time-range' => array(
- 'start' => new \DateTime('2011-01-01 00:00:00', new \DateTimeZone('GMT')),
- 'end' => new \DateTime('2011-12-31 23:59:59', new \DateTimeZone('GMT')),
- ),
- ),
- array(
- 'name' => 'VTODO',
- 'comp-filters' => array(),
- 'prop-filters' => array(),
- 'is-not-defined' => false,
- 'time-range' => array(
- 'start' => new \DateTime('2011-01-01 00:00:00', new \DateTimeZone('GMT')),
- 'end' => null,
- ),
- ),
- array(
- 'name' => 'VJOURNAL',
- 'comp-filters' => array(),
- 'prop-filters' => array(),
- 'is-not-defined' => false,
- 'time-range' => array(
- 'start' => null,
- 'end' => new \DateTime('2011-12-31 23:59:59', new \DateTimeZone('GMT')),
- ),
- ),
- ),
- 'prop-filters' => array(),
- 'is-not-defined' => false,
- 'time-range' => false
- );
-
- $this->assertEquals(
- $expected,
- $result
- );
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\BadRequest
- */
- function testCompTimeRangeBadRange() {
-
- $xml = array(
- '<c:filter>',
- ' <c:comp-filter name="VCALENDAR">',
- ' <c:comp-filter name="VEVENT">',
- ' <c:time-range start="20110101T000000Z" end="20100101T000000Z" />',
- ' </c:comp-filter>',
- ' </c:comp-filter>',
- '</c:filter>'
- );
- $this->parse($xml);
-
- }
-
- function testProp() {
-
- $xml = array(
- '<c:filter>',
- ' <c:comp-filter name="VCALENDAR">',
- ' <c:comp-filter name="VEVENT">',
- ' <c:prop-filter name="SUMMARY">',
- ' <c:text-match>vacation</c:text-match>',
- ' </c:prop-filter>',
- ' </c:comp-filter>',
- ' </c:comp-filter>',
- '</c:filter>'
- );
- $result = $this->parse($xml);
-
- $expected = array(
- 'name' => 'VCALENDAR',
- 'comp-filters' => array(
- array(
- 'name' => 'VEVENT',
- 'is-not-defined' => false,
- 'comp-filters' => array(),
- 'prop-filters' => array(
- array(
- 'name' => 'SUMMARY',
- 'is-not-defined' => false,
- 'param-filters' => array(),
- 'text-match' => array(
- 'negate-condition' => false,
- 'collation' => 'i;ascii-casemap',
- 'value' => 'vacation',
- ),
- 'time-range' => null,
- ),
- ),
- 'time-range' => null,
- ),
- ),
- 'prop-filters' => array(),
- 'is-not-defined' => false,
- 'time-range' => false
- );
-
- $this->assertEquals(
- $expected,
- $result
- );
-
- }
-
- function testComplex() {
-
- $xml = array(
- '<c:filter>',
- ' <c:comp-filter name="VCALENDAR">',
- ' <c:comp-filter name="VEVENT">',
- ' <c:prop-filter name="SUMMARY">',
- ' <c:text-match collation="i;unicode-casemap">vacation</c:text-match>',
- ' </c:prop-filter>',
- ' <c:prop-filter name="DTSTAMP">',
- ' <c:time-range start="20110704T000000Z" />',
- ' </c:prop-filter>',
- ' <c:prop-filter name="ORGANIZER">',
- ' <c:is-not-defined />',
- ' </c:prop-filter>',
- ' <c:prop-filter name="DTSTART">',
- ' <c:param-filter name="VALUE">',
- ' <c:text-match negate-condition="yes">DATE</c:text-match>',
- ' </c:param-filter>',
- ' </c:prop-filter>',
- ' </c:comp-filter>',
- ' </c:comp-filter>',
- '</c:filter>'
- );
- $result = $this->parse($xml);
-
- $expected = array(
- 'name' => 'VCALENDAR',
- 'comp-filters' => array(
- array(
- 'name' => 'VEVENT',
- 'is-not-defined' => false,
- 'comp-filters' => array(),
- 'prop-filters' => array(
- array(
- 'name' => 'SUMMARY',
- 'is-not-defined' => false,
- 'param-filters' => array(),
- 'text-match' => array(
- 'negate-condition' => false,
- 'collation' => 'i;unicode-casemap',
- 'value' => 'vacation',
- ),
- 'time-range' => null,
- ),
- array(
- 'name' => 'DTSTAMP',
- 'is-not-defined' => false,
- 'param-filters' => array(),
- 'text-match' => null,
- 'time-range' => array(
- 'start' => new \DateTime('2011-07-04 00:00:00', new \DateTimeZone('GMT')),
- 'end' => null,
- ),
- ),
- array(
- 'name' => 'ORGANIZER',
- 'is-not-defined' => true,
- 'param-filters' => array(),
- 'text-match' => null,
- 'time-range' => null,
- ),
- array(
- 'name' => 'DTSTART',
- 'is-not-defined' => false,
- 'param-filters' => array(
- array(
- 'name' => 'VALUE',
- 'is-not-defined' => false,
- 'text-match' => array(
- 'negate-condition' => true,
- 'value' => 'DATE',
- 'collation' => 'i;ascii-casemap',
- ),
- ),
- ),
- 'text-match' => null,
- 'time-range' => null,
- ),
- ),
- 'time-range' => null,
- ),
- ),
- 'prop-filters' => array(),
- 'is-not-defined' => false,
- 'time-range' => false
- );
-
- $this->assertEquals(
- $expected,
- $result
- );
-
- }
-
- function testOther1() {
-
- // This body was exactly sent to us from the sabredav mailing list. Checking if this parses correctly.
-
- $body = <<<BLA
-<?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:getetag/>
- </D:prop>
- <C:filter>
- <C:comp-filter name="VCALENDAR">
- <C:comp-filter name="VEVENT">
- <C:time-range start="20090101T000000Z" end="20121202T000000Z"/>
- </C:comp-filter>
- </C:comp-filter>
- </C:filter>
-</C:calendar-query>
-BLA;
-
- $dom = DAV\XMLUtil::loadDOMDocument($body);
-
- $q = new CalendarQueryParser($dom);
- $q->parse();
-
- $this->assertEquals(array(
- '{urn:ietf:params:xml:ns:caldav}calendar-data',
- '{DAV:}getetag',
- ), $q->requestedProperties);
-
- $expectedFilters = array(
- 'name' => 'VCALENDAR',
- 'comp-filters' => array(
- array(
- 'name' => 'VEVENT',
- 'comp-filters' => array(),
- 'prop-filters' => array(),
- 'time-range' => array(
- 'start' => new \DateTime('2009-01-01 00:00:00', new \DateTimeZone('UTC')),
- 'end' => new \DateTime('2012-12-02 00:00:00', new \DateTimeZone('UTC')),
- ),
- 'is-not-defined' => false,
- ),
- ),
- 'prop-filters' => array(),
- 'time-range' => null,
- 'is-not-defined' => false,
- );
-
- $this->assertEquals($expectedFilters, $q->filters);
-
- }
-
- function testExpand() {
-
- $xml = array(
- '<d:prop>',
- ' <c:calendar-data>',
- ' <c:expand start="20110101T000000Z" end="20120101T000000Z"/>',
- ' </c:calendar-data>',
- '</d:prop>',
- '<c:filter>',
- ' <c:comp-filter name="VCALENDAR" />',
- '</c:filter>'
- );
-
- $xml =
-'<?xml version="1.0"?>
-<c:calendar-query xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:">
-' . implode("\n", $xml) . '
-</c:calendar-query>';
-
- $dom = DAV\XMLUtil::loadDOMDocument($xml);
- $q = new CalendarQueryParser($dom);
- $q->parse();
-
-
- $expected = array(
- 'name' => 'VCALENDAR',
- 'comp-filters' => array(),
- 'prop-filters' => array(),
- 'is-not-defined' => false,
- 'time-range' => false
- );
-
- $this->assertEquals(
- $expected,
- $q->filters
- );
-
- $this->assertEquals(array(
- '{urn:ietf:params:xml:ns:caldav}calendar-data',
- ), $q->requestedProperties);
-
- $this->assertEquals(
- array(
- 'start' => new \DateTime('2011-01-01 00:00:00', new \DateTimeZone('UTC')),
- 'end' => new \DateTime('2012-01-01 00:00:00', new \DateTimeZone('UTC')),
- ),
- $q->expand
- );
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\BadRequest
- */
- function testExpandNoStart() {
-
- $xml = array(
- '<d:prop>',
- ' <c:calendar-data>',
- ' <c:expand end="20120101T000000Z"/>',
- ' </c:calendar-data>',
- '</d:prop>',
- '<c:filter>',
- ' <c:comp-filter name="VCALENDAR" />',
- '</c:filter>'
- );
-
- $xml =
-'<?xml version="1.0"?>
-<c:calendar-query xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:">
-' . implode("\n", $xml) . '
-</c:calendar-query>';
-
- $dom = DAV\XMLUtil::loadDOMDocument($xml);
- $q = new CalendarQueryParser($dom);
- $q->parse();
-
- }
- /**
- * @expectedException Sabre\DAV\Exception\BadRequest
- */
- function testExpandNoEnd() {
-
- $xml = array(
- '<d:prop>',
- ' <c:calendar-data>',
- ' <c:expand start="20120101T000000Z"/>',
- ' </c:calendar-data>',
- '</d:prop>',
- '<c:filter>',
- ' <c:comp-filter name="VCALENDAR" />',
- '</c:filter>'
- );
-
- $xml =
-'<?xml version="1.0"?>
-<c:calendar-query xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:">
-' . implode("\n", $xml) . '
-</c:calendar-query>';
-
- $dom = DAV\XMLUtil::loadDOMDocument($xml);
- $q = new CalendarQueryParser($dom);
- $q->parse();
-
- }
- /**
- * @expectedException Sabre\DAV\Exception\BadRequest
- */
- function testExpandBadTimes() {
-
- $xml = array(
- '<d:prop>',
- ' <c:calendar-data>',
- ' <c:expand start="20120101T000000Z" end="19980101T000000Z"/>',
- ' </c:calendar-data>',
- '</d:prop>',
- '<c:filter>',
- ' <c:comp-filter name="VCALENDAR" />',
- '</c:filter>'
- );
-
- $xml =
-'<?xml version="1.0"?>
-<c:calendar-query xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:">
-' . implode("\n", $xml) . '
-</c:calendar-query>';
-
- $dom = DAV\XMLUtil::loadDOMDocument($xml);
- $q = new CalendarQueryParser($dom);
- $q->parse();
-
- }
-}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryValidatorTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryValidatorTest.php
index deb70d205..9822e82e2 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryValidatorTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarQueryValidatorTest.php
@@ -6,6 +6,20 @@ use Sabre\DAV;
class CalendarQueryValidatorTest extends \PHPUnit_Framework_TestCase {
+ function testTopLevelFail() {
+
+ $validator = new CalendarQueryValidator();
+ $vcal = <<<ICS
+BEGIN:VCALENDAR
+BEGIN:VEVENT
+END:VEVENT
+END:VCALENDAR
+ICS;
+ $vcal = VObject\Reader::read($vcal);
+ $this->assertFalse($validator->validate($vcal, ['name' => 'VFOO']));
+
+ }
+
/**
* @dataProvider provider
*/
@@ -35,10 +49,14 @@ class CalendarQueryValidatorTest extends \PHPUnit_Framework_TestCase {
case -1 :
try {
$validator->validate($vObject, $filters);
- } catch (DAV\Exception $e) {
- // Success
- } catch (\LogicException $e) {
- // Success
+ $this->fail('This test was supposed to fail');
+ } catch (\Exception $e) {
+ // We need to test something to be valid for phpunit strict
+ // mode.
+ $this->assertTrue(true);
+ } catch (\Throwable $e) {
+ // PHP7
+ $this->assertTrue(true);
}
break;
@@ -334,6 +352,7 @@ yow;
$blob31 = <<<yow
BEGIN:VCALENDAR
BEGIN:VEVENT
+UID:foobar
DTSTART:20080101T120000Z
DURATION:PT1H
RRULE:FREQ=YEARLY
@@ -344,6 +363,7 @@ yow;
$blob32 = <<<yow
BEGIN:VCALENDAR
BEGIN:VEVENT
+UID:foobar
DTSTART:20080102T120000Z
DURATION:PT1H
RRULE:FREQ=YEARLY
@@ -353,6 +373,7 @@ yow;
$blob33 = <<<yow
BEGIN:VCALENDAR
BEGIN:VEVENT
+UID:foobar
DTSTART;VALUE=DATE:20120628
RRULE:FREQ=DAILY
END:VEVENT
@@ -361,6 +382,7 @@ yow;
$blob34 = <<<yow
BEGIN:VCALENDAR
BEGIN:VEVENT
+UID:foobar
DTSTART;VALUE=DATE:20120628
RRULE:FREQ=DAILY
BEGIN:VALARM
@@ -667,38 +689,38 @@ yow;
array($blob1, $filter3, 0),
array($blob1, $filter4, 1),
- // Subcomponent check
+ // Subcomponent check (4)
array($blob1, $filter5, 0),
array($blob2, $filter5, 1),
- // Property check
+ // Property checki (6)
array($blob1, $filter6, 1),
array($blob1, $filter7, 0),
array($blob1, $filter8, 0),
array($blob1, $filter9, 1),
- // Subcomponent + property
+ // Subcomponent + property (10)
array($blob2, $filter10, 1),
- // Param filter
+ // Param filter (11)
array($blob3, $filter11, 1),
array($blob3, $filter12, 0),
array($blob3, $filter13, 0),
array($blob3, $filter14, 1),
- // Param + text
+ // Param + text (15)
array($blob3, $filter15, 1),
array($blob3, $filter16, 0),
array($blob3, $filter17, 0),
array($blob3, $filter18, 1),
- // Prop + text
+ // Prop + text (19)
array($blob2, $filter19, 1),
- // Incorrect object (vcard)
+ // Incorrect object (vcard) (20)
array($blob4, $filter1, -1),
- // Time-range for event
+ // Time-range for event (21)
array($blob5, $filter20, 1),
array($blob6, $filter20, 1),
array($blob7, $filter20, 1),
@@ -712,7 +734,7 @@ yow;
array($blob7, $filter23, 0),
array($blob8, $filter23, 0),
- // Time-range for todo
+ // Time-range for todo (31)
array($blob9, $filter24, 1),
array($blob9, $filter25, 0),
array($blob9, $filter26, 1),
@@ -744,7 +766,7 @@ yow;
array($blob16, $filter25, 1),
array($blob16, $filter26, 1),
- // Time-range for journals
+ // Time-range for journals (55)
array($blob17, $filter27, 0),
array($blob17, $filter28, 0),
array($blob18, $filter27, 0),
@@ -752,15 +774,15 @@ yow;
array($blob19, $filter27, 1),
array($blob19, $filter28, 1),
- // Time-range for free-busy
+ // Time-range for free-busy (61)
array($blob20, $filter29, -1),
- // Time-range on property
+ // Time-range on property (62)
array($blob5, $filter30, 1),
array($blob3, $filter37, -1),
array($blob3, $filter30, 0),
- // Time-range on alarm in vevent
+ // Time-range on alarm in vevent (65)
array($blob21, $filter31, 1),
array($blob21, $filter32, 0),
array($blob22, $filter31, 1),
@@ -774,28 +796,28 @@ yow;
array($blob26, $filter31, 1),
array($blob26, $filter32, 0),
- // Time-range on alarm for vtodo
+ // Time-range on alarm for vtodo (77)
array($blob27, $filter33, 1),
array($blob27, $filter34, 0),
- // Time-range on alarm for vjournal
+ // Time-range on alarm for vjournal (79)
array($blob28, $filter35, -1),
array($blob28, $filter36, -1),
- // Time-range on alarm with duration
+ // Time-range on alarm with duration (81)
array($blob29, $filter31, 1),
array($blob29, $filter32, 0),
array($blob30, $filter31, 0),
array($blob30, $filter32, 0),
- // Time-range with RRULE
+ // Time-range with RRULE (85)
array($blob31, $filter20, 1),
array($blob32, $filter20, 0),
- // Bug reported on mailing list, related to all-day events.
- array($blob33, $filter38, 1),
+ // Bug reported on mailing list, related to all-day events (87)
+ //array($blob33, $filter38, 1),
- // Event in timerange, but filtered alarm is in the far future.
+ // Event in timerange, but filtered alarm is in the far future (88).
array($blob34, $filter39, 0),
);
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarTest.php
index 2b2690d42..ea744d2cf 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/CalendarTest.php
@@ -1,6 +1,8 @@
<?php
namespace Sabre\CalDAV;
+
+use Sabre\DAV\PropPatch;
use Sabre\DAVACL;
require_once 'Sabre/CalDAV/TestUtil.php';
@@ -8,7 +10,7 @@ require_once 'Sabre/CalDAV/TestUtil.php';
class CalendarTest extends \PHPUnit_Framework_TestCase {
/**
- * @var Sabre\CalDAV\Backend_PDO
+ * @var Sabre\CalDAV\Backend\PDO
*/
protected $backend;
protected $principalBackend;
@@ -51,9 +53,12 @@ class CalendarTest extends \PHPUnit_Framework_TestCase {
*/
function testUpdateProperties() {
- $result = $this->calendar->updateProperties(array(
+ $propPatch = new PropPatch([
'{DAV:}displayname' => 'NewName',
- ));
+ ]);
+
+ $result = $this->calendar->propPatch($propPatch);
+ $result = $propPatch->commit();
$this->assertEquals(true, $result);
@@ -69,9 +74,6 @@ class CalendarTest extends \PHPUnit_Framework_TestCase {
$question = array(
'{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set',
- '{urn:ietf:params:xml:ns:caldav}supported-calendar-data',
- '{urn:ietf:params:xml:ns:caldav}supported-collation-set',
- '{DAV:}owner',
);
$result = $this->calendar->getProperties($question);
@@ -80,11 +82,6 @@ class CalendarTest extends \PHPUnit_Framework_TestCase {
$this->assertEquals(array('VEVENT','VTODO'), $result['{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set']->getValue());
- $this->assertTrue($result['{urn:ietf:params:xml:ns:caldav}supported-collation-set'] instanceof Property\SupportedCollationSet);
-
- $this->assertTrue($result['{DAV:}owner'] instanceof DAVACL\Property\Principal);
- $this->assertEquals('principals/user1', $result['{DAV:}owner']->getHref());
-
}
/**
@@ -202,28 +199,28 @@ class CalendarTest extends \PHPUnit_Framework_TestCase {
'protected' => true,
),
array(
- 'privilege' => '{DAV:}write',
- 'principal' => 'principals/user1',
+ 'privilege' => '{DAV:}read',
+ 'principal' => 'principals/user1/calendar-proxy-write',
'protected' => true,
),
array(
'privilege' => '{DAV:}read',
- 'principal' => 'principals/user1/calendar-proxy-write',
+ 'principal' => 'principals/user1/calendar-proxy-read',
'protected' => true,
),
array(
- 'privilege' => '{DAV:}write',
- 'principal' => 'principals/user1/calendar-proxy-write',
+ 'privilege' => '{' . Plugin::NS_CALDAV . '}read-free-busy',
+ 'principal' => '{DAV:}authenticated',
'protected' => true,
),
array(
- 'privilege' => '{DAV:}read',
- 'principal' => 'principals/user1/calendar-proxy-read',
+ 'privilege' => '{DAV:}write',
+ 'principal' => 'principals/user1',
'protected' => true,
),
array(
- 'privilege' => '{' . Plugin::NS_CALDAV . '}read-free-busy',
- 'principal' => '{DAV:}authenticated',
+ 'privilege' => '{DAV:}write',
+ 'principal' => 'principals/user1/calendar-proxy-write',
'protected' => true,
),
);
@@ -251,5 +248,42 @@ class CalendarTest extends \PHPUnit_Framework_TestCase {
}
+ function testGetSyncToken() {
+
+ $this->assertEquals(2, $this->calendar->getSyncToken());
+
+ }
+ function testGetSyncToken2() {
+
+ $calendar = new Calendar(new Backend\Mock([],[]), [
+ '{DAV:}sync-token' => 2
+ ]);
+ $this->assertEquals(2, $this->calendar->getSyncToken());
+
+ }
+
+ function testGetSyncTokenNoSyncSupport() {
+
+ $calendar = new Calendar(new Backend\Mock([],[]), []);
+ $this->assertNull($calendar->getSyncToken());
+ }
+
+ function testGetChanges() {
+
+ $this->assertEquals([
+ 'syncToken' => 2,
+ 'modified' => [],
+ 'deleted' => [],
+ 'added' => ['UUID-2345'],
+ ], $this->calendar->getChanges(1, 1));
+
+ }
+
+ function testGetChangesNoSyncSupport() {
+
+ $calendar = new Calendar(new Backend\Mock([],[]), []);
+ $this->assertNull($calendar->getChanges(1,null));
+
+ }
}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDTest.php
index 2767b5f8d..9a3d47828 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDTest.php
@@ -1,6 +1,7 @@
<?php
namespace Sabre\CalDAV;
+
use Sabre\HTTP;
use Sabre\VObject;
@@ -8,7 +9,7 @@ use Sabre\VObject;
* This unittests is created to find out why recurring events have wrong DTSTART value
*
*
- * @copyright Copyright (C) 2007-2014 fruux GmbH (https://fruux.com/).
+ * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
@@ -16,18 +17,18 @@ class ExpandEventsDTSTARTandDTENDTest extends \Sabre\DAVServerTest {
protected $setupCalDAV = true;
- protected $caldavCalendars = array(
- array(
- 'id' => 1,
- 'name' => 'Calendar',
+ protected $caldavCalendars = [
+ [
+ 'id' => 1,
+ 'name' => 'Calendar',
'principaluri' => 'principals/user1',
- 'uri' => 'calendar1',
- )
- );
+ 'uri' => 'calendar1',
+ ]
+ ];
- protected $caldavCalendarObjects = array(
- 1 => array(
- 'event.ics' => array(
+ protected $caldavCalendarObjects = [
+ 1 => [
+ 'event.ics' => [
'calendardata' => 'BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
@@ -47,18 +48,18 @@ RECURRENCE-ID;TZID=Europe/Berlin:20120208T181500
END:VEVENT
END:VCALENDAR
',
- ),
- ),
- );
+ ],
+ ],
+ ];
function testExpand() {
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'REPORT',
+ $request = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_METHOD' => 'REPORT',
'HTTP_CONTENT_TYPE' => 'application/xml',
- 'REQUEST_URI' => '/calendars/user1/calendar1',
- 'HTTP_DEPTH' => '1',
- ));
+ 'REQUEST_URI' => '/calendars/user1/calendar1',
+ 'HTTP_DEPTH' => '1',
+ ]);
$request->setBody('<?xml version="1.0" encoding="utf-8" ?>
<C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
@@ -85,26 +86,28 @@ END:VCALENDAR
$start = strpos($response->body, 'BEGIN:VCALENDAR'),
strpos($response->body, 'END:VCALENDAR') - $start + 13
);
- $body = str_replace('&#13;','',$body);
+ $body = str_replace('&#13;', '', $body);
- $vObject = VObject\Reader::read($body);
+ try {
+ $vObject = VObject\Reader::read($body);
+ } catch (VObject\ParseException $e) {
+ $this->fail('Could not parse object. Error:' . $e->getMessage() . ' full object: ' . $response->getBodyAsString());
+ }
// check if DTSTARTs and DTENDs are correct
foreach ($vObject->VEVENT as $vevent) {
/** @var $vevent Sabre\VObject\Component\VEvent */
- foreach ($vevent->children as $child) {
+ foreach ($vevent->children() as $child) {
/** @var $child Sabre\VObject\Property */
-
if ($child->name == 'DTSTART') {
// DTSTART has to be one of three valid values
- $this->assertContains($child->getValue(), array('20120207T171500Z', '20120208T171500Z', '20120209T171500Z'), 'DTSTART is not a valid value: '.$child->getValue());
+ $this->assertContains($child->getValue(), ['20120207T171500Z', '20120208T171500Z', '20120209T171500Z'], 'DTSTART is not a valid value: ' . $child->getValue());
} elseif ($child->name == 'DTEND') {
// DTEND has to be one of three valid values
- $this->assertContains($child->getValue(), array('20120207T181500Z', '20120208T181500Z', '20120209T181500Z'), 'DTEND is not a valid value: '.$child->getValue());
+ $this->assertContains($child->getValue(), ['20120207T181500Z', '20120208T181500Z', '20120209T181500Z'], 'DTEND is not a valid value: ' . $child->getValue());
}
}
}
}
}
-
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDbyDayTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDbyDayTest.php
index 3793cadc7..efc49673f 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDbyDayTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDTSTARTandDTENDbyDayTest.php
@@ -1,13 +1,14 @@
<?php
namespace Sabre\CalDAV;
+
use Sabre\HTTP;
use Sabre\VObject;
/**
* This unittests is created to find out why recurring events have wrong DTSTART value
*
- * @copyright Copyright (C) 2007-2014 fruux GmbH (https://fruux.com/).
+ * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
@@ -15,18 +16,18 @@ class ExpandEventsDTSTARTandDTENDbyDayTest extends \Sabre\DAVServerTest {
protected $setupCalDAV = true;
- protected $caldavCalendars = array(
- array(
- 'id' => 1,
- 'name' => 'Calendar',
+ protected $caldavCalendars = [
+ [
+ 'id' => 1,
+ 'name' => 'Calendar',
'principaluri' => 'principals/user1',
- 'uri' => 'calendar1',
- )
- );
+ 'uri' => 'calendar1',
+ ]
+ ];
- protected $caldavCalendarObjects = array(
- 1 => array(
- 'event.ics' => array(
+ protected $caldavCalendarObjects = [
+ 1 => [
+ 'event.ics' => [
'calendardata' => 'BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
@@ -38,18 +39,18 @@ DTSTART;TZID=Europe/Berlin:20120207T181500
END:VEVENT
END:VCALENDAR
',
- ),
- ),
- );
+ ],
+ ],
+ ];
function testExpandRecurringByDayEvent() {
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'REPORT',
+ $request = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_METHOD' => 'REPORT',
'HTTP_CONTENT_TYPE' => 'application/xml',
- 'REQUEST_URI' => '/calendars/user1/calendar1',
- 'HTTP_DEPTH' => '1',
- ));
+ 'REQUEST_URI' => '/calendars/user1/calendar1',
+ 'HTTP_DEPTH' => '1',
+ ]);
$request->setBody('<?xml version="1.0" encoding="utf-8" ?>
<C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
@@ -76,7 +77,7 @@ END:VCALENDAR
$start = strpos($response->body, 'BEGIN:VCALENDAR'),
strpos($response->body, 'END:VCALENDAR') - $start + 13
);
- $body = str_replace('&#13;','',$body);
+ $body = str_replace('&#13;', '', $body);
$vObject = VObject\Reader::read($body);
@@ -85,19 +86,17 @@ END:VCALENDAR
// check if DTSTARTs and DTENDs are correct
foreach ($vObject->VEVENT as $vevent) {
/** @var $vevent Sabre\VObject\Component\VEvent */
- foreach ($vevent->children as $child) {
+ foreach ($vevent->children() as $child) {
/** @var $child Sabre\VObject\Property */
-
if ($child->name == 'DTSTART') {
// DTSTART has to be one of two valid values
- $this->assertContains($child->getValue(), array('20120214T171500Z', '20120216T171500Z'), 'DTSTART is not a valid value: '.$child->getValue());
+ $this->assertContains($child->getValue(), ['20120214T171500Z', '20120216T171500Z'], 'DTSTART is not a valid value: ' . $child->getValue());
} elseif ($child->name == 'DTEND') {
// DTEND has to be one of two valid values
- $this->assertContains($child->getValue(), array('20120214T181500Z', '20120216T181500Z'), 'DTEND is not a valid value: '.$child->getValue());
+ $this->assertContains($child->getValue(), ['20120214T181500Z', '20120216T181500Z'], 'DTEND is not a valid value: ' . $child->getValue());
}
}
}
}
}
-
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDoubleEventsTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDoubleEventsTest.php
index 09eea5276..b64fb122a 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDoubleEventsTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/ExpandEventsDoubleEventsTest.php
@@ -11,7 +11,7 @@ use Sabre\VObject;
* Hopefully, by the time I'm done with this, I've both found the problem, and
* fixed it :)
*
- * @copyright Copyright (C) 2007-2014 fruux GmbH (https://fruux.com/).
+ * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
@@ -56,12 +56,12 @@ END:VCALENDAR
function testExpand() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray([
'REQUEST_METHOD' => 'REPORT',
'HTTP_CONTENT_TYPE' => 'application/xml',
'REQUEST_URI' => '/calendars/user1/calendar1',
'HTTP_DEPTH' => '1',
- ));
+ ]);
$request->setBody('<?xml version="1.0" encoding="utf-8" ?>
<C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyReportTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyReportTest.php
index 93eca9ee9..84f05f3c0 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyReportTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyReportTest.php
@@ -30,6 +30,7 @@ DURATION:PT1H
END:VEVENT
END:VCALENDAR
ics;
+
$obj2 = fopen('php://memory','r+');
fwrite($obj2,<<<ics
BEGIN:VCALENDAR
@@ -42,41 +43,55 @@ ics
);
rewind($obj2);
- $calendarData = array(
- 1 => array(
- 'obj1' => array(
+ $obj3 = <<<ics
+BEGIN:VCALENDAR
+BEGIN:VEVENT
+DTSTART:20111006T120000
+DURATION:PT1H
+END:VEVENT
+END:VCALENDAR
+ics;
+
+ $calendarData = [
+ 1 => [
+ 'obj1' => [
'calendarid' => 1,
'uri' => 'event1.ics',
'calendardata' => $obj1,
- ),
- 'obj2' => array(
+ ],
+ 'obj2' => [
'calendarid' => 1,
'uri' => 'event2.ics',
'calendardata' => $obj2
- )
- ),
- );
+ ],
+ 'obj3' => [
+ 'calendarid' => 1,
+ 'uri' => 'event3.ics',
+ 'calendardata' => $obj3
+ ]
+ ],
+ ];
- $caldavBackend = new Backend\Mock(array(), $calendarData);
+ $caldavBackend = new Backend\Mock([], $calendarData);
- $calendar = new Calendar($caldavBackend, array(
+ $calendar = new Calendar($caldavBackend, [
'id' => 1,
'uri' => 'calendar',
'principaluri' => 'principals/user1',
- ));
+ '{' . Plugin::NS_CALDAV . '}calendar-timezone' => "BEGIN:VCALENDAR\r\nBEGIN:VTIMEZONE\r\nTZID:Europe/Berlin\r\nEND:VTIMEZONE\r\nEND:VCALENDAR",
+ ]);
- $this->server = new DAV\Server(array($calendar));
+ $this->server = new DAV\Server([$calendar]);
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray([
'REQUEST_URI' => '/calendar',
- ));
+ ]);
$this->server->httpRequest = $request;
$this->server->httpResponse = new HTTP\ResponseMock();
$this->plugin = new Plugin();
$this->server->addPlugin($this->plugin);
- $this->server->addPlugin(new DAVACL\Plugin());
}
@@ -89,12 +104,14 @@ ics
</c:free-busy-query>
XML;
- $dom = DAV\XMLUtil::loadDOMDocument($reportXML);
- $this->plugin->report('{urn:ietf:params:xml:ns:caldav}free-busy-query', $dom);
+ $report = $this->server->xml->parse($reportXML, null, $rootElem);
+ $this->plugin->report($rootElem, $report);
- $this->assertEquals('HTTP/1.1 200 OK', $this->server->httpResponse->status);
- $this->assertEquals('text/calendar', $this->server->httpResponse->headers['Content-Type']);
- $this->assertTrue(strpos($this->server->httpResponse->body,'BEGIN:VFREEBUSY')!==false);
+ $this->assertEquals(200, $this->server->httpResponse->status);
+ $this->assertEquals('text/calendar', $this->server->httpResponse->getHeader('Content-Type'));
+ $this->assertTrue(strpos($this->server->httpResponse->body, 'BEGIN:VFREEBUSY')!==false);
+ $this->assertTrue(strpos($this->server->httpResponse->body, '20111005T120000Z/20111005T130000Z')!==false);
+ $this->assertTrue(strpos($this->server->httpResponse->body, '20111006T100000Z/20111006T110000Z')!==false);
}
@@ -109,8 +126,8 @@ XML;
</c:free-busy-query>
XML;
- $dom = DAV\XMLUtil::loadDOMDocument($reportXML);
- $this->plugin->report('{urn:ietf:params:xml:ns:caldav}free-busy-query', $dom);
+ $report = $this->server->xml->parse($reportXML, null, $rootElem);
+ $this->plugin->report($rootElem, $report);
}
@@ -119,7 +136,7 @@ XML;
*/
function testFreeBusyReportWrongNode() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_URI' => '/',
));
$this->server->httpRequest = $request;
@@ -131,8 +148,8 @@ XML;
</c:free-busy-query>
XML;
- $dom = DAV\XMLUtil::loadDOMDocument($reportXML);
- $this->plugin->report('{urn:ietf:params:xml:ns:caldav}free-busy-query', $dom);
+ $report = $this->server->xml->parse($reportXML, null, $rootElem);
+ $this->plugin->report($rootElem, $report);
}
@@ -152,8 +169,8 @@ XML;
</c:free-busy-query>
XML;
- $dom = DAV\XMLUtil::loadDOMDocument($reportXML);
- $this->plugin->report('{urn:ietf:params:xml:ns:caldav}free-busy-query', $dom);
+ $report = $this->server->xml->parse($reportXML, null, $rootElem);
+ $this->plugin->report($rootElem, $report);
}
}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyRequestTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyRequestTest.php
deleted file mode 100644
index 62252e6a1..000000000
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/FreeBusyRequestTest.php
+++ /dev/null
@@ -1,282 +0,0 @@
-<?php
-
-namespace Sabre\CalDAV;
-
-use Sabre\DAV;
-use Sabre\DAVACL;
-use Sabre\HTTP;
-
-require_once 'Sabre/HTTP/ResponseMock.php';
-
-class FreeBusyRequestTest extends \PHPUnit_Framework_TestCase {
-
- protected $plugin;
- protected $server;
- protected $aclPlugin;
- protected $request;
- protected $authPlugin;
-
- function setUp() {
-
- $calendars = array(
- array(
- 'principaluri' => 'principals/user2',
- 'id' => 1,
- 'uri' => 'calendar1',
- ),
- );
- $calendarobjects = array(
- 1 => array( '1.ics' => array(
- 'uri' => '1.ics',
- 'calendardata' => 'BEGIN:VCALENDAR
-BEGIN:VEVENT
-DTSTART:20110101T130000
-DURATION:PT1H
-END:VEVENT
-END:VCALENDAR',
- 'calendarid' => 1,
- ))
-
- );
-
- $principalBackend = new DAVACL\PrincipalBackend\Mock();
- $caldavBackend = new Backend\Mock($calendars, $calendarobjects);
-
- $tree = array(
- new DAVACL\PrincipalCollection($principalBackend),
- new CalendarRootNode($principalBackend, $caldavBackend),
- );
-
- $this->request = new HTTP\Request(array(
- 'CONTENT_TYPE' => 'text/calendar',
- ));
- $this->response = new HTTP\ResponseMock();
-
- $this->server = new DAV\Server($tree);
- $this->server->httpRequest = $this->request;
- $this->server->httpResponse = $this->response;
-
- $this->aclPlugin = new DAVACL\Plugin();
- $this->server->addPlugin($this->aclPlugin);
-
- $authBackend = new DAV\Auth\Backend\Mock();
- $authBackend->setCurrentUser('user1');
- $this->authPlugin = new DAV\Auth\Plugin($authBackend,'SabreDAV');
- $this->server->addPlugin($this->authPlugin);
-
- $this->plugin = new Plugin();
- $this->server->addPlugin($this->plugin);
-
- }
-
- function testWrongMethod() {
-
- $this->assertNull(
- $this->plugin->unknownMethod('PUT','calendars/user1/outbox')
- );
-
- }
-
- function testWrongContentType() {
-
- $this->server->httpRequest = new HTTP\Request(array(
- 'CONTENT_TYPE' => 'text/plain',
- ));
-
- $this->assertNull(
- $this->plugin->unknownMethod('POST','calendars/user1/outbox')
- );
-
- }
-
- function testNotFound() {
-
- $this->assertNull(
- $this->plugin->unknownMethod('POST','calendars/user1/blabla')
- );
-
- }
-
- function testNotOutbox() {
-
- $this->assertNull(
- $this->plugin->unknownMethod('POST','calendars/user1/inbox')
- );
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\BadRequest
- */
- function testNoItipMethod() {
-
- $body = <<<ICS
-BEGIN:VCALENDAR
-BEGIN:VFREEBUSY
-END:VFREEBUSY
-END:VCALENDAR
-ICS;
-
- $this->request->setBody($body);
- $this->plugin->unknownMethod('POST','calendars/user1/outbox');
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\BadRequest
- */
- function testNoVFreeBusy() {
-
- $body = <<<ICS
-BEGIN:VCALENDAR
-METHOD:REQUEST
-BEGIN:VEVENT
-END:VEVENT
-END:VCALENDAR
-ICS;
-
- $this->request->setBody($body);
- $this->plugin->unknownMethod('POST','calendars/user1/outbox');
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\Forbidden
- */
- function testIncorrectOrganizer() {
-
- $body = <<<ICS
-BEGIN:VCALENDAR
-METHOD:REQUEST
-BEGIN:VFREEBUSY
-ORGANIZER:mailto:john@wayne.org
-END:VFREEBUSY
-END:VCALENDAR
-ICS;
-
- $this->request->setBody($body);
- $this->plugin->unknownMethod('POST','calendars/user1/outbox');
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\BadRequest
- */
- function testNoAttendees() {
-
- $body = <<<ICS
-BEGIN:VCALENDAR
-METHOD:REQUEST
-BEGIN:VFREEBUSY
-ORGANIZER:mailto:user1.sabredav@sabredav.org
-END:VFREEBUSY
-END:VCALENDAR
-ICS;
-
- $this->request->setBody($body);
- $this->plugin->unknownMethod('POST','calendars/user1/outbox');
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\BadRequest
- */
- function testNoDTStart() {
-
- $body = <<<ICS
-BEGIN:VCALENDAR
-METHOD:REQUEST
-BEGIN:VFREEBUSY
-ORGANIZER:mailto:user1.sabredav@sabredav.org
-ATTENDEE:mailto:user2.sabredav@sabredav.org
-END:VFREEBUSY
-END:VCALENDAR
-ICS;
-
- $this->request->setBody($body);
- $this->plugin->unknownMethod('POST','calendars/user1/outbox');
-
- }
-
- function testSucceed() {
-
- $body = <<<ICS
-BEGIN:VCALENDAR
-METHOD:REQUEST
-BEGIN:VFREEBUSY
-ORGANIZER:mailto:user1.sabredav@sabredav.org
-ATTENDEE:mailto:user2.sabredav@sabredav.org
-ATTENDEE:mailto:user3.sabredav@sabredav.org
-DTSTART:20110101T080000Z
-DTEND:20110101T180000Z
-END:VFREEBUSY
-END:VCALENDAR
-ICS;
-
- // Lazily making the current principal an admin.
- $this->aclPlugin->adminPrincipals[] = 'principals/user1';
-
- $this->request->setBody($body);
- $this->assertFalse($this->plugin->unknownMethod('POST','calendars/user1/outbox'));
-
- $this->assertEquals('HTTP/1.1 200 OK' , $this->response->status);
- $this->assertEquals(array(
- 'Content-Type' => 'application/xml',
- ), $this->response->headers);
-
- $strings = array(
- '<d:href>mailto:user2.sabredav@sabredav.org</d:href>',
- '<d:href>mailto:user3.sabredav@sabredav.org</d:href>',
- '<cal:request-status>2.0;Success</cal:request-status>',
- '<cal:request-status>3.7;Could not find principal</cal:request-status>',
- 'FREEBUSY;FBTYPE=BUSY:20110101T130000Z/20110101T140000Z',
- );
-
- foreach($strings as $string) {
- $this->assertTrue(
- strpos($this->response->body, $string)!==false,
- 'The response body did not contain: ' . $string .'Full response: ' . $this->response->body
- );
- }
-
-
- }
-
- function testNoPrivilege() {
-
- $body = <<<ICS
-BEGIN:VCALENDAR
-METHOD:REQUEST
-BEGIN:VFREEBUSY
-ORGANIZER:mailto:user1.sabredav@sabredav.org
-ATTENDEE:mailto:user2.sabredav@sabredav.org
-DTSTART:20110101T080000Z
-DTEND:20110101T180000Z
-END:VFREEBUSY
-END:VCALENDAR
-ICS;
-
- $this->request->setBody($body);
- $this->assertFalse($this->plugin->unknownMethod('POST','calendars/user1/outbox'));
-
- $this->assertEquals('HTTP/1.1 200 OK' , $this->response->status);
- $this->assertEquals(array(
- 'Content-Type' => 'application/xml',
- ), $this->response->headers);
-
- $strings = array(
- '<d:href>mailto:user2.sabredav@sabredav.org</d:href>',
- '<cal:request-status>3.7;No calendar-home-set property found</cal:request-status>',
- );
-
- foreach($strings as $string) {
- $this->assertTrue(
- strpos($this->response->body, $string)!==false,
- 'The response body did not contain: ' . $string .'Full response: ' . $this->response->body
- );
- }
-
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/GetEventsByTimerangeTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/GetEventsByTimerangeTest.php
index 6c9a09905..c3c97e8f6 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/GetEventsByTimerangeTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/GetEventsByTimerangeTest.php
@@ -1,13 +1,13 @@
<?php
namespace Sabre\CalDAV;
+
use Sabre\HTTP;
-use Sabre\VObject;
/**
* This unittest is created to check if queries for time-range include the start timestamp or not
*
- * @copyright Copyright (C) 2007-2014 fruux GmbH (https://fruux.com/).
+ * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
@@ -15,24 +15,24 @@ class GetEventsByTimerangeTest extends \Sabre\DAVServerTest {
protected $setupCalDAV = true;
- protected $caldavCalendars = array(
- array(
- 'id' => 1,
- 'name' => 'Calendar',
+ protected $caldavCalendars = [
+ [
+ 'id' => 1,
+ 'name' => 'Calendar',
'principaluri' => 'principals/user1',
- 'uri' => 'calendar1',
- )
- );
+ 'uri' => 'calendar1',
+ ]
+ ];
- protected $caldavCalendarObjects = array(
- 1 => array(
- 'event.ics' => array(
+ protected $caldavCalendarObjects = [
+ 1 => [
+ 'event.ics' => [
'calendardata' => 'BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
CREATED:20120313T142342Z
UID:171EBEFC-C951-499D-B234-7BA7D677B45D
-DTEND;TZID=Europe/Berlin:20120227T000000
+DTEND;TZID=Europe/Berlin:20120227T010000
TRANSP:OPAQUE
SUMMARY:Monday 0h
DTSTART;TZID=Europe/Berlin:20120227T000000
@@ -41,31 +41,33 @@ SEQUENCE:4
END:VEVENT
END:VCALENDAR
',
- ),
- ),
- );
+ ],
+ ],
+ ];
function testQueryTimerange() {
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'REPORT',
- 'HTTP_CONTENT_TYPE' => 'application/xml',
- 'REQUEST_URI' => '/calendars/user1/calendar1',
- 'HTTP_DEPTH' => '1',
- ));
+ $request = new HTTP\Request(
+ 'REPORT',
+ '/calendars/user1/calendar1',
+ [
+ 'Content-Type' => 'application/xml',
+ 'Depth' => '1',
+ ]
+ );
$request->setBody('<?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>
- <C:expand start="20120226T230000Z" end="20120228T225959Z"/>
+ <C:expand start="20120226T220000Z" end="20120228T225959Z"/>
</C:calendar-data>
<D:getetag/>
</D:prop>
<C:filter>
<C:comp-filter name="VCALENDAR">
<C:comp-filter name="VEVENT">
- <C:time-range start="20120226T230000Z" end="20120228T225959Z"/>
+ <C:time-range start="20120226T220000Z" end="20120228T225959Z"/>
</C:comp-filter>
</C:comp-filter>
</C:filter>
@@ -73,24 +75,8 @@ END:VCALENDAR
$response = $this->request($request);
- if (strpos($response->body, 'BEGIN:VCALENDAR') === false) {
- $this->fail('Got no events instead of 1. Output: '.$response->body);
- }
-
- // Everts super awesome xml parser.
- $body = substr(
- $response->body,
- $start = strpos($response->body, 'BEGIN:VCALENDAR'),
- strpos($response->body, 'END:VCALENDAR') - $start + 13
- );
- $body = str_replace('&#13;','',$body);
-
- $vObject = VObject\Reader::read($body);
-
- // We expect 1 event
- $this->assertEquals(1, count($vObject->VEVENT), 'We got 0 events instead of 1. Output: ' . $body);
+ $this->assertTrue(strpos($response->body, 'BEGIN:VCALENDAR')!==false);
}
}
-
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/ICSExportPluginTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/ICSExportPluginTest.php
index be21796dd..c123bd0c1 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/ICSExportPluginTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/ICSExportPluginTest.php
@@ -12,27 +12,36 @@ require_once 'Sabre/HTTP/ResponseMock.php';
class ICSExportPluginTest extends \PHPUnit_Framework_TestCase {
+ function setUp() {
+
+ if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
+
+ }
+
function testInit() {
$p = new ICSExportPlugin();
$s = new DAV\Server();
$s->addPlugin($p);
+ $this->assertEquals($p, $s->getPlugin('ics-export'));
+ $this->assertEquals('ics-export', $p->getPluginInfo()['name']);
}
function testBeforeMethod() {
- if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
$cbackend = TestUtil::getBackend();
- $props = array(
+ $props = [
'uri'=>'UUID-123467',
'principaluri' => 'admin',
'id' => 1,
- );
- $tree = array(
+ '{DAV:}displayname' => 'Hello!',
+ '{http://apple.com/ns/ical/}calendar-color' => '#AA0000FF',
+ ];
+ $tree = [
new Calendar($cbackend,$props),
- );
+ ];
$p = new ICSExportPlugin();
@@ -40,29 +49,32 @@ class ICSExportPluginTest extends \PHPUnit_Framework_TestCase {
$s->addPlugin($p);
$s->addPlugin(new Plugin());
- $h = new HTTP\Request(array(
- 'QUERY_STRING' => 'export',
- ));
+ $h = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_URI' => '/UUID-123467?export',
+ 'REQUEST_METHOD' => 'GET',
+ ]);
$s->httpRequest = $h;
$s->httpResponse = new HTTP\ResponseMock();
- $this->assertFalse($p->beforeMethod('GET','UUID-123467?export'));
+ $this->assertFalse($p->httpGet($h, $s->httpResponse));
- $this->assertEquals('HTTP/1.1 200 OK',$s->httpResponse->status);
- $this->assertEquals(array(
- 'Content-Type' => 'text/calendar',
- ), $s->httpResponse->headers);
+ $this->assertEquals(200, $s->httpResponse->status);
+ $this->assertEquals([
+ 'Content-Type' => ['text/calendar'],
+ ], $s->httpResponse->getHeaders());
$obj = VObject\Reader::read($s->httpResponse->body);
- $this->assertEquals(5,count($obj->children()));
+ $this->assertEquals(7,count($obj->children()));
$this->assertEquals(1,count($obj->VERSION));
$this->assertEquals(1,count($obj->CALSCALE));
$this->assertEquals(1,count($obj->PRODID));
$this->assertTrue(strpos((string)$obj->PRODID, DAV\Version::VERSION)!==false);
$this->assertEquals(1,count($obj->VTIMEZONE));
$this->assertEquals(1,count($obj->VEVENT));
+ $this->assertEquals("Hello!", $obj->{"X-WR-CALNAME"});
+ $this->assertEquals("#AA0000FF", $obj->{"X-APPLE-CALENDAR-COLOR"});
}
function testBeforeMethodNoVersion() {
@@ -70,14 +82,14 @@ class ICSExportPluginTest extends \PHPUnit_Framework_TestCase {
if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
$cbackend = TestUtil::getBackend();
- $props = array(
+ $props = [
'uri'=>'UUID-123467',
'principaluri' => 'admin',
'id' => 1,
- );
- $tree = array(
+ ];
+ $tree = [
new Calendar($cbackend,$props),
- );
+ ];
$p = new ICSExportPlugin();
@@ -86,21 +98,22 @@ class ICSExportPluginTest extends \PHPUnit_Framework_TestCase {
$s->addPlugin($p);
$s->addPlugin(new Plugin());
- $h = new HTTP\Request(array(
- 'QUERY_STRING' => 'export',
- ));
+ $h = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_URI' => '/UUID-123467?export',
+ 'REQUEST_METHOD' => 'GET',
+ ]);
$s->httpRequest = $h;
$s->httpResponse = new HTTP\ResponseMock();
DAV\Server::$exposeVersion = false;
- $this->assertFalse($p->beforeMethod('GET','UUID-123467?export'));
+ $this->assertFalse($p->httpGet($h, $s->httpResponse));
DAV\Server::$exposeVersion = true;
- $this->assertEquals('HTTP/1.1 200 OK',$s->httpResponse->status);
- $this->assertEquals(array(
- 'Content-Type' => 'text/calendar',
- ), $s->httpResponse->headers);
+ $this->assertEquals(200, $s->httpResponse->status);
+ $this->assertEquals([
+ 'Content-Type' => ['text/calendar'],
+ ], $s->httpResponse->getHeaders());
$obj = VObject\Reader::read($s->httpResponse->body);
@@ -114,17 +127,6 @@ class ICSExportPluginTest extends \PHPUnit_Framework_TestCase {
}
- function testBeforeMethodNoGET() {
-
- $p = new ICSExportPlugin();
-
- $s = new DAV\Server();
- $s->addPlugin($p);
-
- $this->assertNull($p->beforeMethod('POST','UUID-123467?export'));
-
- }
-
function testBeforeMethodNoExport() {
$p = new ICSExportPlugin();
@@ -132,16 +134,16 @@ class ICSExportPluginTest extends \PHPUnit_Framework_TestCase {
$s = new DAV\Server();
$s->addPlugin($p);
- $this->assertNull($p->beforeMethod('GET','UUID-123467'));
+ $h = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_URI' => '/UUID-123467',
+ 'REQUEST_METHOD' => 'GET',
+ ]);
+ $this->assertNull($p->httpGet($h, $s->httpResponse));
}
- /**
- * @expectedException Sabre\DAVACL\Exception\NeedPrivileges
- */
function testACLIntegrationBlocked() {
- if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
$cbackend = TestUtil::getBackend();
$props = array(
@@ -160,20 +162,24 @@ class ICSExportPluginTest extends \PHPUnit_Framework_TestCase {
$s->addPlugin(new Plugin());
$s->addPlugin(new DAVACL\Plugin());
- $h = new HTTP\Request(array(
- 'QUERY_STRING' => 'export',
- ));
+ $h = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_URI' => '/UUID-123467?export',
+ ]);
$s->httpRequest = $h;
$s->httpResponse = new HTTP\ResponseMock();
- $p->beforeMethod('GET','UUID-123467?export');
+ $p->httpGet($h, $s->httpResponse);
+
+ // If the ACL system blocked this request, the effect will be that
+ // there's no response, because the calendar information could not be
+ // fetched.
+ $this->assertNull($s->httpResponse->getStatus());
}
function testACLIntegrationNotBlocked() {
- if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
$cbackend = TestUtil::getBackend();
$pbackend = new DAVACL\PrincipalBackend\Mock();
@@ -190,6 +196,7 @@ class ICSExportPluginTest extends \PHPUnit_Framework_TestCase {
$p = new ICSExportPlugin();
$s = new DAV\Server($tree);
+ $s->sapi = new HTTP\SapiMock();
$s->addPlugin($p);
$s->addPlugin(new Plugin());
$s->addPlugin(new DAVACL\Plugin());
@@ -198,21 +205,22 @@ class ICSExportPluginTest extends \PHPUnit_Framework_TestCase {
// Forcing login
$s->getPlugin('acl')->adminPrincipals = array('principals/admin');
- $h = new HTTP\Request(array(
- 'QUERY_STRING' => 'export',
- 'REQUEST_URI' => '/UUID-123467',
+
+ $h = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_URI' => '/UUID-123467?export',
'REQUEST_METHOD' => 'GET',
- ));
+ ]);
$s->httpRequest = $h;
$s->httpResponse = new HTTP\ResponseMock();
$s->exec();
- $this->assertEquals('HTTP/1.1 200 OK',$s->httpResponse->status,'Invalid status received. Response body: '. $s->httpResponse->body);
+ $this->assertEquals(200, $s->httpResponse->status,'Invalid status received. Response body: '. $s->httpResponse->body);
$this->assertEquals(array(
- 'Content-Type' => 'text/calendar',
- ), $s->httpResponse->headers);
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['text/calendar'],
+ ), $s->httpResponse->getHeaders());
$obj = VObject\Reader::read($s->httpResponse->body);
@@ -224,4 +232,432 @@ class ICSExportPluginTest extends \PHPUnit_Framework_TestCase {
$this->assertEquals(1,count($obj->VEVENT));
}
+
+ function testBadStartParam() {
+
+ $cbackend = TestUtil::getBackend();
+ $pbackend = new DAVACL\PrincipalBackend\Mock();
+
+ $props = array(
+ 'uri'=>'UUID-123467',
+ 'principaluri' => 'admin',
+ 'id' => 1,
+ );
+ $tree = array(
+ new Calendar($cbackend,$props),
+ new DAVACL\PrincipalCollection($pbackend),
+ );
+
+ $p = new ICSExportPlugin();
+
+ $s = new DAV\Server($tree);
+ $s->sapi = new HTTP\SapiMock();
+ $s->addPlugin($p);
+ $s->addPlugin(new Plugin());
+
+ $h = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_URI' => '/UUID-123467?export&start=foo',
+ 'REQUEST_METHOD' => 'GET',
+ ]);
+
+ $s->httpRequest = $h;
+ $s->httpResponse = new HTTP\ResponseMock();
+
+ $s->exec();
+
+ $this->assertEquals(400, $s->httpResponse->status,'Invalid status received. Response body: '. $s->httpResponse->body);
+
+ }
+
+ function testBadEndParam() {
+
+ $cbackend = TestUtil::getBackend();
+ $pbackend = new DAVACL\PrincipalBackend\Mock();
+
+ $props = array(
+ 'uri'=>'UUID-123467',
+ 'principaluri' => 'admin',
+ 'id' => 1,
+ );
+ $tree = array(
+ new Calendar($cbackend,$props),
+ new DAVACL\PrincipalCollection($pbackend),
+ );
+
+ $p = new ICSExportPlugin();
+
+ $s = new DAV\Server($tree);
+ $s->sapi = new HTTP\SapiMock();
+ $s->addPlugin($p);
+ $s->addPlugin(new Plugin());
+
+ $h = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_URI' => '/UUID-123467?export&end=foo',
+ 'REQUEST_METHOD' => 'GET',
+ ]);
+
+ $s->httpRequest = $h;
+ $s->httpResponse = new HTTP\ResponseMock();
+
+ $s->exec();
+
+ $this->assertEquals(400, $s->httpResponse->status,'Invalid status received. Response body: '. $s->httpResponse->body);
+
+ }
+
+ function testFilterStartEnd() {
+
+ $cbackend = TestUtil::getBackend();
+ $pbackend = new DAVACL\PrincipalBackend\Mock();
+
+ $props = array(
+ 'uri'=>'UUID-123467',
+ 'principaluri' => 'admin',
+ 'id' => 1,
+ );
+ $tree = array(
+ new Calendar($cbackend,$props),
+ new DAVACL\PrincipalCollection($pbackend),
+ );
+
+ $p = new ICSExportPlugin();
+
+ $s = new DAV\Server($tree);
+ $s->sapi = new HTTP\SapiMock();
+ $s->addPlugin($p);
+ $s->addPlugin(new Plugin());
+
+ $h = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_URI' => '/UUID-123467?export&start=1&end=2',
+ 'REQUEST_METHOD' => 'GET',
+ ]);
+
+ $s->httpRequest = $h;
+ $s->httpResponse = new HTTP\ResponseMock();
+
+ $s->exec();
+
+ $this->assertEquals(200, $s->httpResponse->status,'Invalid status received. Response body: '. $s->httpResponse->body);
+ $obj = VObject\Reader::read($s->httpResponse->body);
+
+ $this->assertEquals(0,count($obj->VTIMEZONE));
+ $this->assertEquals(0,count($obj->VEVENT));
+
+ }
+
+ function testExpandNoStart() {
+
+ $cbackend = TestUtil::getBackend();
+ $pbackend = new DAVACL\PrincipalBackend\Mock();
+
+ $props = array(
+ 'uri'=>'UUID-123467',
+ 'principaluri' => 'admin',
+ 'id' => 1,
+ );
+ $tree = array(
+ new Calendar($cbackend,$props),
+ new DAVACL\PrincipalCollection($pbackend),
+ );
+
+ $p = new ICSExportPlugin();
+
+ $s = new DAV\Server($tree);
+ $s->sapi = new HTTP\SapiMock();
+ $s->addPlugin($p);
+ $s->addPlugin(new Plugin());
+
+ $h = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_URI' => '/UUID-123467?export&expand=1&end=1',
+ 'REQUEST_METHOD' => 'GET',
+ ]);
+
+ $s->httpRequest = $h;
+ $s->httpResponse = new HTTP\ResponseMock();
+
+ $s->exec();
+
+ $this->assertEquals(400, $s->httpResponse->status,'Invalid status received. Response body: '. $s->httpResponse->body);
+
+ }
+
+ function testExpand() {
+
+ $cbackend = TestUtil::getBackend();
+ $pbackend = new DAVACL\PrincipalBackend\Mock();
+
+ $props = array(
+ 'uri'=>'UUID-123467',
+ 'principaluri' => 'admin',
+ 'id' => 1,
+ );
+ $tree = array(
+ new Calendar($cbackend,$props),
+ new DAVACL\PrincipalCollection($pbackend),
+ );
+
+ $p = new ICSExportPlugin();
+
+ $s = new DAV\Server($tree);
+ $s->sapi = new HTTP\SapiMock();
+ $s->addPlugin($p);
+ $s->addPlugin(new Plugin());
+
+ $h = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_URI' => '/UUID-123467?export&start=1&end=2000000000&expand=1',
+ 'REQUEST_METHOD' => 'GET',
+ ]);
+
+ $s->httpRequest = $h;
+ $s->httpResponse = new HTTP\ResponseMock();
+
+ $s->exec();
+
+ $this->assertEquals(200, $s->httpResponse->status,'Invalid status received. Response body: '. $s->httpResponse->body);
+ $obj = VObject\Reader::read($s->httpResponse->body);
+
+ $this->assertEquals(0,count($obj->VTIMEZONE));
+ $this->assertEquals(1,count($obj->VEVENT));
+
+ }
+
+ function testJCal() {
+
+ $cbackend = TestUtil::getBackend();
+ $pbackend = new DAVACL\PrincipalBackend\Mock();
+
+ $props = array(
+ 'uri'=>'UUID-123467',
+ 'principaluri' => 'admin',
+ 'id' => 1,
+ );
+ $tree = array(
+ new Calendar($cbackend,$props),
+ new DAVACL\PrincipalCollection($pbackend),
+ );
+
+ $p = new ICSExportPlugin();
+
+ $s = new DAV\Server($tree);
+ $s->sapi = new HTTP\SapiMock();
+ $s->addPlugin($p);
+ $s->addPlugin(new Plugin());
+
+ $h = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_URI' => '/UUID-123467?export',
+ 'REQUEST_METHOD' => 'GET',
+ 'HTTP_ACCEPT' => 'application/calendar+json',
+ ]);
+
+ $s->httpRequest = $h;
+ $s->httpResponse = new HTTP\ResponseMock();
+
+ $s->exec();
+
+ $this->assertEquals(200, $s->httpResponse->status,'Invalid status received. Response body: '. $s->httpResponse->body);
+ $this->assertEquals('application/calendar+json', $s->httpResponse->getHeader('Content-Type'));
+
+ }
+
+ function testJCalInUrl() {
+
+ $cbackend = TestUtil::getBackend();
+ $pbackend = new DAVACL\PrincipalBackend\Mock();
+
+ $props = array(
+ 'uri'=>'UUID-123467',
+ 'principaluri' => 'admin',
+ 'id' => 1,
+ );
+ $tree = array(
+ new Calendar($cbackend,$props),
+ new DAVACL\PrincipalCollection($pbackend),
+ );
+
+ $p = new ICSExportPlugin();
+
+ $s = new DAV\Server($tree);
+ $s->sapi = new HTTP\SapiMock();
+ $s->addPlugin($p);
+ $s->addPlugin(new Plugin());
+
+ $h = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_URI' => '/UUID-123467?export&accept=jcal',
+ 'REQUEST_METHOD' => 'GET',
+ ]);
+
+ $s->httpRequest = $h;
+ $s->httpResponse = new HTTP\ResponseMock();
+
+ $s->exec();
+
+ $this->assertEquals(200, $s->httpResponse->status,'Invalid status received. Response body: '. $s->httpResponse->body);
+ $this->assertEquals('application/calendar+json', $s->httpResponse->getHeader('Content-Type'));
+
+ }
+
+ function testNegotiateDefault() {
+
+ $cbackend = TestUtil::getBackend();
+ $pbackend = new DAVACL\PrincipalBackend\Mock();
+
+ $props = array(
+ 'uri'=>'UUID-123467',
+ 'principaluri' => 'admin',
+ 'id' => 1,
+ );
+ $tree = array(
+ new Calendar($cbackend,$props),
+ new DAVACL\PrincipalCollection($pbackend),
+ );
+
+ $p = new ICSExportPlugin();
+
+ $s = new DAV\Server($tree);
+ $s->sapi = new HTTP\SapiMock();
+ $s->addPlugin($p);
+ $s->addPlugin(new Plugin());
+
+ $h = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_URI' => '/UUID-123467?export',
+ 'REQUEST_METHOD' => 'GET',
+ 'HTTP_ACCEPT' => 'text/plain',
+ ]);
+
+ $s->httpRequest = $h;
+ $s->httpResponse = new HTTP\ResponseMock();
+
+ $s->exec();
+
+ $this->assertEquals(200, $s->httpResponse->status,'Invalid status received. Response body: '. $s->httpResponse->body);
+ $this->assertEquals('text/calendar', $s->httpResponse->getHeader('Content-Type'));
+
+ }
+
+ function testFilterComponentVEVENT() {
+
+ $cbackend = TestUtil::getBackend();
+ $pbackend = new DAVACL\PrincipalBackend\Mock();
+
+ $props = array(
+ 'uri'=>'UUID-123467',
+ 'principaluri' => 'admin',
+ 'id' => 1,
+ );
+ // add a todo to the calendar (see /tests/Sabre/TestUtil)
+ $cbackend->createCalendarObject(1, 'UUID-3456', TestUtil::getTestTODO());
+
+ $tree = array(
+ new Calendar($cbackend,$props),
+ new DAVACL\PrincipalCollection($pbackend),
+ );
+
+ $p = new ICSExportPlugin();
+
+ $s = new DAV\Server($tree);
+ $s->sapi = new HTTP\SapiMock();
+ $s->addPlugin($p);
+ $s->addPlugin(new Plugin());
+
+ $h = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_URI' => '/UUID-123467?export&componentType=VEVENT',
+ 'REQUEST_METHOD' => 'GET',
+ ]);
+
+ $s->httpRequest = $h;
+ $s->httpResponse = new HTTP\ResponseMock();
+
+ $s->exec();
+
+ $this->assertEquals(200, $s->httpResponse->status,'Invalid status received. Response body: '. $s->httpResponse->body);
+ $obj = VObject\Reader::read($s->httpResponse->body);
+
+ $this->assertEquals(1,count($obj->VTIMEZONE));
+ $this->assertEquals(1,count($obj->VEVENT));
+ $this->assertEquals(0,count($obj->VTODO));
+
+ }
+
+ function testFilterComponentVTODO() {
+
+ $cbackend = TestUtil::getBackend();
+ $pbackend = new DAVACL\PrincipalBackend\Mock();
+
+ $props = [
+ 'uri'=>'UUID-123467',
+ 'principaluri' => 'admin',
+ 'id' => 1,
+ ];
+ // add a todo to the calendar (see /tests/Sabre/TestUtil)
+ $cbackend->createCalendarObject(1, 'UUID-3456', TestUtil::getTestTODO());
+
+ $tree = [
+ new Calendar($cbackend,$props),
+ new DAVACL\PrincipalCollection($pbackend),
+ ];
+
+ $p = new ICSExportPlugin();
+
+ $s = new DAV\Server($tree);
+ $s->sapi = new HTTP\SapiMock();
+ $s->addPlugin($p);
+ $s->addPlugin(new Plugin());
+
+ $h = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_URI' => '/UUID-123467?export&componentType=VTODO',
+ 'REQUEST_METHOD' => 'GET',
+ ]);
+
+ $s->httpRequest = $h;
+ $s->httpResponse = new HTTP\ResponseMock();
+
+ $s->exec();
+
+ $this->assertEquals(200, $s->httpResponse->status,'Invalid status received. Response body: '. $s->httpResponse->body);
+ $obj = VObject\Reader::read($s->httpResponse->body);
+
+ $this->assertEquals(0,count($obj->VTIMEZONE));
+ $this->assertEquals(0,count($obj->VEVENT));
+ $this->assertEquals(1,count($obj->VTODO));
+
+ }
+
+ function testFilterComponentBadComponent() {
+
+ $cbackend = TestUtil::getBackend();
+ $pbackend = new DAVACL\PrincipalBackend\Mock();
+
+ $props = [
+ 'uri'=>'UUID-123467',
+ 'principaluri' => 'admin',
+ 'id' => 1,
+ ];
+ // add a todo to the calendar (see /tests/Sabre/TestUtil)
+ $cbackend->createCalendarObject(1, 'UUID-3456', TestUtil::getTestTODO());
+
+ $tree = [
+ new Calendar($cbackend,$props),
+ new DAVACL\PrincipalCollection($pbackend),
+ ];
+
+ $p = new ICSExportPlugin();
+
+ $s = new DAV\Server($tree);
+ $s->sapi = new HTTP\SapiMock();
+ $s->addPlugin($p);
+ $s->addPlugin(new Plugin());
+
+ $h = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_URI' => '/UUID-123467?export&componentType=VVOODOO',
+ 'REQUEST_METHOD' => 'GET',
+ ]);
+
+ $s->httpRequest = $h;
+ $s->httpResponse = new HTTP\ResponseMock();
+
+ $s->exec();
+
+ $this->assertEquals(400, $s->httpResponse->status,'Invalid status received. Response body: '. $s->httpResponse->body);
+
+ }
}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue203Test.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue203Test.php
index 21ee2f550..369e9a70c 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue203Test.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue203Test.php
@@ -1,14 +1,14 @@
<?php
namespace Sabre\CalDAV;
+
use Sabre\HTTP;
use Sabre\VObject;
/**
* This unittest is created to find out why an overwritten DAILY event has wrong DTSTART, DTEND, SUMMARY and RECURRENCEID
*
- *
- * @copyright Copyright (C) 2007-2014 Rooftop Solutions. All rights reserved.
+ * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
@@ -16,18 +16,18 @@ class Issue203Test extends \Sabre\DAVServerTest {
protected $setupCalDAV = true;
- protected $caldavCalendars = array(
- array(
- 'id' => 1,
- 'name' => 'Calendar',
+ protected $caldavCalendars = [
+ [
+ 'id' => 1,
+ 'name' => 'Calendar',
'principaluri' => 'principals/user1',
- 'uri' => 'calendar1',
- )
- );
+ 'uri' => 'calendar1',
+ ]
+ ];
- protected $caldavCalendarObjects = array(
- 1 => array(
- 'event.ics' => array(
+ protected $caldavCalendarObjects = [
+ 1 => [
+ 'event.ics' => [
'calendardata' => 'BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
@@ -52,18 +52,18 @@ TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR
',
- ),
- ),
- );
+ ],
+ ],
+ ];
function testIssue203() {
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'REPORT',
+ $request = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_METHOD' => 'REPORT',
'HTTP_CONTENT_TYPE' => 'application/xml',
- 'REQUEST_URI' => '/calendars/user1/calendar1',
- 'HTTP_DEPTH' => '1',
- ));
+ 'REQUEST_URI' => '/calendars/user1/calendar1',
+ 'HTTP_DEPTH' => '1',
+ ]);
$request->setBody('<?xml version="1.0" encoding="utf-8" ?>
<C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
@@ -90,26 +90,26 @@ END:VCALENDAR
$start = strpos($response->body, 'BEGIN:VCALENDAR'),
strpos($response->body, 'END:VCALENDAR') - $start + 13
);
- $body = str_replace('&#13;','',$body);
+ $body = str_replace('&#13;', '', $body);
$vObject = VObject\Reader::read($body);
$this->assertEquals(2, count($vObject->VEVENT));
- $expectedEvents = array(
- array(
+ $expectedEvents = [
+ [
'DTSTART' => '20120326T135200Z',
'DTEND' => '20120326T145200Z',
'SUMMARY' => 'original summary',
- ),
- array(
+ ],
+ [
'DTSTART' => '20120328T135200Z',
'DTEND' => '20120328T145200Z',
'SUMMARY' => 'overwritten summary',
'RECURRENCE-ID' => '20120327T135200Z',
- )
- );
+ ]
+ ];
// try to match agains $expectedEvents array
foreach ($expectedEvents as $expectedEvent) {
@@ -118,10 +118,8 @@ END:VCALENDAR
foreach ($vObject->VEVENT as $vevent) {
/** @var $vevent Sabre\VObject\Component\VEvent */
-
- foreach ($vevent->children as $child) {
+ foreach ($vevent->children() as $child) {
/** @var $child Sabre\VObject\Property */
-
if (isset($expectedEvent[$child->name])) {
if ($expectedEvent[$child->name] != $child->getValue()) {
continue 2;
@@ -133,7 +131,7 @@ END:VCALENDAR
break;
}
- $this->assertTrue($matching, 'Did not find the following event in the response: '.var_export($expectedEvent, true));
+ $this->assertTrue($matching, 'Did not find the following event in the response: ' . var_export($expectedEvent, true));
}
}
}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue205Test.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue205Test.php
index cd6820b57..4a53fcbe2 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue205Test.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue205Test.php
@@ -7,7 +7,7 @@ use Sabre\VObject;
/**
* This unittest is created to check if a VALARM TRIGGER of PT0S is supported
*
- * @copyright Copyright (C) 2007-2014 fruux GmbH (https://fruux.com/).
+ * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
@@ -50,7 +50,7 @@ END:VCALENDAR
function testIssue205() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'REPORT',
'HTTP_CONTENT_TYPE' => 'application/xml',
'REQUEST_URI' => '/calendars/user1/calendar1',
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue211Test.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue211Test.php
index cc700e50d..f291e5e57 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue211Test.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue211Test.php
@@ -7,7 +7,7 @@ use Sabre\VObject;
/**
* This unittest is created to check for an endless loop in Sabre\CalDAV\CalendarQueryValidator
*
- * @copyright Copyright (C) 2007-2014 fruux GmbH (https://fruux.com/).
+ * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
@@ -55,7 +55,7 @@ END:VCALENDAR
function testIssue211() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'REPORT',
'HTTP_CONTENT_TYPE' => 'application/xml',
'REQUEST_URI' => '/calendars/user1/calendar1',
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue220Test.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue220Test.php
index ce66b6a5f..7b5dbfe63 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue220Test.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue220Test.php
@@ -7,7 +7,7 @@ use Sabre\HTTP;
/**
* This unittest is created to check for an endless loop in CalendarQueryValidator
*
- * @copyright Copyright (C) 2007-2014 fruux GmbH (https://fruux.com/).
+ * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
@@ -65,7 +65,7 @@ END:VCALENDAR
function testIssue220() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'REPORT',
'HTTP_CONTENT_TYPE' => 'application/xml',
'REQUEST_URI' => '/calendars/user1/calendar1',
@@ -94,6 +94,6 @@ END:VCALENDAR
$this->assertFalse(strpos($response->body, '<s:exception>PHPUnit_Framework_Error_Warning</s:exception>'), 'Error Warning occurred: ' . $response->body);
$this->assertFalse(strpos($response->body, 'Invalid argument supplied for foreach()'), 'Invalid argument supplied for foreach(): ' . $response->body);
- $this->assertEquals('HTTP/1.1 207 Multi-Status', $response->status);
+ $this->assertEquals(207, $response->status);
}
}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue228Test.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue228Test.php
index 23371a054..ccc6b303a 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Issue228Test.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Issue228Test.php
@@ -6,7 +6,7 @@ use Sabre\HTTP;
/**
* This unittest is created to check if the time-range filter is working correctly with all-day-events
*
- * @copyright Copyright (C) 2007-2014 fruux GmbH (https://fruux.com/).
+ * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
@@ -44,7 +44,7 @@ END:VCALENDAR
function testIssue228() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'REPORT',
'HTTP_CONTENT_TYPE' => 'application/xml',
'REQUEST_URI' => '/calendars/user1/calendar1',
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/CollectionTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/CollectionTest.php
index eaed4f503..68035184f 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/CollectionTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/CollectionTest.php
@@ -14,9 +14,9 @@ class CollectionTest extends \PHPUnit_Framework_TestCase {
$this->principalUri = 'principals/user1';
- $this->notification = new Notification\SystemStatus(1,'"1"');
+ $this->notification = new CalDAV\Xml\Notification\SystemStatus(1,'"1"');
- $this->caldavBackend = new CalDAV\Backend\Mock(array(),array(), array(
+ $this->caldavBackend = new CalDAV\Backend\MockSharing(array(),array(), array(
'principals/user1' => array(
$this->notification
)
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/NodeTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/NodeTest.php
index 28e43ce08..d546116fc 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/NodeTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/NodeTest.php
@@ -13,13 +13,13 @@ class NodeTest extends \PHPUnit_Framework_TestCase {
$principalUri = 'principals/user1';
- $this->systemStatus = new Notification\SystemStatus(1,'"1"');
+ $this->systemStatus = new CalDAV\Xml\Notification\SystemStatus(1,'"1"');
- $this->caldavBackend = new CalDAV\Backend\Mock(array(),array(), array(
- 'principals/user1' => array(
+ $this->caldavBackend = new CalDAV\Backend\MockSharing([], [], [
+ 'principals/user1' => [
$this->systemStatus
- )
- ));
+ ]
+ ]);
$node = new Node($this->caldavBackend, 'principals/user1', $this->systemStatus);
return $node;
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/Notification/InviteReplyTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/Notification/InviteReplyTest.php
deleted file mode 100644
index c53f68cee..000000000
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/Notification/InviteReplyTest.php
+++ /dev/null
@@ -1,134 +0,0 @@
-<?php
-
-namespace Sabre\CalDAV\Notifications\Notification;
-
-use Sabre\CalDAV;
-use Sabre\DAV;
-
-class InviteReplyTest extends \PHPUnit_Framework_TestCase {
-
- /**
- * @dataProvider dataProvider
- */
- function testSerializers($notification, $expected) {
-
- $notification = new InviteReply($notification);
-
- $this->assertEquals('foo', $notification->getId());
- $this->assertEquals('"1"', $notification->getETag());
-
- $simpleExpected = '<?xml version="1.0" encoding="UTF-8"?>' . "\n" . '<cs:root xmlns:cs="http://calendarserver.org/ns/"><cs:invite-reply/></cs:root>' . "\n";
-
- $dom = new \DOMDocument('1.0','UTF-8');
- $elem = $dom->createElement('cs:root');
- $elem->setAttribute('xmlns:cs',CalDAV\Plugin::NS_CALENDARSERVER);
- $dom->appendChild($elem);
- $notification->serialize(new DAV\Server(), $elem);
- $this->assertEquals($simpleExpected, $dom->saveXML());
-
- $dom = new \DOMDocument('1.0','UTF-8');
- $dom->formatOutput = true;
- $elem = $dom->createElement('cs:root');
- $elem->setAttribute('xmlns:cs',CalDAV\Plugin::NS_CALENDARSERVER);
- $elem->setAttribute('xmlns:d','DAV:');
- $dom->appendChild($elem);
- $notification->serializeBody(new DAV\Server(), $elem);
- $this->assertEquals($expected, $dom->saveXML());
-
-
- }
-
- function dataProvider() {
-
- $dtStamp = new \DateTime('2012-01-01 00:00:00 GMT');
- return array(
- array(
- array(
- 'id' => 'foo',
- 'dtStamp' => $dtStamp,
- 'etag' => '"1"',
- 'inReplyTo' => 'bar',
- 'href' => 'mailto:foo@example.org',
- 'type' => CalDAV\SharingPlugin::STATUS_ACCEPTED,
- 'hostUrl' => 'calendar'
- ),
-<<<FOO
-<?xml version="1.0" encoding="UTF-8"?>
-<cs:root xmlns:cs="http://calendarserver.org/ns/" xmlns:d="DAV:">
- <cs:dtstamp>20120101T000000Z</cs:dtstamp>
- <cs:invite-reply>
- <cs:uid>foo</cs:uid>
- <cs:in-reply-to>bar</cs:in-reply-to>
- <d:href>mailto:foo@example.org</d:href>
- <cs:invite-accepted/>
- <cs:hosturl>
- <d:href>/calendar</d:href>
- </cs:hosturl>
- </cs:invite-reply>
-</cs:root>
-
-FOO
- ),
- array(
- array(
- 'id' => 'foo',
- 'dtStamp' => $dtStamp,
- 'etag' => '"1"',
- 'inReplyTo' => 'bar',
- 'href' => 'mailto:foo@example.org',
- 'type' => CalDAV\SharingPlugin::STATUS_DECLINED,
- 'hostUrl' => 'calendar',
- 'summary' => 'Summary!'
- ),
-<<<FOO
-<?xml version="1.0" encoding="UTF-8"?>
-<cs:root xmlns:cs="http://calendarserver.org/ns/" xmlns:d="DAV:">
- <cs:dtstamp>20120101T000000Z</cs:dtstamp>
- <cs:invite-reply>
- <cs:uid>foo</cs:uid>
- <cs:in-reply-to>bar</cs:in-reply-to>
- <d:href>mailto:foo@example.org</d:href>
- <cs:invite-declined/>
- <cs:hosturl>
- <d:href>/calendar</d:href>
- </cs:hosturl>
- <cs:summary>Summary!</cs:summary>
- </cs:invite-reply>
-</cs:root>
-
-FOO
- ),
-
- );
-
- }
-
- /**
- * @expectedException InvalidArgumentException
- */
- function testMissingArg() {
-
- new InviteReply(array());
-
- }
-
- /**
- * @expectedException InvalidArgumentException
- */
- function testUnknownArg() {
-
- new InviteReply(array(
- 'foo-i-will-break' => true,
-
- 'id' => 1,
- 'etag' => '"bla"',
- 'href' => 'abc',
- 'dtStamp' => 'def',
- 'inReplyTo' => 'qrs',
- 'type' => 'ghi',
- 'hostUrl' => 'jkl',
- ));
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/Notification/InviteTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/Notification/InviteTest.php
deleted file mode 100644
index d2c114f4c..000000000
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/Notification/InviteTest.php
+++ /dev/null
@@ -1,230 +0,0 @@
-<?php
-
-namespace Sabre\CalDAV\Notifications\Notification;
-
-use Sabre\CalDAV;
-use Sabre\DAV;
-
-class InviteTest extends \PHPUnit_Framework_TestCase {
-
- /**
- * @dataProvider dataProvider
- */
- function testSerializers($notification, $expected) {
-
- $notification = new Invite($notification);
-
- $this->assertEquals('foo', $notification->getId());
- $this->assertEquals('"1"', $notification->getETag());
-
- $simpleExpected = '<?xml version="1.0" encoding="UTF-8"?>' . "\n" . '<cs:root xmlns:cs="http://calendarserver.org/ns/"><cs:invite-notification/></cs:root>' . "\n";
-
- $dom = new \DOMDocument('1.0','UTF-8');
- $elem = $dom->createElement('cs:root');
- $elem->setAttribute('xmlns:cs',CalDAV\Plugin::NS_CALENDARSERVER);
- $dom->appendChild($elem);
- $notification->serialize(new DAV\Server(), $elem);
- $this->assertEquals($simpleExpected, $dom->saveXML());
-
- $dom = new \DOMDocument('1.0','UTF-8');
- $dom->formatOutput = true;
- $elem = $dom->createElement('cs:root');
- $elem->setAttribute('xmlns:cs',CalDAV\Plugin::NS_CALENDARSERVER);
- $elem->setAttribute('xmlns:d','DAV:');
- $elem->setAttribute('xmlns:cal',CalDAV\Plugin::NS_CALDAV);
- $dom->appendChild($elem);
- $notification->serializeBody(new DAV\Server(), $elem);
- $this->assertEquals($expected, $dom->saveXML());
-
-
- }
-
- function dataProvider() {
-
- $dtStamp = new \DateTime('2012-01-01 00:00:00', new \DateTimeZone('GMT'));
- return array(
- array(
- array(
- 'id' => 'foo',
- 'dtStamp' => $dtStamp,
- 'etag' => '"1"',
- 'href' => 'mailto:foo@example.org',
- 'type' => CalDAV\SharingPlugin::STATUS_ACCEPTED,
- 'readOnly' => true,
- 'hostUrl' => 'calendar',
- 'organizer' => 'principal/user1',
- 'commonName' => 'John Doe',
- 'summary' => 'Awesome stuff!'
- ),
-<<<FOO
-<?xml version="1.0" encoding="UTF-8"?>
-<cs:root xmlns:cs="http://calendarserver.org/ns/" xmlns:d="DAV:" xmlns:cal="urn:ietf:params:xml:ns:caldav">
- <cs:dtstamp>20120101T000000Z</cs:dtstamp>
- <cs:invite-notification>
- <cs:uid>foo</cs:uid>
- <d:href>mailto:foo@example.org</d:href>
- <cs:invite-accepted/>
- <cs:hosturl>
- <d:href>/calendar</d:href>
- </cs:hosturl>
- <cs:access>
- <cs:read/>
- </cs:access>
- <cs:organizer-cn>John Doe</cs:organizer-cn>
- <cs:organizer>
- <d:href>/principal/user1</d:href>
- <cs:common-name>John Doe</cs:common-name>
- </cs:organizer>
- <cs:summary>Awesome stuff!</cs:summary>
- </cs:invite-notification>
-</cs:root>
-
-FOO
- ),
- array(
- array(
- 'id' => 'foo',
- 'dtStamp' => $dtStamp,
- 'etag' => '"1"',
- 'href' => 'mailto:foo@example.org',
- 'type' => CalDAV\SharingPlugin::STATUS_DECLINED,
- 'readOnly' => true,
- 'hostUrl' => 'calendar',
- 'organizer' => 'principal/user1',
- 'commonName' => 'John Doe',
- ),
-<<<FOO
-<?xml version="1.0" encoding="UTF-8"?>
-<cs:root xmlns:cs="http://calendarserver.org/ns/" xmlns:d="DAV:" xmlns:cal="urn:ietf:params:xml:ns:caldav">
- <cs:dtstamp>20120101T000000Z</cs:dtstamp>
- <cs:invite-notification>
- <cs:uid>foo</cs:uid>
- <d:href>mailto:foo@example.org</d:href>
- <cs:invite-declined/>
- <cs:hosturl>
- <d:href>/calendar</d:href>
- </cs:hosturl>
- <cs:access>
- <cs:read/>
- </cs:access>
- <cs:organizer-cn>John Doe</cs:organizer-cn>
- <cs:organizer>
- <d:href>/principal/user1</d:href>
- <cs:common-name>John Doe</cs:common-name>
- </cs:organizer>
- </cs:invite-notification>
-</cs:root>
-
-FOO
- ),
- array(
- array(
- 'id' => 'foo',
- 'dtStamp' => $dtStamp,
- 'etag' => '"1"',
- 'href' => 'mailto:foo@example.org',
- 'type' => CalDAV\SharingPlugin::STATUS_NORESPONSE,
- 'readOnly' => true,
- 'hostUrl' => 'calendar',
- 'organizer' => 'principal/user1',
- 'firstName' => 'Foo',
- 'lastName' => 'Bar',
- ),
-<<<FOO
-<?xml version="1.0" encoding="UTF-8"?>
-<cs:root xmlns:cs="http://calendarserver.org/ns/" xmlns:d="DAV:" xmlns:cal="urn:ietf:params:xml:ns:caldav">
- <cs:dtstamp>20120101T000000Z</cs:dtstamp>
- <cs:invite-notification>
- <cs:uid>foo</cs:uid>
- <d:href>mailto:foo@example.org</d:href>
- <cs:invite-noresponse/>
- <cs:hosturl>
- <d:href>/calendar</d:href>
- </cs:hosturl>
- <cs:access>
- <cs:read/>
- </cs:access>
- <cs:organizer-first>Foo</cs:organizer-first>
- <cs:organizer-last>Bar</cs:organizer-last>
- <cs:organizer>
- <d:href>/principal/user1</d:href>
- <cs:first-name>Foo</cs:first-name>
- <cs:last-name>Bar</cs:last-name>
- </cs:organizer>
- </cs:invite-notification>
-</cs:root>
-
-FOO
- ),
- array(
- array(
- 'id' => 'foo',
- 'dtStamp' => $dtStamp,
- 'etag' => '"1"',
- 'href' => 'mailto:foo@example.org',
- 'type' => CalDAV\SharingPlugin::STATUS_DELETED,
- 'readOnly' => false,
- 'hostUrl' => 'calendar',
- 'organizer' => 'mailto:user1@fruux.com',
- 'supportedComponents' => new CalDAV\Property\SupportedCalendarComponentSet(array('VEVENT','VTODO')),
- ),
-<<<FOO
-<?xml version="1.0" encoding="UTF-8"?>
-<cs:root xmlns:cs="http://calendarserver.org/ns/" xmlns:d="DAV:" xmlns:cal="urn:ietf:params:xml:ns:caldav">
- <cs:dtstamp>20120101T000000Z</cs:dtstamp>
- <cs:invite-notification>
- <cs:uid>foo</cs:uid>
- <d:href>mailto:foo@example.org</d:href>
- <cs:invite-deleted/>
- <cs:hosturl>
- <d:href>/calendar</d:href>
- </cs:hosturl>
- <cs:access>
- <cs:read-write/>
- </cs:access>
- <cs:organizer>
- <d:href>mailto:user1@fruux.com</d:href>
- </cs:organizer>
- <cal:supported-calendar-component-set>
- <cal:comp name="VEVENT"/>
- <cal:comp name="VTODO"/>
- </cal:supported-calendar-component-set>
- </cs:invite-notification>
-</cs:root>
-
-FOO
- ),
-
- );
-
- }
-
- /**
- * @expectedException InvalidArgumentException
- */
- function testMissingArg() {
-
- new Invite(array());
-
- }
-
- /**
- * @expectedException InvalidArgumentException
- */
- function testUnknownArg() {
-
- new Invite(array(
- 'foo-i-will-break' => true,
-
- 'id' => 1,
- 'etag' => '"bla"',
- 'href' => 'abc',
- 'dtStamp' => 'def',
- 'type' => 'ghi',
- 'readOnly' => true,
- 'hostUrl' => 'jkl',
- 'organizer' => 'mno',
- ));
-
- }
-}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/Notification/SystemStatusTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/Notification/SystemStatusTest.php
deleted file mode 100644
index 8dc494932..000000000
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Notifications/Notification/SystemStatusTest.php
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-namespace Sabre\CalDAV\Notifications\Notification;
-
-use Sabre\CalDAV;
-use Sabre\DAV;
-
-class SystemStatusTest extends \PHPUnit_Framework_TestCase {
-
- /**
- * @dataProvider dataProvider
- */
- function testSerializers($notification, $expected1, $expected2) {
-
- $this->assertEquals('foo', $notification->getId());
- $this->assertEquals('"1"', $notification->getETag());
-
-
- $dom = new \DOMDocument('1.0','UTF-8');
- $elem = $dom->createElement('cs:root');
- $elem->setAttribute('xmlns:cs',CalDAV\Plugin::NS_CALENDARSERVER);
- $dom->appendChild($elem);
- $notification->serialize(new DAV\Server(), $elem);
- $this->assertEquals($expected1, $dom->saveXML());
-
- $dom = new \DOMDocument('1.0','UTF-8');
- $elem = $dom->createElement('cs:root');
- $elem->setAttribute('xmlns:cs',CalDAV\Plugin::NS_CALENDARSERVER);
- $dom->appendChild($elem);
- $notification->serializeBody(new DAV\Server(), $elem);
- $this->assertEquals($expected2, $dom->saveXML());
-
-
- }
-
- function dataProvider() {
-
- return array(
-
- array(
- new SystemStatus('foo', '"1"'),
- '<?xml version="1.0" encoding="UTF-8"?>' . "\n" . '<cs:root xmlns:cs="http://calendarserver.org/ns/"><cs:systemstatus type="high"/></cs:root>' . "\n",
- '<?xml version="1.0" encoding="UTF-8"?>' . "\n" . '<cs:root xmlns:cs="http://calendarserver.org/ns/"><cs:systemstatus type="high"/></cs:root>' . "\n",
- ),
-
- array(
- new SystemStatus('foo', '"1"', SystemStatus::TYPE_MEDIUM,'bar'),
- '<?xml version="1.0" encoding="UTF-8"?>' . "\n" . '<cs:root xmlns:cs="http://calendarserver.org/ns/"><cs:systemstatus type="medium"/></cs:root>' . "\n",
- '<?xml version="1.0" encoding="UTF-8"?>' . "\n" . '<cs:root xmlns:cs="http://calendarserver.org/ns/"><cs:systemstatus type="medium"><cs:description>bar</cs:description></cs:systemstatus></cs:root>' . "\n",
- ),
-
- array(
- new SystemStatus('foo', '"1"', SystemStatus::TYPE_LOW,null,'http://example.org/'),
- '<?xml version="1.0" encoding="UTF-8"?>' . "\n" . '<cs:root xmlns:cs="http://calendarserver.org/ns/"><cs:systemstatus type="low"/></cs:root>' . "\n",
- '<?xml version="1.0" encoding="UTF-8"?>' . "\n" . '<cs:root xmlns:cs="http://calendarserver.org/ns/"><cs:systemstatus type="low"><d:href>http://example.org/</d:href></cs:systemstatus></cs:root>' . "\n",
- )
- );
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/OutboxPostTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/OutboxPostTest.php
deleted file mode 100644
index 5a5a4e75c..000000000
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/OutboxPostTest.php
+++ /dev/null
@@ -1,545 +0,0 @@
-<?php
-
-namespace Sabre\CalDAV;
-use Sabre\HTTP;
-use Sabre\VObject;
-use Sabre\DAV;
-
-require_once 'Sabre/DAVServerTest.php';
-require_once 'Sabre/CalDAV/Schedule/IMip/Mock.php';
-
-class OutboxPostTest extends \Sabre\DAVServerTest {
-
- protected $setupCalDAV = true;
-
- function testPostPassThruNotFound() {
-
- $req = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'REQUEST_URI' => '/notfound',
- 'HTTP_CONTENT_TYPE' => 'text/calendar',
- ));
-
- $this->assertHTTPStatus(501, $req);
-
- }
-
- function testPostPassThruNotTextCalendar() {
-
- $req = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'REQUEST_URI' => '/calendars/admin/outbox',
- ));
-
- $this->assertHTTPStatus(501, $req);
-
- }
-
- function testPostPassThruNoOutBox() {
-
- $req = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'REQUEST_URI' => '/calendars',
- 'HTTP_CONTENT_TYPE' => 'text/calendar',
- ));
-
- $this->assertHTTPStatus(501, $req);
-
- }
-
- function testNoOriginator() {
-
- $req = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'REQUEST_URI' => '/calendars/admin/outbox',
- 'HTTP_CONTENT_TYPE' => 'text/calendar',
- ));
- $body = array(
- 'BEGIN:VCALENDAR',
- 'METHOD:REQUEST',
- 'BEGIN:VEVENT',
- 'END:VEVENT',
- 'END:VCALENDAR',
- );
- $req->setBody(implode("\r\n",$body));
-
- $this->assertHTTPStatus(400, $req);
-
- }
-
- function testNoRecipient() {
-
- $req = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'REQUEST_URI' => '/calendars/admin/outbox',
- 'HTTP_ORIGINATOR' => 'mailto:orig@example.org',
- 'HTTP_CONTENT_TYPE' => 'text/calendar',
- ));
- $body = array(
- 'BEGIN:VCALENDAR',
- 'METHOD:REQUEST',
- 'BEGIN:VEVENT',
- 'END:VEVENT',
- 'END:VCALENDAR',
- );
- $req->setBody(implode("\r\n",$body));
-
- $this->assertHTTPStatus(400, $req);
-
- }
-
- function testBadOriginator() {
-
- $req = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'REQUEST_URI' => '/calendars/admin/outbox',
- 'HTTP_ORIGINATOR' => 'nomailto:orig@example.org',
- 'HTTP_RECIPIENT' => 'mailto:user1@example.org',
- 'HTTP_CONTENT_TYPE' => 'text/calendar',
- ));
- $body = array(
- 'BEGIN:VCALENDAR',
- 'METHOD:REQUEST',
- 'BEGIN:VEVENT',
- 'END:VEVENT',
- 'END:VCALENDAR',
- );
- $req->setBody(implode("\r\n",$body));
-
- $this->assertHTTPStatus(403, $req);
-
- }
-
- function testBadRecipient() {
-
- $req = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'REQUEST_URI' => '/calendars/admin/outbox',
- 'HTTP_ORIGINATOR' => 'mailto:orig@example.org',
- 'HTTP_RECIPIENT' => 'http://user1@example.org, mailto:user2@example.org',
- 'HTTP_CONTENT_TYPE' => 'text/calendar',
- ));
- $body = array(
- 'BEGIN:VCALENDAR',
- 'METHOD:REQUEST',
- 'BEGIN:VEVENT',
- 'END:VEVENT',
- 'END:VCALENDAR',
- );
- $req->setBody(implode("\r\n",$body));
-
- $this->assertHTTPStatus(400, $req);
-
- }
-
- function testIncorrectOriginator() {
-
- $req = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'REQUEST_URI' => '/calendars/admin/outbox',
- 'HTTP_ORIGINATOR' => 'mailto:orig@example.org',
- 'HTTP_RECIPIENT' => 'mailto:user1@example.org, mailto:user2@example.org',
- 'HTTP_CONTENT_TYPE' => 'text/calendar',
- ));
- $body = array(
- 'BEGIN:VCALENDAR',
- 'METHOD:REQUEST',
- 'BEGIN:VEVENT',
- 'END:VEVENT',
- 'END:VCALENDAR',
- );
- $req->setBody(implode("\r\n",$body));
-
- $this->assertHTTPStatus(403, $req);
-
- }
-
- function testInvalidIcalBody() {
-
- $req = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'REQUEST_URI' => '/calendars/user1/outbox',
- 'HTTP_ORIGINATOR' => 'mailto:user1.sabredav@sabredav.org',
- 'HTTP_RECIPIENT' => 'mailto:user2@example.org',
- 'HTTP_CONTENT_TYPE' => 'text/calendar',
- ));
- $req->setBody('foo');
-
- $this->assertHTTPStatus(400, $req);
-
- }
-
- function testNoVEVENT() {
-
- $req = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'REQUEST_URI' => '/calendars/user1/outbox',
- 'HTTP_ORIGINATOR' => 'mailto:user1.sabredav@sabredav.org',
- 'HTTP_RECIPIENT' => 'mailto:user2@example.org',
- 'HTTP_CONTENT_TYPE' => 'text/calendar',
- ));
-
- $body = array(
- 'BEGIN:VCALENDAR',
- 'BEGIN:VTIMEZONE',
- 'END:VTIMEZONE',
- 'END:VCALENDAR',
- );
-
- $req->setBody(implode("\r\n",$body));
-
- $this->assertHTTPStatus(400, $req);
-
- }
-
- function testNoMETHOD() {
-
- $req = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'REQUEST_URI' => '/calendars/user1/outbox',
- 'HTTP_ORIGINATOR' => 'mailto:user1.sabredav@sabredav.org',
- 'HTTP_RECIPIENT' => 'mailto:user2@example.org',
- 'HTTP_CONTENT_TYPE' => 'text/calendar',
- ));
-
- $body = array(
- 'BEGIN:VCALENDAR',
- 'BEGIN:VEVENT',
- 'END:VEVENT',
- 'END:VCALENDAR',
- );
-
- $req->setBody(implode("\r\n",$body));
-
- $this->assertHTTPStatus(400, $req);
-
- }
-
- function testUnsupportedMethod() {
-
- $req = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'REQUEST_URI' => '/calendars/user1/outbox',
- 'HTTP_ORIGINATOR' => 'mailto:user1.sabredav@sabredav.org',
- 'HTTP_RECIPIENT' => 'mailto:user2@example.org',
- 'HTTP_CONTENT_TYPE' => 'text/calendar',
- ));
-
- $body = array(
- 'BEGIN:VCALENDAR',
- 'METHOD:PUBLISH',
- 'BEGIN:VEVENT',
- 'END:VEVENT',
- 'END:VCALENDAR',
- );
-
- $req->setBody(implode("\r\n",$body));
-
- $this->assertHTTPStatus(501, $req);
-
- }
-
- function testNoIMIPHandler() {
-
- $req = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'REQUEST_URI' => '/calendars/user1/outbox',
- 'HTTP_ORIGINATOR' => 'mailto:user1.sabredav@sabredav.org',
- 'HTTP_RECIPIENT' => 'mailto:user2@example.org',
- 'HTTP_CONTENT_TYPE' => 'text/calendar',
- ));
-
- $body = array(
- 'BEGIN:VCALENDAR',
- 'METHOD:REQUEST',
- 'BEGIN:VEVENT',
- 'END:VEVENT',
- 'END:VCALENDAR',
- );
-
- $req->setBody(implode("\r\n",$body));
-
-
- $response = $this->request($req);
- $this->assertEquals('HTTP/1.1 200 OK', $response->status);
- $this->assertEquals(array(
- 'Content-Type' => 'application/xml',
- ), $response->headers);
-
- // Lazily checking the body for a few expected values.
- $this->assertTrue(strpos($response->body, '5.2;')!==false);
- $this->assertTrue(strpos($response->body,'user2@example.org')!==false);
-
-
- }
-
- function testSuccessRequest() {
-
- $req = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'REQUEST_URI' => '/calendars/user1/outbox',
- 'HTTP_ORIGINATOR' => 'mailto:user1.sabredav@sabredav.org',
- 'HTTP_RECIPIENT' => 'mailto:user2@example.org',
- 'HTTP_CONTENT_TYPE' => 'text/calendar',
- ));
-
- $body = array(
- 'BEGIN:VCALENDAR',
- 'METHOD:REQUEST',
- 'BEGIN:VEVENT',
- 'SUMMARY:An invitation',
- 'END:VEVENT',
- 'END:VCALENDAR',
- );
-
- $req->setBody(implode("\r\n",$body));
-
- $handler = new Schedule\IMip\Mock('server@example.org');
-
- $this->caldavPlugin->setIMIPhandler($handler);
-
- $response = $this->request($req);
- $this->assertEquals('HTTP/1.1 200 OK', $response->status);
- $this->assertEquals(array(
- 'Content-Type' => 'application/xml',
- ), $response->headers);
-
- // Lazily checking the body for a few expected values.
- $this->assertTrue(strpos($response->body, '2.0;')!==false);
- $this->assertTrue(strpos($response->body,'user2@example.org')!==false);
-
- $this->assertEquals(array(
- array(
- 'to' => 'user2@example.org',
- 'subject' => 'Invitation for: An invitation',
- 'body' => implode("\r\n", $body) . "\r\n",
- 'headers' => array(
- 'Reply-To: user1.sabredav@sabredav.org',
- 'From: server@example.org',
- 'Content-Type: text/calendar; method=REQUEST; charset=utf-8',
- 'X-Sabre-Version: ' . DAV\Version::VERSION . '-' . DAV\Version::STABILITY,
- ),
- )
- ), $handler->getSentEmails());
-
- }
-
- function testSuccessRequestUseRelativePrincipal() {
-
- $req = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'REQUEST_URI' => '/calendars/user1/outbox',
- 'HTTP_ORIGINATOR' => '/principals/user1/',
- 'HTTP_RECIPIENT' => 'mailto:user2@example.org',
- 'HTTP_CONTENT_TYPE' => 'text/calendar',
- ));
-
- $body = array(
- 'BEGIN:VCALENDAR',
- 'METHOD:REQUEST',
- 'BEGIN:VEVENT',
- 'SUMMARY:An invitation',
- 'ORGANIZER:mailto:user1.sabredav@sabredav.org',
- 'END:VEVENT',
- 'END:VCALENDAR',
- );
-
- $req->setBody(implode("\r\n",$body));
-
- $handler = new Schedule\IMip\Mock('server@example.org');
-
- $this->caldavPlugin->setIMIPhandler($handler);
-
- $response = $this->request($req);
- $this->assertEquals('HTTP/1.1 200 OK', $response->status, 'Full body: ' . $response->body);
- $this->assertEquals(array(
- 'Content-Type' => 'application/xml',
- ), $response->headers);
-
- // Lazily checking the body for a few expected values.
- $this->assertTrue(strpos($response->body, '2.0;')!==false);
- $this->assertTrue(strpos($response->body,'user2@example.org')!==false);
-
- $this->assertEquals(array(
- array(
- 'to' => 'user2@example.org',
- 'subject' => 'Invitation for: An invitation',
- 'body' => implode("\r\n", $body) . "\r\n",
- 'headers' => array(
- 'Reply-To: user1.sabredav@sabredav.org',
- 'From: server@example.org',
- 'Content-Type: text/calendar; method=REQUEST; charset=utf-8',
- 'X-Sabre-Version: ' . DAV\Version::VERSION . '-' . DAV\Version::STABILITY,
- ),
- )
- ), $handler->getSentEmails());
-
- }
-
- function testSuccessRequestUpperCased() {
-
- $req = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'REQUEST_URI' => '/calendars/user1/outbox',
- 'HTTP_ORIGINATOR' => 'MAILTO:user1.sabredav@sabredav.org',
- 'HTTP_RECIPIENT' => 'MAILTO:user2@example.org',
- 'HTTP_CONTENT_TYPE' => 'text/calendar',
- ));
-
- $body = array(
- 'BEGIN:VCALENDAR',
- 'METHOD:REQUEST',
- 'BEGIN:VEVENT',
- 'SUMMARY:An invitation',
- 'END:VEVENT',
- 'END:VCALENDAR',
- );
-
- $req->setBody(implode("\r\n",$body));
-
- $handler = new Schedule\IMip\Mock('server@example.org');
-
- $this->caldavPlugin->setIMIPhandler($handler);
-
- $response = $this->request($req);
- $this->assertEquals('HTTP/1.1 200 OK', $response->status);
- $this->assertEquals(array(
- 'Content-Type' => 'application/xml',
- ), $response->headers);
-
- // Lazily checking the body for a few expected values.
- $this->assertTrue(strpos($response->body, '2.0;')!==false);
- $this->assertTrue(strpos($response->body,'user2@example.org')!==false);
-
- $this->assertEquals(array(
- array(
- 'to' => 'user2@example.org',
- 'subject' => 'Invitation for: An invitation',
- 'body' => implode("\r\n", $body) . "\r\n",
- 'headers' => array(
- 'Reply-To: user1.sabredav@sabredav.org',
- 'From: server@example.org',
- 'Content-Type: text/calendar; method=REQUEST; charset=utf-8',
- 'X-Sabre-Version: ' . DAV\Version::VERSION . '-' . DAV\Version::STABILITY,
- ),
- )
- ), $handler->getSentEmails());
-
- }
-
- function testSuccessReply() {
-
- $req = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'REQUEST_URI' => '/calendars/user1/outbox',
- 'HTTP_ORIGINATOR' => 'mailto:user1.sabredav@sabredav.org',
- 'HTTP_RECIPIENT' => 'mailto:user2@example.org',
- 'HTTP_CONTENT_TYPE' => 'text/calendar',
- ));
-
- $body = array(
- 'BEGIN:VCALENDAR',
- 'METHOD:REPLY',
- 'BEGIN:VEVENT',
- 'SUMMARY:An invitation',
- 'END:VEVENT',
- 'END:VCALENDAR',
- );
-
- $req->setBody(implode("\r\n",$body));
-
- $handler = new Schedule\IMip\Mock('server@example.org');
-
- $this->caldavPlugin->setIMIPhandler($handler);
- $this->assertHTTPStatus(200, $req);
-
- $this->assertEquals(array(
- array(
- 'to' => 'user2@example.org',
- 'subject' => 'Response for: An invitation',
- 'body' => implode("\r\n", $body) . "\r\n",
- 'headers' => array(
- 'Reply-To: user1.sabredav@sabredav.org',
- 'From: server@example.org',
- 'Content-Type: text/calendar; method=REPLY; charset=utf-8',
- 'X-Sabre-Version: ' . DAV\Version::VERSION . '-' . DAV\Version::STABILITY,
- ),
- )
- ), $handler->getSentEmails());
-
- }
-
- function testSuccessCancel() {
-
- $req = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'REQUEST_URI' => '/calendars/user1/outbox',
- 'HTTP_ORIGINATOR' => 'mailto:user1.sabredav@sabredav.org',
- 'HTTP_RECIPIENT' => 'mailto:user2@example.org',
- 'HTTP_CONTENT_TYPE' => 'text/calendar',
- ));
-
- $body = array(
- 'BEGIN:VCALENDAR',
- 'METHOD:CANCEL',
- 'BEGIN:VEVENT',
- 'SUMMARY:An invitation',
- 'END:VEVENT',
- 'END:VCALENDAR',
- );
-
- $req->setBody(implode("\r\n",$body));
-
- $handler = new Schedule\IMip\Mock('server@example.org');
-
- $this->caldavPlugin->setIMIPhandler($handler);
- $this->assertHTTPStatus(200, $req);
-
- $this->assertEquals(array(
- array(
- 'to' => 'user2@example.org',
- 'subject' => 'Cancelled event: An invitation',
- 'body' => implode("\r\n", $body) . "\r\n",
- 'headers' => array(
- 'Reply-To: user1.sabredav@sabredav.org',
- 'From: server@example.org',
- 'Content-Type: text/calendar; method=CANCEL; charset=utf-8',
- 'X-Sabre-Version: ' . DAV\Version::VERSION . '-' . DAV\Version::STABILITY,
- ),
- )
- ), $handler->getSentEmails());
-
-
- }
-
- function testUseRelativePrincipalNoFallback() {
-
- $req = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'REQUEST_URI' => '/calendars/user1/outbox',
- 'HTTP_ORIGINATOR' => '/principals/user1/',
- 'HTTP_RECIPIENT' => 'mailto:user2@example.org',
- 'HTTP_CONTENT_TYPE' => 'text/calendar',
- ));
-
- $body = array(
- 'BEGIN:VCALENDAR',
- 'METHOD:REQUEST',
- 'BEGIN:VEVENT',
- 'SUMMARY:An invitation',
- 'ORGANIZER:rrrrrr',
- 'END:VEVENT',
- 'END:VCALENDAR',
- );
-
- $req->setBody(implode("\r\n",$body));
-
- $handler = new Schedule\IMip\Mock('server@example.org');
-
- $this->caldavPlugin->setIMIPhandler($handler);
-
- $response = $this->request($req);
- $this->assertEquals('HTTP/1.1 403 Forbidden', $response->status, 'Full body: ' . $response->body);
-
- }
-}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/PluginTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/PluginTest.php
index fb7dc316a..138012ffa 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/PluginTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/PluginTest.php
@@ -1,78 +1,80 @@
<?php
namespace Sabre\CalDAV;
+
use Sabre\DAVACL;
use Sabre\DAV;
use Sabre\HTTP;
-
-require_once 'Sabre/HTTP/ResponseMock.php';
-require_once 'Sabre/CalDAV/TestUtil.php';
+use DateTime;
+use DateTimeZone;
class PluginTest extends \PHPUnit_Framework_TestCase {
/**
- * @var Sabre\DAV\Server
+ * @var DAV\Server
*/
protected $server;
/**
- * @var Sabre\CalDAV\Plugin
+ * @var Plugin
*/
protected $plugin;
protected $response;
/**
- * @var Sabre\CalDAV\Backend\PDO
+ * @var Backend\PDO
*/
protected $caldavBackend;
function setup() {
- $this->caldavBackend = new Backend\Mock(array(
- array(
- 'id' => 1,
- 'uri' => 'UUID-123467',
- 'principaluri' => 'principals/user1',
- '{DAV:}displayname' => 'user1 calendar',
- '{urn:ietf:params:xml:ns:caldav}calendar-description' => 'Calendar description',
- '{http://apple.com/ns/ical/}calendar-order' => '1',
- '{http://apple.com/ns/ical/}calendar-color' => '#FF0000',
- '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new Property\SupportedCalendarComponentSet(array('VEVENT','VTODO')),
- ),
- array(
- 'id' => 2,
- 'uri' => 'UUID-123468',
- 'principaluri' => 'principals/user1',
- '{DAV:}displayname' => 'user1 calendar2',
- '{urn:ietf:params:xml:ns:caldav}calendar-description' => 'Calendar description',
- '{http://apple.com/ns/ical/}calendar-order' => '1',
- '{http://apple.com/ns/ical/}calendar-color' => '#FF0000',
- '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new Property\SupportedCalendarComponentSet(array('VEVENT','VTODO')),
- )
- ), array(
- 1 => array(
- 'UUID-2345' => array(
+ $caldavNS = '{urn:ietf:params:xml:ns:caldav}';
+
+ $this->caldavBackend = new Backend\Mock([
+ [
+ 'id' => 1,
+ 'uri' => 'UUID-123467',
+ 'principaluri' => 'principals/user1',
+ '{DAV:}displayname' => 'user1 calendar',
+ $caldavNS . 'calendar-description' => 'Calendar description',
+ '{http://apple.com/ns/ical/}calendar-order' => '1',
+ '{http://apple.com/ns/ical/}calendar-color' => '#FF0000',
+ $caldavNS . 'supported-calendar-component-set' => new Xml\Property\SupportedCalendarComponentSet(['VEVENT', 'VTODO']),
+ ],
+ [
+ 'id' => 2,
+ 'uri' => 'UUID-123468',
+ 'principaluri' => 'principals/user1',
+ '{DAV:}displayname' => 'user1 calendar2',
+ $caldavNS . 'calendar-description' => 'Calendar description',
+ '{http://apple.com/ns/ical/}calendar-order' => '1',
+ '{http://apple.com/ns/ical/}calendar-color' => '#FF0000',
+ $caldavNS . 'supported-calendar-component-set' => new Xml\Property\SupportedCalendarComponentSet(['VEVENT', 'VTODO']),
+ ]
+ ], [
+ 1 => [
+ 'UUID-2345' => [
'calendardata' => TestUtil::getTestCalendarData(),
- )
- )
- ));
+ ]
+ ]
+ ]);
$principalBackend = new DAVACL\PrincipalBackend\Mock();
- $principalBackend->setGroupMemberSet('principals/admin/calendar-proxy-read',array('principals/user1'));
- $principalBackend->setGroupMemberSet('principals/admin/calendar-proxy-write',array('principals/user1'));
- $principalBackend->addPrincipal(array(
+ $principalBackend->setGroupMemberSet('principals/admin/calendar-proxy-read', ['principals/user1']);
+ $principalBackend->setGroupMemberSet('principals/admin/calendar-proxy-write', ['principals/user1']);
+ $principalBackend->addPrincipal([
'uri' => 'principals/admin/calendar-proxy-read',
- ));
- $principalBackend->addPrincipal(array(
+ ]);
+ $principalBackend->addPrincipal([
'uri' => 'principals/admin/calendar-proxy-write',
- ));
+ ]);
- $calendars = new CalendarRootNode($principalBackend,$this->caldavBackend);
+ $calendars = new CalendarRoot($principalBackend, $this->caldavBackend);
$principals = new Principal\Collection($principalBackend);
$root = new DAV\SimpleCollection('root');
$root->addChild($calendars);
$root->addChild($principals);
- $objectTree = new DAV\ObjectTree($root);
- $this->server = new DAV\Server($objectTree);
+ $this->server = new DAV\Server($root);
+ $this->server->sapi = new HTTP\SapiMock();
$this->server->debugExceptions = true;
$this->server->setBaseUri('/');
$this->plugin = new Plugin();
@@ -83,11 +85,13 @@ class PluginTest extends \PHPUnit_Framework_TestCase {
// Adding Auth plugin, and ensuring that we are logged in.
$authBackend = new DAV\Auth\Backend\Mock();
- $authBackend->defaultUser = 'user1';
+ $authBackend->setPrincipal('principals/user1');
$authPlugin = new DAV\Auth\Plugin($authBackend, 'SabreDAV');
+ $authPlugin->beforeMethod(new \Sabre\HTTP\Request(), new \Sabre\HTTP\Response());
$this->server->addPlugin($authPlugin);
- $authPlugin->beforeMethod('GET', '/');
+ // This forces a login
+ $authPlugin->beforeMethod(new HTTP\Request(), new HTTP\Response());
$this->response = new HTTP\ResponseMock();
$this->server->httpResponse = $this->response;
@@ -96,48 +100,41 @@ class PluginTest extends \PHPUnit_Framework_TestCase {
function testSimple() {
- $this->assertEquals(array('MKCALENDAR'), $this->plugin->getHTTPMethods('calendars/user1/randomnewcalendar'));
- $this->assertEquals(array('calendar-access','calendar-proxy'), $this->plugin->getFeatures());
- $this->assertArrayHasKey('urn:ietf:params:xml:ns:caldav', $this->server->xmlNamespaces);
+ $this->assertEquals(['MKCALENDAR'], $this->plugin->getHTTPMethods('calendars/user1/randomnewcalendar'));
+ $this->assertEquals(['calendar-access', 'calendar-proxy'], $this->plugin->getFeatures());
+ $this->assertEquals(
+ 'caldav',
+ $this->plugin->getPluginInfo()['name']
+ );
}
function testUnknownMethodPassThrough() {
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'MKBREAKFAST',
- 'REQUEST_URI' => '/',
- ));
+ $request = new HTTP\Request('MKBREAKFAST', '/');
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 501 Not Implemented', $this->response->status,'Incorrect status returned. Full response body:' . $this->response->body);
+ $this->assertEquals(501, $this->response->status, 'Incorrect status returned. Full response body:' . $this->response->body);
}
function testReportPassThrough() {
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'REPORT',
- 'HTTP_CONTENT_TYPE' => 'application/xml',
- 'REQUEST_URI' => '/',
- ));
+ $request = new HTTP\Request('REPORT', '/', ['Content-Type' => 'application/xml']);
$request->setBody('<?xml version="1.0"?><s:somereport xmlns:s="http://www.rooftopsolutions.nl/NS/example" />');
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 403 Forbidden', $this->response->status);
+ $this->assertEquals(415, $this->response->status);
}
function testMkCalendarBadLocation() {
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'MKCALENDAR',
- 'REQUEST_URI' => '/blabla',
- ));
+ $request = new HTTP\Request('MKCALENDAR', '/blabla');
$body = '<?xml version="1.0" encoding="utf-8" ?>
<C:mkcalendar xmlns:D="DAV:"
@@ -181,16 +178,13 @@ class PluginTest extends \PHPUnit_Framework_TestCase {
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 403 Forbidden', $this->response->status);
+ $this->assertEquals(403, $this->response->status);
}
function testMkCalendarNoParentNode() {
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'MKCALENDAR',
- 'REQUEST_URI' => '/doesntexist/calendar',
- ));
+ $request = new HTTP\Request('MKCALENDAR', '/doesntexist/calendar');
$body = '<?xml version="1.0" encoding="utf-8" ?>
<C:mkcalendar xmlns:D="DAV:"
@@ -234,16 +228,16 @@ class PluginTest extends \PHPUnit_Framework_TestCase {
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 409 Conflict', $this->response->status);
+ $this->assertEquals(409, $this->response->status);
}
function testMkCalendarExistingCalendar() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray([
'REQUEST_METHOD' => 'MKCALENDAR',
'REQUEST_URI' => '/calendars/user1/UUID-123467',
- ));
+ ]);
$body = '<?xml version="1.0" encoding="utf-8" ?>
<C:mkcalendar xmlns:D="DAV:"
@@ -287,16 +281,13 @@ class PluginTest extends \PHPUnit_Framework_TestCase {
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 405 Method Not Allowed', $this->response->status);
+ $this->assertEquals(405, $this->response->status);
}
function testMkCalendarSucceed() {
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'MKCALENDAR',
- 'REQUEST_URI' => '/calendars/user1/NEWCALENDAR',
- ));
+ $request = new HTTP\Request('MKCALENDAR', '/calendars/user1/NEWCALENDAR');
$timezone = 'BEGIN:VCALENDAR
PRODID:-//Example Corp.//CalDAV Client//EN
@@ -341,31 +332,31 @@ END:VCALENDAR';
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 201 Created', $this->response->status,'Invalid response code received. Full response body: ' .$this->response->body);
+ $this->assertEquals(201, $this->response->status, 'Invalid response code received. Full response body: ' . $this->response->body);
$calendars = $this->caldavBackend->getCalendarsForUser('principals/user1');
$this->assertEquals(3, count($calendars));
$newCalendar = null;
- foreach($calendars as $calendar) {
+ foreach ($calendars as $calendar) {
if ($calendar['uri'] === 'NEWCALENDAR') {
$newCalendar = $calendar;
break;
}
}
- $this->assertInternalType('array',$newCalendar);
+ $this->assertInternalType('array', $newCalendar);
- $keys = array(
- 'uri' => 'NEWCALENDAR',
- 'id' => null,
- '{urn:ietf:params:xml:ns:caldav}calendar-description' => 'Calendar restricted to events.',
- '{urn:ietf:params:xml:ns:caldav}calendar-timezone' => $timezone,
- '{DAV:}displayname' => 'Lisa\'s Events',
+ $keys = [
+ 'uri' => 'NEWCALENDAR',
+ 'id' => null,
+ '{urn:ietf:params:xml:ns:caldav}calendar-description' => 'Calendar restricted to events.',
+ '{urn:ietf:params:xml:ns:caldav}calendar-timezone' => $timezone,
+ '{DAV:}displayname' => 'Lisa\'s Events',
'{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => null,
- );
+ ];
- foreach($keys as $key=>$value) {
+ foreach ($keys as $key => $value) {
$this->assertArrayHasKey($key, $newCalendar);
@@ -374,44 +365,41 @@ END:VCALENDAR';
}
$sccs = '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set';
- $this->assertTrue($newCalendar[$sccs] instanceof Property\SupportedCalendarComponentSet);
- $this->assertEquals(array('VEVENT'),$newCalendar[$sccs]->getValue());
+ $this->assertTrue($newCalendar[$sccs] instanceof Xml\Property\SupportedCalendarComponentSet);
+ $this->assertEquals(['VEVENT'], $newCalendar[$sccs]->getValue());
}
function testMkCalendarEmptyBodySucceed() {
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'MKCALENDAR',
- 'REQUEST_URI' => '/calendars/user1/NEWCALENDAR',
- ));
+ $request = new HTTP\Request('MKCALENDAR', '/calendars/user1/NEWCALENDAR');
$request->setBody('');
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 201 Created', $this->response->status,'Invalid response code received. Full response body: ' .$this->response->body);
+ $this->assertEquals(201, $this->response->status, 'Invalid response code received. Full response body: ' . $this->response->body);
$calendars = $this->caldavBackend->getCalendarsForUser('principals/user1');
$this->assertEquals(3, count($calendars));
$newCalendar = null;
- foreach($calendars as $calendar) {
+ foreach ($calendars as $calendar) {
if ($calendar['uri'] === 'NEWCALENDAR') {
$newCalendar = $calendar;
break;
}
}
- $this->assertInternalType('array',$newCalendar);
+ $this->assertInternalType('array', $newCalendar);
- $keys = array(
- 'uri' => 'NEWCALENDAR',
- 'id' => null,
+ $keys = [
+ 'uri' => 'NEWCALENDAR',
+ 'id' => null,
'{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => null,
- );
+ ];
- foreach($keys as $key=>$value) {
+ foreach ($keys as $key => $value) {
$this->assertArrayHasKey($key, $newCalendar);
@@ -420,84 +408,82 @@ END:VCALENDAR';
}
$sccs = '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set';
- $this->assertTrue($newCalendar[$sccs] instanceof Property\SupportedCalendarComponentSet);
- $this->assertEquals(array('VEVENT','VTODO'),$newCalendar[$sccs]->getValue());
+ $this->assertTrue($newCalendar[$sccs] instanceof Xml\Property\SupportedCalendarComponentSet);
+ $this->assertEquals(['VEVENT', 'VTODO'], $newCalendar[$sccs]->getValue());
+
+ }
+
+ function testMkCalendarBadXml() {
+
+ $request = new HTTP\Request('MKCALENDAR', '/blabla');
+ $body = 'This is not xml';
+
+ $request->setBody($body);
+ $this->server->httpRequest = $request;
+ $this->server->exec();
+
+ $this->assertEquals(400, $this->response->status);
}
function testPrincipalProperties() {
- $httpRequest = new HTTP\Request(array(
- 'HTTP_HOST' => 'sabredav.org',
- ));
+ $httpRequest = new HTTP\Request('FOO', '/blabla', ['Host' => 'sabredav.org']);
$this->server->httpRequest = $httpRequest;
- $props = $this->server->getPropertiesForPath('/principals/user1',array(
- '{urn:ietf:params:xml:ns:caldav}calendar-home-set',
- '{urn:ietf:params:xml:ns:caldav}schedule-outbox-URL',
- '{urn:ietf:params:xml:ns:caldav}calendar-user-address-set',
+ $props = $this->server->getPropertiesForPath('/principals/user1', [
+ '{' . Plugin::NS_CALDAV . '}calendar-home-set',
'{' . Plugin::NS_CALENDARSERVER . '}calendar-proxy-read-for',
'{' . Plugin::NS_CALENDARSERVER . '}calendar-proxy-write-for',
'{' . Plugin::NS_CALENDARSERVER . '}notification-URL',
- ));
+ '{' . Plugin::NS_CALENDARSERVER . '}email-address-set',
+ ]);
- $this->assertArrayHasKey(0,$props);
- $this->assertArrayHasKey(200,$props[0]);
+ $this->assertArrayHasKey(0, $props);
+ $this->assertArrayHasKey(200, $props[0]);
- $this->assertArrayHasKey('{urn:ietf:params:xml:ns:caldav}calendar-home-set',$props[0][200]);
+ $this->assertArrayHasKey('{urn:ietf:params:xml:ns:caldav}calendar-home-set', $props[0][200]);
$prop = $props[0][200]['{urn:ietf:params:xml:ns:caldav}calendar-home-set'];
- $this->assertTrue($prop instanceof DAV\Property\Href);
- $this->assertEquals('calendars/user1/',$prop->getHref());
-
- $this->assertArrayHasKey('{urn:ietf:params:xml:ns:caldav}schedule-outbox-URL',$props[0][200]);
- $prop = $props[0][200]['{urn:ietf:params:xml:ns:caldav}schedule-outbox-URL'];
- $this->assertTrue($prop instanceof DAV\Property\Href);
- $this->assertEquals('calendars/user1/outbox',$prop->getHref());
-
- $this->assertArrayHasKey('{'.Plugin::NS_CALENDARSERVER .'}notification-URL',$props[0][200]);
- $prop = $props[0][200]['{'.Plugin::NS_CALENDARSERVER .'}notification-URL'];
- $this->assertTrue($prop instanceof DAV\Property\Href);
- $this->assertEquals('calendars/user1/notifications/',$prop->getHref());
-
-
- $this->assertArrayHasKey('{urn:ietf:params:xml:ns:caldav}calendar-user-address-set',$props[0][200]);
- $prop = $props[0][200]['{urn:ietf:params:xml:ns:caldav}calendar-user-address-set'];
- $this->assertTrue($prop instanceof DAV\Property\HrefList);
- $this->assertEquals(array('mailto:user1.sabredav@sabredav.org','/principals/user1/'),$prop->getHrefs());
+ $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $prop);
+ $this->assertEquals('calendars/user1/', $prop->getHref());
$this->assertArrayHasKey('{http://calendarserver.org/ns/}calendar-proxy-read-for', $props[0][200]);
$prop = $props[0][200]['{http://calendarserver.org/ns/}calendar-proxy-read-for'];
- $this->assertInstanceOf('Sabre\\DAV\\Property\\HrefList', $prop);
- $this->assertEquals(array('principals/admin'), $prop->getHrefs());
+ $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $prop);
+ $this->assertEquals(['principals/admin/'], $prop->getHrefs());
$this->assertArrayHasKey('{http://calendarserver.org/ns/}calendar-proxy-write-for', $props[0][200]);
$prop = $props[0][200]['{http://calendarserver.org/ns/}calendar-proxy-write-for'];
- $this->assertInstanceOf('Sabre\\DAV\\Property\\HrefList', $prop);
- $this->assertEquals(array('principals/admin'), $prop->getHrefs());
+ $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $prop);
+ $this->assertEquals(['principals/admin/'], $prop->getHrefs());
+ $this->assertArrayHasKey('{' . Plugin::NS_CALENDARSERVER . '}email-address-set', $props[0][200]);
+ $prop = $props[0][200]['{' . Plugin::NS_CALENDARSERVER . '}email-address-set'];
+ $this->assertInstanceOf('Sabre\\CalDAV\\Xml\\Property\\EmailAddressSet', $prop);
+ $this->assertEquals(['user1.sabredav@sabredav.org'], $prop->getValue());
}
function testSupportedReportSetPropertyNonCalendar() {
- $props = $this->server->getPropertiesForPath('/calendars/user1',array(
+ $props = $this->server->getPropertiesForPath('/calendars/user1', [
'{DAV:}supported-report-set',
- ));
+ ]);
- $this->assertArrayHasKey(0,$props);
- $this->assertArrayHasKey(200,$props[0]);
- $this->assertArrayHasKey('{DAV:}supported-report-set',$props[0][200]);
+ $this->assertArrayHasKey(0, $props);
+ $this->assertArrayHasKey(200, $props[0]);
+ $this->assertArrayHasKey('{DAV:}supported-report-set', $props[0][200]);
$prop = $props[0][200]['{DAV:}supported-report-set'];
- $this->assertInstanceOf('\\Sabre\\DAV\\Property\\SupportedReportSet', $prop);
- $value = array(
+ $this->assertInstanceOf('\\Sabre\\DAV\\Xml\\Property\\SupportedReportSet', $prop);
+ $value = [
'{DAV:}expand-property',
'{DAV:}principal-property-search',
'{DAV:}principal-search-property-set'
- );
- $this->assertEquals($value,$prop->getValue());
+ ];
+ $this->assertEquals($value, $prop->getValue());
}
@@ -506,26 +492,51 @@ END:VCALENDAR';
*/
function testSupportedReportSetProperty() {
- $props = $this->server->getPropertiesForPath('/calendars/user1/UUID-123467',array(
+ $props = $this->server->getPropertiesForPath('/calendars/user1/UUID-123467', [
'{DAV:}supported-report-set',
- ));
+ ]);
- $this->assertArrayHasKey(0,$props);
- $this->assertArrayHasKey(200,$props[0]);
- $this->assertArrayHasKey('{DAV:}supported-report-set',$props[0][200]);
+ $this->assertArrayHasKey(0, $props);
+ $this->assertArrayHasKey(200, $props[0]);
+ $this->assertArrayHasKey('{DAV:}supported-report-set', $props[0][200]);
$prop = $props[0][200]['{DAV:}supported-report-set'];
- $this->assertTrue($prop instanceof \Sabre\DAV\Property\SupportedReportSet);
- $value = array(
+ $this->assertInstanceOf('\\Sabre\\DAV\\Xml\\Property\\SupportedReportSet', $prop);
+ $value = [
'{urn:ietf:params:xml:ns:caldav}calendar-multiget',
'{urn:ietf:params:xml:ns:caldav}calendar-query',
'{urn:ietf:params:xml:ns:caldav}free-busy-query',
'{DAV:}expand-property',
'{DAV:}principal-property-search',
'{DAV:}principal-search-property-set'
- );
- $this->assertEquals($value,$prop->getValue());
+ ];
+ $this->assertEquals($value, $prop->getValue());
+
+ }
+
+ function testSupportedReportSetUserCalendars() {
+
+ $this->server->addPlugin(new \Sabre\DAV\Sync\Plugin());
+
+ $props = $this->server->getPropertiesForPath('/calendars/user1', [
+ '{DAV:}supported-report-set',
+ ]);
+
+ $this->assertArrayHasKey(0, $props);
+ $this->assertArrayHasKey(200, $props[0]);
+ $this->assertArrayHasKey('{DAV:}supported-report-set', $props[0][200]);
+
+ $prop = $props[0][200]['{DAV:}supported-report-set'];
+
+ $this->assertInstanceOf('\\Sabre\\DAV\\Xml\\Property\\SupportedReportSet', $prop);
+ $value = [
+ '{DAV:}sync-collection',
+ '{DAV:}expand-property',
+ '{DAV:}principal-property-search',
+ '{DAV:}principal-search-property-set',
+ ];
+ $this->assertEquals($value, $prop->getValue());
}
@@ -544,48 +555,33 @@ END:VCALENDAR';
'<d:href>/calendars/user1/UUID-123467/UUID-2345</d:href>' .
'</c:calendar-multiget>';
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'REPORT',
- 'REQUEST_URI' => '/calendars/user1',
- 'HTTP_DEPTH' => '1',
- ));
+ $request = new HTTP\Request('REPORT', '/calendars/user1', ['Depth' => '1']);
$request->setBody($body);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status',$this->response->status,'Invalid HTTP status received. Full response body: ' . $this->response->body);
-
- $xml = simplexml_load_string(DAV\XMLUtil::convertDAVNamespace($this->response->body));
+ $this->assertEquals(207, $this->response->status, 'Invalid HTTP status received. Full response body');
- $xml->registerXPathNamespace('d','urn:DAV');
- $xml->registerXPathNamespace('c','urn:ietf:params:xml:ns:caldav');
+ $expectedIcal = TestUtil::getTestCalendarData();
- $check = array(
- '/d:multistatus',
- '/d:multistatus/d:response',
- '/d:multistatus/d:response/d:href',
- '/d:multistatus/d:response/d:propstat',
- '/d:multistatus/d:response/d:propstat/d:prop',
- '/d:multistatus/d:response/d:propstat/d:prop/d:getetag',
- '/d:multistatus/d:response/d:propstat/d:prop/c:calendar-data',
- '/d:multistatus/d:response/d:propstat/d:status' => 'HTTP/1.1 200 OK',
- );
+ $expected = <<<XML
+<?xml version="1.0"?>
+<d:multistatus xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:cs="http://calendarserver.org/ns/" xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
+<d:response>
+ <d:href>/calendars/user1/UUID-123467/UUID-2345</d:href>
+ <d:propstat>
+ <d:prop>
+ <cal:calendar-data>$expectedIcal</cal:calendar-data>
+ <d:getetag>"e207e33c10e5fb9c12cfb35b5d9116e1"</d:getetag>
+ </d:prop>
+ <d:status>HTTP/1.1 200 OK</d:status>
+ </d:propstat>
+</d:response>
+</d:multistatus>
+XML;
- foreach($check as $v1=>$v2) {
-
- $xpath = is_int($v1)?$v2:$v1;
-
- $result = $xml->xpath($xpath);
- $this->assertEquals(1,count($result));
-
- if (!is_int($v1)) $this->assertEquals($v2,(string)$result[0]);
-
- }
-
- // The response object should have a reference to the Asia/Seoul
- // timezone.
- $this->assertTrue(strpos($this->response->body,'Asia/Seoul')!==false);
+ $this->assertXmlStringEqualsXmlString($expected, $this->response->getBodyAsString());
}
@@ -606,46 +602,39 @@ END:VCALENDAR';
'<d:href>/calendars/user1/UUID-123467/UUID-2345</d:href>' .
'</c:calendar-multiget>';
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'REPORT',
- 'REQUEST_URI' => '/calendars/user1',
- 'HTTP_DEPTH' => '1',
- ));
+ $request = new HTTP\Request('REPORT', '/calendars/user1', ['Depth' => '1']);
$request->setBody($body);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status',$this->response->status,'Invalid HTTP status received. Full response body: ' . $this->response->body);
-
- $xml = simplexml_load_string(DAV\XMLUtil::convertDAVNamespace($this->response->body));
-
- $xml->registerXPathNamespace('d','urn:DAV');
- $xml->registerXPathNamespace('c','urn:ietf:params:xml:ns:caldav');
+ $this->assertEquals(207, $this->response->status, 'Invalid HTTP status received. Full response body: ' . $this->response->body);
- $check = array(
- '/d:multistatus',
- '/d:multistatus/d:response',
- '/d:multistatus/d:response/d:href',
- '/d:multistatus/d:response/d:propstat',
- '/d:multistatus/d:response/d:propstat/d:prop',
- '/d:multistatus/d:response/d:propstat/d:prop/d:getetag',
- '/d:multistatus/d:response/d:propstat/d:prop/c:calendar-data',
- '/d:multistatus/d:response/d:propstat/d:status' => 'HTTP/1.1 200 OK',
+ $expectedIcal = TestUtil::getTestCalendarData();
+ $expectedIcal = \Sabre\VObject\Reader::read($expectedIcal);
+ $expectedIcal = $expectedIcal->expand(
+ new DateTime('2011-01-01 00:00:00', new DateTimeZone('UTC')),
+ new DateTime('2011-12-31 23:59:59', new DateTimeZone('UTC'))
);
-
- foreach($check as $v1=>$v2) {
-
- $xpath = is_int($v1)?$v2:$v1;
-
- $result = $xml->xpath($xpath);
- $this->assertEquals(1,count($result));
-
- if (!is_int($v1)) $this->assertEquals($v2,(string)$result[0]);
-
- }
- // The response object should no longer hold references to timezones.
- $this->assertTrue(strpos($this->response->body,'Asia/Seoul')===false);
+ $expectedIcal = str_replace("\r\n", "&#xD;\n", $expectedIcal->serialize());
+
+ $expected = <<<XML
+<?xml version="1.0"?>
+<d:multistatus xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:cs="http://calendarserver.org/ns/" xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
+<d:response>
+ <d:href>/calendars/user1/UUID-123467/UUID-2345</d:href>
+ <d:propstat>
+ <d:prop>
+ <cal:calendar-data>$expectedIcal</cal:calendar-data>
+ <d:getetag>"e207e33c10e5fb9c12cfb35b5d9116e1"</d:getetag>
+ </d:prop>
+ <d:status>HTTP/1.1 200 OK</d:status>
+ </d:propstat>
+</d:response>
+</d:multistatus>
+XML;
+
+ $this->assertXmlStringEqualsXmlString($expected, $this->response->getBodyAsString());
}
@@ -671,56 +660,117 @@ END:VCALENDAR';
'</c:filter>' .
'</c:calendar-query>';
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'REPORT',
- 'REQUEST_URI' => '/calendars/user1/UUID-123467',
- 'HTTP_DEPTH' => '1',
- ));
+ $request = new HTTP\Request('REPORT', '/calendars/user1/UUID-123467', ['Depth' => '1']);
$request->setBody($body);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status',$this->response->status,'Received an unexpected status. Full response body: ' . $this->response->body);
+ $this->assertEquals(207, $this->response->status, 'Received an unexpected status. Full response body: ' . $this->response->body);
- $xml = simplexml_load_string(DAV\XMLUtil::convertDAVNamespace($this->response->body));
+ $expectedIcal = TestUtil::getTestCalendarData();
+ $expectedIcal = \Sabre\VObject\Reader::read($expectedIcal);
+ $expectedIcal = $expectedIcal->expand(
+ new DateTime('2000-01-01 00:00:00', new DateTimeZone('UTC')),
+ new DateTime('2010-12-31 23:59:59', new DateTimeZone('UTC'))
+ );
+ $expectedIcal = str_replace("\r\n", "&#xD;\n", $expectedIcal->serialize());
+
+ $expected = <<<XML
+<?xml version="1.0"?>
+<d:multistatus xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:cs="http://calendarserver.org/ns/" xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
+<d:response>
+ <d:href>/calendars/user1/UUID-123467/UUID-2345</d:href>
+ <d:propstat>
+ <d:prop>
+ <cal:calendar-data>$expectedIcal</cal:calendar-data>
+ <d:getetag>"e207e33c10e5fb9c12cfb35b5d9116e1"</d:getetag>
+ </d:prop>
+ <d:status>HTTP/1.1 200 OK</d:status>
+ </d:propstat>
+</d:response>
+</d:multistatus>
+XML;
+
+ $this->assertXmlStringEqualsXmlString($expected, $this->response->getBodyAsString());
- $xml->registerXPathNamespace('d','urn:DAV');
- $xml->registerXPathNamespace('c','urn:ietf:params:xml:ns:caldav');
+ }
- $check = array(
- '/d:multistatus',
- '/d:multistatus/d:response',
- '/d:multistatus/d:response/d:href',
- '/d:multistatus/d:response/d:propstat',
- '/d:multistatus/d:response/d:propstat/d:prop',
- '/d:multistatus/d:response/d:propstat/d:prop/d:getetag',
- '/d:multistatus/d:response/d:propstat/d:prop/c:calendar-data',
- '/d:multistatus/d:response/d:propstat/d:status' => 'HTTP/1.1 200 OK',
- );
+ /**
+ * @depends testSupportedReportSetProperty
+ * @depends testCalendarMultiGetReport
+ */
+ function testCalendarQueryReportWindowsPhone() {
- foreach($check as $v1=>$v2) {
+ $body =
+ '<?xml version="1.0"?>' .
+ '<c:calendar-query xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:">' .
+ '<d:prop>' .
+ ' <c:calendar-data>' .
+ ' <c:expand start="20000101T000000Z" end="20101231T235959Z" />' .
+ ' </c:calendar-data>' .
+ ' <d:getetag />' .
+ '</d:prop>' .
+ '<c:filter>' .
+ ' <c:comp-filter name="VCALENDAR">' .
+ ' <c:comp-filter name="VEVENT" />' .
+ ' </c:comp-filter>' .
+ '</c:filter>' .
+ '</c:calendar-query>';
- $xpath = is_int($v1)?$v2:$v1;
+ $request = new HTTP\Request('REPORT', '/calendars/user1/UUID-123467', [
+ 'Depth' => '0',
+ 'User-Agent' => 'MSFT-WP/8.10.14219 (gzip)',
+ ]);
- $result = $xml->xpath($xpath);
- $this->assertEquals(1,count($result), 'We expected 1 ' . $xpath . ' elements. We\'ve found ' . count($result) . '. Full result: ' . $this->response->body);
+ $request->setBody($body);
- if (!is_int($v1)) $this->assertEquals($v2,(string)$result[0]);
+ $this->server->httpRequest = $request;
+ $this->server->exec();
- }
+ $this->assertEquals(207, $this->response->status, 'Received an unexpected status. Full response body: ' . $this->response->body);
+
+ $expectedIcal = TestUtil::getTestCalendarData();
+ $expectedIcal = \Sabre\VObject\Reader::read($expectedIcal);
+ $expectedIcal = $expectedIcal->expand(
+ new DateTime('2000-01-01 00:00:00', new DateTimeZone('UTC')),
+ new DateTime('2010-12-31 23:59:59', new DateTimeZone('UTC'))
+ );
+ $expectedIcal = str_replace("\r\n", "&#xD;\n", $expectedIcal->serialize());
+
+ $expected = <<<XML
+<?xml version="1.0"?>
+<d:multistatus xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:cs="http://calendarserver.org/ns/" xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
+<d:response>
+ <d:href>/calendars/user1/UUID-123467/UUID-2345</d:href>
+ <d:propstat>
+ <d:prop>
+ <cal:calendar-data>$expectedIcal</cal:calendar-data>
+ <d:getetag>"e207e33c10e5fb9c12cfb35b5d9116e1"</d:getetag>
+ </d:prop>
+ <d:status>HTTP/1.1 200 OK</d:status>
+ </d:propstat>
+</d:response>
+</d:multistatus>
+XML;
+
+ $this->assertXmlStringEqualsXmlString($expected, $this->response->getBodyAsString());
}
/**
- * @depends testCalendarQueryReport
+ * @depends testSupportedReportSetProperty
+ * @depends testCalendarMultiGetReport
*/
- function testCalendarQueryReportNoCalData() {
+ function testCalendarQueryReportBadDepth() {
$body =
'<?xml version="1.0"?>' .
'<c:calendar-query xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:">' .
'<d:prop>' .
+ ' <c:calendar-data>' .
+ ' <c:expand start="20000101T000000Z" end="20101231T235959Z" />' .
+ ' </c:calendar-data>' .
' <d:getetag />' .
'</d:prop>' .
'<c:filter>' .
@@ -730,43 +780,62 @@ END:VCALENDAR';
'</c:filter>' .
'</c:calendar-query>';
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'REPORT',
- 'REQUEST_URI' => '/calendars/user1//UUID-123467',
- 'HTTP_DEPTH' => '1',
- ));
+ $request = new HTTP\Request('REPORT', '/calendars/user1/UUID-123467', [
+ 'Depth' => '0',
+ ]);
$request->setBody($body);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status',$this->response->status,'Received an unexpected status. Full response body: ' . $this->response->body);
-
- $xml = simplexml_load_string(DAV\XMLUtil::convertDAVNamespace($this->response->body));
+ $this->assertEquals(400, $this->response->status, 'Received an unexpected status. Full response body: ' . $this->response->body);
- $xml->registerXPathNamespace('d','urn:DAV');
- $xml->registerXPathNamespace('c','urn:ietf:params:xml:ns:caldav');
-
- $check = array(
- '/d:multistatus',
- '/d:multistatus/d:response',
- '/d:multistatus/d:response/d:href',
- '/d:multistatus/d:response/d:propstat',
- '/d:multistatus/d:response/d:propstat/d:prop',
- '/d:multistatus/d:response/d:propstat/d:prop/d:getetag',
- '/d:multistatus/d:response/d:propstat/d:status' => 'HTTP/1.1 200 OK',
- );
+ }
- foreach($check as $v1=>$v2) {
+ /**
+ * @depends testCalendarQueryReport
+ */
+ function testCalendarQueryReportNoCalData() {
- $xpath = is_int($v1)?$v2:$v1;
+ $body =
+ '<?xml version="1.0"?>' .
+ '<c:calendar-query xmlns:c="urn:ietf:params:xml:ns:caldav" xmlns:d="DAV:">' .
+ '<d:prop>' .
+ ' <d:getetag />' .
+ '</d:prop>' .
+ '<c:filter>' .
+ ' <c:comp-filter name="VCALENDAR">' .
+ ' <c:comp-filter name="VEVENT" />' .
+ ' </c:comp-filter>' .
+ '</c:filter>' .
+ '</c:calendar-query>';
- $result = $xml->xpath($xpath);
- $this->assertEquals(1,count($result), 'We expected 1 ' . $xpath . ' elements. We\'ve found ' . count($result) . '. Full result: ' . $this->response->body);
+ $request = new HTTP\Request('REPORT', '/calendars/user1/UUID-123467', [
+ 'Depth' => '1',
+ ]);
+ $request->setBody($body);
- if (!is_int($v1)) $this->assertEquals($v2,(string)$result[0]);
+ $this->server->httpRequest = $request;
+ $this->server->exec();
- }
+ $this->assertEquals(207, $this->response->status, 'Received an unexpected status. Full response body: ' . $this->response->body);
+
+ $expected = <<<XML
+<?xml version="1.0"?>
+<d:multistatus xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:cs="http://calendarserver.org/ns/" xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
+<d:response>
+ <d:href>/calendars/user1/UUID-123467/UUID-2345</d:href>
+ <d:propstat>
+ <d:prop>
+ <d:getetag>"e207e33c10e5fb9c12cfb35b5d9116e1"</d:getetag>
+ </d:prop>
+ <d:status>HTTP/1.1 200 OK</d:status>
+ </d:propstat>
+</d:response>
+</d:multistatus>
+XML;
+
+ $this->assertXmlStringEqualsXmlString($expected, $this->response->getBodyAsString());
}
@@ -784,16 +853,13 @@ END:VCALENDAR';
'</d:prop>' .
'</c:calendar-query>';
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'REPORT',
- 'REQUEST_URI' => '/calendars/user1//UUID-123467',
- ));
+ $request = new HTTP\Request('REPORT', '/calendars/user1/UUID-123467');
$request->setBody($body);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 400 Bad request',$this->response->status,'Received an unexpected status. Full response body: ' . $this->response->body);
+ $this->assertEquals(400, $this->response->status, 'Received an unexpected status. Full response body: ' . $this->response->body);
}
@@ -819,44 +885,39 @@ END:VCALENDAR';
'</c:filter>' .
'</c:calendar-query>';
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'REPORT',
- 'REQUEST_URI' => '/calendars/user1/UUID-123467/UUID-2345',
- 'HTTP_DEPTH' => '0',
- ));
+ $request = new HTTP\Request('REPORT', '/calendars/user1/UUID-123467/UUID-2345', ['Depth' => '0']);
$request->setBody($body);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status',$this->response->status,'Received an unexpected status. Full response body: ' . $this->response->body);
-
- $xml = simplexml_load_string(DAV\XMLUtil::convertDAVNamespace($this->response->body));
-
- $xml->registerXPathNamespace('d','urn:DAV');
- $xml->registerXPathNamespace('c','urn:ietf:params:xml:ns:caldav');
+ $this->assertEquals(207, $this->response->status, 'Received an unexpected status. Full response body: ' . $this->response->body);
- $check = array(
- '/d:multistatus',
- '/d:multistatus/d:response',
- '/d:multistatus/d:response/d:href',
- '/d:multistatus/d:response/d:propstat',
- '/d:multistatus/d:response/d:propstat/d:prop',
- '/d:multistatus/d:response/d:propstat/d:prop/d:getetag',
- '/d:multistatus/d:response/d:propstat/d:prop/c:calendar-data',
- '/d:multistatus/d:response/d:propstat/d:status' => 'HTTP/1.1 200 OK',
+ $expectedIcal = TestUtil::getTestCalendarData();
+ $expectedIcal = \Sabre\VObject\Reader::read($expectedIcal);
+ $expectedIcal = $expectedIcal->expand(
+ new DateTime('2000-01-01 00:00:00', new DateTimeZone('UTC')),
+ new DateTime('2010-12-31 23:59:59', new DateTimeZone('UTC'))
);
-
- foreach($check as $v1=>$v2) {
-
- $xpath = is_int($v1)?$v2:$v1;
-
- $result = $xml->xpath($xpath);
- $this->assertEquals(1,count($result), 'We expected 1 ' . $xpath . ' elements. We\'ve found ' . count($result) . '. Full result: ' . $this->response->body);
-
- if (!is_int($v1)) $this->assertEquals($v2,(string)$result[0]);
-
- }
+ $expectedIcal = str_replace("\r\n", "&#xD;\n", $expectedIcal->serialize());
+
+ $expected = <<<XML
+<?xml version="1.0"?>
+<d:multistatus xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:cs="http://calendarserver.org/ns/" xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
+<d:response>
+ <d:href>/calendars/user1/UUID-123467/UUID-2345</d:href>
+ <d:propstat>
+ <d:prop>
+ <cal:calendar-data>$expectedIcal</cal:calendar-data>
+ <d:getetag>"e207e33c10e5fb9c12cfb35b5d9116e1"</d:getetag>
+ </d:prop>
+ <d:status>HTTP/1.1 200 OK</d:status>
+ </d:propstat>
+</d:response>
+</d:multistatus>
+XML;
+
+ $this->assertXmlStringEqualsXmlString($expected, $this->response->getBodyAsString());
}
@@ -879,77 +940,40 @@ END:VCALENDAR';
'</c:filter>' .
'</c:calendar-query>';
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'REPORT',
- 'REQUEST_URI' => '/calendars/user1/UUID-123467/UUID-2345',
- 'HTTP_DEPTH' => '0',
- ));
+ $request = new HTTP\Request('REPORT', '/calendars/user1/UUID-123467/UUID-2345', ['Depth' => '0']);
$request->setBody($body);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status',$this->response->status,'Received an unexpected status. Full response body: ' . $this->response->body);
-
- $xml = simplexml_load_string(DAV\XMLUtil::convertDAVNamespace($this->response->body));
-
- $xml->registerXPathNamespace('d','urn:DAV');
- $xml->registerXPathNamespace('c','urn:ietf:params:xml:ns:caldav');
-
- $check = array(
- '/d:multistatus',
- '/d:multistatus/d:response',
- '/d:multistatus/d:response/d:href',
- '/d:multistatus/d:response/d:propstat',
- '/d:multistatus/d:response/d:propstat/d:prop',
- '/d:multistatus/d:response/d:propstat/d:prop/d:getetag',
- '/d:multistatus/d:response/d:propstat/d:status' => 'HTTP/1.1 200 OK',
- );
-
- foreach($check as $v1=>$v2) {
-
- $xpath = is_int($v1)?$v2:$v1;
-
- $result = $xml->xpath($xpath);
- $this->assertEquals(1,count($result), 'We expected 1 ' . $xpath . ' elements. We\'ve found ' . count($result) . '. Full result: ' . $this->response->body);
-
- if (!is_int($v1)) $this->assertEquals($v2,(string)$result[0]);
-
- }
+ $this->assertEquals(207, $this->response->status, 'Received an unexpected status. Full response body: ' . $this->response->body);
+
+ $expected = <<<XML
+<?xml version="1.0"?>
+<d:multistatus xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:cs="http://calendarserver.org/ns/" xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
+<d:response>
+ <d:href>/calendars/user1/UUID-123467/UUID-2345</d:href>
+ <d:propstat>
+ <d:prop>
+ <d:getetag>"e207e33c10e5fb9c12cfb35b5d9116e1"</d:getetag>
+ </d:prop>
+ <d:status>HTTP/1.1 200 OK</d:status>
+ </d:propstat>
+</d:response>
+</d:multistatus>
+XML;
+
+ $this->assertXmlStringEqualsXmlString($expected, $this->response->getBodyAsString());
}
function testHTMLActionsPanel() {
$output = '';
- $r = $this->server->broadcastEvent('onHTMLActionsPanel', array($this->server->tree->getNodeForPath('calendars/user1'), &$output));
+ $r = $this->server->emit('onHTMLActionsPanel', [$this->server->tree->getNodeForPath('calendars/user1'), &$output]);
$this->assertFalse($r);
- $this->assertTrue(!!strpos($output,'Display name'));
-
- }
-
- function testBrowserPostAction() {
-
- $r = $this->server->broadcastEvent('onBrowserPostAction', array('calendars/user1', 'mkcalendar', array(
- 'name' => 'NEWCALENDAR',
- '{DAV:}displayname' => 'foo',
- )));
- $this->assertFalse($r);
-
- $calendars = $this->caldavBackend->getCalendarsForUser('principals/user1');
- $this->assertEquals(3, count($calendars));
-
- $newCalendar = null;
- foreach($calendars as $calendar) {
- if ($calendar['uri'] === 'NEWCALENDAR') {
- $newCalendar = $calendar;
- break;
- }
- }
- if (!$newCalendar)
- $this->fail('Could not find newly created calendar');
-
+ $this->assertTrue(!!strpos($output, 'Display name'));
}
@@ -970,17 +994,13 @@ END:VCALENDAR';
'<d:href>/calendars/user1/UUID-123467/UUID-2345</d:href>' .
'</c:calendar-multiget>';
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'REPORT',
- 'REQUEST_URI' => '/calendars/user1',
- 'HTTP_DEPTH' => '1',
- ));
+ $request = new HTTP\Request('REPORT', '/calendars/user1', ['Depth' => '1']);
$request->setBody($body);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 400 Bad request',$this->response->status,'Invalid HTTP status received. Full response body: ' . $this->response->body);
+ $this->assertEquals(400, $this->response->status, 'Invalid HTTP status received. Full response body: ' . $this->response->body);
}
@@ -1001,17 +1021,13 @@ END:VCALENDAR';
'<d:href>/calendars/user1/UUID-123467/UUID-2345</d:href>' .
'</c:calendar-multiget>';
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'REPORT',
- 'REQUEST_URI' => '/calendars/user1',
- 'HTTP_DEPTH' => '1',
- ));
+ $request = new HTTP\Request('REPORT', '/calendars/user1', ['Depth' => '1']);
$request->setBody($body);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 400 Bad request',$this->response->status,'Invalid HTTP status received. Full response body: ' . $this->response->body);
+ $this->assertEquals(400, $this->response->status, 'Invalid HTTP status received. Full response body: ' . $this->response->body);
}
@@ -1032,95 +1048,34 @@ END:VCALENDAR';
'<d:href>/calendars/user1/UUID-123467/UUID-2345</d:href>' .
'</c:calendar-multiget>';
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'REPORT',
- 'REQUEST_URI' => '/calendars/user1',
- 'HTTP_DEPTH' => '1',
- ));
+ $request = new HTTP\Request('REPORT', '/calendars/user1', ['Depth' => '1']);
$request->setBody($body);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 400 Bad request',$this->response->status,'Invalid HTTP status received. Full response body: ' . $this->response->body);
+ $this->assertEquals(400, $this->response->status, 'Invalid HTTP status received. Full response body: ' . $this->response->body);
}
- function testNotificationProperties() {
-
- $request = array(
- '{' . Plugin::NS_CALENDARSERVER . '}notificationtype',
- );
- $result = array();
- $notification = new Notifications\Node(
- $this->caldavBackend,
- 'principals/user1',
- new Notifications\Notification\SystemStatus('foo','"1"')
- );
- $this->plugin->beforeGetProperties('foo', $notification, $request, $result);
-
- $this->assertEquals(
- array(
- 200 => array(
- '{' . Plugin::NS_CALENDARSERVER . '}notificationtype' => $notification->getNotificationType()
- )
- ), $result);
-
- }
-
- function testNotificationGet() {
-
- $notification = new Notifications\Node(
- $this->caldavBackend,
- 'principals/user1',
- new Notifications\Notification\SystemStatus('foo','"1"')
- );
-
- $server = new DAV\Server(array($notification));
- $caldav = new Plugin();
-
- $server->httpRequest = new HTTP\Request(array(
- 'REQUEST_URI' => '/foo.xml',
- ));
- $httpResponse = new HTTP\ResponseMock();
- $server->httpResponse = $httpResponse;
-
- $server->addPlugin($caldav);
-
- $caldav->beforeMethod('GET','foo.xml');
-
- $this->assertEquals('HTTP/1.1 200 OK', $httpResponse->status);
- $this->assertEquals(array(
- 'Content-Type' => 'application/xml',
- 'ETag' => '"1"',
- ), $httpResponse->headers);
-
- $expected =
-'<?xml version="1.0" encoding="UTF-8"?>
-<cs:notification xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns" xmlns:cal="urn:ietf:params:xml:ns:caldav" xmlns:cs="http://calendarserver.org/ns/">
- <cs:systemstatus type="high"/>
-</cs:notification>
-';
-
- $this->assertEquals($expected, $httpResponse->body);
-
- }
-
- function testGETPassthrough() {
-
- $server = new DAV\Server();
- $caldav = new Plugin();
-
- $httpResponse = new HTTP\ResponseMock();
- $server->httpResponse = $httpResponse;
-
- $server->addPlugin($caldav);
+ /**
+ * @depends testSupportedReportSetPropertyNonCalendar
+ */
+ function testCalendarProperties() {
- $caldav->beforeMethod('GET','foo');
+ $ns = '{urn:ietf:params:xml:ns:caldav}';
+ $props = $this->server->getProperties('calendars/user1/UUID-123467', [
+ $ns . 'max-resource-size',
+ $ns . 'supported-calendar-data',
+ $ns . 'supported-collation-set',
+ ]);
- $this->assertNull($caldav->beforeMethod('GET','foozz'));
+ $this->assertEquals([
+ $ns . 'max-resource-size' => 10000000,
+ $ns . 'supported-calendar-data' => new Xml\Property\SupportedCalendarData(),
+ $ns . 'supported-collation-set' => new Xml\Property\SupportedCollationSet(),
+ ], $props);
}
-
}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/UserTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/UserTest.php
index d41692f2a..37b5eae97 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/UserTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Principal/UserTest.php
@@ -103,7 +103,7 @@ class UserTest extends \PHPUnit_Framework_TestCase {
$expected = array(
array(
'privilege' => '{DAV:}read',
- 'principal' => 'principals/user',
+ 'principal' => '{DAV:}authenticated',
'protected' => true,
),
array(
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Property/AllowedSharingModesTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Property/AllowedSharingModesTest.php
deleted file mode 100644
index 733ea1108..000000000
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Property/AllowedSharingModesTest.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-namespace Sabre\CalDAV\Property;
-
-use Sabre\CalDAV;
-use Sabre\DAV;
-
-class AllowedSharingModesTest extends \PHPUnit_Framework_TestCase {
-
- function testSimple() {
-
- $sccs = new AllowedSharingModes(true,true);
-
- }
-
- /**
- * @depends testSimple
- */
- function testSerialize() {
-
- $property = new AllowedSharingModes(true,true);
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:root');
- $root->setAttribute('xmlns:d','DAV:');
- $root->setAttribute('xmlns:cal',CalDAV\Plugin::NS_CALDAV);
- $root->setAttribute('xmlns:cs',CalDAV\Plugin::NS_CALENDARSERVER);
-
- $doc->appendChild($root);
- $server = new DAV\Server();
-
- $property->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:root xmlns:d="DAV:" xmlns:cal="' . CalDAV\Plugin::NS_CALDAV . '" xmlns:cs="' . CalDAV\Plugin::NS_CALENDARSERVER . '">' .
-'<cs:can-be-shared/>' .
-'<cs:can-be-published/>' .
-'</d:root>
-', $xml);
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Property/InviteTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Property/InviteTest.php
deleted file mode 100644
index 349a6e080..000000000
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Property/InviteTest.php
+++ /dev/null
@@ -1,196 +0,0 @@
-<?php
-
-namespace Sabre\CalDAV\Property;
-
-use Sabre\CalDAV;
-use Sabre\DAV;
-
-class InviteTest extends \PHPUnit_Framework_TestCase {
-
- function testSimple() {
-
- $sccs = new Invite(array());
-
- }
-
- /**
- * @depends testSimple
- */
- function testSerialize() {
-
- $property = new Invite(array(
- array(
- 'href' => 'mailto:user1@example.org',
- 'status' => CalDAV\SharingPlugin::STATUS_ACCEPTED,
- 'readOnly' => false,
- ),
- array(
- 'href' => 'mailto:user2@example.org',
- 'commonName' => 'John Doe',
- 'status' => CalDAV\SharingPlugin::STATUS_DECLINED,
- 'readOnly' => true,
- ),
- array(
- 'href' => 'mailto:user3@example.org',
- 'commonName' => 'Joe Shmoe',
- 'status' => CalDAV\SharingPlugin::STATUS_NORESPONSE,
- 'readOnly' => true,
- 'summary' => 'Something, something',
- ),
- array(
- 'href' => 'mailto:user4@example.org',
- 'commonName' => 'Hoe Boe',
- 'status' => CalDAV\SharingPlugin::STATUS_INVALID,
- 'readOnly' => true,
- ),
- ), array(
- 'href' => 'mailto:thedoctor@example.org',
- 'commonName' => 'The Doctor',
- 'firstName' => 'The',
- 'lastName' => 'Doctor',
- ));
-
- $doc = new \DOMDocument();
- $doc->formatOutput = true;
- $root = $doc->createElement('d:root');
- $root->setAttribute('xmlns:d','DAV:');
- $root->setAttribute('xmlns:cal',CalDAV\Plugin::NS_CALDAV);
- $root->setAttribute('xmlns:cs',CalDAV\Plugin::NS_CALENDARSERVER);
-
- $doc->appendChild($root);
- $server = new DAV\Server();
-
- $property->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:root xmlns:d="DAV:" xmlns:cal="' . CalDAV\Plugin::NS_CALDAV . '" xmlns:cs="' . CalDAV\Plugin::NS_CALENDARSERVER . '">
- <cs:organizer>
- <d:href>mailto:thedoctor@example.org</d:href>
- <cs:common-name>The Doctor</cs:common-name>
- <cs:first-name>The</cs:first-name>
- <cs:last-name>Doctor</cs:last-name>
- </cs:organizer>
- <cs:user>
- <d:href>mailto:user1@example.org</d:href>
- <cs:invite-accepted/>
- <cs:access>
- <cs:read-write/>
- </cs:access>
- </cs:user>
- <cs:user>
- <d:href>mailto:user2@example.org</d:href>
- <cs:common-name>John Doe</cs:common-name>
- <cs:invite-declined/>
- <cs:access>
- <cs:read/>
- </cs:access>
- </cs:user>
- <cs:user>
- <d:href>mailto:user3@example.org</d:href>
- <cs:common-name>Joe Shmoe</cs:common-name>
- <cs:invite-noresponse/>
- <cs:access>
- <cs:read/>
- </cs:access>
- <cs:summary>Something, something</cs:summary>
- </cs:user>
- <cs:user>
- <d:href>mailto:user4@example.org</d:href>
- <cs:common-name>Hoe Boe</cs:common-name>
- <cs:invite-invalid/>
- <cs:access>
- <cs:read/>
- </cs:access>
- </cs:user>
-</d:root>
-', $xml);
-
- }
-
- /**
- * @depends testSerialize
- */
- public function testUnserialize() {
-
- $input = array(
- array(
- 'href' => 'mailto:user1@example.org',
- 'status' => CalDAV\SharingPlugin::STATUS_ACCEPTED,
- 'readOnly' => false,
- 'commonName' => '',
- 'summary' => '',
- ),
- array(
- 'href' => 'mailto:user2@example.org',
- 'commonName' => 'John Doe',
- 'status' => CalDAV\SharingPlugin::STATUS_DECLINED,
- 'readOnly' => true,
- 'summary' => '',
- ),
- array(
- 'href' => 'mailto:user3@example.org',
- 'commonName' => 'Joe Shmoe',
- 'status' => CalDAV\SharingPlugin::STATUS_NORESPONSE,
- 'readOnly' => true,
- 'summary' => 'Something, something',
- ),
- array(
- 'href' => 'mailto:user4@example.org',
- 'commonName' => 'Hoe Boe',
- 'status' => CalDAV\SharingPlugin::STATUS_INVALID,
- 'readOnly' => true,
- 'summary' => '',
- ),
- );
-
- // Creating the xml
- $doc = new \DOMDocument();
- $doc->formatOutput = true;
- $root = $doc->createElement('d:root');
- $root->setAttribute('xmlns:d','DAV:');
- $root->setAttribute('xmlns:cal',CalDAV\Plugin::NS_CALDAV);
- $root->setAttribute('xmlns:cs',CalDAV\Plugin::NS_CALENDARSERVER);
-
- $doc->appendChild($root);
- $server = new DAV\Server();
-
- $inputProperty = new Invite($input);
- $inputProperty->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- // Parsing it again
-
- $doc2 = DAV\XMLUtil::loadDOMDocument($xml);
-
- $outputProperty = Invite::unserialize($doc2->firstChild);
-
- $this->assertEquals($input, $outputProperty->getValue());
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception
- */
- function testUnserializeNoStatus() {
-
-$xml = '<?xml version="1.0"?>
-<d:root xmlns:d="DAV:" xmlns:cal="' . CalDAV\Plugin::NS_CALDAV . '" xmlns:cs="' . CalDAV\Plugin::NS_CALENDARSERVER . '">
- <cs:user>
- <d:href>mailto:user1@example.org</d:href>
- <!-- <cs:invite-accepted/> -->
- <cs:access>
- <cs:read-write/>
- </cs:access>
- </cs:user>
-</d:root>';
-
- $doc2 = DAV\XMLUtil::loadDOMDocument($xml);
- $outputProperty = Invite::unserialize($doc2->firstChild);
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Property/ScheduleCalendarTranspTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Property/ScheduleCalendarTranspTest.php
deleted file mode 100644
index 1ace0b18f..000000000
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Property/ScheduleCalendarTranspTest.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-
-namespace Sabre\CalDAV\Property;
-
-use Sabre\CalDAV;
-use Sabre\DAV;
-
-class ScheduleCalendarTranspTest extends \PHPUnit_Framework_TestCase {
-
- function testSimple() {
-
- $sccs = new ScheduleCalendarTransp('transparent');
- $this->assertEquals('transparent', $sccs->getValue());
-
- }
-
- /**
- * @expectedException InvalidArgumentException
- */
- function testBadArg() {
-
- $sccs = new ScheduleCalendarTransp('foo');
-
- }
-
- function values() {
-
- return array(
- array('transparent'),
- array('opaque'),
- );
-
- }
-
- /**
- * @depends testSimple
- * @dataProvider values
- */
- function testSerialize($value) {
-
- $property = new ScheduleCalendarTransp($value);
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:root');
- $root->setAttribute('xmlns:d','DAV:');
- $root->setAttribute('xmlns:cal',CalDAV\Plugin::NS_CALDAV);
-
- $doc->appendChild($root);
- $server = new DAV\Server();
-
- $property->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:root xmlns:d="DAV:" xmlns:cal="' . CalDAV\Plugin::NS_CALDAV . '">' .
-'<cal:' . $value . '/>' .
-'</d:root>
-', $xml);
-
- }
-
- /**
- * @depends testSimple
- * @dataProvider values
- */
- function testUnserializer($value) {
-
- $xml = '<?xml version="1.0"?>
-<d:root xmlns:d="DAV:" xmlns:cal="' . CalDAV\Plugin::NS_CALDAV . '">' .
-'<cal:'.$value.'/>' .
-'</d:root>';
-
- $dom = DAV\XMLUtil::loadDOMDocument($xml);
-
- $property = ScheduleCalendarTransp::unserialize($dom->firstChild);
-
- $this->assertTrue($property instanceof ScheduleCalendarTransp);
- $this->assertEquals($value, $property->getValue());
-
- }
-
- /**
- * @depends testSimple
- */
- function testUnserializerBadData() {
-
- $xml = '<?xml version="1.0"?>
-<d:root xmlns:d="DAV:" xmlns:cal="' . CalDAV\Plugin::NS_CALDAV . '">' .
-'<cal:foo/>' .
-'</d:root>';
-
- $dom = DAV\XMLUtil::loadDOMDocument($xml);
-
- $this->assertNull(ScheduleCalendarTransp::unserialize($dom->firstChild));
-
- }
-}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Property/SupportedCalendarComponentSetTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Property/SupportedCalendarComponentSetTest.php
deleted file mode 100644
index 3e5d5f5fc..000000000
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Property/SupportedCalendarComponentSetTest.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-
-namespace Sabre\CalDAV\Property;
-
-class SupportedCalendarComponentSetTest extends \PHPUnit_Framework_TestCase {
-
- function testSimple() {
-
- $sccs = new SupportedCalendarComponentSet(array('VEVENT'));
- $this->assertEquals(array('VEVENT'), $sccs->getValue());
-
- }
-
- /**
- * @depends testSimple
- */
- function testSerialize() {
-
- $property = new SupportedCalendarComponentSet(array('VEVENT','VJOURNAL'));
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:root');
- $root->setAttribute('xmlns:d','DAV:');
- $root->setAttribute('xmlns:cal',\Sabre\CalDAV\Plugin::NS_CALDAV);
-
- $doc->appendChild($root);
- $server = new \Sabre\DAV\Server();
-
- $property->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:root xmlns:d="DAV:" xmlns:cal="' . \Sabre\CalDAV\Plugin::NS_CALDAV . '">' .
-'<cal:comp name="VEVENT"/>' .
-'<cal:comp name="VJOURNAL"/>' .
-'</d:root>
-', $xml);
-
- }
-
- /**
- * @depends testSimple
- */
- function testUnserializer() {
-
- $xml = '<?xml version="1.0"?>
-<d:root xmlns:d="DAV:" xmlns:cal="' . \Sabre\CalDAV\Plugin::NS_CALDAV . '">' .
-'<cal:comp name="VEVENT"/>' .
-'<cal:comp name="VJOURNAL"/>' .
-'</d:root>';
-
- $dom = \Sabre\DAV\XMLUtil::loadDOMDocument($xml);
-
- $property = SupportedCalendarComponentSet::unserialize($dom->firstChild);
-
- $this->assertTrue($property instanceof SupportedCalendarComponentSet);
- $this->assertEquals(array(
- 'VEVENT',
- 'VJOURNAL',
- ),
- $property->getValue());
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Property/SupportedCalendarDataTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Property/SupportedCalendarDataTest.php
deleted file mode 100644
index 3e016368c..000000000
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Property/SupportedCalendarDataTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-namespace Sabre\CalDAV\Property;
-
-use Sabre\CalDAV;
-use Sabre\DAV;
-
-class SupportedCalendarDataTest extends \PHPUnit_Framework_TestCase {
-
- function testSimple() {
-
- $sccs = new SupportedCalendarData();
-
- }
-
- /**
- * @depends testSimple
- */
- function testSerialize() {
-
- $property = new SupportedCalendarData();
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:root');
- $root->setAttribute('xmlns:d','DAV:');
- $root->setAttribute('xmlns:cal',CalDAV\Plugin::NS_CALDAV);
-
- $doc->appendChild($root);
- $server = new DAV\Server();
-
- $property->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:root xmlns:d="DAV:" xmlns:cal="' . CalDAV\Plugin::NS_CALDAV . '">' .
-'<cal:calendar-data content-type="text/calendar" version="2.0"/>' .
-'</d:root>
-', $xml);
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Property/SupportedCollationSetTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Property/SupportedCollationSetTest.php
deleted file mode 100644
index 669e31553..000000000
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Property/SupportedCollationSetTest.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-namespace Sabre\CalDAV\Property;
-
-use Sabre\CalDAV;
-use Sabre\DAV;
-
-class SupportedCollationSetTest extends \PHPUnit_Framework_TestCase {
-
- function testSimple() {
-
- $scs = new SupportedCollationSet();
-
- }
-
- /**
- * @depends testSimple
- */
- function testSerialize() {
-
- $property = new SupportedCollationSet();
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:root');
- $root->setAttribute('xmlns:d','DAV:');
- $root->setAttribute('xmlns:cal',CalDAV\Plugin::NS_CALDAV);
-
- $doc->appendChild($root);
- $server = new DAV\Server();
-
- $property->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:root xmlns:d="DAV:" xmlns:cal="' . CalDAV\Plugin::NS_CALDAV . '">' .
-'<cal:supported-collation>i;ascii-casemap</cal:supported-collation>' .
-'<cal:supported-collation>i;octet</cal:supported-collation>' .
-'<cal:supported-collation>i;unicode-casemap</cal:supported-collation>' .
-'</d:root>
-', $xml);
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Schedule/IMip/Mock.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Schedule/IMip/Mock.php
deleted file mode 100644
index ce0946dc8..000000000
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Schedule/IMip/Mock.php
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-
-namespace Sabre\CalDAV\Schedule\IMip;
-
-/**
- * iMIP handler.
- *
- * This class is responsible for sending out iMIP messages. iMIP is the
- * email-based transport for iTIP. iTIP deals with scheduling operations for
- * iCalendar objects.
- *
- * If you want to customize the email that gets sent out, you can do so by
- * extending this class and overriding the sendMessage method.
- *
- * @copyright Copyright (C) 2007-2014 fruux GmbH (https://fruux.com/).
- * @author Evert Pot (http://evertpot.com/)
- * @license http://sabre.io/license/ Modified BSD License
- */
-class Mock extends \Sabre\CalDAV\Schedule\IMip {
-
- protected $emails = array();
-
- /**
- * This function is reponsible for sending the actual email.
- *
- * @param string $to Recipient email address
- * @param string $subject Subject of the email
- * @param string $body iCalendar body
- * @param array $headers List of headers
- * @return void
- */
- protected function mail($to, $subject, $body, array $headers) {
-
- $this->emails[] = array(
- 'to' => $to,
- 'subject' => $subject,
- 'body' => $body,
- 'headers' => $headers,
- );
-
- }
-
- public function getSentEmails() {
-
- return $this->emails;
-
- }
-
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/Schedule/OutboxTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/Schedule/OutboxTest.php
index 60ce9a2ad..933c7157b 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/Schedule/OutboxTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/Schedule/OutboxTest.php
@@ -20,6 +20,7 @@ class OutboxTest extends \PHPUnit_Framework_TestCase {
'principal' => 'principals/user1',
'protected' => true,
),
+
array(
'privilege' => '{' . CalDAV\Plugin::NS_CALDAV . '}schedule-post-vevent',
'principal' => 'principals/user1',
@@ -30,6 +31,26 @@ class OutboxTest extends \PHPUnit_Framework_TestCase {
'principal' => 'principals/user1',
'protected' => true,
),
+ array(
+ 'privilege' => '{' . CalDAV\Plugin::NS_CALDAV . '}schedule-query-freebusy',
+ 'principal' => 'principals/user1/calendar-proxy-write',
+ 'protected' => true,
+ ),
+ array(
+ 'privilege' => '{' . CalDAV\Plugin::NS_CALDAV . '}schedule-post-vevent',
+ 'principal' => 'principals/user1/calendar-proxy-write',
+ 'protected' => true,
+ ),
+ array(
+ 'privilege' => '{DAV:}read',
+ 'principal' => 'principals/user1/calendar-proxy-read',
+ 'protected' => true,
+ ),
+ array(
+ 'privilege' => '{DAV:}read',
+ 'principal' => 'principals/user1/calendar-proxy-write',
+ 'protected' => true,
+ ),
), $outbox->getACL());
$ok = false;
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/ShareableCalendarTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/ShareableCalendarTest.php
index 2f79351f1..15b869d50 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/ShareableCalendarTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/ShareableCalendarTest.php
@@ -15,10 +15,8 @@ class ShareableCalendarTest extends \PHPUnit_Framework_TestCase {
'id' => 1,
);
- $this->backend = new Backend\Mock(
- array($props),
- array(),
- array()
+ $this->backend = new Backend\MockSharing(
+ array($props)
);
$this->backend->updateShares(1, array(
array(
@@ -55,8 +53,8 @@ class ShareableCalendarTest extends \PHPUnit_Framework_TestCase {
function testPublish() {
- $this->instance->setPublishStatus(true);
- $this->instance->setPublishStatus(false);
+ $this->assertNull($this->instance->setPublishStatus(true));
+ $this->assertNull($this->instance->setPublishStatus(false));
}
}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/SharedCalendarTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/SharedCalendarTest.php
index 955831917..337b658f4 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/SharedCalendarTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/SharedCalendarTest.php
@@ -20,7 +20,7 @@ class SharedCalendarTest extends \PHPUnit_Framework_TestCase {
);
}
- $this->backend = new Backend\Mock(
+ $this->backend = new Backend\MockSharing(
array($props),
array(),
array()
@@ -64,18 +64,58 @@ class SharedCalendarTest extends \PHPUnit_Framework_TestCase {
'principal' => 'principals/owner',
'protected' => true,
),
+
+ array(
+ 'privilege' => '{DAV:}read',
+ 'principal' => 'principals/owner/calendar-proxy-write',
+ 'protected' => true,
+ ),
+ array(
+ 'privilege' => '{DAV:}read',
+ 'principal' => 'principals/owner/calendar-proxy-read',
+ 'protected' => true,
+ ),
+ array(
+ 'privilege' => '{' . Plugin::NS_CALDAV . '}read-free-busy',
+ 'principal' => '{DAV:}authenticated',
+ 'protected' => true,
+ ),
array(
'privilege' => '{DAV:}write',
'principal' => 'principals/owner',
'protected' => true,
),
array(
- 'privilege' => '{DAV:}read',
+ 'privilege' => '{DAV:}write',
'principal' => 'principals/owner/calendar-proxy-write',
'protected' => true,
),
array(
+ 'privilege' => '{DAV:}read',
+ 'principal' => 'principals/sharee',
+ 'protected' => true,
+ ),
+ array(
'privilege' => '{DAV:}write',
+ 'principal' => 'principals/sharee',
+ 'protected' => true,
+ ),
+ );
+
+ $this->assertEquals($expected, $this->getInstance()->getACL());
+
+ }
+
+ function testGetChildACL() {
+
+ $expected = array(
+ array(
+ 'privilege' => '{DAV:}read',
+ 'principal' => 'principals/owner',
+ 'protected' => true,
+ ),
+ array(
+ 'privilege' => '{DAV:}read',
'principal' => 'principals/owner/calendar-proxy-write',
'protected' => true,
),
@@ -85,8 +125,13 @@ class SharedCalendarTest extends \PHPUnit_Framework_TestCase {
'protected' => true,
),
array(
- 'privilege' => '{' . Plugin::NS_CALDAV . '}read-free-busy',
- 'principal' => '{DAV:}authenticated',
+ 'privilege' => '{DAV:}write',
+ 'principal' => 'principals/owner',
+ 'protected' => true,
+ ),
+ array(
+ 'privilege' => '{DAV:}write',
+ 'principal' => 'principals/owner/calendar-proxy-write',
'protected' => true,
),
array(
@@ -101,7 +146,43 @@ class SharedCalendarTest extends \PHPUnit_Framework_TestCase {
),
);
- $this->assertEquals($expected, $this->getInstance()->getACL());
+ $this->assertEquals($expected, $this->getInstance()->getChildACL());
+
+ }
+
+ function testGetChildACLReadOnly() {
+
+ $expected = array(
+ array(
+ 'privilege' => '{DAV:}read',
+ 'principal' => 'principals/owner',
+ 'protected' => true,
+ ),
+ array(
+ 'privilege' => '{DAV:}read',
+ 'principal' => 'principals/owner/calendar-proxy-write',
+ 'protected' => true,
+ ),
+ array(
+ 'privilege' => '{DAV:}read',
+ 'principal' => 'principals/owner/calendar-proxy-read',
+ 'protected' => true,
+ ),
+ array(
+ 'privilege' => '{DAV:}read',
+ 'principal' => 'principals/sharee',
+ 'protected' => true,
+ ),
+ );
+
+ $props = array(
+ 'id' => 1,
+ '{http://calendarserver.org/ns/}shared-url' => 'calendars/owner/original',
+ '{http://sabredav.org/ns}owner-principal' => 'principals/owner',
+ '{http://sabredav.org/ns}read-only' => true,
+ 'principaluri' => 'principals/sharee',
+ );
+ $this->assertEquals($expected, $this->getInstance($props)->getChildACL());
}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/SharingPluginTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/SharingPluginTest.php
index 60a71fd7f..b4270da7d 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/SharingPluginTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/SharingPluginTest.php
@@ -33,7 +33,7 @@ class SharingPluginTest extends \Sabre\DAVServerTest {
'id' => 3,
'uri' => 'cal3',
),
- );
+ );
parent::setUp();
@@ -46,6 +46,10 @@ class SharingPluginTest extends \Sabre\DAVServerTest {
function testSimple() {
$this->assertInstanceOf('Sabre\\CalDAV\\SharingPlugin', $this->server->getPlugin('caldav-sharing'));
+ $this->assertEquals(
+ 'caldav-sharing',
+ $this->caldavSharingPlugin->getPluginInfo()['name']
+ );
}
@@ -58,14 +62,14 @@ class SharingPluginTest extends \Sabre\DAVServerTest {
function testBeforeGetShareableCalendar() {
// Forcing the server to authenticate:
- $this->authPlugin->beforeMethod('GET','');
+ $this->authPlugin->beforeMethod(new HTTP\Request(), new HTTP\Response());
$props = $this->server->getProperties('calendars/user1/cal1', array(
'{' . Plugin::NS_CALENDARSERVER . '}invite',
'{' . Plugin::NS_CALENDARSERVER . '}allowed-sharing-modes',
));
- $this->assertInstanceOf('Sabre\\CalDAV\\Property\\Invite', $props['{' . Plugin::NS_CALENDARSERVER . '}invite']);
- $this->assertInstanceOf('Sabre\\CalDAV\\Property\\AllowedSharingModes', $props['{' . Plugin::NS_CALENDARSERVER . '}allowed-sharing-modes']);
+ $this->assertInstanceOf('Sabre\\CalDAV\\Xml\\Property\\Invite', $props['{' . Plugin::NS_CALENDARSERVER . '}invite']);
+ $this->assertInstanceOf('Sabre\\CalDAV\\Xml\\Property\\AllowedSharingModes', $props['{' . Plugin::NS_CALENDARSERVER . '}allowed-sharing-modes']);
}
@@ -76,8 +80,8 @@ class SharingPluginTest extends \Sabre\DAVServerTest {
'{' . Plugin::NS_CALENDARSERVER . '}invite',
));
- $this->assertInstanceOf('Sabre\\CalDAV\\Property\\Invite', $props['{' . Plugin::NS_CALENDARSERVER . '}invite']);
- $this->assertInstanceOf('Sabre\\DAV\\Property\\IHref', $props['{' . Plugin::NS_CALENDARSERVER . '}shared-url']);
+ $this->assertInstanceOf('Sabre\\CalDAV\\Xml\\Property\\Invite', $props['{' . Plugin::NS_CALENDARSERVER . '}invite']);
+ $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $props['{' . Plugin::NS_CALENDARSERVER . '}shared-url']);
}
@@ -92,15 +96,12 @@ class SharingPluginTest extends \Sabre\DAVServerTest {
array()
);
$result = $this->server->updateProperties('calendars/user1/cal1', array(
- '{DAV:}resourcetype' => new DAV\Property\ResourceType(array('{DAV:}collection'))
+ '{DAV:}resourcetype' => new DAV\Xml\Property\ResourceType(['{DAV:}collection'])
));
- $this->assertEquals(array(
- 200 => array(
- '{DAV:}resourcetype' => null,
- ),
- 'href' => 'calendars/user1/cal1',
- ), $result);
+ $this->assertEquals([
+ '{DAV:}resourcetype' => 200
+ ], $result);
$this->assertEquals(0, count($this->caldavBackend->getShares(1)));
@@ -113,30 +114,27 @@ class SharingPluginTest extends \Sabre\DAVServerTest {
));
$this->assertEquals(array(
- 403 => array(
- '{DAV:}foo' => null,
- ),
- 'href' => 'calendars/user1/cal3',
+ '{DAV:}foo' => 403,
), $result);
}
function testUnknownMethodNoPOST() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'PATCH',
'REQUEST_URI' => '/',
));
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 501 Not Implemented', $response->status, $response->body);
+ $this->assertEquals(501, $response->status, $response->body);
}
function testUnknownMethodNoXML() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'POST',
'REQUEST_URI' => '/',
'CONTENT_TYPE' => 'text/plain',
@@ -144,13 +142,13 @@ class SharingPluginTest extends \Sabre\DAVServerTest {
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 501 Not Implemented', $response->status, $response->body);
+ $this->assertEquals(501, $response->status, $response->body);
}
function testUnknownMethodNoNode() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'POST',
'REQUEST_URI' => '/foo',
'CONTENT_TYPE' => 'text/xml',
@@ -158,13 +156,13 @@ class SharingPluginTest extends \Sabre\DAVServerTest {
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 501 Not Implemented', $response->status, $response->body);
+ $this->assertEquals(501, $response->status, $response->body);
}
function testShareRequest() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'POST',
'REQUEST_URI' => '/calendars/user1/cal1',
'CONTENT_TYPE' => 'text/xml',
@@ -187,7 +185,7 @@ RRR;
$request->setBody($xml);
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 200 OK', $response->status, $response->body);
+ $this->assertEquals(200, $response->status, $response->body);
$this->assertEquals(array(array(
'href' => 'mailto:joe@example.org',
@@ -207,7 +205,7 @@ RRR;
function testShareRequestNoShareableCalendar() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'POST',
'REQUEST_URI' => '/calendars/user1/cal2',
'CONTENT_TYPE' => 'text/xml',
@@ -229,13 +227,13 @@ RRR;
$request->setBody($xml);
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 501 Not Implemented', $response->status, $response->body);
+ $this->assertEquals(501, $response->status, $response->body);
}
function testInviteReply() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'POST',
'REQUEST_URI' => '/calendars/user1',
'CONTENT_TYPE' => 'text/xml',
@@ -250,13 +248,13 @@ RRR;
$request->setBody($xml);
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 200 OK', $response->status, $response->body);
+ $this->assertEquals(200, $response->status, $response->body);
}
function testInviteBadXML() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'POST',
'REQUEST_URI' => '/calendars/user1',
'CONTENT_TYPE' => 'text/xml',
@@ -268,13 +266,13 @@ RRR;
';
$request->setBody($xml);
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 400 Bad request', $response->status, $response->body);
+ $this->assertEquals(400, $response->status, $response->body);
}
function testInviteWrongUrl() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'POST',
'REQUEST_URI' => '/calendars/user1/cal1',
'CONTENT_TYPE' => 'text/xml',
@@ -287,7 +285,7 @@ RRR;
';
$request->setBody($xml);
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 501 Not Implemented', $response->status, $response->body);
+ $this->assertEquals(501, $response->status, $response->body);
// If the plugin did not handle this request, it must ensure that the
// body is still accessible by other plugins.
@@ -297,7 +295,7 @@ RRR;
function testPublish() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'POST',
'REQUEST_URI' => '/calendars/user1/cal1',
'CONTENT_TYPE' => 'text/xml',
@@ -310,13 +308,13 @@ RRR;
$request->setBody($xml);
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 202 Accepted', $response->status, $response->body);
+ $this->assertEquals(202, $response->status, $response->body);
}
function testUnpublish() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'POST',
'REQUEST_URI' => '/calendars/user1/cal1',
'CONTENT_TYPE' => 'text/xml',
@@ -329,13 +327,13 @@ RRR;
$request->setBody($xml);
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 200 OK', $response->status, $response->body);
+ $this->assertEquals(200, $response->status, $response->body);
}
function testPublishWrongUrl() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'POST',
'REQUEST_URI' => '/calendars/user1/cal2',
'CONTENT_TYPE' => 'text/xml',
@@ -348,13 +346,13 @@ RRR;
$request->setBody($xml);
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 501 Not Implemented', $response->status, $response->body);
+ $this->assertEquals(501, $response->status, $response->body);
}
function testUnpublishWrongUrl() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'POST',
'REQUEST_URI' => '/calendars/user1/cal2',
'CONTENT_TYPE' => 'text/xml',
@@ -367,13 +365,13 @@ RRR;
$request->setBody($xml);
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 501 Not Implemented', $response->status, $response->body);
+ $this->assertEquals(501, $response->status, $response->body);
}
function testUnknownXmlDoc() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'POST',
'REQUEST_URI' => '/calendars/user1/cal2',
'CONTENT_TYPE' => 'text/xml',
@@ -385,7 +383,7 @@ RRR;
$request->setBody($xml);
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 501 Not Implemented', $response->status, $response->body);
+ $this->assertEquals(501, $response->status, $response->body);
}
}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/UserCalendarsSharedCalendarsTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/UserCalendarsSharedCalendarsTest.php
deleted file mode 100644
index 4c3bae3a4..000000000
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/UserCalendarsSharedCalendarsTest.php
+++ /dev/null
@@ -1,93 +0,0 @@
-<?php
-
-namespace Sabre\CalDAV;
-
-use Sabre\DAVACL;
-
-require_once 'Sabre/CalDAV/TestUtil.php';
-
-/**
- * @covers Sabre\CalDAV\UserCalendars
- */
-class UserCalendarsSharedCalendarsTest extends \PHPUnit_Framework_TestCase {
-
- protected $backend;
-
- function getInstance() {
-
- $calendars = array(
- array(
- 'id' => 1,
- 'principaluri' => 'principals/user1',
- ),
- array(
- 'id' => 2,
- '{http://calendarserver.org/ns/}shared-url' => 'calendars/owner/cal1',
- '{http://sabredav.org/ns}owner-principal' => 'principal/owner',
- '{http://sabredav.org/ns}read-only' => false,
- 'principaluri' => 'principals/user1',
- ),
- );
-
- $this->backend = new Backend\Mock(
- $calendars,
- array(),
- array()
- );
-
- return new UserCalendars($this->backend, array(
- 'uri' => 'principals/user1'
- ));
-
- }
-
- function testSimple() {
-
- $instance = $this->getInstance();
- $this->assertEquals('user1', $instance->getName());
-
- }
-
- function testGetChildren() {
-
- $instance = $this->getInstance();
- $children = $instance->getChildren();
- $this->assertEquals(4, count($children));
-
- // Testing if we got all the objects back.
- $hasShareable = false;
- $hasShared = false;
- $hasOutbox = false;
- $hasNotifications = false;
-
- foreach($children as $child) {
-
- if ($child instanceof IShareableCalendar) {
- $hasShareable = true;
- }
- if ($child instanceof ISharedCalendar) {
- $hasShared = true;
- }
- if ($child instanceof Schedule\IOutbox) {
- $hasOutbox = true;
- }
- if ($child instanceof Notifications\ICollection) {
- $hasNotifications = true;
- }
-
- }
- if (!$hasShareable) $this->fail('Missing node!');
- if (!$hasShared) $this->fail('Missing node!');
- if (!$hasOutbox) $this->fail('Missing node!');
- if (!$hasNotifications) $this->fail('Missing node!');
-
- }
-
- function testShareReply() {
-
- $instance = $this->getInstance();
- $instance->shareReply('uri', SharingPlugin::STATUS_DECLINED, 'curi', '1');
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/UserCalendarsTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/UserCalendarsTest.php
deleted file mode 100644
index 453c872e5..000000000
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/UserCalendarsTest.php
+++ /dev/null
@@ -1,207 +0,0 @@
-<?php
-
-namespace Sabre\CalDAV;
-use Sabre\DAVACL;
-use Sabre\DAV;
-
-require_once 'Sabre/CalDAV/TestUtil.php';
-
-/**
- * @covers Sabre\CalDAV\UserCalendars
- */
-class UserCalendarsTest extends \PHPUnit_Framework_TestCase {
-
- /**
- * @var Sabre\CalDAV\UserCalendars
- */
- protected $usercalendars;
- /**
- * @var Sabre\CalDAV\Backend\PDO
- */
- protected $backend;
-
- function setup() {
-
- if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
- $this->backend = TestUtil::getBackend();
- $this->usercalendars = new UserCalendars($this->backend, array(
- 'uri' => 'principals/user1'
- ));
-
- }
-
- function testSimple() {
-
- $this->assertEquals('user1',$this->usercalendars->getName());
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\NotFound
- * @depends testSimple
- */
- function testGetChildNotFound() {
-
- $this->usercalendars->getChild('randomname');
-
- }
-
- function testChildExists() {
-
- $this->assertFalse($this->usercalendars->childExists('foo'));
- $this->assertTrue($this->usercalendars->childExists('UUID-123467'));
-
- }
-
- function testGetOwner() {
-
- $this->assertEquals('principals/user1', $this->usercalendars->getOwner());
-
- }
-
- function testGetGroup() {
-
- $this->assertNull($this->usercalendars->getGroup());
-
- }
-
- function testGetACL() {
-
- $expected = array(
- array(
- 'privilege' => '{DAV:}read',
- 'principal' => 'principals/user1',
- 'protected' => true,
- ),
- array(
- 'privilege' => '{DAV:}write',
- 'principal' => 'principals/user1',
- 'protected' => true,
- ),
- array(
- 'privilege' => '{DAV:}read',
- 'principal' => 'principals/user1/calendar-proxy-write',
- 'protected' => true,
- ),
- array(
- 'privilege' => '{DAV:}write',
- 'principal' => 'principals/user1/calendar-proxy-write',
- 'protected' => true,
- ),
- array(
- 'privilege' => '{DAV:}read',
- 'principal' => 'principals/user1/calendar-proxy-read',
- 'protected' => true,
- ),
- );
- $this->assertEquals($expected, $this->usercalendars->getACL());
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\MethodNotAllowed
- */
- function testSetACL() {
-
- $this->usercalendars->setACL(array());
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\Forbidden
- * @depends testSimple
- */
- function testSetName() {
-
- $this->usercalendars->setName('bla');
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\Forbidden
- * @depends testSimple
- */
- function testDelete() {
-
- $this->usercalendars->delete();
-
- }
-
- /**
- * @depends testSimple
- */
- function testGetLastModified() {
-
- $this->assertNull($this->usercalendars->getLastModified());
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\MethodNotAllowed
- * @depends testSimple
- */
- function testCreateFile() {
-
- $this->usercalendars->createFile('bla');
-
- }
-
-
- /**
- * @expectedException Sabre\DAV\Exception\MethodNotAllowed
- * @depends testSimple
- */
- function testCreateDirectory() {
-
- $this->usercalendars->createDirectory('bla');
-
- }
-
- /**
- * @depends testSimple
- */
- function testCreateExtendedCollection() {
-
- $result = $this->usercalendars->createExtendedCollection('newcalendar', array('{DAV:}collection', '{urn:ietf:params:xml:ns:caldav}calendar'), array());
- $this->assertNull($result);
- $cals = $this->backend->getCalendarsForUser('principals/user1');
- $this->assertEquals(3,count($cals));
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\InvalidResourceType
- * @depends testSimple
- */
- function testCreateExtendedCollectionBadResourceType() {
-
- $this->usercalendars->createExtendedCollection('newcalendar', array('{DAV:}collection','{DAV:}blabla'), array());
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\InvalidResourceType
- * @depends testSimple
- */
- function testCreateExtendedCollectionNotACalendar() {
-
- $this->usercalendars->createExtendedCollection('newcalendar', array('{DAV:}collection'), array());
-
- }
-
- function testGetSupportedPrivilegesSet() {
-
- $this->assertNull($this->usercalendars->getSupportedPrivilegeSet());
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\NotImplemented
- */
- function testShareReplyFail() {
-
- $this->usercalendars->shareReply('uri', SharingPlugin::STATUS_DECLINED, 'curi', '1');
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/ValidateICalTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/ValidateICalTest.php
index 6634b9c3b..be166d9e6 100644
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/ValidateICalTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CalDAV/ValidateICalTest.php
@@ -26,24 +26,25 @@ class ValidateICalTest extends \PHPUnit_Framework_TestCase {
'id' => 'calendar1',
'principaluri' => 'principals/admin',
'uri' => 'calendar1',
- '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new Property\SupportedCalendarComponentSet( array('VEVENT','VTODO','VJOURNAL') ),
+ '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new Xml\Property\SupportedCalendarComponentSet( ['VEVENT','VTODO','VJOURNAL'] ),
),
array(
'id' => 'calendar2',
'principaluri' => 'principals/admin',
'uri' => 'calendar2',
- '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new Property\SupportedCalendarComponentSet( array('VTODO','VJOURNAL') ),
+ '{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new Xml\Property\SupportedCalendarComponentSet( ['VTODO','VJOURNAL'] ),
)
);
- $this->calBackend = new Backend\Mock($calendars,array());
+ $this->calBackend = new Backend\Mock($calendars, []);
$principalBackend = new DAVACL\PrincipalBackend\Mock();
- $tree = array(
- new CalendarRootNode($principalBackend, $this->calBackend),
- );
+ $tree = [
+ new CalendarRoot($principalBackend, $this->calBackend),
+ ];
$this->server = new DAV\Server($tree);
+ $this->server->sapi = new HTTP\SapiMock();
$this->server->debugExceptions = true;
$plugin = new Plugin();
@@ -65,20 +66,20 @@ class ValidateICalTest extends \PHPUnit_Framework_TestCase {
function testCreateFile() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'PUT',
'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
));
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 415 Unsupported Media Type', $response->status);
+ $this->assertEquals(415, $response->status);
}
function testCreateFileValid() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'PUT',
'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
));
@@ -86,11 +87,18 @@ class ValidateICalTest extends \PHPUnit_Framework_TestCase {
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 201 Created', $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
+ $this->assertEquals(201, $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
+ $this->assertEquals(array(
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Length' => ['0'],
+ 'ETag' => ['"' . md5("BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n") . '"'],
+ ), $response->getHeaders());
+
$expected = array(
'uri' => 'blabla.ics',
'calendardata' => "BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n",
'calendarid' => 'calendar1',
+ 'lastmodified' => null,
);
$this->assertEquals($expected, $this->calBackend->getCalendarObject('calendar1','blabla.ics'));
@@ -99,7 +107,7 @@ class ValidateICalTest extends \PHPUnit_Framework_TestCase {
function testCreateFileNoComponents() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'PUT',
'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
));
@@ -107,13 +115,13 @@ class ValidateICalTest extends \PHPUnit_Framework_TestCase {
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 400 Bad request', $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
+ $this->assertEquals(400, $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
}
function testCreateFileNoUID() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'PUT',
'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
));
@@ -121,13 +129,13 @@ class ValidateICalTest extends \PHPUnit_Framework_TestCase {
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 400 Bad request', $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
+ $this->assertEquals(400, $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
}
function testCreateFileVCard() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'PUT',
'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
));
@@ -135,13 +143,13 @@ class ValidateICalTest extends \PHPUnit_Framework_TestCase {
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 415 Unsupported Media Type', $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
+ $this->assertEquals(415, $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
}
function testCreateFile2Components() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'PUT',
'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
));
@@ -149,13 +157,13 @@ class ValidateICalTest extends \PHPUnit_Framework_TestCase {
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 400 Bad request', $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
+ $this->assertEquals(400, $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
}
function testCreateFile2UIDS() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'PUT',
'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
));
@@ -163,13 +171,13 @@ class ValidateICalTest extends \PHPUnit_Framework_TestCase {
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 400 Bad request', $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
+ $this->assertEquals(400, $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
}
function testCreateFileWrongComponent() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'PUT',
'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
));
@@ -177,28 +185,28 @@ class ValidateICalTest extends \PHPUnit_Framework_TestCase {
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 400 Bad request', $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
+ $this->assertEquals(400, $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
}
function testUpdateFile() {
$this->calBackend->createCalendarObject('calendar1','blabla.ics','foo');
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'PUT',
'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
));
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 415 Unsupported Media Type', $response->status);
+ $this->assertEquals(415, $response->status);
}
function testUpdateFileParsableBody() {
$this->calBackend->createCalendarObject('calendar1','blabla.ics','foo');
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'PUT',
'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
));
@@ -207,12 +215,13 @@ class ValidateICalTest extends \PHPUnit_Framework_TestCase {
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 204 No Content', $response->status);
+ $this->assertEquals(204, $response->status);
$expected = array(
'uri' => 'blabla.ics',
'calendardata' => $body,
'calendarid' => 'calendar1',
+ 'lastmodified' => null,
);
$this->assertEquals($expected, $this->calBackend->getCalendarObject('calendar1','blabla.ics'));
@@ -221,7 +230,7 @@ class ValidateICalTest extends \PHPUnit_Framework_TestCase {
function testCreateFileInvalidComponent() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'PUT',
'REQUEST_URI' => '/calendars/admin/calendar2/blabla.ics',
));
@@ -229,14 +238,14 @@ class ValidateICalTest extends \PHPUnit_Framework_TestCase {
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 403 Forbidden', $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
+ $this->assertEquals(403, $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
}
function testUpdateFileInvalidComponent() {
$this->calBackend->createCalendarObject('calendar2','blabla.ics','foo');
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'PUT',
'REQUEST_URI' => '/calendars/admin/calendar2/blabla.ics',
));
@@ -244,7 +253,29 @@ class ValidateICalTest extends \PHPUnit_Framework_TestCase {
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 403 Forbidden', $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
+ $this->assertEquals(403, $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
+
+ }
+
+ /**
+ * What we are testing here, is if we send in a latin1 character, the
+ * server should automatically transform this into UTF-8.
+ *
+ * More importantly. If any transformation happens, the etag must no longer
+ * be returned by the server.
+ */
+ function testCreateFileModified() {
+
+ $request = HTTP\Sapi::createFromServerArray(array(
+ 'REQUEST_METHOD' => 'PUT',
+ 'REQUEST_URI' => '/calendars/admin/calendar1/blabla.ics',
+ ));
+ $request->setBody("BEGIN:VCALENDAR\r\nBEGIN:VEVENT\r\nUID:foo\r\nSUMMARY:Meeting in M\xfcnster\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n");
+
+ $response = $this->request($request);
+
+ $this->assertEquals(201, $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
+ $this->assertNull($response->getHeader('ETag'));
}
}
diff --git a/vendor/sabre/dav/tests/Sabre/CalDAV/VersionTest.php b/vendor/sabre/dav/tests/Sabre/CalDAV/VersionTest.php
deleted file mode 100644
index a4e093e35..000000000
--- a/vendor/sabre/dav/tests/Sabre/CalDAV/VersionTest.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-namespace Sabre\CalDAV;
-
-class VersionTest extends \PHPUnit_Framework_TestCase {
-
- function testString() {
-
- $v = Version::VERSION;
- $this->assertEquals(-1, version_compare('1.0.0',$v));
-
- $s = Version::STABILITY;
- $this->assertTrue($s == 'alpha' || $s == 'beta' || $s =='stable');
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/AbstractPluginTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/AbstractPluginTest.php
index 94081fc8b..a123099a0 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/AbstractPluginTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/AbstractPluginTest.php
@@ -4,6 +4,7 @@ namespace Sabre\CardDAV;
use Sabre\DAV;
use Sabre\DAVACL;
+use Sabre\HTTP;
abstract class AbstractPluginTest extends \PHPUnit_Framework_TestCase {
@@ -33,6 +34,7 @@ abstract class AbstractPluginTest extends \PHPUnit_Framework_TestCase {
$this->plugin = new Plugin();
$this->plugin->directories = array('directory');
$this->server = new DAV\Server($tree);
+ $this->server->sapi = new HTTP\SapiMock();
$this->server->addPlugin($this->plugin);
$this->server->debugExceptions = true;
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryParserTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryParserTest.php
deleted file mode 100644
index 51bea6c6c..000000000
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryParserTest.php
+++ /dev/null
@@ -1,329 +0,0 @@
-<?php
-
-namespace Sabre\CardDAV;
-
-use Sabre\DAV;
-
-class AddressBookQueryParserTest extends \PHPUnit_Framework_TestCase {
-
- function parse($xml) {
-
- $xml = implode("\n", $xml);
- $dom = DAV\XMLUtil::loadDOMDocument($xml);
-
- $q = new AddressBookQueryParser($dom);
- $q->parse();
- return $q;
-
- }
-
- function testFilterBasic() {
-
- $xml = array(
- '<?xml version="1.0"?>',
- '<c:addressbook-query xmlns:c="urn:ietf:params:xml:ns:carddav" xmlns:d="DAV:">',
- ' <d:prop>',
- ' <d:foo />',
- ' </d:prop>',
- ' <c:filter>',
- ' <c:prop-filter name="NICKNAME" />',
- ' </c:filter>',
- '</c:addressbook-query>'
- );
-
- $q = $this->parse($xml);
-
- $this->assertEquals(
- array('{DAV:}foo'),
- $q->requestedProperties
- );
-
- $this->assertEquals(
- array(
- array(
- 'name' => 'NICKNAME',
- 'test' => 'anyof',
- 'is-not-defined' => false,
- 'param-filters' => array(),
- 'text-matches' => array(),
- ),
- ),
- $q->filters
- );
-
- $this->assertNull($q->limit);
- $this->assertEquals('anyof', $q->test);
-
- }
-
- function testNoFilter() {
-
- // This is non-standard, but helps working around a KDE bug
- $xml = array(
- '<?xml version="1.0"?>',
- '<c:addressbook-query xmlns:c="urn:ietf:params:xml:ns:carddav" xmlns:d="DAV:">',
- ' <d:prop>',
- ' <d:foo />',
- ' </d:prop>',
- '</c:addressbook-query>'
- );
-
- $q = $this->parse($xml);
-
- $this->assertEquals(
- array('{DAV:}foo'),
- $q->requestedProperties
- );
-
- $this->assertEquals(
- array(),
- $q->filters
- );
-
- $this->assertNull($q->limit);
- $this->assertEquals('anyof', $q->test);
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\BadRequest
- */
- function testFilterDoubleFilter() {
-
- $xml = array(
- '<?xml version="1.0"?>',
- '<c:addressbook-query xmlns:c="urn:ietf:params:xml:ns:carddav" xmlns:d="DAV:">',
- ' <d:prop>',
- ' <d:foo />',
- ' </d:prop>',
- ' <c:filter>',
- ' <c:prop-filter name="NICKNAME" />',
- ' </c:filter>',
- ' <c:filter>',
- ' <c:prop-filter name="NICKNAME" />',
- ' </c:filter>',
- '</c:addressbook-query>'
- );
-
- $q = $this->parse($xml);
-
- }
- /**
- * @expectedException Sabre\DAV\Exception\BadRequest
- */
- function testFilterCorruptTest() {
-
- $xml = array(
- '<?xml version="1.0"?>',
- '<c:addressbook-query xmlns:c="urn:ietf:params:xml:ns:carddav" xmlns:d="DAV:">',
- ' <d:prop>',
- ' <d:foo />',
- ' </d:prop>',
- ' <c:filter test="foo">',
- ' <c:prop-filter name="NICKNAME" />',
- ' </c:filter>',
- '</c:addressbook-query>'
- );
-
- $q = $this->parse($xml);
-
- }
-
- function testPropFilter() {
-
- $xml = array(
- '<?xml version="1.0"?>',
- '<c:addressbook-query xmlns:c="urn:ietf:params:xml:ns:carddav" xmlns:d="DAV:">',
- ' <d:prop>',
- ' <d:foo />',
- ' </d:prop>',
- ' <c:filter test="allof">',
- ' <c:prop-filter name="NICKNAME" />',
- ' <c:prop-filter name="EMAIL" test="allof" />',
- ' <c:prop-filter name="FN">',
- ' <c:is-not-defined />',
- ' </c:prop-filter>',
- ' </c:filter>',
- ' <c:limit><c:nresults>4</c:nresults></c:limit>',
- '</c:addressbook-query>'
- );
-
- $q = $this->parse($xml);
-
- $this->assertEquals(
- array(
- array(
- 'name' => 'NICKNAME',
- 'test' => 'anyof',
- 'is-not-defined' => false,
- 'param-filters' => array(),
- 'text-matches' => array(),
- ),
- array(
- 'name' => 'EMAIL',
- 'test' => 'allof',
- 'is-not-defined' => false,
- 'param-filters' => array(),
- 'text-matches' => array(),
- ),
- array(
- 'name' => 'FN',
- 'test' => 'anyof',
- 'is-not-defined' => true,
- 'param-filters' => array(),
- 'text-matches' => array(),
- ),
- ),
- $q->filters
- );
-
- $this->assertEquals(4,$q->limit);
- $this->assertEquals('allof', $q->test);
-
- }
-
- function testParamFilter() {
-
- $xml = array(
- '<?xml version="1.0"?>',
- '<c:addressbook-query xmlns:c="urn:ietf:params:xml:ns:carddav" xmlns:d="DAV:">',
- ' <d:prop>',
- ' <d:foo />',
- ' </d:prop>',
- ' <c:filter>',
- ' <c:prop-filter name="NICKNAME">',
- ' <c:param-filter name="BLA" />',
- ' <c:param-filter name="BLA2">',
- ' <c:is-not-defined />',
- ' </c:param-filter>',
- ' </c:prop-filter>',
- ' </c:filter>',
- '</c:addressbook-query>'
- );
-
- $q = $this->parse($xml);
-
- $this->assertEquals(
- array(
- array(
- 'name' => 'NICKNAME',
- 'test' => 'anyof',
- 'is-not-defined' => false,
- 'param-filters' => array(
- array(
- 'name' => 'BLA',
- 'is-not-defined' => false,
- 'text-match' => null
- ),
- array(
- 'name' => 'BLA2',
- 'is-not-defined' => true,
- 'text-match' => null
- ),
- ),
- 'text-matches' => array(),
- ),
- ),
- $q->filters
- );
-
- }
-
- function testTextMatch() {
-
- $xml = array(
- '<?xml version="1.0"?>',
- '<c:addressbook-query xmlns:c="urn:ietf:params:xml:ns:carddav" xmlns:d="DAV:">',
- ' <d:prop>',
- ' <d:foo />',
- ' </d:prop>',
- ' <c:filter>',
- ' <c:prop-filter name="NICKNAME">',
- ' <c:text-match>evert</c:text-match>',
- ' <c:text-match collation="i;octet">evert</c:text-match>',
- ' <c:text-match negate-condition="yes">rene</c:text-match>',
- ' <c:text-match match-type="starts-with">e</c:text-match>',
- ' <c:param-filter name="BLA">',
- ' <c:text-match>foo</c:text-match>',
- ' </c:param-filter>',
- ' </c:prop-filter>',
- ' </c:filter>',
- '</c:addressbook-query>'
- );
-
- $q = $this->parse($xml);
-
- $this->assertEquals(
- array(
- array(
- 'name' => 'NICKNAME',
- 'test' => 'anyof',
- 'is-not-defined' => false,
- 'param-filters' => array(
- array(
- 'name' => 'BLA',
- 'is-not-defined' => false,
- 'text-match' => array(
- 'negate-condition' => false,
- 'collation' => 'i;unicode-casemap',
- 'match-type' => 'contains',
- 'value' => 'foo',
- ),
- ),
- ),
- 'text-matches' => array(
- array(
- 'negate-condition' => false,
- 'collation' => 'i;unicode-casemap',
- 'match-type' => 'contains',
- 'value' => 'evert',
- ),
- array(
- 'negate-condition' => false,
- 'collation' => 'i;octet',
- 'match-type' => 'contains',
- 'value' => 'evert',
- ),
- array(
- 'negate-condition' => true,
- 'collation' => 'i;unicode-casemap',
- 'match-type' => 'contains',
- 'value' => 'rene',
- ),
- array(
- 'negate-condition' => false,
- 'collation' => 'i;unicode-casemap',
- 'match-type' => 'starts-with',
- 'value' => 'e',
- ),
- ),
- ),
- ),
- $q->filters
- );
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\BadRequest
- */
- function testBadTextMatch() {
-
- $xml = array(
- '<?xml version="1.0"?>',
- '<c:addressbook-query xmlns:c="urn:ietf:params:xml:ns:carddav" xmlns:d="DAV:">',
- ' <d:prop>',
- ' <d:foo />',
- ' </d:prop>',
- ' <c:filter>',
- ' <c:prop-filter name="NICKNAME">',
- ' <c:text-match match-type="foo">evert</c:text-match>',
- ' </c:prop-filter>',
- ' </c:filter>',
- '</c:addressbook-query>'
- );
-
- $q = $this->parse($xml);
-
- }
-}
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryTest.php
index c79f7e877..478f6beb5 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookQueryTest.php
@@ -12,7 +12,7 @@ class AddressBookQueryTest extends AbstractPluginTest {
function testQuery() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'REPORT',
'REQUEST_URI' => '/addressbooks/user1/book1',
'HTTP_DEPTH' => '1',
@@ -37,7 +37,7 @@ class AddressBookQueryTest extends AbstractPluginTest {
$this->server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status', $response->status, 'Incorrect status code. Full response body:' . $response->body);
+ $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:' . $response->body);
// using the client for parsing
$client = new DAV\Client(array('baseUri'=>'/'));
@@ -62,7 +62,7 @@ class AddressBookQueryTest extends AbstractPluginTest {
function testQueryDepth0() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'REPORT',
'REQUEST_URI' => '/addressbooks/user1/book1/card1',
'HTTP_DEPTH' => '0',
@@ -87,7 +87,7 @@ class AddressBookQueryTest extends AbstractPluginTest {
$this->server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status', $response->status, 'Incorrect status code. Full response body:' . $response->body);
+ $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:' . $response->body);
// using the client for parsing
$client = new DAV\Client(array('baseUri'=>'/'));
@@ -107,7 +107,7 @@ class AddressBookQueryTest extends AbstractPluginTest {
function testQueryNoMatch() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'REPORT',
'REQUEST_URI' => '/addressbooks/user1/book1',
'HTTP_DEPTH' => '1',
@@ -132,7 +132,7 @@ class AddressBookQueryTest extends AbstractPluginTest {
$this->server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status', $response->status, 'Incorrect status code. Full response body:' . $response->body);
+ $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:' . $response->body);
// using the client for parsing
$client = new DAV\Client(array('baseUri'=>'/'));
@@ -145,7 +145,7 @@ class AddressBookQueryTest extends AbstractPluginTest {
function testQueryLimit() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'REPORT',
'REQUEST_URI' => '/addressbooks/user1/book1',
'HTTP_DEPTH' => '1',
@@ -171,7 +171,7 @@ class AddressBookQueryTest extends AbstractPluginTest {
$this->server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status', $response->status, 'Incorrect status code. Full response body:' . $response->body);
+ $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:' . $response->body);
// using the client for parsing
$client = new DAV\Client(array('baseUri'=>'/'));
@@ -189,4 +189,122 @@ class AddressBookQueryTest extends AbstractPluginTest {
}
+ function testJson() {
+
+ $request = new HTTP\Request(
+ 'REPORT',
+ '/addressbooks/user1/book1/card1',
+ ['Depth' => '0']
+ );
+
+ $request->setBody(
+'<?xml version="1.0"?>
+<c:addressbook-query xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:carddav">
+ <d:prop>
+ <c:address-data content-type="application/vcard+json" />
+ <d:getetag />
+ </d:prop>
+</c:addressbook-query>'
+ );
+
+ $response = new HTTP\ResponseMock();
+
+ $this->server->httpRequest = $request;
+ $this->server->httpResponse = $response;
+
+ $this->server->exec();
+
+ $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:' . $response->body);
+
+ // using the client for parsing
+ $client = new DAV\Client(array('baseUri'=>'/'));
+
+ $result = $client->parseMultiStatus($response->body);
+
+ $vobjVersion = \Sabre\VObject\Version::VERSION;
+
+ $this->assertEquals(array(
+ '/addressbooks/user1/book1/card1' => array(
+ 200 => array(
+ '{DAV:}getetag' => '"' . md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD"). '"',
+ '{urn:ietf:params:xml:ns:carddav}address-data' => '["vcard",[["version",{},"text","4.0"],["prodid",{},"text","-\/\/Sabre\/\/Sabre VObject ' . $vobjVersion . '\/\/EN"],["uid",{},"text","12345"]]]',
+ ),
+ ),
+ ), $result);
+
+ }
+
+ function testVCard4() {
+
+ $request = new HTTP\Request(
+ 'REPORT',
+ '/addressbooks/user1/book1/card1',
+ ['Depth' => '0']
+ );
+
+ $request->setBody(
+'<?xml version="1.0"?>
+<c:addressbook-query xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:carddav">
+ <d:prop>
+ <c:address-data content-type="text/vcard" version="4.0" />
+ <d:getetag />
+ </d:prop>
+</c:addressbook-query>'
+ );
+
+ $response = new HTTP\ResponseMock();
+
+ $this->server->httpRequest = $request;
+ $this->server->httpResponse = $response;
+
+ $this->server->exec();
+
+ $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:' . $response->body);
+
+ // using the client for parsing
+ $client = new DAV\Client(array('baseUri'=>'/'));
+
+ $result = $client->parseMultiStatus($response->body);
+
+ $vobjVersion = \Sabre\VObject\Version::VERSION;
+
+ $this->assertEquals(array(
+ '/addressbooks/user1/book1/card1' => array(
+ 200 => array(
+ '{DAV:}getetag' => '"' . md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD"). '"',
+ '{urn:ietf:params:xml:ns:carddav}address-data' => "BEGIN:VCARD\r\nVERSION:4.0\r\nPRODID:-//Sabre//Sabre VObject $vobjVersion//EN\r\nUID:12345\r\nEND:VCARD\r\n",
+ ),
+ ),
+ ), $result);
+
+ }
+
+ function testAddressBookDepth0() {
+
+ $request = new HTTP\Request(
+ 'REPORT',
+ '/addressbooks/user1/book1',
+ ['Depth' => '0']
+ );
+
+ $request->setBody(
+'<?xml version="1.0"?>
+<c:addressbook-query xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:carddav">
+ <d:prop>
+ <c:address-data content-type="application/vcard+json" />
+ <d:getetag />
+ </d:prop>
+</c:addressbook-query>'
+ );
+
+ $response = new HTTP\ResponseMock();
+
+ $this->server->httpRequest = $request;
+ $this->server->httpResponse = $response;
+
+ $this->server->exec();
+
+ $this->assertEquals(415, $response->status, 'Incorrect status code. Full response body:' . $response->body);
+
+ }
}
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookRootTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookRootTest.php
index 6eaff5db0..fc20480f2 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookRootTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookRootTest.php
@@ -24,7 +24,7 @@ class AddressBookRootTest extends \PHPUnit_Framework_TestCase {
$children = $root->getChildren();
$this->assertEquals(3, count($children));
- $this->assertInstanceOf('Sabre\\CardDAV\\UserAddressBooks', $children[0]);
+ $this->assertInstanceOf('Sabre\\CardDAV\\AddressBookHome', $children[0]);
$this->assertEquals('user1', $children[0]->getName());
}
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookTest.php
index aac749b37..fe8ba9025 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/AddressBookTest.php
@@ -2,6 +2,7 @@
namespace Sabre\CardDAV;
+use Sabre\DAV\PropPatch;
require_once 'Sabre/CardDAV/Backend/Mock.php';
@@ -105,9 +106,11 @@ class AddressBookTest extends \PHPUnit_Framework_TestCase {
function testUpdateProperties() {
- $this->assertTrue(
- $this->ab->updateProperties(array('{DAV:}displayname' => 'barrr'))
- );
+ $propPatch = new PropPatch([
+ '{DAV:}displayname' => 'barrr',
+ ]);
+ $this->ab->propPatch($propPatch);
+ $this->assertTrue($propPatch->commit());
$this->assertEquals('barrr', $this->backend->addressBooks[0]['{DAV:}displayname']);
@@ -158,5 +161,52 @@ class AddressBookTest extends \PHPUnit_Framework_TestCase {
}
+ function testGetSyncTokenNoSyncSupport() {
+
+ $this->assertNull($this->ab->getSyncToken());
+
+ }
+ function testGetChangesNoSyncSupport() {
+
+ $this->assertNull($this->ab->getChanges(1,null));
+
+ }
+
+ function testGetSyncToken() {
+
+ if (!SABRE_HASSQLITE) {
+ $this->markTestSkipped('Sqlite is required for this test to run');
+ }
+ $ab = new AddressBook(TestUtil::getBackend(), [ 'id' => 1, '{DAV:}sync-token' => 2]);
+ $this->assertEquals(2, $ab->getSyncToken());
+ TestUtil::deleteSQLiteDB();
+ }
+
+ function testGetSyncToken2() {
+
+ if (!SABRE_HASSQLITE) {
+ $this->markTestSkipped('Sqlite is required for this test to run');
+ }
+ $ab = new AddressBook(TestUtil::getBackend(), [ 'id' => 1, '{http://sabredav.org/ns}sync-token' => 2]);
+ $this->assertEquals(2, $ab->getSyncToken());
+ TestUtil::deleteSQLiteDB();
+ }
+
+ function testGetChanges() {
+
+ if (!SABRE_HASSQLITE) {
+ $this->markTestSkipped('Sqlite is required for this test to run');
+ }
+ $ab = new AddressBook(TestUtil::getBackend(), [ 'id' => 1, '{DAV:}sync-token' => 2]);
+ $this->assertEquals([
+ 'syncToken' => 2,
+ 'modified' => [],
+ 'deleted' => [],
+ 'added' => ['UUID-2345'],
+ ], $ab->getChanges(1, 1));
+ TestUtil::deleteSQLiteDB();
+
+ }
+
}
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php
index 623188d32..d2ec278be 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/AbstractPDOTest.php
@@ -3,6 +3,7 @@
namespace Sabre\CardDAV\Backend;
use Sabre\CardDAV;
+use Sabre\DAV\PropPatch;
abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
@@ -19,7 +20,10 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
public function setUp() {
- $this->backend = new PDO($this->getPDO());
+ $pdo = $this->getPDO();
+ $this->backend = new PDO($pdo);
+ $pdo->exec('INSERT INTO addressbooks (principaluri, displayname, uri, description, synctoken) VALUES ("principals/user1", "book1", "book1", "addressbook 1", 1)');
+ $pdo->exec('INSERT INTO cards (addressbookid, carddata, uri, lastmodified, etag, size) VALUES (1, "card1", "card1", 0, "' . md5('card1') . '", 5)');
}
@@ -35,7 +39,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
'{DAV:}displayname' => 'book1',
'{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'addressbook 1',
'{http://calendarserver.org/ns/}getctag' => 1,
- '{' . CardDAV\Plugin::NS_CARDDAV . '}supported-address-data' => new CardDAV\Property\SupportedAddressData(),
+ '{http://sabredav.org/ns}sync-token' => 1
)
);
@@ -45,11 +49,14 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
public function testUpdateAddressBookInvalidProp() {
- $result = $this->backend->updateAddressBook(1, array(
+ $propPatch = new PropPatch([
'{DAV:}displayname' => 'updated',
'{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'updated',
'{DAV:}foo' => 'bar',
- ));
+ ]);
+
+ $this->backend->updateAddressBook(1, $propPatch);
+ $result = $propPatch->commit();
$this->assertFalse($result);
@@ -63,7 +70,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
'{DAV:}displayname' => 'book1',
'{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'addressbook 1',
'{http://calendarserver.org/ns/}getctag' => 1,
- '{' . CardDAV\Plugin::NS_CARDDAV . '}supported-address-data' => new CardDAV\Property\SupportedAddressData(),
+ '{http://sabredav.org/ns}sync-token' => 1
)
);
@@ -73,9 +80,12 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
public function testUpdateAddressBookNoProps() {
- $result = $this->backend->updateAddressBook(1, array());
+ $propPatch = new PropPatch([
+ ]);
- $this->assertFalse($result);
+ $this->backend->updateAddressBook(1, $propPatch);
+ $result = $propPatch->commit();
+ $this->assertTrue($result);
$result = $this->backend->getAddressBooksForUser('principals/user1');
@@ -87,7 +97,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
'{DAV:}displayname' => 'book1',
'{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'addressbook 1',
'{http://calendarserver.org/ns/}getctag' => 1,
- '{' . CardDAV\Plugin::NS_CARDDAV . '}supported-address-data' => new CardDAV\Property\SupportedAddressData(),
+ '{http://sabredav.org/ns}sync-token' => 1
)
);
@@ -98,10 +108,13 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
public function testUpdateAddressBookSuccess() {
- $result = $this->backend->updateAddressBook(1, array(
+ $propPatch = new PropPatch([
'{DAV:}displayname' => 'updated',
'{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'updated',
- ));
+ ]);
+
+ $this->backend->updateAddressBook(1, $propPatch);
+ $result = $propPatch->commit();
$this->assertTrue($result);
@@ -115,7 +128,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
'{DAV:}displayname' => 'updated',
'{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'updated',
'{http://calendarserver.org/ns/}getctag' => 2,
- '{' . CardDAV\Plugin::NS_CARDDAV . '}supported-address-data' => new CardDAV\Property\SupportedAddressData(),
+ '{http://sabredav.org/ns}sync-token' => 2
)
);
@@ -158,7 +171,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
'{DAV:}displayname' => 'book1',
'{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'addressbook 1',
'{http://calendarserver.org/ns/}getctag' => 1,
- '{' . CardDAV\Plugin::NS_CARDDAV . '}supported-address-data' => new CardDAV\Property\SupportedAddressData(),
+ '{http://sabredav.org/ns}sync-token' => 1,
),
array(
'id' => 2,
@@ -167,7 +180,7 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
'{DAV:}displayname' => 'book2',
'{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'addressbook 2',
'{http://calendarserver.org/ns/}getctag' => 1,
- '{' . CardDAV\Plugin::NS_CARDDAV . '}supported-address-data' => new CardDAV\Property\SupportedAddressData(),
+ '{http://sabredav.org/ns}sync-token' => 1,
)
);
$result = $this->backend->getAddressBooksForUser('principals/user1');
@@ -183,8 +196,9 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
array(
'id' => 1,
'uri' => 'card1',
- 'carddata' => 'card1',
'lastmodified' => 0,
+ 'etag' => '"' . md5('card1') . '"',
+ 'size' => 5
)
);
@@ -201,6 +215,8 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
'uri' => 'card1',
'carddata' => 'card1',
'lastmodified' => 0,
+ 'etag' => '"' . md5('card1') . '"',
+ 'size' => 5
);
$this->assertEquals($expected, $result);
@@ -222,6 +238,53 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
}
/**
+ * @depends testCreateCard
+ */
+ public function testGetMultiple() {
+
+ $result = $this->backend->createCard(1, 'card2', 'data2');
+ $result = $this->backend->createCard(1, 'card3', 'data3');
+ $check = [
+ [
+ 'id' => 1,
+ 'uri' => 'card1',
+ 'carddata' => 'card1',
+ 'lastmodified' => 0,
+ ],
+ [
+ 'id' => 2,
+ 'uri' => 'card2',
+ 'carddata' => 'data2',
+ 'lastmodified' => time(),
+ ],
+ [
+ 'id' => 3,
+ 'uri' => 'card3',
+ 'carddata' => 'data3',
+ 'lastmodified' => time(),
+ ],
+ ];
+
+ $result = $this->backend->getMultipleCards(1, ['card1','card2','card3']);
+
+ foreach($check as $index=>$node) {
+
+ foreach($node as $k=>$v) {
+
+ if ($k!=='lastmodified') {
+ $this->assertEquals($v, $result[$index][$k]);
+ } else {
+ $this->assertTrue(isset($result[$index][$k]));
+ }
+
+ }
+
+ }
+
+
+ }
+
+ /**
* @depends testGetCard
*/
public function testUpdateCard() {
@@ -245,5 +308,43 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
$this->assertFalse($result);
}
+
+ function testGetChanges() {
+
+ $backend = $this->backend;
+ $id = $backend->createAddressBook(
+ 'principals/user1',
+ 'bla',
+ []
+ );
+ $result = $backend->getChangesForAddressBook($id, null, 1);
+
+ $this->assertEquals([
+ 'syncToken' => 1,
+ "added" => [],
+ 'modified' => [],
+ 'deleted' => [],
+ ], $result);
+
+ $currentToken = $result['syncToken'];
+
+ $dummyCard = "BEGIN:VCARD\r\nEND:VCARD\r\n";
+
+ $backend->createCard($id, "card1.ics", $dummyCard);
+ $backend->createCard($id, "card2.ics", $dummyCard);
+ $backend->createCard($id, "card3.ics", $dummyCard);
+ $backend->updateCard($id, "card1.ics", $dummyCard);
+ $backend->deleteCard($id, "card2.ics");
+
+ $result = $backend->getChangesForAddressBook($id, $currentToken, 1);
+
+ $this->assertEquals([
+ 'syncToken' => 6,
+ 'modified' => ["card1.ics"],
+ 'deleted' => ["card2.ics"],
+ "added" => ["card3.ics"],
+ ], $result);
+
+ }
}
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php
index ab7ac4e6a..3f96d3c5d 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/Mock.php
@@ -48,18 +48,36 @@ class Mock extends AbstractBackend {
}
- function updateAddressBook($addressBookId, array $mutations) {
+ /**
+ * Updates properties for an address book.
+ *
+ * The list of mutations is stored in a Sabre\DAV\PropPatch object.
+ * To do the actual updates, you must tell this object which properties
+ * you're going to process with the handle() method.
+ *
+ * Calling the handle method is like telling the PropPatch object "I
+ * promise I can handle updating this property".
+ *
+ * Read the PropPatch documenation for more info and examples.
+ *
+ * @param string $addressBookId
+ * @param \Sabre\DAV\PropPatch $propPatch
+ * @return void
+ */
+ public function updateAddressBook($addressBookId, \Sabre\DAV\PropPatch $propPatch) {
foreach($this->addressBooks as &$book) {
if ($book['id'] !== $addressBookId)
continue;
- foreach($mutations as $key=>$value) {
- $book[$key] = $value;
- }
- return true;
+ $propPatch->handleRemaining(function($mutations) use (&$book) {
+ foreach($mutations as $key=>$value) {
+ $book[$key] = $value;
+ }
+ return true;
+ });
+
}
- return false;
}
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php
index b2f871f6e..38cb655d0 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOMySQLTest.php
@@ -16,42 +16,18 @@ class PDOMySQLTest extends AbstractPDOTest {
$pdo = \Sabre\TestUtil::getMySQLDB();
if (!$pdo) $this->markTestSkipped('Could not connect to MySQL database');
- $pdo->query("DROP TABLE IF EXISTS addressbooks");
- $pdo->query("DROP TABLE IF EXISTS cards");
- $pdo->query("
-CREATE TABLE addressbooks (
- id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- principaluri VARCHAR(255),
- displayname VARCHAR(255),
- uri VARCHAR(100),
- description TEXT,
- ctag INT(11) UNSIGNED NOT NULL DEFAULT '1'
-);
-");
-
- $pdo->query("
-INSERT INTO addressbooks
- (principaluri, displayname, uri, description, ctag)
-VALUES
- ('principals/user1', 'book1', 'book1', 'addressbook 1', 1);
-");
-
- $pdo->query("
-CREATE TABLE cards (
- id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- addressbookid INT(11) UNSIGNED NOT NULL,
- carddata TEXT,
- uri VARCHAR(100),
- lastmodified INT(11) UNSIGNED
-);
-");
-
- $pdo->query("
-INSERT INTO cards
- (addressbookid, carddata, uri, lastmodified)
-VALUES
- (1, 'card1', 'card1', 0);
-");
+ $pdo->query("DROP TABLE IF EXISTS addressbooks, cards, addressbookchanges");
+
+ $queries = explode(
+ ';',
+ file_get_contents(__DIR__ . '/../../../../examples/sql/mysql.addressbook.sql')
+ );
+
+ foreach($queries as $query) {
+ $query = trim($query," \r\n\t");
+ if ($query)
+ $pdo->exec($query);
+ }
return $pdo;
}
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOSqliteTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOSqliteTest.php
index a9bbb0bd1..5a4a7a327 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOSqliteTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/Backend/PDOSqliteTest.php
@@ -18,48 +18,33 @@ class PDOSqliteTest extends AbstractPDOTest {
*/
function getPDO() {
+ return self::getSQLite();
+
+ }
+
+ /**
+ * @return PDO
+ */
+ static function getSQLite() {
+
if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
$pdo = new \PDO('sqlite:'.SABRE_TEMPDIR.'/pdobackend');
$pdo->setAttribute(\PDO::ATTR_ERRMODE,\PDO::ERRMODE_EXCEPTION);
$pdo->query("DROP TABLE IF EXISTS addressbooks");
+ $pdo->query("DROP TABLE IF EXISTS addressbookchanges");
$pdo->query("DROP TABLE IF EXISTS cards");
- $pdo->query("
-CREATE TABLE addressbooks (
- id integer primary key asc,
- principaluri text,
- displayname text,
- uri text,
- description text,
- ctag integer
-);
-
-");
-
- $pdo->query("
-INSERT INTO addressbooks
- (principaluri, displayname, uri, description, ctag)
-VALUES
- ('principals/user1', 'book1', 'book1', 'addressbook 1', 1);
-");
-
- $pdo->query("
-
-CREATE TABLE cards (
- id integer primary key asc,
- addressbookid integer,
- carddata text,
- uri text,
- lastmodified integer
-);
-
-");
- $pdo->query("
-INSERT INTO cards
- (addressbookid, carddata, uri, lastmodified)
-VALUES
- (1, 'card1', 'card1', 0);
-");
+
+ $queries = explode(
+ ';',
+ file_get_contents(__DIR__ . '/../../../../examples/sql/sqlite.addressbooks.sql')
+ );
+
+ foreach($queries as $query) {
+ $query = trim($query," \r\n\t");
+ if ($query)
+ $pdo->exec($query);
+ }
return $pdo;
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/CardTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/CardTest.php
index 438bd2ea5..cf8dbab0c 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/CardTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/CardTest.php
@@ -82,7 +82,7 @@ class CardTest extends \PHPUnit_Framework_TestCase {
function testGetContentType() {
- $this->assertEquals('text/x-vcard; charset=utf-8', $this->card->getContentType());
+ $this->assertEquals('text/vcard; charset=utf-8', $this->card->getContentType());
}
@@ -163,6 +163,37 @@ class CardTest extends \PHPUnit_Framework_TestCase {
), $this->card->getACL());
}
+ function testOverrideACL() {
+
+ $card = new Card(
+ $this->backend,
+ array(
+ 'uri' => 'book1',
+ 'id' => 'foo',
+ 'principaluri' => 'principals/user1',
+ ),
+ array(
+ 'uri' => 'card1',
+ 'addressbookid' => 'foo',
+ 'carddata' => 'card',
+ 'acl' => array(
+ array(
+ 'privilege' => '{DAV:}read',
+ 'principal' => 'principals/user1',
+ 'protected' => true,
+ ),
+ ),
+ )
+ );
+ $this->assertEquals(array(
+ array(
+ 'privilege' => '{DAV:}read',
+ 'principal' => 'principals/user1',
+ 'protected' => true,
+ ),
+ ), $card->getACL());
+
+ }
/**
* @expectedException Sabre\DAV\Exception\MethodNotAllowed
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/MultiGetTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/MultiGetTest.php
index 12922c6fd..b0ee45880 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/MultiGetTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/MultiGetTest.php
@@ -11,7 +11,7 @@ class MultiGetTest extends AbstractPluginTest {
function testMultiGet() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'REPORT',
'REQUEST_URI' => '/addressbooks/user1/book1',
));
@@ -34,7 +34,7 @@ class MultiGetTest extends AbstractPluginTest {
$this->server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status', $response->status, 'Incorrect status code. Full response body:' . $response->body);
+ $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:' . $response->body);
// using the client for parsing
$client = new DAV\Client(array('baseUri'=>'/'));
@@ -45,11 +45,55 @@ class MultiGetTest extends AbstractPluginTest {
'/addressbooks/user1/book1/card1' => array(
200 => array(
'{DAV:}getetag' => '"' . md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD") . '"',
- '{urn:ietf:params:xml:ns:carddav}address-data' => "BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD",
+ '{urn:ietf:params:xml:ns:carddav}address-data' => "BEGIN:VCARD\r\nVERSION:3.0\r\nUID:12345\r\nEND:VCARD\r\n",
)
)
), $result);
}
+ function testMultiGetVCard4() {
+
+ $request = HTTP\Sapi::createFromServerArray(array(
+ 'REQUEST_METHOD' => 'REPORT',
+ 'REQUEST_URI' => '/addressbooks/user1/book1',
+ ));
+
+ $request->setBody(
+'<?xml version="1.0"?>
+<c:addressbook-multiget xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:carddav">
+ <d:prop>
+ <d:getetag />
+ <c:address-data content-type="text/vcard" version="4.0" />
+ </d:prop>
+ <d:href>/addressbooks/user1/book1/card1</d:href>
+</c:addressbook-multiget>'
+ );
+
+ $response = new HTTP\ResponseMock();
+
+ $this->server->httpRequest = $request;
+ $this->server->httpResponse = $response;
+
+ $this->server->exec();
+
+ $this->assertEquals(207, $response->status, 'Incorrect status code. Full response body:' . $response->body);
+
+ // using the client for parsing
+ $client = new DAV\Client(array('baseUri'=>'/'));
+
+ $result = $client->parseMultiStatus($response->body);
+
+ $prodId = "PRODID:-//Sabre//Sabre VObject " . \Sabre\VObject\Version::VERSION . "//EN";
+
+ $this->assertEquals(array(
+ '/addressbooks/user1/book1/card1' => array(
+ 200 => array(
+ '{DAV:}getetag' => '"' . md5("BEGIN:VCARD\nVERSION:3.0\nUID:12345\nEND:VCARD") . '"',
+ '{urn:ietf:params:xml:ns:carddav}address-data' => "BEGIN:VCARD\r\nVERSION:4.0\r\n$prodId\r\nUID:12345\r\nEND:VCARD\r\n",
+ )
+ )
+ ), $result);
+
+ }
}
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/PluginTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/PluginTest.php
index 297ebf496..9c916350e 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/PluginTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/PluginTest.php
@@ -3,17 +3,16 @@
namespace Sabre\CardDAV;
use Sabre\DAV;
-
-require_once 'Sabre/CardDAV/AbstractPluginTest.php';
+use Sabre\DAV\Xml\Property\Href;
class PluginTest extends AbstractPluginTest {
function testConstruct() {
- $this->assertEquals('card', $this->server->xmlNamespaces[Plugin::NS_CARDDAV]);
$this->assertEquals('{' . Plugin::NS_CARDDAV . '}addressbook', $this->server->resourceTypeMapping['Sabre\\CardDAV\\IAddressBook']);
$this->assertTrue(in_array('addressbook', $this->plugin->getFeatures()));
+ $this->assertEquals('carddav', $this->plugin->getPluginInfo()['name']);
}
@@ -43,25 +42,6 @@ class PluginTest extends AbstractPluginTest {
}
- function testMeCardTest() {
-
- $result = $this->server->getProperties(
- 'addressbooks/user1',
- array(
- '{http://calendarserver.org/ns/}me-card',
- )
- );
-
- $this->assertEquals(
- array(
- '{http://calendarserver.org/ns/}me-card' =>
- new DAV\Property\Href('addressbooks/user1/book1/vcard1.vcf')
- ),
- $result
- );
-
- }
-
function testDirectoryGateway() {
$result = $this->server->getProperties('principals/user1', array('{' . Plugin::NS_CARDDAV . '}directory-gateway'));
@@ -74,76 +54,50 @@ class PluginTest extends AbstractPluginTest {
function testReportPassThrough() {
- $this->assertNull($this->plugin->report('{DAV:}foo', new \DomDocument()));
+ $this->assertNull($this->plugin->report('{DAV:}foo', new \DomDocument(), ''));
}
function testHTMLActionsPanel() {
$output = '';
- $r = $this->server->broadcastEvent('onHTMLActionsPanel', array($this->server->tree->getNodeForPath('addressbooks/user1'), &$output));
+ $r = $this->server->emit('onHTMLActionsPanel', [$this->server->tree->getNodeForPath('addressbooks/user1'), &$output]);
$this->assertFalse($r);
$this->assertTrue(!!strpos($output,'Display name'));
}
- function testBrowserPostAction() {
+ function testAddressbookPluginProperties() {
- $r = $this->server->broadcastEvent('onBrowserPostAction', array('addressbooks/user1', 'mkaddressbook', array(
- 'name' => 'NEWADDRESSBOOK',
- '{DAV:}displayname' => 'foo',
- )));
- $this->assertFalse($r);
+ $ns = '{' . Plugin::NS_CARDDAV . '}';
+ $propFind = new DAV\PropFind('addressbooks/user1/book1', [
+ $ns . 'supported-address-data',
+ $ns . 'supported-collation-set',
+ ]);
+ $node = $this->server->tree->getNodeForPath('addressbooks/user1/book1');
+ $this->plugin->propFindEarly($propFind, $node);
- $addressbooks = $this->backend->getAddressBooksforUser('principals/user1');
- $this->assertEquals(2, count($addressbooks));
+ $this->assertInstanceOf(
+ 'Sabre\\CardDAV\\Xml\\Property\\SupportedAddressData',
+ $propFind->get($ns . 'supported-address-data')
+ );
+ $this->assertInstanceOf(
+ 'Sabre\\CardDAV\\Xml\\Property\\SupportedCollationSet',
+ $propFind->get($ns . 'supported-collation-set')
+ );
- $newAddressBook = null;
- foreach($addressbooks as $addressbook) {
- if ($addressbook['uri'] === 'NEWADDRESSBOOK') {
- $newAddressBook = $addressbook;
- break;
- }
- }
- if (!$newAddressBook)
- $this->fail('Could not find newly created addressbook');
}
- function testUpdatePropertiesMeCard() {
+ function testGetTransform() {
- $result = $this->server->updateProperties('addressbooks/user1', array(
- '{http://calendarserver.org/ns/}me-card' => new DAV\Property\Href('/addressbooks/user1/book1/vcard2',true),
- ));
+ $request = new \Sabre\HTTP\Request('GET', '/addressbooks/user1/book1/card1', ['Accept: application/vcard+json']);
+ $response = new \Sabre\HTTP\ResponseMock();
+ $this->server->invokeMethod($request, $response);
- $this->assertEquals(
- array(
- 'href' => 'addressbooks/user1',
- 200 => array(
- '{http://calendarserver.org/ns/}me-card' => null,
- ),
- ),
- $result
- );
+ $this->assertEquals(200, $response->getStatus());
}
- function testUpdatePropertiesMeCardBadValue() {
-
- $result = $this->server->updateProperties('addressbooks/user1', array(
- '{http://calendarserver.org/ns/}me-card' => new DAV\Property\HrefList(array()),
- ));
-
- $this->assertEquals(
- array(
- 'href' => 'addressbooks/user1',
- 400 => array(
- '{http://calendarserver.org/ns/}me-card' => null,
- ),
- ),
- $result
- );
-
- }
}
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/Property/SupportedAddressDataTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/Property/SupportedAddressDataTest.php
deleted file mode 100644
index a0e4130d5..000000000
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/Property/SupportedAddressDataTest.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-namespace Sabre\CardDAV\Property;
-
-use Sabre\CardDAV;
-use Sabre\DAV;
-
-class SupportedAddressDataDataTest extends \PHPUnit_Framework_TestCase {
-
- function testSimple() {
-
- $property = new SupportedAddressData();
-
- }
-
- /**
- * @depends testSimple
- */
- function testSerialize() {
-
- $property = new SupportedAddressData();
-
- $doc = new \DOMDocument();
- $root = $doc->createElementNS(CardDAV\Plugin::NS_CARDDAV, 'card:root');
- $root->setAttribute('xmlns:d','DAV:');
-
- $doc->appendChild($root);
- $server = new DAV\Server();
-
- $property->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<card:root xmlns:card="' . CardDAV\Plugin::NS_CARDDAV . '" xmlns:d="DAV:">' .
-'<card:address-data-type content-type="text/vcard" version="3.0"/>' .
-//'<card:address-data-type content-type="text/vcard" version="4.0"/>' .
-'</card:root>
-', $xml);
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/SogoStripContentTypeTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/SogoStripContentTypeTest.php
index 2a62bd2f9..f828cc25b 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/SogoStripContentTypeTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/SogoStripContentTypeTest.php
@@ -3,6 +3,7 @@
namespace Sabre\CardDAV;
use Sabre\HTTP;
+use Sabre\DAV\PropFind;
class SogoStripContentType extends \Sabre\DAVServerTest {
@@ -24,13 +25,13 @@ class SogoStripContentType extends \Sabre\DAVServerTest {
$result = $this->server->getProperties('addressbooks/user1/book1/card1.vcf',array('{DAV:}getcontenttype'));
$this->assertEquals(array(
- '{DAV:}getcontenttype' => 'text/x-vcard; charset=utf-8'
+ '{DAV:}getcontenttype' => 'text/vcard; charset=utf-8'
), $result);
}
function testStrip() {
- $this->server->httpRequest = new HTTP\Request(array(
+ $this->server->httpRequest = HTTP\Sapi::createFromServerArray(array(
'HTTP_USER_AGENT' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:10.0.2) Gecko/20120216 Thunderbird/10.0.2 Lightning/1.2.1',
));
$result = $this->server->getProperties('addressbooks/user1/book1/card1.vcf',array('{DAV:}getcontenttype'));
@@ -39,5 +40,17 @@ class SogoStripContentType extends \Sabre\DAVServerTest {
), $result);
}
+ function testDontTouchOtherMimeTypes() {
+
+ $this->server->httpRequest = new HTTP\Request('GET','/addressbooks/user1/book1/card1.vcf', [
+ 'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:10.0.2) Gecko/20120216 Thunderbird/10.0.2 Lightning/1.2.1',
+ ]);
+
+ $propFind = new PropFind('hello', ['{DAV:}getcontenttype']);
+ $propFind->set('{DAV:}getcontenttype', 'text/plain');
+ $this->carddavPlugin->propFindLate($propFind, new \Sabre\DAV\SimpleCollection('foo'));
+ $this->assertEquals('text/plain', $propFind->get('{DAV:}getcontenttype'));
+
+ }
}
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/TestUtil.php b/vendor/sabre/dav/tests/Sabre/CardDAV/TestUtil.php
index 9f84566af..c9cc10d35 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/TestUtil.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/TestUtil.php
@@ -15,17 +15,8 @@ class TestUtil {
static function getSQLiteDB() {
- if (file_exists(SABRE_TEMPDIR . '/testdb.sqlite'))
- unlink(SABRE_TEMPDIR . '/testdb.sqlite');
+ $pdo = Backend\PDOSqliteTest::getSQLite();
- $pdo = new PDO('sqlite:' . SABRE_TEMPDIR . '/testdb.sqlite');
- $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
-
- // Yup this is definitely not 'fool proof', but good enough for now.
- $queries = explode(';', file_get_contents(__DIR__ . '/../../../examples/sql/sqlite.addressbooks.sql'));
- foreach($queries as $query) {
- $pdo->exec($query);
- }
// Inserting events through a backend class.
$backend = new Backend\PDO($pdo);
$addressbookId = $backend->createAddressBook(
@@ -49,7 +40,12 @@ class TestUtil {
}
- static function getTestCardData($type = 1) {
+ static function deleteSQLiteDB() {
+ $sqliteTest = new Backend\PDOSqliteTest();
+ $pdo = $sqliteTest->tearDown();
+ }
+
+ static function getTestCardData() {
$addressbookData = 'BEGIN:VCARD
VERSION:3.0
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/UserAddressBooksTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/UserAddressBooksTest.php
deleted file mode 100644
index a6ecf3e47..000000000
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/UserAddressBooksTest.php
+++ /dev/null
@@ -1,162 +0,0 @@
-<?php
-
-namespace Sabre\CardDAV;
-
-class UserAddressBooksTest extends \PHPUnit_Framework_TestCase {
-
- /**
- * @var Sabre\CardDAV\UserAddressBooks
- */
- protected $s;
- protected $backend;
-
- function setUp() {
-
- $this->backend = new Backend\Mock();
- $this->s = new UserAddressBooks(
- $this->backend,
- 'principals/user1'
- );
-
- }
-
- function testGetName() {
-
- $this->assertEquals('user1', $this->s->getName());
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\MethodNotAllowed
- */
- function testSetName() {
-
- $this->s->setName('user2');
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\MethodNotAllowed
- */
- function testDelete() {
-
- $this->s->delete();
-
- }
-
- function testGetLastModified() {
-
- $this->assertNull($this->s->getLastModified());
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\MethodNotAllowed
- */
- function testCreateFile() {
-
- $this->s->createFile('bla');
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\MethodNotAllowed
- */
- function testCreateDirectory() {
-
- $this->s->createDirectory('bla');
-
- }
-
- function testGetChild() {
-
- $child = $this->s->getChild('book1');
- $this->assertInstanceOf('Sabre\\CardDAV\\AddressBook', $child);
- $this->assertEquals('book1', $child->getName());
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\NotFound
- */
- function testGetChild404() {
-
- $this->s->getChild('book2');
-
- }
-
- function testGetChildren() {
-
- $children = $this->s->getChildren();
- $this->assertEquals(1, count($children));
- $this->assertInstanceOf('Sabre\\CardDAV\\AddressBook', $children[0]);
- $this->assertEquals('book1', $children[0]->getName());
-
- }
-
- function testCreateExtendedCollection() {
-
- $resourceType = array(
- '{' . Plugin::NS_CARDDAV . '}addressbook',
- '{DAV:}collection',
- );
- $this->s->createExtendedCollection('book2', $resourceType, array('{DAV:}displayname' => 'a-book 2'));
-
- $this->assertEquals(array(
- 'id' => 'book2',
- 'uri' => 'book2',
- '{DAV:}displayname' => 'a-book 2',
- 'principaluri' => 'principals/user1',
- ), $this->backend->addressBooks[1]);
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\InvalidResourceType
- */
- function testCreateExtendedCollectionInvalid() {
-
- $resourceType = array(
- '{DAV:}collection',
- );
- $this->s->createExtendedCollection('book2', $resourceType, array('{DAV:}displayname' => 'a-book 2'));
-
- }
-
-
- function testACLMethods() {
-
- $this->assertEquals('principals/user1', $this->s->getOwner());
- $this->assertNull($this->s->getGroup());
- $this->assertEquals(array(
- array(
- 'privilege' => '{DAV:}read',
- 'principal' => 'principals/user1',
- 'protected' => true,
- ),
- array(
- 'privilege' => '{DAV:}write',
- 'principal' => 'principals/user1',
- 'protected' => true,
- ),
- ), $this->s->getACL());
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\MethodNotAllowed
- */
- function testSetACL() {
-
- $this->s->setACL(array());
-
- }
-
- function testGetSupportedPrivilegeSet() {
-
- $this->assertNull(
- $this->s->getSupportedPrivilegeSet()
- );
-
- }
-}
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/VCFExportTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/VCFExportTest.php
index 84da59311..71fde719d 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/VCFExportTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/VCFExportTest.php
@@ -29,28 +29,35 @@ class VCFExportTest extends \Sabre\DAVServerTest {
function setUp() {
parent::setUp();
+ $plugin = new VCFExportPlugin();
$this->server->addPlugin(
- new VCFExportPlugin()
+ $plugin
);
}
function testSimple() {
- $this->assertInstanceOf('Sabre\\CardDAV\\VCFExportPlugin', $this->server->getPlugin('Sabre\\CardDAV\\VCFExportPlugin'));
+ $plugin = $this->server->getPlugin('vcf-export');
+ $this->assertInstanceOf('Sabre\\CardDAV\\VCFExportPlugin', $plugin);
+
+ $this->assertEquals(
+ 'vcf-export',
+ $plugin->getPluginInfo()['name']
+ );
}
function testExport() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_URI' => '/addressbooks/user1/book1?export',
'QUERY_STRING' => 'export',
'REQUEST_METHOD' => 'GET',
));
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 200 OK', $response->status, $response->body);
+ $this->assertEquals(200, $response->status, $response->body);
$expected = "BEGIN:VCARD
FN:Person1
@@ -72,4 +79,14 @@ END:VCARD
}
+ function testBrowserIntegration() {
+
+ $plugin = $this->server->getPlugin('vcf-export');
+ $actions = '';
+ $addressbook = new AddressBook($this->carddavBackend, []);
+ $this->server->emit('browserButtonActions', ['/foo', $addressbook, &$actions]);
+ $this->assertContains('/foo?export', $actions);
+
+ }
+
}
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateVCardTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateVCardTest.php
index 1f52f30a7..ad8495c13 100644
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateVCardTest.php
+++ b/vendor/sabre/dav/tests/Sabre/CardDAV/ValidateVCardTest.php
@@ -31,6 +31,7 @@ class ValidateVCardTest extends \PHPUnit_Framework_TestCase {
);
$this->server = new DAV\Server($tree);
+ $this->server->sapi = new HTTP\SapiMock();
$this->server->debugExceptions = true;
$plugin = new Plugin();
@@ -52,20 +53,20 @@ class ValidateVCardTest extends \PHPUnit_Framework_TestCase {
function testCreateFile() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'PUT',
'REQUEST_URI' => '/addressbooks/admin/addressbook1/blabla.vcf',
));
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 415 Unsupported Media Type', $response->status);
+ $this->assertEquals(415, $response->status);
}
function testCreateFileValid() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'PUT',
'REQUEST_URI' => '/addressbooks/admin/addressbook1/blabla.vcf',
));
@@ -73,7 +74,7 @@ class ValidateVCardTest extends \PHPUnit_Framework_TestCase {
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 201 Created', $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
+ $this->assertEquals(201, $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
$expected = array(
'uri' => 'blabla.vcf',
'carddata' => "BEGIN:VCARD\r\nUID:foo\r\nEND:VCARD\r\n",
@@ -85,24 +86,40 @@ class ValidateVCardTest extends \PHPUnit_Framework_TestCase {
function testCreateFileNoUID() {
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'PUT',
- 'REQUEST_URI' => '/addressbooks/admin/addressbook1/blabla.vcf',
- ));
+ $request = new HTTP\Request(
+ 'PUT',
+ '/addressbooks/admin/addressbook1/blabla.vcf'
+ );
$request->setBody("BEGIN:VCARD\r\nEND:VCARD\r\n");
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 201 Created', $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
+ $this->assertEquals(201, $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
$foo = $this->cardBackend->getCard('addressbook1','blabla.vcf');
$this->assertTrue(strpos($foo['carddata'],'UID')!==false);
}
+ function testCreateFileJson() {
+
+ $request = new HTTP\Request(
+ 'PUT',
+ '/addressbooks/admin/addressbook1/blabla.vcf'
+ );
+ $request->setBody('[ "vcard" , [ [ "UID" , {}, "text", "foo" ] ] ]');
+
+ $response = $this->request($request);
+
+ $this->assertEquals(201, $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
+
+ $foo = $this->cardBackend->getCard('addressbook1','blabla.vcf');
+ $this->assertEquals("BEGIN:VCARD\r\nUID:foo\r\nEND:VCARD\r\n", $foo['carddata']);
+
+ }
function testCreateFileVCalendar() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'PUT',
'REQUEST_URI' => '/addressbooks/admin/addressbook1/blabla.vcf',
));
@@ -110,28 +127,28 @@ class ValidateVCardTest extends \PHPUnit_Framework_TestCase {
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 415 Unsupported Media Type', $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
+ $this->assertEquals(415, $response->status, 'Incorrect status returned! Full response body: ' . $response->body);
}
function testUpdateFile() {
$this->cardBackend->createCard('addressbook1','blabla.vcf','foo');
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'PUT',
'REQUEST_URI' => '/addressbooks/admin/addressbook1/blabla.vcf',
));
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 415 Unsupported Media Type', $response->status);
+ $this->assertEquals(415, $response->status);
}
function testUpdateFileParsableBody() {
$this->cardBackend->createCard('addressbook1','blabla.vcf','foo');
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'PUT',
'REQUEST_URI' => '/addressbooks/admin/addressbook1/blabla.vcf',
));
@@ -140,7 +157,7 @@ class ValidateVCardTest extends \PHPUnit_Framework_TestCase {
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 204 No Content', $response->status);
+ $this->assertEquals(204, $response->status);
$expected = array(
'uri' => 'blabla.vcf',
diff --git a/vendor/sabre/dav/tests/Sabre/CardDAV/VersionTest.php b/vendor/sabre/dav/tests/Sabre/CardDAV/VersionTest.php
deleted file mode 100644
index 02943b2d3..000000000
--- a/vendor/sabre/dav/tests/Sabre/CardDAV/VersionTest.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-namespace Sabre\CardDAV;
-
-class VersionTest extends \PHPUnit_Framework_TestCase {
-
- function testString() {
-
- $v = Version::VERSION;
- $this->assertEquals(-1, version_compare('0.1',$v));
-
- $s = Version::STABILITY;
- $this->assertTrue($s == 'alpha' || $s == 'beta' || $s =='stable');
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/AbstractServer.php b/vendor/sabre/dav/tests/Sabre/DAV/AbstractServer.php
index 4bf5b343e..b5b8d64ee 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/AbstractServer.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/AbstractServer.php
@@ -4,8 +4,6 @@ namespace Sabre\DAV;
use Sabre\HTTP;
-require_once 'Sabre/HTTP/ResponseMock.php';
-
abstract class AbstractServer extends \PHPUnit_Framework_TestCase {
/**
@@ -23,6 +21,7 @@ abstract class AbstractServer extends \PHPUnit_Framework_TestCase {
$this->response = new HTTP\ResponseMock();
$this->server = new Server($this->getRootNode());
+ $this->server->sapi = new HTTP\SapiMock();
$this->server->httpResponse = $this->response;
$this->server->debugExceptions = true;
$this->deleteTree(SABRE_TEMPDIR,false);
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractBasicTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractBasicTest.php
index 36d23c5c0..7d7a59898 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractBasicTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractBasicTest.php
@@ -5,67 +5,68 @@ namespace Sabre\DAV\Auth\Backend;
use Sabre\DAV;
use Sabre\HTTP;
-require_once 'Sabre/HTTP/ResponseMock.php';
-
class AbstractBasicTest extends \PHPUnit_Framework_TestCase {
- /**
- * @expectedException Sabre\DAV\Exception\NotAuthenticated
- */
- public function testAuthenticateNoHeaders() {
+ function testCheckNoHeaders() {
- $response = new HTTP\ResponseMock();
- $server = new DAV\Server();
- $server->httpResponse = $response;
+ $request = new HTTP\Request();
+ $response = new HTTP\Response();
$backend = new AbstractBasicMock();
- $backend->authenticate($server,'myRealm');
- }
+ $this->assertFalse(
+ $backend->check($request, $response)[0]
+ );
- /**
- * @expectedException Sabre\DAV\Exception\NotAuthenticated
- */
- public function testAuthenticateUnknownUser() {
+ }
- $response = new HTTP\ResponseMock();
- $tree = new DAV\ObjectTree(new DAV\SimpleCollection('bla'));
- $server = new DAV\Server($tree);
- $server->httpResponse = $response;
+ function testCheckUnknownUser() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'PHP_AUTH_USER' => 'username',
'PHP_AUTH_PW' => 'wrongpassword',
));
- $server->httpRequest = $request;
+ $response = new HTTP\Response();
$backend = new AbstractBasicMock();
- $backend->authenticate($server,'myRealm');
- }
+ $this->assertFalse(
+ $backend->check($request, $response)[0]
+ );
- public function testAuthenticate() {
+ }
- $response = new HTTP\ResponseMock();
- $tree = new DAV\ObjectTree(new DAV\SimpleCollection('bla'));
- $server = new DAV\Server($tree);
- $server->httpResponse = $response;
+ function testCheckSuccess() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'PHP_AUTH_USER' => 'username',
'PHP_AUTH_PW' => 'password',
));
- $server->httpRequest = $request;
+ $response = new HTTP\Response();
$backend = new AbstractBasicMock();
- $this->assertTrue($backend->authenticate($server,'myRealm'));
+ $this->assertEquals(
+ [true, 'principals/username'],
+ $backend->check($request, $response)
+ );
- $result = $backend->getCurrentUser();
+ }
- $this->assertEquals('username', $result);
+ function testRequireAuth() {
- }
+ $request = new HTTP\Request();
+ $response = new HTTP\Response();
+ $backend = new AbstractBasicMock();
+ $backend->setRealm('writing unittests on a saturday night');
+ $backend->challenge($request, $response);
+
+ $this->assertEquals(
+ 'Basic realm="writing unittests on a saturday night"',
+ $response->getHeader('WWW-Authenticate')
+ );
+
+ }
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php
index 495690c4e..8ef416c37 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php
@@ -5,130 +5,120 @@ namespace Sabre\DAV\Auth\Backend;
use Sabre\DAV;
use Sabre\HTTP;
-require_once 'Sabre/HTTP/ResponseMock.php';
-
class AbstractDigestTest extends \PHPUnit_Framework_TestCase {
- /**
- * @expectedException Sabre\DAV\Exception\NotAuthenticated
- */
- public function testAuthenticateNoHeaders() {
+ function testCheckNoHeaders() {
- $response = new HTTP\ResponseMock();
- $server = new DAV\Server();
- $server->httpResponse = $response;
+ $request = new HTTP\Request();
+ $response = new HTTP\Response();
$backend = new AbstractDigestMock();
- $backend->authenticate($server,'myRealm');
+ $this->assertFalse(
+ $backend->check($request, $response)[0]
+ );
}
- /**
- * @expectedException Sabre\DAV\Exception
- */
- public function testAuthenticateBadGetUserInfoResponse() {
-
- $response = new HTTP\ResponseMock();
- $server = new DAV\Server();
- $server->httpResponse = $response;
+ function testCheckBadGetUserInfoResponse() {
$header = 'username=null, realm=myRealm, nonce=12345, uri=/, response=HASH, opaque=1, qop=auth, nc=1, cnonce=1';
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray([
'PHP_AUTH_DIGEST' => $header,
- ));
- $server->httpRequest = $request;
+ ]);
+ $response = new HTTP\Response();
$backend = new AbstractDigestMock();
- $backend->authenticate($server,'myRealm');
+ $this->assertFalse(
+ $backend->check($request, $response)[0]
+ );
}
/**
* @expectedException Sabre\DAV\Exception
*/
- public function testAuthenticateBadGetUserInfoResponse2() {
-
- $response = new HTTP\ResponseMock();
- $server = new DAV\Server();
- $server->httpResponse = $response;
+ function testCheckBadGetUserInfoResponse2() {
$header = 'username=array, realm=myRealm, nonce=12345, uri=/, response=HASH, opaque=1, qop=auth, nc=1, cnonce=1';
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray([
'PHP_AUTH_DIGEST' => $header,
- ));
- $server->httpRequest = $request;
+ ]);
+
+ $response = new HTTP\Response();
$backend = new AbstractDigestMock();
- $backend->authenticate($server,'myRealm');
+ $backend->check($request, $response);
}
- /**
- * @expectedException Sabre\DAV\Exception\NotAuthenticated
- */
- public function testAuthenticateUnknownUser() {
-
- $response = new HTTP\ResponseMock();
- $server = new DAV\Server();
- $server->httpResponse = $response;
+ function testCheckUnknownUser() {
$header = 'username=false, realm=myRealm, nonce=12345, uri=/, response=HASH, opaque=1, qop=auth, nc=1, cnonce=1';
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray([
'PHP_AUTH_DIGEST' => $header,
- ));
- $server->httpRequest = $request;
+ ]);
+
+ $response = new HTTP\Response();
$backend = new AbstractDigestMock();
- $backend->authenticate($server,'myRealm');
+ $this->assertFalse(
+ $backend->check($request, $response)[0]
+ );
}
- /**
- * @expectedException Sabre\DAV\Exception\NotAuthenticated
- */
- public function testAuthenticateBadPassword() {
-
- $response = new HTTP\ResponseMock();
- $server = new DAV\Server();
- $server->httpResponse = $response;
+ function testCheckBadPassword() {
$header = 'username=user, realm=myRealm, nonce=12345, uri=/, response=HASH, opaque=1, qop=auth, nc=1, cnonce=1';
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray([
'PHP_AUTH_DIGEST' => $header,
'REQUEST_METHOD' => 'PUT',
- ));
- $server->httpRequest = $request;
+ ]);
+
+ $response = new HTTP\Response();
$backend = new AbstractDigestMock();
- $backend->authenticate($server,'myRealm');
+ $this->assertFalse(
+ $backend->check($request, $response)[0]
+ );
}
- public function testAuthenticate() {
-
- $response = new HTTP\ResponseMock();
- $server = new DAV\Server();
- $server->httpResponse = $response;
+ function testCheck() {
$digestHash = md5('HELLO:12345:1:1:auth:' . md5('GET:/'));
$header = 'username=user, realm=myRealm, nonce=12345, uri=/, response='.$digestHash.', opaque=1, qop=auth, nc=1, cnonce=1';
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'GET',
'PHP_AUTH_DIGEST' => $header,
'REQUEST_URI' => '/',
));
- $server->httpRequest = $request;
+
+ $response = new HTTP\Response();
$backend = new AbstractDigestMock();
- $this->assertTrue($backend->authenticate($server,'myRealm'));
+ $this->assertEquals(
+ [true, 'principals/user'],
+ $backend->check($request, $response)
+ );
- $result = $backend->getCurrentUser();
+ }
- $this->assertEquals('user', $result);
- $this->assertEquals('HELLO', $backend->getDigestHash('myRealm', $result));
+ function testRequireAuth() {
- }
+ $request = new HTTP\Request();
+ $response = new HTTP\Response();
+ $backend = new AbstractDigestMock();
+ $backend->setRealm('writing unittests on a saturday night');
+ $backend->challenge($request, $response);
+
+ $this->assertStringStartsWith(
+ 'Digest realm="writing unittests on a saturday night"',
+ $response->getHeader('WWW-Authenticate')
+ );
+
+ }
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/ApacheTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/ApacheTest.php
index b1ed555d4..697b593db 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/ApacheTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/ApacheTest.php
@@ -10,36 +10,63 @@ class ApacheTest extends \PHPUnit_Framework_TestCase {
function testConstruct() {
$backend = new Apache();
+ $this->assertInstanceOf('Sabre\DAV\Auth\Backend\Apache', $backend);
}
- /**
- * @expectedException Sabre\DAV\Exception
- */
function testNoHeader() {
- $server = new DAV\Server();
+ $request = new HTTP\Request();
+ $response = new HTTP\Response();
$backend = new Apache();
- $backend->authenticate($server,'Realm');
+
+ $this->assertFalse(
+ $backend->check($request, $response)[0]
+ );
}
function testRemoteUser() {
+ $request = HTTP\Sapi::createFromServerArray([
+ 'REMOTE_USER' => 'username',
+ ]);
+ $response = new HTTP\Response();
$backend = new Apache();
- $server = new DAV\Server();
- $request = new HTTP\Request(array(
- 'REMOTE_USER' => 'username',
- ));
- $server->httpRequest = $request;
+ $this->assertEquals(
+ [true, 'principals/username'],
+ $backend->check($request, $response)
+ );
- $this->assertTrue($backend->authenticate($server, 'Realm'));
+ }
+
+ function testRedirectRemoteUser() {
- $userInfo = 'username';
+ $request = HTTP\Sapi::createFromServerArray([
+ 'REDIRECT_REMOTE_USER' => 'username',
+ ]);
+ $response = new HTTP\Response();
+ $backend = new Apache();
- $this->assertEquals($userInfo, $backend->getCurrentUser());
+ $this->assertEquals(
+ [true, 'principals/username'],
+ $backend->check($request, $response)
+ );
}
+ function testRequireAuth() {
+
+ $request = new HTTP\Request();
+ $response = new HTTP\Response();
+
+ $backend = new Apache();
+ $backend->challenge($request, $response);
+
+ $this->assertNull(
+ $response->getHeader('WWW-Authenticate')
+ );
+
+ }
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/FileTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/FileTest.php
index 72f150ab6..d2e5fe49b 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/FileTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/FileTest.php
@@ -35,7 +35,7 @@ class FileTest extends \PHPUnit_Framework_TestCase {
$file->loadFile(SABRE_TEMPDIR . '/backend');
$this->assertFalse($file->getDigestHash('realm','blabla'));
- $this->assertEquals(md5('user:realm:password'), $file->getDigesthash('realm','user'));
+ $this->assertEquals(md5('user:realm:password'), $file->getDigestHash('realm','user'));
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php
index fdad8a605..a782cb74d 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php
@@ -2,35 +2,85 @@
namespace Sabre\DAV\Auth\Backend;
-use Sabre\DAV;
+use
+ Sabre\DAV,
+ Sabre\HTTP\RequestInterface,
+ Sabre\HTTP\ResponseInterface;
class Mock implements BackendInterface {
- protected $currentUser;
+ public $fail = false;
- public $defaultUser = 'admin';
+ public $invalidCheckResponse = false;
- /**
- * @param Sabre\DAV\Server $server
- * @param string $realm
- * @throws Sabre\DAV\Exception\NotAuthenticated
- */
- function authenticate(DAV\Server $server, $realm) {
+ public $principal = 'principals/admin';
- if ($realm=='failme') throw new DAV\Exception\NotAuthenticated('deliberate fail');
- $this->currentUser = $this->defaultUser;
+ function setPrincipal($principal) {
+
+ $this->principal = $principal;
}
- function setCurrentUser($user) {
+ /**
+ * When this method is called, the backend must check if authentication was
+ * successful.
+ *
+ * The returned value must be one of the following
+ *
+ * [true, "principals/username"]
+ * [false, "reason for failure"]
+ *
+ * If authentication was successful, it's expected that the authentication
+ * backend returns a so-called principal url.
+ *
+ * Examples of a principal url:
+ *
+ * principals/admin
+ * principals/user1
+ * principals/users/joe
+ * principals/uid/123457
+ *
+ * If you don't use WebDAV ACL (RFC3744) we recommend that you simply
+ * return a string such as:
+ *
+ * principals/users/[username]
+ *
+ * @param RequestInterface $request
+ * @param ResponseInterface $response
+ * @return array
+ */
+ function check(RequestInterface $request, ResponseInterface $response) {
- $this->currentUser = $user;
+ if ($this->invalidCheckResponse) {
+ return 'incorrect!';
+ }
+ if ($this->fail) {
+ return [false, "fail!"];
+ }
+ return [true, $this->principal];
}
- function getCurrentUser() {
-
- return $this->currentUser;
+ /**
+ * This method is called when a user could not be authenticated, and
+ * authentication was required for the current request.
+ *
+ * This gives you the oppurtunity to set authentication headers. The 401
+ * status code will already be set.
+ *
+ * In this case of Basic Auth, this would for example mean that the
+ * following header needs to be set:
+ *
+ * $response->addHeader('WWW-Authenticate', 'Basic realm=SabreDAV');
+ *
+ * Keep in mind that in the case of multiple authentication backends, other
+ * WWW-Authenticate headers may already have been set, and you'll want to
+ * append your own WWW-Authenticate header instead of overwriting the
+ * existing one.
+ *
+ * @return void
+ */
+ function challenge(RequestInterface $request, ResponseInterface $response) {
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/PDOMySQLTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/PDOMySQLTest.php
index ede432de2..8de2be667 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/PDOMySQLTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/PDOMySQLTest.php
@@ -12,15 +12,17 @@ class PDOMySQLTest extends AbstractPDOTest {
$pdo = \Sabre\TestUtil::getMySQLDB();
if (!$pdo) $this->markTestSkipped('Could not connect to MySQL database');
$pdo->query("DROP TABLE IF EXISTS users");
- $pdo->query("
+ $pdo->query(<<<SQL
create table users (
- id integer unsigned not null primary key auto_increment,
- username varchar(50),
- digesta1 varchar(32),
- email varchar(80),
- displayname varchar(80),
- unique(username)
-);");
+ id integer unsigned not null primary key auto_increment,
+ username varchar(50),
+ digesta1 varchar(32),
+ email varchar(80),
+ displayname varchar(80),
+ unique(username)
+)
+SQL
+ );
$pdo->query("INSERT INTO users (username,digesta1,email,displayname) VALUES ('user','hash','user@example.org','User')");
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/PluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/PluginTest.php
index 2096a04d7..0ac9e0613 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Auth/PluginTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/PluginTest.php
@@ -12,10 +12,11 @@ class PluginTest extends \PHPUnit_Framework_TestCase {
function testInit() {
$fakeServer = new DAV\Server( new DAV\SimpleCollection('bla'));
- $plugin = new Plugin(new Backend\Mock(),'realm');
+ $plugin = new Plugin(new Backend\Mock());
$this->assertTrue($plugin instanceof Plugin);
$fakeServer->addPlugin($plugin);
$this->assertEquals($plugin, $fakeServer->getPlugin('auth'));
+ $this->assertInternalType('array', $plugin->getPluginInfo());
}
@@ -25,14 +26,14 @@ class PluginTest extends \PHPUnit_Framework_TestCase {
function testAuthenticate() {
$fakeServer = new DAV\Server( new DAV\SimpleCollection('bla'));
- $plugin = new Plugin(new Backend\Mock(),'realm');
+ $plugin = new Plugin(new Backend\Mock());
$fakeServer->addPlugin($plugin);
- $fakeServer->broadCastEvent('beforeMethod',array('GET','/'));
+ $this->assertTrue(
+ $fakeServer->emit('beforeMethod', [new HTTP\Request(), new HTTP\Response()])
+ );
}
-
-
/**
* @depends testInit
* @expectedException Sabre\DAV\Exception\NotAuthenticated
@@ -40,42 +41,87 @@ class PluginTest extends \PHPUnit_Framework_TestCase {
function testAuthenticateFail() {
$fakeServer = new DAV\Server( new DAV\SimpleCollection('bla'));
- $plugin = new Plugin(new Backend\Mock(),'failme');
+ $backend = new Backend\Mock();
+ $backend->fail = true;
+
+ $plugin = new Plugin($backend);
$fakeServer->addPlugin($plugin);
- $fakeServer->broadCastEvent('beforeMethod',array('GET','/'));
+ $fakeServer->emit('beforeMethod', [new HTTP\Request(), new HTTP\Response()]);
}
- function testReportPassThrough() {
+ /**
+ * @depends testAuthenticate
+ */
+ function testMultipleBackend() {
- $fakeServer = new DAV\Server(new DAV\SimpleCollection('bla'));
- $plugin = new Plugin(new Backend\Mock(),'realm');
- $fakeServer->addPlugin($plugin);
+ $fakeServer = new DAV\Server( new DAV\SimpleCollection('bla'));
+ $backend1 = new Backend\Mock();
+ $backend2 = new Backend\Mock();
+ $backend2->fail = true;
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'REPORT',
- 'HTTP_CONTENT_TYPE' => 'application/xml',
- 'REQUEST_URI' => '/',
- ));
- $request->setBody('<?xml version="1.0"?><s:somereport xmlns:s="http://www.rooftopsolutions.nl/NS/example" />');
+ $plugin = new Plugin();
+ $plugin->addBackend($backend1);
+ $plugin->addBackend($backend2);
- $fakeServer->httpRequest = $request;
- $fakeServer->httpResponse = new HTTP\ResponseMock();
- $fakeServer->exec();
+ $fakeServer->addPlugin($plugin);
+ $fakeServer->emit('beforeMethod', [new HTTP\Request(), new HTTP\Response()]);
- $this->assertEquals('HTTP/1.1 403 Forbidden', $fakeServer->httpResponse->status);
+ $this->assertEquals('principals/admin', $plugin->getCurrentPrincipal());
}
/**
* @depends testInit
+ * @expectedException Sabre\DAV\Exception
+ */
+ function testNoAuthBackend() {
+
+ $fakeServer = new DAV\Server( new DAV\SimpleCollection('bla'));
+
+ $plugin = new Plugin();
+ $fakeServer->addPlugin($plugin);
+ $fakeServer->emit('beforeMethod', [new HTTP\Request(), new HTTP\Response()]);
+
+ }
+ /**
+ * @depends testInit
+ * @expectedException Sabre\DAV\Exception
+ */
+ function testInvalidCheckResponse() {
+
+ $fakeServer = new DAV\Server( new DAV\SimpleCollection('bla'));
+ $backend = new Backend\Mock();
+ $backend->invalidCheckResponse = true;
+
+ $plugin = new Plugin($backend);
+ $fakeServer->addPlugin($plugin);
+ $fakeServer->emit('beforeMethod', [new HTTP\Request(), new HTTP\Response()]);
+
+ }
+
+ /**
+ * @depends testAuthenticate
+ */
+ function testGetCurrentPrincipal() {
+
+ $fakeServer = new DAV\Server( new DAV\SimpleCollection('bla'));
+ $plugin = new Plugin(new Backend\Mock());
+ $fakeServer->addPlugin($plugin);
+ $fakeServer->emit('beforeMethod', [new HTTP\Request(), new HTTP\Response()]);
+ $this->assertEquals('principals/admin', $plugin->getCurrentPrincipal());
+
+ }
+
+ /**
+ * @depends testAuthenticate
*/
- function testGetCurrentUserPrincipal() {
+ function testGetCurrentUser() {
$fakeServer = new DAV\Server( new DAV\SimpleCollection('bla'));
- $plugin = new Plugin(new Backend\Mock(),'realm');
+ $plugin = new Plugin(new Backend\Mock());
$fakeServer->addPlugin($plugin);
- $fakeServer->broadCastEvent('beforeMethod',array('GET','/'));
+ $fakeServer->emit('beforeMethod', [new HTTP\Request(), new HTTP\Response()]);
$this->assertEquals('admin', $plugin->getCurrentUser());
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/BasicNodeTest.php b/vendor/sabre/dav/tests/Sabre/DAV/BasicNodeTest.php
index fdc2403db..155c785f8 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/BasicNodeTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/BasicNodeTest.php
@@ -131,6 +131,7 @@ class BasicNodeTest extends \PHPUnit_Framework_TestCase {
public function testSimpleDirectoryConstruct() {
$dir = new SimpleCollection('simpledir',array());
+ $this->assertInstanceOf('Sabre\DAV\SimpleCollection', $dir);
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Browser/GuessContentTypeTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Browser/GuessContentTypeTest.php
index 6fc65f9e8..157c2170a 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Browser/GuessContentTypeTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Browser/GuessContentTypeTest.php
@@ -10,6 +10,7 @@ class GuessContentTypeTest extends DAV\AbstractServer {
function setUp() {
parent::setUp();
+ \Sabre\TestUtil::clearTempDir();
file_put_contents(SABRE_TEMPDIR . '/somefile.jpg','blabla');
file_put_contents(SABRE_TEMPDIR . '/somefile.hoi','blabla');
@@ -17,7 +18,7 @@ class GuessContentTypeTest extends DAV\AbstractServer {
function tearDown() {
- unlink(SABRE_TEMPDIR . '/somefile.jpg');
+ \Sabre\TestUtil::clearTempDir();
parent::tearDown();
}
@@ -44,7 +45,7 @@ class GuessContentTypeTest extends DAV\AbstractServer {
);
$result = $this->server->getPropertiesForPath('/somefile.jpg',$properties);
$this->assertArrayHasKey(0,$result);
- $this->assertArrayHasKey(200,$result[0]);
+ $this->assertArrayHasKey(200,$result[0], 'We received: ' . print_r($result,true));
$this->assertArrayHasKey('{DAV:}getcontenttype',$result[0][200]);
$this->assertEquals('image/jpeg',$result[0][200]['{DAV:}getcontenttype']);
@@ -61,8 +62,9 @@ class GuessContentTypeTest extends DAV\AbstractServer {
);
$result = $this->server->getPropertiesForPath('/somefile.hoi',$properties);
$this->assertArrayHasKey(0,$result);
- $this->assertArrayHasKey(404,$result[0]);
- $this->assertArrayHasKey('{DAV:}getcontenttype',$result[0][404]);
+ $this->assertArrayHasKey(200,$result[0]);
+ $this->assertArrayHasKey('{DAV:}getcontenttype',$result[0][200]);
+ $this->assertEquals('application/octet-stream',$result[0][200]['{DAV:}getcontenttype']);
}
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Browser/MapGetToPropFindTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Browser/MapGetToPropFindTest.php
index 169675e7e..9d9fbb319 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Browser/MapGetToPropFindTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Browser/MapGetToPropFindTest.php
@@ -23,21 +23,21 @@ class MapGetToPropFindTest extends DAV\AbstractServer {
'REQUEST_METHOD' => 'GET',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('');
$this->server->httpRequest = ($request);
$this->server->exec();
+ $this->assertEquals(207, $this->response->status,'Incorrect status response received. Full response body: ' . $this->response->body);
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- 'DAV' => '1, 3, extended-mkcol',
- 'Vary' => 'Brief,Prefer',
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ 'DAV' => ['1, 3, extended-mkcol'],
+ 'Vary' => ['Brief,Prefer'],
),
- $this->response->headers
+ $this->response->getHeaders()
);
- $this->assertEquals('HTTP/1.1 207 Multi-Status',$this->response->status,'Incorrect status response received. Full response body: ' . $this->response->body);
-
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Browser/PluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Browser/PluginTest.php
index c3c4bdebb..00beea9f2 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Browser/PluginTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Browser/PluginTest.php
@@ -9,80 +9,114 @@ require_once 'Sabre/DAV/AbstractServer.php';
class PluginTest extends DAV\AbstractServer{
+ protected $plugin;
+
function setUp() {
parent::setUp();
- $this->server->addPlugin(new Plugin());
+ $this->server->addPlugin($this->plugin = new Plugin());
+ $this->server->tree->getNodeForPath('')->createDirectory('dir2');
}
function testCollectionGet() {
- $serverVars = array(
- 'REQUEST_URI' => '/dir',
- 'REQUEST_METHOD' => 'GET',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
+ $request = new HTTP\Request('GET', '/dir');
+ $this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
- $this->assertEquals(array(
- 'Content-Type' => 'text/html; charset=utf-8',
- ),
- $this->response->headers
+ $this->assertEquals(200, $this->response->getStatus(), "Incorrect status received. Full response body: " . $this->response->getBodyAsString());
+ $this->assertEquals(
+ [
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['text/html; charset=utf-8'],
+ 'Content-Security-Policy' => ["img-src 'self'; style-src 'self';"]
+ ],
+ $this->response->getHeaders()
);
- $this->assertTrue(strpos($this->response->body, 'Index for dir/') !== false);
- $this->assertTrue(strpos($this->response->body, '<a href="/dir/child.txt"><img src="/?sabreAction=asset&assetName=icons%2Ffile.png" alt="" width="24" />')!==false);
+ $body = $this->response->getBodyAsString();
+ $this->assertTrue(strpos($body, '<title>dir') !== false, $body);
+ $this->assertTrue(strpos($body, '<a href="/dir/child.txt">')!==false);
}
- function testNotFound() {
+ /**
+ * Adding the If-None-Match should have 0 effect, but it threw an error.
+ */
+ function testCollectionGetIfNoneMatch() {
- $serverVars = array(
- 'REQUEST_URI' => '/random',
- 'REQUEST_METHOD' => 'GET',
+ $request = new HTTP\Request('GET', '/dir');
+ $request->setHeader('If-None-Match', '"foo-bar"');
+ $this->server->httpRequest = $request;
+ $this->server->exec();
+
+ $this->assertEquals(200, $this->response->getStatus(), "Incorrect status received. Full response body: " . $this->response->getBodyAsString());
+ $this->assertEquals(
+ [
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['text/html; charset=utf-8'],
+ 'Content-Security-Policy' => ["img-src 'self'; style-src 'self';"]
+ ],
+ $this->response->getHeaders()
);
- $request = new HTTP\Request($serverVars);
+ $body = $this->response->getBodyAsString();
+ $this->assertTrue(strpos($body, '<title>dir') !== false, $body);
+ $this->assertTrue(strpos($body, '<a href="/dir/child.txt">')!==false);
+
+ }
+ function testCollectionGetRoot() {
+
+ $request = new HTTP\Request('GET', '/');
$this->server->httpRequest = ($request);
$this->server->exec();
- $this->assertEquals('HTTP/1.1 404 Not Found',$this->response->status);
+ $this->assertEquals(200, $this->response->status, "Incorrect status received. Full response body: " . $this->response->getBodyAsString());
+ $this->assertEquals(
+ [
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['text/html; charset=utf-8'],
+ 'Content-Security-Policy' => ["img-src 'self'; style-src 'self';"]
+ ],
+ $this->response->getHeaders()
+ );
+
+ $body = $this->response->getBodyAsString();
+ $this->assertTrue(strpos($body, '<title>/') !== false, $body);
+ $this->assertTrue(strpos($body, '<a href="/dir/">')!==false);
+ $this->assertTrue(strpos($body, '<span class="btn disabled">')!==false);
}
- function testPostOtherContentType() {
+ function testGETPassthru() {
- $serverVars = array(
- 'REQUEST_URI' => '/',
- 'REQUEST_METHOD' => 'POST',
- 'CONTENT_TYPE' => 'text/xml',
+ $request = new HTTP\Request('GET', '/random');
+ $response = new HTTP\Response();
+ $this->assertNull(
+ $this->plugin->httpGet($request, $response)
);
- $request = new HTTP\Request($serverVars);
+
+ }
+
+ function testPostOtherContentType() {
+
+ $request = new HTTP\Request('POST', '/', ['Content-Type' => 'text/xml']);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 501 Not Implemented', $this->response->status);
+ $this->assertEquals(501, $this->response->status);
}
function testPostNoSabreAction() {
- $serverVars = array(
- 'REQUEST_URI' => '/',
- 'REQUEST_METHOD' => 'POST',
- 'CONTENT_TYPE' => 'application/x-www-form-urlencoded',
- );
- $postVars = array();
-
- $request = new HTTP\Request($serverVars,$postVars);
+ $request = new HTTP\Request('POST', '/', ['Content-Type' => 'application/x-www-form-urlencoded']);
+ $request->setPostData([]);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 501 Not Implemented', $this->response->status);
+ $this->assertEquals(501, $this->response->status);
}
@@ -98,17 +132,55 @@ class PluginTest extends DAV\AbstractServer{
'name' => 'new_collection',
);
- $request = new HTTP\Request($serverVars,$postVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
+ $request->setPostData($postVars);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 302 Found', $this->response->status);
+ $this->assertEquals(302, $this->response->status);
$this->assertEquals(array(
- 'Location' => '/',
- ), $this->response->headers);
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Location' => ['/'],
+ ), $this->response->getHeaders());
$this->assertTrue(is_dir(SABRE_TEMPDIR . '/new_collection'));
}
+ function testGetAsset() {
+
+ $request = new HTTP\Request('GET', '/?sabreAction=asset&assetName=favicon.ico');
+ $this->server->httpRequest = $request;
+ $this->server->exec();
+
+ $this->assertEquals(200, $this->response->getStatus(), 'Error: ' . $this->response->body);
+ $this->assertEquals([
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['image/vnd.microsoft.icon'],
+ 'Content-Length' => ['4286'],
+ 'Cache-Control' => ['public, max-age=1209600'],
+ 'Content-Security-Policy' => ["img-src 'self'; style-src 'self';"]
+ ], $this->response->getHeaders());
+
+ }
+
+ function testGetAsset404() {
+
+ $request = new HTTP\Request('GET', '/?sabreAction=asset&assetName=flavicon.ico');
+ $this->server->httpRequest = $request;
+ $this->server->exec();
+
+ $this->assertEquals(404, $this->response->getStatus(), 'Error: ' . $this->response->body);
+
+ }
+
+ function testGetAssetEscapeBasePath() {
+
+ $request = new HTTP\Request('GET', '/?sabreAction=asset&assetName=./../assets/favicon.ico');
+ $this->server->httpRequest = $request;
+ $this->server->exec();
+
+ $this->assertEquals(404, $this->response->getStatus(), 'Error: ' . $this->response->body);
+
+ }
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ClientMock.php b/vendor/sabre/dav/tests/Sabre/DAV/ClientMock.php
index 6e74e6ec0..d8b53a5a1 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/ClientMock.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/ClientMock.php
@@ -2,21 +2,16 @@
namespace Sabre\DAV;
+use Sabre\HTTP\RequestInterface;
+
class ClientMock extends Client {
+ public $request;
public $response;
public $url;
public $curlSettings;
- protected function curlRequest($url, $curlSettings) {
-
- $this->url = $url;
- $this->curlSettings = $curlSettings;
- return $this->response;
-
- }
-
/**
* Just making this method public
*
@@ -29,4 +24,11 @@ class ClientMock extends Client {
}
+ public function doRequest(RequestInterface $request) {
+
+ $this->request = $request;
+ return $this->response;
+
+ }
+
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ClientTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ClientTest.php
index 9c3532a47..4cf27dfaa 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/ClientTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/ClientTest.php
@@ -2,15 +2,27 @@
namespace Sabre\DAV;
+use Sabre\HTTP\Request;
+use Sabre\HTTP\Response;
+
require_once 'Sabre/DAV/ClientMock.php';
class ClientTest extends \PHPUnit_Framework_TestCase {
+ function setUp() {
+
+ if (!function_exists('curl_init')) {
+ $this->markTestSkipped('CURL must be installed to test the client');
+ }
+
+ }
+
function testConstruct() {
- $client = new ClientMock(array(
+ $client = new ClientMock([
'baseUri' => '/',
- ));
+ ]);
+ $this->assertInstanceOf('Sabre\DAV\ClientMock', $client);
}
@@ -19,931 +31,276 @@ class ClientTest extends \PHPUnit_Framework_TestCase {
*/
function testConstructNoBaseUri() {
- $client = new ClientMock(array());
+ $client = new ClientMock([]);
}
- function testRequest() {
-
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- ));
-
- $responseBlob = array(
- "HTTP/1.1 200 OK",
- "Content-Type: text/plain",
- "",
- "Hello there!"
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 45,
- 'http_code' => 200,
- ),
- 0,
- ""
- );
-
- $result = $client->request('POST', 'baz', 'sillybody', array('Content-Type' => 'text/plain'));
-
- $this->assertEquals('http://example.org/foo/bar/baz', $client->url);
- $this->assertEquals(array(
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_FOLLOWLOCATION => true,
- CURLOPT_MAXREDIRS => 5,
- CURLOPT_CUSTOMREQUEST => 'POST',
- CURLOPT_POSTFIELDS => 'sillybody',
- CURLOPT_HEADER => true,
- CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
- ), $client->curlSettings);
+ function testAuth() {
- $this->assertEquals(array(
- 'statusCode' => 200,
- 'headers' => array(
- 'content-type' => 'text/plain',
- ),
- 'body' => 'Hello there!'
- ), $result);
+ $client = new ClientMock([
+ 'baseUri' => '/',
+ 'userName' => 'foo',
+ 'password' => 'bar',
+ ]);
+ $this->assertEquals("foo:bar", $client->curlSettings[CURLOPT_USERPWD]);
+ $this->assertEquals(CURLAUTH_BASIC | CURLAUTH_DIGEST, $client->curlSettings[CURLOPT_HTTPAUTH]);
}
+ function testBasicAuth() {
- function testRequestProxy() {
+ $client = new ClientMock([
+ 'baseUri' => '/',
+ 'userName' => 'foo',
+ 'password' => 'bar',
+ 'authType' => Client::AUTH_BASIC
+ ]);
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- 'proxy' => 'http://localhost:8000/',
- ));
-
- $responseBlob = array(
- "HTTP/1.1 200 OK",
- "Content-Type: text/plain",
- "",
- "Hello there!"
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 45,
- 'http_code' => 200,
- ),
- 0,
- ""
- );
-
- $result = $client->request('POST', 'baz', 'sillybody', array('Content-Type' => 'text/plain'));
-
- $this->assertEquals('http://example.org/foo/bar/baz', $client->url);
- $this->assertEquals(array(
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_FOLLOWLOCATION => true,
- CURLOPT_MAXREDIRS => 5,
- CURLOPT_CUSTOMREQUEST => 'POST',
- CURLOPT_POSTFIELDS => 'sillybody',
- CURLOPT_HEADER => true,
- CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
- CURLOPT_PROXY => 'http://localhost:8000/',
- ), $client->curlSettings);
-
- $this->assertEquals(array(
- 'statusCode' => 200,
- 'headers' => array(
- 'content-type' => 'text/plain',
- ),
- 'body' => 'Hello there!'
- ), $result);
+ $this->assertEquals("foo:bar", $client->curlSettings[CURLOPT_USERPWD]);
+ $this->assertEquals(CURLAUTH_BASIC, $client->curlSettings[CURLOPT_HTTPAUTH]);
}
- function testRequestCAInfo() {
-
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- ));
+ function testDigestAuth() {
- $responseBlob = array(
- "HTTP/1.1 200 OK",
- "Content-Type: text/plain",
- "",
- "Hello there!"
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 45,
- 'http_code' => 200,
- ),
- 0,
- ""
- );
+ $client = new ClientMock([
+ 'baseUri' => '/',
+ 'userName' => 'foo',
+ 'password' => 'bar',
+ 'authType' => Client::AUTH_DIGEST
+ ]);
- $client->addTrustedCertificates('bla');
-
- $result = $client->request('POST', 'baz', 'sillybody', array('Content-Type' => 'text/plain'));
-
- $this->assertEquals('http://example.org/foo/bar/baz', $client->url);
- $this->assertEquals(array(
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_FOLLOWLOCATION => true,
- CURLOPT_MAXREDIRS => 5,
- CURLOPT_CUSTOMREQUEST => 'POST',
- CURLOPT_POSTFIELDS => 'sillybody',
- CURLOPT_HEADER => true,
- CURLOPT_CAINFO => 'bla',
- CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
- ), $client->curlSettings);
+ $this->assertEquals("foo:bar", $client->curlSettings[CURLOPT_USERPWD]);
+ $this->assertEquals(CURLAUTH_DIGEST, $client->curlSettings[CURLOPT_HTTPAUTH]);
}
- function testRequestSslPeer() {
+ function testNTLMAuth() {
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- ));
+ $client = new ClientMock([
+ 'baseUri' => '/',
+ 'userName' => 'foo',
+ 'password' => 'bar',
+ 'authType' => Client::AUTH_NTLM
+ ]);
- $responseBlob = array(
- "HTTP/1.1 200 OK",
- "Content-Type: text/plain",
- "",
- "Hello there!"
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 45,
- 'http_code' => 200,
- ),
- 0,
- ""
- );
-
- $client->setVerifyPeer(true);
-
- $result = $client->request('POST', 'baz', 'sillybody', array('Content-Type' => 'text/plain'));
-
- $this->assertEquals('http://example.org/foo/bar/baz', $client->url);
- $this->assertEquals(array(
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_FOLLOWLOCATION => true,
- CURLOPT_MAXREDIRS => 5,
- CURLOPT_CUSTOMREQUEST => 'POST',
- CURLOPT_POSTFIELDS => 'sillybody',
- CURLOPT_HEADER => true,
- CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
- CURLOPT_SSL_VERIFYPEER => true
- ), $client->curlSettings);
-
- }
-
- function testRequestAuth() {
-
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- 'userName' => 'user',
- 'password' => 'password',
- ));
-
- $responseBlob = array(
- "HTTP/1.1 200 OK",
- "Content-Type: text/plain",
- "",
- "Hello there!"
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 45,
- 'http_code' => 200,
- ),
- 0,
- ""
- );
-
- $result = $client->request('POST', 'baz', 'sillybody', array('Content-Type' => 'text/plain'));
-
- $this->assertEquals('http://example.org/foo/bar/baz', $client->url);
- $this->assertEquals(array(
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_FOLLOWLOCATION => true,
- CURLOPT_MAXREDIRS => 5,
- CURLOPT_CUSTOMREQUEST => 'POST',
- CURLOPT_POSTFIELDS => 'sillybody',
- CURLOPT_HEADER => true,
- CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
- CURLOPT_HTTPAUTH => CURLAUTH_BASIC | CURLAUTH_DIGEST,
- CURLOPT_USERPWD => 'user:password'
- ), $client->curlSettings);
-
- $this->assertEquals(array(
- 'statusCode' => 200,
- 'headers' => array(
- 'content-type' => 'text/plain',
- ),
- 'body' => 'Hello there!'
- ), $result);
-
- }
-
- function testRequestAuthBasic() {
-
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- 'userName' => 'user',
- 'password' => 'password',
- 'authType' => Client::AUTH_BASIC,
- ));
-
- $responseBlob = array(
- "HTTP/1.1 200 OK",
- "Content-Type: text/plain",
- "",
- "Hello there!"
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 45,
- 'http_code' => 200,
- ),
- 0,
- ""
- );
-
- $result = $client->request('POST', 'baz', 'sillybody', array('Content-Type' => 'text/plain'));
-
- $this->assertEquals('http://example.org/foo/bar/baz', $client->url);
- $this->assertEquals(array(
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_FOLLOWLOCATION => true,
- CURLOPT_MAXREDIRS => 5,
- CURLOPT_CUSTOMREQUEST => 'POST',
- CURLOPT_POSTFIELDS => 'sillybody',
- CURLOPT_HEADER => true,
- CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
- CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
- CURLOPT_USERPWD => 'user:password'
- ), $client->curlSettings);
-
- $this->assertEquals(array(
- 'statusCode' => 200,
- 'headers' => array(
- 'content-type' => 'text/plain',
- ),
- 'body' => 'Hello there!'
- ), $result);
+ $this->assertEquals("foo:bar", $client->curlSettings[CURLOPT_USERPWD]);
+ $this->assertEquals(CURLAUTH_NTLM, $client->curlSettings[CURLOPT_HTTPAUTH]);
}
- function testRequestAuthDigest() {
-
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- 'userName' => 'user',
- 'password' => 'password',
- 'authType' => Client::AUTH_DIGEST,
- ));
+ function testProxy() {
- $responseBlob = array(
- "HTTP/1.1 200 OK",
- "Content-Type: text/plain",
- "",
- "Hello there!"
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 45,
- 'http_code' => 200,
- ),
- 0,
- ""
- );
-
- $result = $client->request('POST', 'baz', 'sillybody', array('Content-Type' => 'text/plain'));
-
- $this->assertEquals('http://example.org/foo/bar/baz', $client->url);
- $this->assertEquals(array(
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_FOLLOWLOCATION => true,
- CURLOPT_MAXREDIRS => 5,
- CURLOPT_CUSTOMREQUEST => 'POST',
- CURLOPT_POSTFIELDS => 'sillybody',
- CURLOPT_HEADER => true,
- CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
- CURLOPT_HTTPAUTH => CURLAUTH_DIGEST,
- CURLOPT_USERPWD => 'user:password'
- ), $client->curlSettings);
-
- $this->assertEquals(array(
- 'statusCode' => 200,
- 'headers' => array(
- 'content-type' => 'text/plain',
- ),
- 'body' => 'Hello there!'
- ), $result);
-
- }
- function testRequestError() {
-
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- ));
-
- $responseBlob = array(
- "HTTP/1.1 200 OK",
- "Content-Type: text/plain",
- "",
- "Hello there!"
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 45,
- 'http_code' => 200,
- ),
- CURLE_COULDNT_CONNECT,
- "Could not connect, or something"
- );
+ $client = new ClientMock([
+ 'baseUri' => '/',
+ 'proxy' => 'localhost:8888',
+ ]);
- $caught = false;
- try {
- $client->request('POST', 'baz', 'sillybody', array('Content-Type' => 'text/plain'));
- } catch (Exception $e) {
- $caught = true;
- }
- if (!$caught) {
- $this->markTestFailed('Exception was not thrown');
- }
+ $this->assertEquals("localhost:8888", $client->curlSettings[CURLOPT_PROXY]);
}
- function testRequestHTTPError() {
-
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- ));
+ function testEncoding() {
- $responseBlob = array(
- "HTTP/1.1 400 Bad Request",
- "Content-Type: text/plain",
- "",
- "Hello there!"
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 45,
- 'http_code' => 400,
- ),
- 0,
- ""
- );
+ $client = new ClientMock([
+ 'baseUri' => '/',
+ 'encoding' => Client::ENCODING_IDENTITY | Client::ENCODING_GZIP | Client::ENCODING_DEFLATE,
+ ]);
- $caught = false;
- try {
- $client->request('POST', 'baz', 'sillybody', array('Content-Type' => 'text/plain'));
- } catch (Exception $e) {
- $caught = true;
- }
- if (!$caught) {
- $this->fail('Exception was not thrown');
- }
+ $this->assertEquals("identity,deflate,gzip", $client->curlSettings[CURLOPT_ENCODING]);
}
- function testRequestHTTP404() {
-
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- ));
-
- $responseBlob = array(
- "HTTP/1.1 404 Not Found",
- "Content-Type: text/plain",
- "",
- "Hello there!"
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 45,
- 'http_code' => 404,
- ),
- 0,
- ""
- );
+ function testPropFind() {
- $caught = false;
- try {
- $client->request('POST', 'baz', 'sillybody', array('Content-Type' => 'text/plain'));
- } catch (Exception\NotFound $e) {
- $caught = true;
- }
- if (!$caught) {
- $this->fail('Exception was not thrown');
- }
+ $client = new ClientMock([
+ 'baseUri' => '/',
+ ]);
+
+ $responseBody = <<<XML
+<?xml version="1.0"?>
+<multistatus xmlns="DAV:">
+ <response>
+ <href>/foo</href>
+ <propstat>
+ <prop>
+ <displayname>bar</displayname>
+ </prop>
+ <status>HTTP/1.1 200 OK</status>
+ </propstat>
+ </response>
+</multistatus>
+XML;
+
+ $client->response = new Response(207, [], $responseBody);
+ $result = $client->propFind('foo', ['{DAV:}displayname', '{urn:zim}gir']);
+
+ $this->assertEquals(['{DAV:}displayname' => 'bar'], $result);
+
+ $request = $client->request;
+ $this->assertEquals('PROPFIND', $request->getMethod());
+ $this->assertEquals('/foo', $request->getUrl());
+ $this->assertEquals([
+ 'Depth' => ['0'],
+ 'Content-Type' => ['application/xml'],
+ ], $request->getHeaders());
}
/**
- * @dataProvider supportedHTTPCodes
+ * @expectedException \Sabre\HTTP\ClientHttpException
*/
- function testSpecificHTTPErrors($error) {
-
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- ));
-
- $responseBlob = array(
- "HTTP/1.1 $error blabla",
- "Content-Type: text/plain",
- "",
- "Hello there!"
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 42,
- 'http_code' => $error,
- ),
- 0,
- ""
- );
-
- try {
- $client->request('POST', 'baz', 'sillybody', array('Content-Type' => 'text/plain'));
- $this->fail('Exception was not thrown');
- } catch (Exception $e) {
- $this->assertEquals($e->getHTTPCode(), $error);
- }
-
-
- }
-
- public function supportedHTTPCodes() {
-
- return array(
- array(400),
- array(401),
- array(402),
- array(403),
- array(404),
- array(405),
- array(409),
- array(412),
- array(416),
- array(500),
- array(501),
- array(507),
- );
-
- }
-
- function testUnsupportedHTTPError() {
-
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- ));
-
- $responseBlob = array(
- "HTTP/1.1 580 blabla",
- "Content-Type: text/plain",
- "",
- "Hello there!"
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 42,
- 'http_code' => "580"
- ),
- 0,
- ""
- );
-
- try {
- $client->request('POST', 'baz', 'sillybody', array('Content-Type' => 'text/plain'));
- $this->fail('Exception was not thrown');
- } catch (Exception $e) {
- $this->assertEquals(500, $e->getHTTPCode());
- }
-
-
- }
-
- function testGetAbsoluteUrl() {
+ function testPropFindError() {
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/',
- ));
-
- $this->assertEquals(
- 'http://example.org/foo/bar',
- $client->getAbsoluteUrl('bar')
- );
-
- $this->assertEquals(
- 'http://example.org/bar',
- $client->getAbsoluteUrl('/bar')
- );
+ $client = new ClientMock([
+ 'baseUri' => '/',
+ ]);
- $this->assertEquals(
- 'http://example.com/bar',
- $client->getAbsoluteUrl('http://example.com/bar')
- );
+ $client->response = new Response(405, []);
+ $client->propFind('foo', ['{DAV:}displayname', '{urn:zim}gir']);
}
- function testOptions() {
-
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- ));
-
- $responseBlob = array(
- "HTTP/1.1 200 OK",
- "DAV: feature1, feature2",
- "",
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 40,
- 'http_code' => 200,
- ),
- 0,
- ""
- );
+ function testPropFindDepth1() {
- $result = $client->options();
- $this->assertEquals(
- array('feature1', 'feature2'),
- $result
- );
+ $client = new ClientMock([
+ 'baseUri' => '/',
+ ]);
+
+ $responseBody = <<<XML
+<?xml version="1.0"?>
+<multistatus xmlns="DAV:">
+ <response>
+ <href>/foo</href>
+ <propstat>
+ <prop>
+ <displayname>bar</displayname>
+ </prop>
+ <status>HTTP/1.1 200 OK</status>
+ </propstat>
+ </response>
+</multistatus>
+XML;
+
+ $client->response = new Response(207, [], $responseBody);
+ $result = $client->propFind('foo', ['{DAV:}displayname', '{urn:zim}gir'], 1);
+
+ $this->assertEquals([
+ '/foo' => [
+ '{DAV:}displayname' => 'bar'
+ ],
+ ], $result);
+
+ $request = $client->request;
+ $this->assertEquals('PROPFIND', $request->getMethod());
+ $this->assertEquals('/foo', $request->getUrl());
+ $this->assertEquals([
+ 'Depth' => ['1'],
+ 'Content-Type' => ['application/xml'],
+ ], $request->getHeaders());
}
- function testOptionsNoDav() {
-
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- ));
-
- $responseBlob = array(
- "HTTP/1.1 200 OK",
- "",
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 20,
- 'http_code' => 200,
- ),
- 0,
- ""
- );
+ function testPropPatch() {
- $result = $client->options();
- $this->assertEquals(
- array(),
- $result
- );
+ $client = new ClientMock([
+ 'baseUri' => '/',
+ ]);
+
+ $responseBody = <<<XML
+<?xml version="1.0"?>
+<multistatus xmlns="DAV:">
+ <response>
+ <href>/foo</href>
+ <propstat>
+ <prop>
+ <displayname>bar</displayname>
+ </prop>
+ <status>HTTP/1.1 200 OK</status>
+ </propstat>
+ </response>
+</multistatus>
+XML;
+
+ $client->response = new Response(207, [], $responseBody);
+ $result = $client->propPatch('foo', ['{DAV:}displayname' => 'hi', '{urn:zim}gir' => null], 1);
+ $this->assertTrue($result);
+ $request = $client->request;
+ $this->assertEquals('PROPPATCH', $request->getMethod());
+ $this->assertEquals('/foo', $request->getUrl());
+ $this->assertEquals([
+ 'Content-Type' => ['application/xml'],
+ ], $request->getHeaders());
}
/**
- * @expectedException InvalidArgumentException
+ * @depends testPropPatch
+ * @expectedException \Sabre\HTTP\ClientHttpException
*/
- function testPropFindNoXML() {
-
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- ));
-
- $responseBlob = array(
- "HTTP/1.1 200 OK",
- "",
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 20,
- 'http_code' => 200,
- ),
- 0,
- ""
- );
+ function testPropPatchHTTPError() {
- $client->propfind('', array('{DAV:}foo','{DAV:}bar'));
-
- }
-
- function testPropFind() {
-
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- ));
-
- $responseBlob = array(
- "HTTP/1.1 200 OK",
- "",
- "<?xml version=\"1.0\"?>",
- "<d:multistatus xmlns:d=\"DAV:\">",
- " <d:response>",
- " <d:href>/foo/bar/</d:href>",
- " <d:propstat>",
- " <d:prop>",
- " <d:foo>hello</d:foo>",
- " </d:prop>",
- " <d:status>HTTP/1.1 200 OK</d:status>",
- " </d:propstat>",
- " <d:propstat>",
- " <d:prop>",
- " <d:bar />",
- " </d:prop>",
- " <d:status>HTTP/1.1 404 Not Found</d:status>",
- " </d:propstat>",
- " </d:response>",
- "</d:multistatus>",
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 19,
- 'http_code' => 200,
- ),
- 0,
- ""
- );
-
- $result = $client->propfind('', array('{DAV:}foo','{DAV:}bar'));
-
- $this->assertEquals(array(
- '{DAV:}foo' => 'hello',
- ), $result);
-
- $requestBody = array(
- '<?xml version="1.0"?>',
- '<d:propfind xmlns:d="DAV:">',
- ' <d:prop>',
- ' <d:foo />',
- ' <d:bar />',
- ' </d:prop>',
- '</d:propfind>'
- );
- $requestBody = implode("\n", $requestBody);
+ $client = new ClientMock([
+ 'baseUri' => '/',
+ ]);
- $this->assertEquals($requestBody, $client->curlSettings[CURLOPT_POSTFIELDS]);
+ $client->response = new Response(403, [], '');
+ $client->propPatch('foo', ['{DAV:}displayname' => 'hi', '{urn:zim}gir' => null], 1);
}
/**
- * This was reported in Issue 235.
- *
- * If no '200 Ok' properties are returned, the client will throw an
- * E_NOTICE.
+ * @depends testPropPatch
+ * @expectedException Sabre\HTTP\ClientException
*/
- function testPropFindNo200s() {
-
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- ));
-
- $responseBlob = array(
- "HTTP/1.1 200 OK",
- "",
- "<?xml version=\"1.0\"?>",
- "<d:multistatus xmlns:d=\"DAV:\">",
- " <d:response>",
- " <d:href>/foo/bar/</d:href>",
- " <d:propstat>",
- " <d:prop>",
- " <d:bar />",
- " </d:prop>",
- " <d:status>HTTP/1.1 404 Not Found</d:status>",
- " </d:propstat>",
- " </d:response>",
- "</d:multistatus>",
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 19,
- 'http_code' => 200,
- ),
- 0,
- ""
- );
-
- $result = $client->propfind('', array('{DAV:}foo','{DAV:}bar'));
-
- $this->assertEquals(array(
- ), $result);
-
- }
-
- function testPropFindDepth1CustomProp() {
-
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- ));
-
- $responseBlob = array(
- "HTTP/1.1 200 OK",
- "",
- "<?xml version=\"1.0\"?>",
- "<d:multistatus xmlns:d=\"DAV:\" xmlns:x=\"urn:custom\">",
- " <d:response>",
- " <d:href>/foo/bar/</d:href>",
- " <d:propstat>",
- " <d:prop>",
- " <d:foo>hello</d:foo>",
- " <x:bar>world</x:bar>",
- " </d:prop>",
- " <d:status>HTTP/1.1 200 OK</d:status>",
- " </d:propstat>",
- " </d:response>",
- "</d:multistatus>",
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 19,
- 'http_code' => 200,
- ),
- 0,
- ""
- );
-
- $result = $client->propfind('', array('{DAV:}foo','{urn:custom}bar'),1);
-
- $this->assertEquals(array(
- "/foo/bar/" => array(
- '{DAV:}foo' => 'hello',
- '{urn:custom}bar' => 'world',
- ),
- ), $result);
-
- $requestBody = array(
- '<?xml version="1.0"?>',
- '<d:propfind xmlns:d="DAV:">',
- ' <d:prop>',
- ' <d:foo />',
- ' <x:bar xmlns:x="urn:custom"/>',
- ' </d:prop>',
- '</d:propfind>'
- );
- $requestBody = implode("\n", $requestBody);
-
- $this->assertEquals($requestBody, $client->curlSettings[CURLOPT_POSTFIELDS]);
-
- }
-
- function testPropPatch() {
-
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- ));
-
- $responseBlob = array(
- "HTTP/1.1 200 OK",
- "",
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 20,
- 'http_code' => 200,
- ),
- 0,
- ""
- );
-
- $client->proppatch('', array(
- '{DAV:}foo' => 'newvalue',
- '{urn:custom}foo' => 'newvalue2',
- '{DAV:}bar' => null,
- '{urn:custom}bar' => null,
- ));
-
- $requestBody = array(
- '<?xml version="1.0"?>',
- '<d:propertyupdate xmlns:d="DAV:">',
- '<d:set><d:prop>',
- ' <d:foo>newvalue</d:foo>',
- '</d:prop></d:set>',
- '<d:set><d:prop>',
- ' <x:foo xmlns:x="urn:custom">newvalue2</x:foo>',
- '</d:prop></d:set>',
- '<d:remove><d:prop>',
- ' <d:bar />',
- '</d:prop></d:remove>',
- '<d:remove><d:prop>',
- ' <x:bar xmlns:x="urn:custom"/>',
- '</d:prop></d:remove>',
- '</d:propertyupdate>'
- );
- $requestBody = implode("\n", $requestBody);
-
- $this->assertEquals($requestBody, $client->curlSettings[CURLOPT_POSTFIELDS]);
-
- }
-
- function testHEADRequest() {
+ function testPropPatchMultiStatusError() {
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- ));
-
- $responseBlob = array(
- "HTTP/1.1 200 OK",
- "Content-Type: text/plain",
- "",
- "Hello there!"
- );
-
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 45,
- 'http_code' => 200,
- ),
- 0,
- ""
- );
-
- $result = $client->request('HEAD', 'baz');
-
- $this->assertEquals('http://example.org/foo/bar/baz', $client->url);
- $this->assertEquals(array(
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_FOLLOWLOCATION => true,
- CURLOPT_MAXREDIRS => 5,
- CURLOPT_CUSTOMREQUEST => 'HEAD',
- CURLOPT_NOBODY => true,
- CURLOPT_HEADER => true,
- CURLOPT_HTTPHEADER => array(),
- CURLOPT_POSTFIELDS => null,
- ), $client->curlSettings);
+ $client = new ClientMock([
+ 'baseUri' => '/',
+ ]);
+
+ $responseBody = <<<XML
+<?xml version="1.0"?>
+<multistatus xmlns="DAV:">
+<response>
+ <href>/foo</href>
+ <propstat>
+ <prop>
+ <displayname />
+ </prop>
+ <status>HTTP/1.1 403 Forbidden</status>
+ </propstat>
+</response>
+</multistatus>
+XML;
+
+ $client->response = new Response(207, [], $responseBody);
+ $client->propPatch('foo', ['{DAV:}displayname' => 'hi', '{urn:zim}gir' => null], 1);
}
- function testPUTRequest() {
+ function testOPTIONS() {
- $client = new ClientMock(array(
- 'baseUri' => 'http://example.org/foo/bar/',
- ));
+ $client = new ClientMock([
+ 'baseUri' => '/',
+ ]);
- $responseBlob = array(
- "HTTP/1.1 200 OK",
- "Content-Type: text/plain",
- "",
- "Hello there!"
- );
+ $client->response = new Response(207, [
+ 'DAV' => 'calendar-access, extended-mkcol',
+ ]);
+ $result = $client->options();
- $client->response = array(
- implode("\r\n", $responseBlob),
- array(
- 'header_size' => 45,
- 'http_code' => 200,
- ),
- 0,
- ""
+ $this->assertEquals(
+ ['calendar-access', 'extended-mkcol'],
+ $result
);
- $result = $client->request('PUT', 'bar','newcontent');
-
- $this->assertEquals('http://example.org/foo/bar/bar', $client->url);
- $this->assertEquals(array(
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_FOLLOWLOCATION => true,
- CURLOPT_MAXREDIRS => 5,
- CURLOPT_CUSTOMREQUEST => "PUT",
- CURLOPT_POSTFIELDS => 'newcontent',
- CURLOPT_HEADER => true,
- CURLOPT_HTTPHEADER => array(),
- ), $client->curlSettings);
+ $request = $client->request;
+ $this->assertEquals('OPTIONS', $request->getMethod());
+ $this->assertEquals('/', $request->getUrl());
+ $this->assertEquals([
+ ], $request->getHeaders());
}
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/FSExt/FileTest.php b/vendor/sabre/dav/tests/Sabre/DAV/FSExt/FileTest.php
index 8947c6688..3708594e0 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/FSExt/FileTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/FSExt/FileTest.php
@@ -22,73 +22,90 @@ class FileTest extends \PHPUnit_Framework_TestCase {
function testPut() {
- $file = new File(SABRE_TEMPDIR . '/file.txt');
- $result = $file->put('New contents');
-
- $this->assertEquals('New contents',file_get_contents(SABRE_TEMPDIR . '/file.txt'));
- $this->assertEquals('"' . md5('New contents') . '"', $result);
+ $filename = SABRE_TEMPDIR . '/file.txt';
+ $file = new File($filename);
+ $result = $file->put('New contents');
+
+ $this->assertEquals('New contents',file_get_contents(SABRE_TEMPDIR . '/file.txt'));
+ $this->assertEquals(
+ '"' .
+ sha1(
+ fileinode($filename) .
+ filesize($filename ) .
+ filemtime($filename)
+ ) . '"',
+ $result
+ );
}
function testRange() {
- $file = new File(SABRE_TEMPDIR . '/file.txt');
- $file->put('0000000');
- $file->patch('111', 2, 3);
+ $file = new File(SABRE_TEMPDIR . '/file.txt');
+ $file->put('0000000');
+ $file->patch('111', 2, 3);
- $this->assertEquals('0001110',file_get_contents(SABRE_TEMPDIR . '/file.txt'));
+ $this->assertEquals('0001110',file_get_contents(SABRE_TEMPDIR . '/file.txt'));
}
function testRangeStream() {
- $stream = fopen('php://memory','r+');
- fwrite($stream, "222");
- rewind($stream);
+ $stream = fopen('php://memory','r+');
+ fwrite($stream, "222");
+ rewind($stream);
- $file = new File(SABRE_TEMPDIR . '/file.txt');
- $file->put('0000000');
- $file->patch($stream, 2, 3);
+ $file = new File(SABRE_TEMPDIR . '/file.txt');
+ $file->put('0000000');
+ $file->patch($stream, 2, 3);
- $this->assertEquals('0002220',file_get_contents(SABRE_TEMPDIR . '/file.txt'));
+ $this->assertEquals('0002220',file_get_contents(SABRE_TEMPDIR . '/file.txt'));
}
function testGet() {
- $file = new File(SABRE_TEMPDIR . '/file.txt');
- $this->assertEquals('Contents',stream_get_contents($file->get()));
+ $file = new File(SABRE_TEMPDIR . '/file.txt');
+ $this->assertEquals('Contents',stream_get_contents($file->get()));
}
function testDelete() {
- $file = new File(SABRE_TEMPDIR . '/file.txt');
- $file->delete();
+ $file = new File(SABRE_TEMPDIR . '/file.txt');
+ $file->delete();
- $this->assertFalse(file_exists(SABRE_TEMPDIR . '/file.txt'));
+ $this->assertFalse(file_exists(SABRE_TEMPDIR . '/file.txt'));
}
function testGetETag() {
- $file = new File(SABRE_TEMPDIR . '/file.txt');
- $this->assertEquals('"' . md5('Contents') . '"',$file->getETag());
-
+ $filename = SABRE_TEMPDIR . '/file.txt';
+ $file = new File($filename);
+ $this->assertEquals(
+ '"' .
+ sha1(
+ fileinode($filename) .
+ filesize($filename ) .
+ filemtime($filename)
+ ) . '"',
+ $file->getETag()
+ );
}
function testGetContentType() {
- $file = new File(SABRE_TEMPDIR . '/file.txt');
- $this->assertNull($file->getContentType());
+ $file = new File(SABRE_TEMPDIR . '/file.txt');
+ $this->assertNull($file->getContentType());
}
function testGetSize() {
- $file = new File(SABRE_TEMPDIR . '/file.txt');
- $this->assertEquals(8,$file->getSize());
+ $file = new File(SABRE_TEMPDIR . '/file.txt');
+ $this->assertEquals(8,$file->getSize());
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/FSExt/NodeTest.php b/vendor/sabre/dav/tests/Sabre/DAV/FSExt/NodeTest.php
deleted file mode 100644
index 275075b4c..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAV/FSExt/NodeTest.php
+++ /dev/null
@@ -1,178 +0,0 @@
-<?php
-
-namespace Sabre\DAV\FSExt;
-use Sabre\DAV;
-
-require_once 'Sabre/TestUtil.php';
-
-class NodeTest extends \PHPUnit_Framework_TestCase {
-
- function setUp() {
-
- mkdir(SABRE_TEMPDIR . '/dir');
- file_put_contents(SABRE_TEMPDIR . '/dir/file.txt', 'Contents');
- file_put_contents(SABRE_TEMPDIR . '/dir/file2.txt', 'Contents2');
-
- }
-
- function tearDown() {
-
- \Sabre\TestUtil::clearTempDir();
-
- }
-
- function testUpdateProperties() {
-
- $file = new File(SABRE_TEMPDIR . '/dir/file.txt');
- $properties = array(
- '{http://sabredav.org/NS/2010}test1' => 'foo',
- '{http://sabredav.org/NS/2010}test2' => 'bar',
- );
-
- $result = $file->updateProperties($properties);
- $expected = true;
-
- $this->assertEquals($expected, $result);
-
- $getProperties = $file->getProperties(array_keys($properties));
-
- $this->assertEquals($properties, $getProperties);
-
- }
-
- /**
- * @depends testUpdateProperties
- */
- function testUpdatePropertiesAgain() {
-
- $file = new File(SABRE_TEMPDIR . '/dir/file.txt');
- $mutations = array(
- '{http://sabredav.org/NS/2010}test1' => 'foo',
- '{http://sabredav.org/NS/2010}test2' => 'bar',
- );
-
- $result = $file->updateProperties($mutations);
-
- $this->assertEquals(true, $result);
-
- $mutations = array(
- '{http://sabredav.org/NS/2010}test1' => 'foo',
- '{http://sabredav.org/NS/2010}test3' => 'baz',
- );
-
- $result = $file->updateProperties($mutations);
-
- $this->assertEquals(true, $result);
- }
-
- /**
- * @depends testUpdateProperties
- */
- function testUpdatePropertiesDelete() {
-
- $file = new File(SABRE_TEMPDIR . '/dir/file.txt');
-
- $mutations = array(
- '{http://sabredav.org/NS/2010}test1' => 'foo',
- '{http://sabredav.org/NS/2010}test2' => 'bar',
- );
-
- $result = $file->updateProperties($mutations);
-
- $this->assertEquals(true, $result);
-
- $mutations = array(
- '{http://sabredav.org/NS/2010}test1' => null,
- '{http://sabredav.org/NS/2010}test3' => null
- );
-
- $result = $file->updateProperties($mutations);
-
- $this->assertEquals(true, $result);
-
- $properties = $file->getProperties(array('http://sabredav.org/NS/2010}test1','{http://sabredav.org/NS/2010}test2','{http://sabredav.org/NS/2010}test3'));
-
- $this->assertEquals(array(
- '{http://sabredav.org/NS/2010}test2' => 'bar',
- ), $properties);
- }
-
- /**
- * @depends testUpdateProperties
- */
- function testUpdatePropertiesMove() {
-
- $file = new File(SABRE_TEMPDIR . '/dir/file.txt');
-
- $mutations = array(
- '{http://sabredav.org/NS/2010}test1' => 'foo',
- '{http://sabredav.org/NS/2010}test2' => 'bar',
- );
-
- $result = $file->updateProperties($mutations);
-
- $this->assertEquals(true, $result);
-
- $properties = $file->getProperties(array('{http://sabredav.org/NS/2010}test1','{http://sabredav.org/NS/2010}test2','{http://sabredav.org/NS/2010}test3'));
-
- $this->assertEquals(array(
- '{http://sabredav.org/NS/2010}test1' => 'foo',
- '{http://sabredav.org/NS/2010}test2' => 'bar',
- ), $properties);
-
- // Renaming
- $file->setName('file3.txt');
-
- $this->assertFalse(file_exists(SABRE_TEMPDIR . '/dir/file.txt'));
- $this->assertTrue(file_exists(SABRE_TEMPDIR . '/dir/file3.txt'));
- $this->assertEquals('file3.txt',$file->getName());
-
- $newFile = new File(SABRE_TEMPDIR . '/dir/file3.txt');
- $this->assertEquals('file3.txt',$newFile->getName());
-
- $properties = $newFile->getProperties(array('{http://sabredav.org/NS/2010}test1','{http://sabredav.org/NS/2010}test2','{http://sabredav.org/NS/2010}test3'));
-
- $this->assertEquals(array(
- '{http://sabredav.org/NS/2010}test1' => 'foo',
- '{http://sabredav.org/NS/2010}test2' => 'bar',
- ), $properties);
- }
-
- /**
- * @depends testUpdatePropertiesMove
- */
- function testUpdatePropertiesDeleteBleed() {
-
- $file = new File(SABRE_TEMPDIR . '/dir/file.txt');
- $mutations = array(
- '{http://sabredav.org/NS/2010}test1' => 'foo',
- '{http://sabredav.org/NS/2010}test2' => 'bar',
- );
-
- $result = $file->updateProperties($mutations);
-
- $this->assertEquals(true, $result);
-
- $properties = $file->getProperties(array('{http://sabredav.org/NS/2010}test1','{http://sabredav.org/NS/2010}test2','{http://sabredav.org/NS/2010}test3'));
-
- $this->assertEquals(array(
- '{http://sabredav.org/NS/2010}test1' => 'foo',
- '{http://sabredav.org/NS/2010}test2' => 'bar',
- ), $properties);
-
- // Deleting
- $file->delete();
-
- $this->assertFalse(file_exists(SABRE_TEMPDIR . '/dir/file.txt'));
-
- // Creating it again
- file_put_contents(SABRE_TEMPDIR . '/dir/file.txt','New Contents');
- $file = new File(SABRE_TEMPDIR . '/dir/file.txt');
-
- $properties = $file->getProperties(array('http://sabredav.org/NS/2010}test1','{http://sabredav.org/NS/2010}test2','{http://sabredav.org/NS/2010}test3'));
-
- $this->assertEquals(array(), $properties);
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/FSExt/ServerTest.php b/vendor/sabre/dav/tests/Sabre/DAV/FSExt/ServerTest.php
index 907ede40b..63d858de1 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/FSExt/ServerTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/FSExt/ServerTest.php
@@ -17,116 +17,98 @@ class ServerTest extends DAV\AbstractServer{
function testGet() {
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'GET',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
+ $request = new HTTP\Request('GET', '/test.txt');
+ $filename = $this->tempDir . '/test.txt';
+ $this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals(array(
- 'Content-Type' => 'application/octet-stream',
- 'Content-Length' => 13,
- 'Last-Modified' => HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($this->tempDir . '/test.txt'))),
- 'ETag' => '"' .md5_file($this->tempDir . '/test.txt') . '"',
- ),
- $this->response->headers
+ $this->assertEquals(200, $this->response->getStatus(), 'Invalid status code received.');
+ $this->assertEquals([
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/octet-stream'],
+ 'Content-Length' => [13],
+ 'Last-Modified' => [HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($filename)))],
+ 'ETag' => ['"' . sha1(fileinode($filename ) . filesize($filename) . filemtime($filename)) . '"'],
+ ],
+ $this->response->getHeaders()
);
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
+
$this->assertEquals('Test contents', stream_get_contents($this->response->body));
}
function testHEAD() {
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'HEAD',
- );
-
- $request = new HTTP\Request($serverVars);
+ $request = new HTTP\Request('HEAD', '/test.txt');
+ $filename = $this->tempDir . '/test.txt';
$this->server->httpRequest = ($request);
$this->server->exec();
- $this->assertEquals(array(
- 'Content-Type' => 'application/octet-stream',
- 'Content-Length' => 13,
- 'Last-Modified' => HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($this->tempDir . '/test.txt'))),
- 'ETag' => '"' . md5_file($this->tempDir . '/test.txt') . '"',
- ),
- $this->response->headers
+ $this->assertEquals([
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/octet-stream'],
+ 'Content-Length' => [13],
+ 'Last-Modified' => [HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($this->tempDir . '/test.txt')))],
+ 'ETag' => ['"' . sha1(fileinode($filename ) . filesize($filename) . filemtime($filename)) . '"'],
+ ],
+ $this->response->getHeaders()
);
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
+ $this->assertEquals(200,$this->response->status);
$this->assertEquals('', $this->response->body);
}
function testPut() {
- $serverVars = array(
- 'REQUEST_URI' => '/testput.txt',
- 'REQUEST_METHOD' => 'PUT',
- );
-
- $request = new HTTP\Request($serverVars);
+ $request = new HTTP\Request('PUT', '/testput.txt');
+ $filename = $this->tempDir . '/testput.txt';
$request->setBody('Testing new file');
$this->server->httpRequest = ($request);
$this->server->exec();
- $this->assertEquals(array(
- 'Content-Length' => 0,
- 'ETag' => '"' . md5('Testing new file') . '"',
- ), $this->response->headers);
+ $this->assertEquals([
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Length' => ['0'],
+ 'ETag' => ['"' . sha1(fileinode($filename ) . filesize($filename) . filemtime($filename)) . '"'],
+ ], $this->response->getHeaders());
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status);
+ $this->assertEquals(201, $this->response->status);
$this->assertEquals('', $this->response->body);
- $this->assertEquals('Testing new file',file_get_contents($this->tempDir . '/testput.txt'));
+ $this->assertEquals('Testing new file',file_get_contents($filename));
}
function testPutAlreadyExists() {
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'PUT',
- 'HTTP_IF_NONE_MATCH' => '*',
- );
-
- $request = new HTTP\Request($serverVars);
+ $request = new HTTP\Request('PUT', '/test.txt', ['If-None-Match' => '*']);
$request->setBody('Testing new file');
$this->server->httpRequest = ($request);
$this->server->exec();
- $this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),$this->response->headers);
+ $this->assertEquals([
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ],$this->response->getHeaders());
- $this->assertEquals('HTTP/1.1 412 Precondition failed',$this->response->status);
+ $this->assertEquals(412, $this->response->status);
$this->assertNotEquals('Testing new file',file_get_contents($this->tempDir . '/test.txt'));
}
function testMkcol() {
- $serverVars = array(
- 'REQUEST_URI' => '/testcol',
- 'REQUEST_METHOD' => 'MKCOL',
- );
-
- $request = new HTTP\Request($serverVars);
- $request->setBody("");
+ $request = new HTTP\Request('MKCOL', '/testcol');
$this->server->httpRequest = ($request);
$this->server->exec();
- $this->assertEquals(array(
- 'Content-Length' => '0',
- ),$this->response->headers);
+ $this->assertEquals([
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Length' => ['0'],
+ ],$this->response->getHeaders());
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status);
+ $this->assertEquals(201, $this->response->status);
$this->assertEquals('', $this->response->body);
$this->assertTrue(is_dir($this->tempDir . '/testcol'));
@@ -134,19 +116,14 @@ class ServerTest extends DAV\AbstractServer{
function testPutUpdate() {
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'PUT',
- );
-
- $request = new HTTP\Request($serverVars);
+ $request = new HTTP\Request('PUT', '/test.txt');
$request->setBody('Testing updated file');
$this->server->httpRequest = ($request);
$this->server->exec();
- $this->assertEquals('0', $this->response->headers['Content-Length']);
+ $this->assertEquals('0', $this->response->getHeader('Content-Length'));
- $this->assertEquals('HTTP/1.1 204 No Content',$this->response->status);
+ $this->assertEquals(204, $this->response->status);
$this->assertEquals('', $this->response->body);
$this->assertEquals('Testing updated file',file_get_contents($this->tempDir . '/test.txt'));
@@ -154,20 +131,16 @@ class ServerTest extends DAV\AbstractServer{
function testDelete() {
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'DELETE',
- );
-
- $request = new HTTP\Request($serverVars);
+ $request = new HTTP\Request('DELETE', '/test.txt');
$this->server->httpRequest = ($request);
$this->server->exec();
- $this->assertEquals(array(
- 'Content-Length' => '0',
- ),$this->response->headers);
+ $this->assertEquals([
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Length' => ['0'],
+ ],$this->response->getHeaders());
- $this->assertEquals('HTTP/1.1 204 No Content',$this->response->status);
+ $this->assertEquals(204, $this->response->status);
$this->assertEquals('', $this->response->body);
$this->assertFalse(file_exists($this->tempDir . '/test.txt'));
@@ -175,50 +148,99 @@ class ServerTest extends DAV\AbstractServer{
function testDeleteDirectory() {
- $serverVars = array(
- 'REQUEST_URI' => '/testcol',
- 'REQUEST_METHOD' => 'DELETE',
- );
-
mkdir($this->tempDir.'/testcol');
file_put_contents($this->tempDir.'/testcol/test.txt','Hi! I\'m a file with a short lifespan');
- $request = new HTTP\Request($serverVars);
+ $request = new HTTP\Request('DELETE', '/testcol');
$this->server->httpRequest = ($request);
$this->server->exec();
- $this->assertEquals(array(
- 'Content-Length' => '0',
- ),$this->response->headers);
- $this->assertEquals('HTTP/1.1 204 No Content',$this->response->status);
+ $this->assertEquals([
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Length' => ['0'],
+ ],$this->response->getHeaders());
+ $this->assertEquals(204, $this->response->status);
$this->assertEquals('', $this->response->body);
- $this->assertFalse(file_exists($this->tempDir . '/col'));
+ $this->assertFalse(file_exists($this->tempDir . '/testcol'));
}
function testOptions() {
- $serverVars = array(
- 'REQUEST_URI' => '/',
- 'REQUEST_METHOD' => 'OPTIONS',
- );
-
- $request = new HTTP\Request($serverVars);
+ $request = new HTTP\Request('OPTIONS', '/');
$this->server->httpRequest = ($request);
$this->server->exec();
- $this->assertEquals(array(
- 'DAV' => '1, 3, extended-mkcol',
- 'MS-Author-Via' => 'DAV',
- 'Allow' => 'OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT',
- 'Accept-Ranges' => 'bytes',
- 'Content-Length' => '0',
- 'X-Sabre-Version'=> DAV\Version::VERSION,
- ),$this->response->headers);
+ $this->assertEquals([
+ 'DAV' => ['1, 3, extended-mkcol'],
+ 'MS-Author-Via' => ['DAV'],
+ 'Allow' => ['OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT'],
+ 'Accept-Ranges' => ['bytes'],
+ 'Content-Length' => ['0'],
+ 'X-Sabre-Version'=> [DAV\Version::VERSION],
+ ], $this->response->getHeaders());
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
+ $this->assertEquals(200, $this->response->status);
$this->assertEquals('', $this->response->body);
}
+ function testMove() {
+
+ mkdir($this->tempDir.'/testcol');
+
+ $request = new HTTP\Request('MOVE', '/test.txt', ['Destination' => '/testcol/test2.txt']);
+ $this->server->httpRequest = ($request);
+ $this->server->exec();
+
+ $this->assertEquals(201, $this->response->status);
+ $this->assertEquals('', $this->response->body);
+
+ $this->assertEquals([
+ 'Content-Length' => ['0'],
+ 'X-Sabre-Version'=> [DAV\Version::VERSION],
+ ],$this->response->getHeaders());
+
+ $this->assertTrue(
+ is_file($this->tempDir . '/testcol/test2.txt')
+ );
+
+
+ }
+
+ /**
+ * This test checks if it's possible to move a non-FSExt collection into a
+ * FSExt collection.
+ *
+ * The moveInto function *should* ignore the object and let sabredav itself
+ * execute the slow move.
+ */
+ function testMoveOtherObject() {
+
+ mkdir($this->tempDir.'/tree1');
+ mkdir($this->tempDir.'/tree2');
+
+ $tree = new DAV\Tree(new DAV\SimpleCollection('root', [
+ new DAV\FS\Directory($this->tempDir . '/tree1'),
+ new DAV\FSExt\Directory($this->tempDir . '/tree2'),
+ ]));
+ $this->server->tree = $tree;
+
+ $request = new HTTP\Request('MOVE', '/tree1', ['Destination' => '/tree2/tree1']);
+ $this->server->httpRequest = ($request);
+ $this->server->exec();
+
+ $this->assertEquals(201, $this->response->status);
+ $this->assertEquals('', $this->response->body);
+
+ $this->assertEquals([
+ 'Content-Length' => ['0'],
+ 'X-Sabre-Version'=> [DAV\Version::VERSION],
+ ],$this->response->getHeaders());
+
+ $this->assertTrue(
+ is_dir($this->tempDir . '/tree2/tree1')
+ );
+
+ }
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/HTTPPreferParsingTest.php b/vendor/sabre/dav/tests/Sabre/DAV/HTTPPreferParsingTest.php
index 45865b2a1..cd8bee968 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/HTTPPreferParsingTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/HTTPPreferParsingTest.php
@@ -4,105 +4,96 @@ namespace Sabre\DAV;
use Sabre\HTTP;
-class HTTPPReferParsingTest extends \Sabre\DAVServerTest {
+class HTTPPreferParsingTest extends \Sabre\DAVServerTest {
function testParseSimple() {
- $httpRequest = new HTTP\Request(array(
+ $httpRequest = HTTP\Sapi::createFromServerArray([
'HTTP_PREFER' => 'return-asynch',
- ));
+ ]);
$server = new Server();
$server->httpRequest = $httpRequest;
- $this->assertEquals(array(
- 'return-asynch' => true,
- 'return-minimal' => false,
- 'return-representation' => false,
- 'strict' => false,
- 'lenient' => false,
- 'wait' => null,
- ), $server->getHTTPPrefer());
+ $this->assertEquals([
+ 'respond-async' => true,
+ 'return' => null,
+ 'handling' => null,
+ 'wait' => null,
+ ], $server->getHTTPPrefer());
}
function testParseValue() {
- $httpRequest = new HTTP\Request(array(
+ $httpRequest = HTTP\Sapi::createFromServerArray([
'HTTP_PREFER' => 'wait=10',
- ));
+ ]);
$server = new Server();
$server->httpRequest = $httpRequest;
- $this->assertEquals(array(
- 'return-asynch' => false,
- 'return-minimal' => false,
- 'return-representation' => false,
- 'strict' => false,
- 'lenient' => false,
- 'wait' => 10,
- ), $server->getHTTPPrefer());
+ $this->assertEquals([
+ 'respond-async' => false,
+ 'return' => null,
+ 'handling' => null,
+ 'wait' => '10',
+ ], $server->getHTTPPrefer());
}
function testParseMultiple() {
- $httpRequest = new HTTP\Request(array(
+ $httpRequest = HTTP\Sapi::createFromServerArray([
'HTTP_PREFER' => 'return-minimal, strict,lenient',
- ));
+ ]);
$server = new Server();
$server->httpRequest = $httpRequest;
- $this->assertEquals(array(
- 'return-asynch' => false,
- 'return-minimal' => true,
- 'return-representation' => false,
- 'strict' => true,
- 'lenient' => true,
- 'wait' => null,
- ), $server->getHTTPPrefer());
+ $this->assertEquals([
+ 'respond-async' => false,
+ 'return' => 'minimal',
+ 'handling' => 'lenient',
+ 'wait' => null,
+ ], $server->getHTTPPrefer());
}
function testParseWeirdValue() {
- $httpRequest = new HTTP\Request(array(
+ $httpRequest = HTTP\Sapi::createFromServerArray([
'HTTP_PREFER' => 'BOOOH',
- ));
+ ]);
$server = new Server();
$server->httpRequest = $httpRequest;
- $this->assertEquals(array(
- 'strict' => false,
- 'lenient' => false,
- 'wait' => null,
- 'return-asynch' => false,
- 'return-minimal' => false,
- 'return-representation' => false,
- ), $server->getHTTPPrefer());
+ $this->assertEquals([
+ 'respond-async' => false,
+ 'return' => null,
+ 'handling' => null,
+ 'wait' => null,
+ 'boooh' => true,
+ ], $server->getHTTPPrefer());
}
function testBrief() {
- $httpRequest = new HTTP\Request(array(
+ $httpRequest = HTTP\Sapi::createFromServerArray([
'HTTP_BRIEF' => 't',
- ));
+ ]);
$server = new Server();
$server->httpRequest = $httpRequest;
- $this->assertEquals(array(
- 'strict' => false,
- 'lenient' => false,
- 'wait' => null,
- 'return-asynch' => false,
- 'return-minimal' => true,
- 'return-representation' => false,
- ), $server->getHTTPPrefer());
+ $this->assertEquals([
+ 'respond-async' => false,
+ 'return' => 'minimal',
+ 'handling' => null,
+ 'wait' => null,
+ ], $server->getHTTPPrefer());
}
@@ -113,11 +104,11 @@ class HTTPPReferParsingTest extends \Sabre\DAVServerTest {
*/
function testpropfindMinimal() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray([
'REQUEST_METHOD' => 'PROPFIND',
'REQUEST_URI' => '/',
- 'HTTP_PREFER' => 'return-minimal',
- ));
+ 'HTTP_PREFER' => 'return-minimal',
+ ]);
$request->setBody(<<<BLA
<?xml version="1.0"?>
<d:propfind xmlns:d="DAV:">
@@ -131,70 +122,67 @@ BLA
$response = $this->request($request);
- $this->assertTrue(strpos($response->body, 'resourcetype')!==false);
- $this->assertTrue(strpos($response->body, 'something')===false);
+ $body = $response->getBodyAsString();
+
+ $this->assertEquals(207, $response->getStatus(), $body);
+
+ $this->assertTrue(strpos($body, 'resourcetype') !== false, $body);
+ $this->assertTrue(strpos($body, 'something') === false, $body);
}
function testproppatchMinimal() {
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'PROPPATCH',
- 'REQUEST_URI' => '/',
- 'HTTP_PREFER' => 'return-minimal',
- ));
+ $request = new HTTP\Request('PROPPATCH', '/', ['Prefer' => 'return-minimal']);
$request->setBody(<<<BLA
<?xml version="1.0"?>
-<d:proppatch xmlns:d="DAV:">
+<d:propertyupdate xmlns:d="DAV:">
<d:set>
<d:prop>
<d:something>nope!</d:something>
</d:prop>
</d:set>
-</d:proppatch>
+</d:propertyupdate>
BLA
);
- $this->server->subscribeEvent('updateProperties', function(&$props, &$result) {
+ $this->server->on('propPatch', function($path, PropPatch $propPatch) {
- if (isset($props['{DAV:}something'])) {
- unset($props['{DAV:}something']);
- $result[200]['{DAV:}something'] = null;
- }
+ $propPatch->handle('{DAV:}something', function($props) {
+ return true;
+ });
});
$response = $this->request($request);
$this->assertEquals(0, strlen($response->body), 'Expected empty body: ' . $response->body);
- $this->assertEquals('HTTP/1.1 204 No Content', $response->status);
+ $this->assertEquals(204, $response->status);
}
function testproppatchMinimalError() {
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'PROPPATCH',
- 'REQUEST_URI' => '/',
- 'HTTP_PREFER' => 'return-minimal',
- ));
+ $request = new HTTP\Request('PROPPATCH', '/', ['Prefer' => 'return-minimal']);
$request->setBody(<<<BLA
<?xml version="1.0"?>
-<d:proppatch xmlns:d="DAV:">
+<d:propertyupdate xmlns:d="DAV:">
<d:set>
<d:prop>
<d:something>nope!</d:something>
</d:prop>
</d:set>
-</d:proppatch>
+</d:propertyupdate>
BLA
);
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 207 Multi-Status', $response->status);
- $this->assertTrue(strpos($response->body, 'something')!==false);
- $this->assertTrue(strpos($response->body, 'HTTP/1.1 403 Forbidden')!==false);
+ $body = $response->getBodyAsString();
+
+ $this->assertEquals(207, $response->status);
+ $this->assertTrue(strpos($body, 'something') !== false);
+ $this->assertTrue(strpos($body, '403 Forbidden') !== false, $body);
}
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/HttpDeleteTest.php b/vendor/sabre/dav/tests/Sabre/DAV/HttpDeleteTest.php
index da28b6979..6c10afa9f 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/HttpDeleteTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/HttpDeleteTest.php
@@ -8,7 +8,7 @@ use Sabre\HTTP;
/**
* Tests related to the PUT request.
*
- * @copyright Copyright (C) 2007-2014 fruux GmbH. All rights reserved.
+ * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
@@ -21,13 +21,13 @@ class HttpDeleteTest extends DAVServerTest {
*/
public function setUpTree() {
- $this->tree = new Mock\Collection('root', array(
+ $this->tree = new Mock\Collection('root', [
'file1' => 'foo',
- 'dir' => array(
+ 'dir' => [
'subfile' => 'bar',
'subfile2' => 'baz',
- ),
- ));
+ ],
+ ]);
}
@@ -36,24 +36,22 @@ class HttpDeleteTest extends DAVServerTest {
*/
public function testDelete() {
- $request = new HTTP\Request(array(
- 'REQUEST_URI' => '/file1',
- 'REQUEST_METHOD' => 'DELETE',
- ));
+ $request = new HTTP\Request('DELETE', '/file1');
$response = $this->request($request);
$this->assertEquals(
- 'HTTP/1.1 204 No Content',
- $response->status,
- "Incorrect status code. Response body: " . $response->body
+ 204,
+ $response->getStatus(),
+ "Incorrect status code. Response body: " . $response->getBodyAsString()
);
$this->assertEquals(
- array(
- 'Content-Length' => '0',
- ),
- $response->headers
+ [
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Length' => ['0'],
+ ],
+ $response->getHeaders()
);
}
@@ -63,24 +61,22 @@ class HttpDeleteTest extends DAVServerTest {
*/
public function testDeleteDirectory() {
- $request = new HTTP\Request(array(
- 'REQUEST_URI' => '/dir',
- 'REQUEST_METHOD' => 'DELETE',
- ));
+ $request = new HTTP\Request('DELETE', '/dir');
$response = $this->request($request);
$this->assertEquals(
- 'HTTP/1.1 204 No Content',
- $response->status,
- "Incorrect status code. Response body: " . $response->body
+ 204,
+ $response->getStatus(),
+ "Incorrect status code. Response body: " . $response->getBodyAsString()
);
$this->assertEquals(
- array(
- 'Content-Length' => '0',
- ),
- $response->headers
+ [
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Length' => ['0'],
+ ],
+ $response->getHeaders()
);
}
@@ -90,17 +86,13 @@ class HttpDeleteTest extends DAVServerTest {
*/
public function testDeleteNotFound() {
- $request = new HTTP\Request(array(
- 'REQUEST_URI' => '/file2',
- 'REQUEST_METHOD' => 'DELETE',
- ));
-
+ $request = new HTTP\Request('DELETE', '/file2');
$response = $this->request($request);
$this->assertEquals(
- 'HTTP/1.1 404 Not Found',
- $response->status,
- "Incorrect status code. Response body: " . $response->body
+ 404,
+ $response->getStatus(),
+ "Incorrect status code. Response body: " . $response->getBodyAsString()
);
}
@@ -110,18 +102,16 @@ class HttpDeleteTest extends DAVServerTest {
*/
public function testDeletePreconditions() {
- $request = new HTTP\Request(array(
- 'REQUEST_URI' => '/file1',
- 'REQUEST_METHOD' => 'DELETE',
- 'HTTP_IF_MATCH' => '"' . md5('foo') . '"',
- ));
+ $request = new HTTP\Request('DELETE', '/file1', [
+ 'If-Match' => '"' . md5('foo') . '"',
+ ]);
$response = $this->request($request);
$this->assertEquals(
- 'HTTP/1.1 204 No Content',
- $response->status,
- "Incorrect status code. Response body: " . $response->body
+ 204,
+ $response->getStatus(),
+ "Incorrect status code. Response body: " . $response->getBodyAsString()
);
}
@@ -131,18 +121,16 @@ class HttpDeleteTest extends DAVServerTest {
*/
public function testDeletePreconditionsFailed() {
- $request = new HTTP\Request(array(
- 'REQUEST_URI' => '/file1',
- 'REQUEST_METHOD' => 'DELETE',
- 'HTTP_IF_MATCH' => '"' . md5('bar') . '"',
- ));
+ $request = new HTTP\Request('DELETE', '/file1', [
+ 'If-Match' => '"' . md5('bar') . '"',
+ ]);
$response = $this->request($request);
$this->assertEquals(
- 'HTTP/1.1 412 Precondition failed',
- $response->status,
- "Incorrect status code. Response body: " . $response->body
+ 412,
+ $response->getStatus(),
+ "Incorrect status code. Response body: " . $response->getBodyAsString()
);
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/HttpPutTest.php b/vendor/sabre/dav/tests/Sabre/DAV/HttpPutTest.php
index b14554595..eddaf3f22 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/HttpPutTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/HttpPutTest.php
@@ -8,12 +8,9 @@ use Sabre\HTTP;
/**
* Tests related to the PUT request.
*
- * @copyright Copyright (C) 2007-2014 fruux GmbH. All rights reserved.
+ * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
- * @covers Sabre\DAV\Server::httpPut
- * @covers Sabre\DAV\Server::createFile
- * @covers Sabre\DAV\Server::checkPreconditions
*/
class HttpPutTest extends DAVServerTest {
@@ -22,28 +19,24 @@ class HttpPutTest extends DAVServerTest {
*
* @return void
*/
- public function setUpTree() {
+ function setUpTree() {
- $this->tree = new Mock\Collection('root', array(
+ $this->tree = new Mock\Collection('root', [
'file1' => 'foo',
- ));
+ ]);
}
/**
* A successful PUT of a new file.
*/
- public function testPut() {
+ function testPut() {
- $request = new HTTP\Request(array(
- 'REQUEST_URI' => '/file2',
- 'REQUEST_METHOD' => 'PUT',
- ));
- $request->setBody('hello');
+ $request = new HTTP\Request('PUT', '/file2', [], 'hello');
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 201 Created', $response->status);
+ $this->assertEquals(201, $response->getStatus(), 'Incorrect status code received. Full response body:' . $response->getBodyAsString());
$this->assertEquals(
'hello',
@@ -51,11 +44,12 @@ class HttpPutTest extends DAVServerTest {
);
$this->assertEquals(
- array(
- 'Content-Length' => '0',
- 'ETag' => '"' . md5('hello') . '"'
- ),
- $response->headers
+ [
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Length' => ['0'],
+ 'ETag' => ['"' . md5('hello') . '"']
+ ],
+ $response->getHeaders()
);
}
@@ -65,17 +59,13 @@ class HttpPutTest extends DAVServerTest {
*
* @depends testPut
*/
- public function testPutExisting() {
+ function testPutExisting() {
- $request = new HTTP\Request(array(
- 'REQUEST_URI' => '/file1',
- 'REQUEST_METHOD' => 'PUT',
- ));
- $request->setBody('bar');
+ $request = new HTTP\Request('PUT', '/file1', [], 'bar');
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 204 No Content', $response->status);
+ $this->assertEquals(204, $response->getStatus());
$this->assertEquals(
'bar',
@@ -83,11 +73,12 @@ class HttpPutTest extends DAVServerTest {
);
$this->assertEquals(
- array(
- 'Content-Length' => '0',
- 'ETag' => '"' . md5('bar') . '"'
- ),
- $response->headers
+ [
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Length' => ['0'],
+ 'ETag' => ['"' . md5('bar') . '"']
+ ],
+ $response->getHeaders()
);
}
@@ -97,18 +88,18 @@ class HttpPutTest extends DAVServerTest {
*
* @depends testPutExisting
*/
- public function testPutExistingIfMatchStar() {
+ function testPutExistingIfMatchStar() {
- $request = new HTTP\Request(array(
- 'REQUEST_URI' => '/file1',
- 'REQUEST_METHOD' => 'PUT',
- 'HTTP_IF_MATCH' => '*',
- ));
- $request->setBody('hello');
+ $request = new HTTP\Request(
+ 'PUT',
+ '/file1',
+ ['If-Match' => '*'],
+ 'hello'
+ );
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 204 No Content', $response->status);
+ $this->assertEquals(204, $response->getStatus());
$this->assertEquals(
'hello',
@@ -116,11 +107,12 @@ class HttpPutTest extends DAVServerTest {
);
$this->assertEquals(
- array(
- 'Content-Length' => '0',
- 'ETag' => '"' . md5('hello') . '"'
- ),
- $response->headers
+ [
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Length' => ['0'],
+ 'ETag' => ['"' . md5('hello') . '"']
+ ],
+ $response->getHeaders()
);
}
@@ -130,18 +122,18 @@ class HttpPutTest extends DAVServerTest {
*
* @depends testPutExisting
*/
- public function testPutExistingIfMatchCorrect() {
+ function testPutExistingIfMatchCorrect() {
- $request = new HTTP\Request(array(
- 'REQUEST_URI' => '/file1',
- 'REQUEST_METHOD' => 'PUT',
- 'HTTP_IF_MATCH' => '"' . md5('foo') . '"',
- ));
- $request->setBody('hello');
+ $request = new HTTP\Request(
+ 'PUT',
+ '/file1',
+ ['If-Match' => '"' . md5('foo') . '"'],
+ 'hello'
+ );
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 204 No Content', $response->status);
+ $this->assertEquals(204, $response->status);
$this->assertEquals(
'hello',
@@ -149,11 +141,12 @@ class HttpPutTest extends DAVServerTest {
);
$this->assertEquals(
- array(
- 'Content-Length' => '0',
- 'ETag' => '"' . md5('hello') . '"'
- ),
- $response->headers
+ [
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Length' => ['0'],
+ 'ETag' => ['"' . md5('hello') . '"'],
+ ],
+ $response->getHeaders()
);
}
@@ -163,17 +156,17 @@ class HttpPutTest extends DAVServerTest {
*
* @depends testPut
*/
- public function testPutContentRange() {
+ function testPutContentRange() {
- $request = new HTTP\Request(array(
- 'REQUEST_URI' => '/file2',
- 'REQUEST_METHOD' => 'PUT',
- 'HTTP_CONTENT_RANGE' => 'bytes/100-200',
- ));
- $request->setBody('hello');
+ $request = new HTTP\Request(
+ 'PUT',
+ '/file2',
+ ['Content-Range' => 'bytes/100-200'],
+ 'hello'
+ );
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 501 Not Implemented', $response->status);
+ $this->assertEquals(400, $response->getStatus());
}
@@ -182,18 +175,18 @@ class HttpPutTest extends DAVServerTest {
*
* @depends testPut
*/
- public function testPutIfNoneMatchStar() {
+ function testPutIfNoneMatchStar() {
- $request = new HTTP\Request(array(
- 'REQUEST_URI' => '/file2',
- 'REQUEST_METHOD' => 'PUT',
- 'HTTP_IF_NONE_MATCH' => '*',
- ));
- $request->setBody('hello');
+ $request = new HTTP\Request(
+ 'PUT',
+ '/file2',
+ ['If-None-Match' => '*'],
+ 'hello'
+ );
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 201 Created', $response->status);
+ $this->assertEquals(201, $response->getStatus());
$this->assertEquals(
'hello',
@@ -201,11 +194,12 @@ class HttpPutTest extends DAVServerTest {
);
$this->assertEquals(
- array(
- 'Content-Length' => '0',
- 'ETag' => '"' . md5('hello') . '"'
- ),
- $response->headers
+ [
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Length' => ['0'],
+ 'ETag' => ['"' . md5('hello') . '"']
+ ],
+ $response->getHeaders()
);
}
@@ -215,18 +209,18 @@ class HttpPutTest extends DAVServerTest {
*
* @depends testPut
*/
- public function testPutIfMatchStar() {
+ function testPutIfMatchStar() {
- $request = new HTTP\Request(array(
- 'REQUEST_URI' => '/file2',
- 'REQUEST_METHOD' => 'PUT',
- 'HTTP_IF_MATCH' => '*',
- ));
- $request->setBody('hello');
+ $request = new HTTP\Request(
+ 'PUT',
+ '/file2',
+ ['If-Match' => '*'],
+ 'hello'
+ );
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 412 Precondition failed', $response->status);
+ $this->assertEquals(412, $response->getStatus());
}
@@ -235,18 +229,19 @@ class HttpPutTest extends DAVServerTest {
*
* @depends testPut
*/
- public function testPutExistingIfNoneMatchStar() {
+ function testPutExistingIfNoneMatchStar() {
- $request = new HTTP\Request(array(
- 'REQUEST_URI' => '/file1',
- 'REQUEST_METHOD' => 'PUT',
- 'HTTP_IF_NONE_MATCH' => '*',
- ));
+ $request = new HTTP\Request(
+ 'PUT',
+ '/file1',
+ ['If-None-Match' => '*'],
+ 'hello'
+ );
$request->setBody('hello');
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 412 Precondition failed', $response->status);
+ $this->assertEquals(412, $response->getStatus());
}
@@ -255,16 +250,17 @@ class HttpPutTest extends DAVServerTest {
*
* @depends testPut
*/
- public function testPutNoParent() {
+ function testPutNoParent() {
- $request = new HTTP\Request(array(
- 'REQUEST_URI' => '/file1/file2',
- 'REQUEST_METHOD' => 'PUT',
- ));
- $request->setBody('hello');
+ $request = new HTTP\Request(
+ 'PUT',
+ '/file1/file2',
+ [],
+ 'hello'
+ );
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 409 Conflict', $response->status);
+ $this->assertEquals(409, $response->getStatus());
}
@@ -275,18 +271,17 @@ class HttpPutTest extends DAVServerTest {
*
* @depends testPut
*/
- public function testFinderPutSuccess() {
-
- $request = new HTTP\Request(array(
- 'REQUEST_URI' => '/file2',
- 'REQUEST_METHOD' => 'PUT',
- 'HTTP_X_EXPECTED_ENTITY_LENGTH' => '5',
- ));
- $request->setBody('hello');
+ function testFinderPutSuccess() {
+ $request = new HTTP\Request(
+ 'PUT',
+ '/file2',
+ ['X-Expected-Entity-Length' => '5'],
+ 'hello'
+ );
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 201 Created', $response->status);
+ $this->assertEquals(201, $response->getStatus());
$this->assertEquals(
'hello',
@@ -294,11 +289,12 @@ class HttpPutTest extends DAVServerTest {
);
$this->assertEquals(
- array(
- 'Content-Length' => '0',
- 'ETag' => '"' . md5('hello') . '"'
- ),
- $response->headers
+ [
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Length' => ['0'],
+ 'ETag' => ['"' . md5('hello') . '"'],
+ ],
+ $response->getHeaders()
);
}
@@ -308,54 +304,45 @@ class HttpPutTest extends DAVServerTest {
*
* @depends testFinderPutSuccess
*/
- public function testFinderPutFail() {
+ function testFinderPutFail() {
- $request = new HTTP\Request(array(
- 'REQUEST_URI' => '/file2',
- 'REQUEST_METHOD' => 'PUT',
- 'HTTP_X_EXPECTED_ENTITY_LENGTH' => '5',
- ));
- $request->setBody('');
+ $request = new HTTP\Request(
+ 'PUT',
+ '/file2',
+ ['X-Expected-Entity-Length' => '5'],
+ ''
+ );
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 403 Forbidden', $response->status);
+ $this->assertEquals(403, $response->getStatus());
}
/**
* Plugins can intercept PUT. We need to make sure that works.
+ *
+ * @depends testPut
*/
- public function testPutIntercept() {
-
- $this->server->subscribeEvent('beforeBind', array($this, 'beforeBind'));
+ function testPutIntercept() {
- $request = new HTTP\Request(array(
- 'REQUEST_URI' => '/file2',
- 'REQUEST_METHOD' => 'PUT',
- ));
- $request->setBody('hello');
+ $this->server->on('beforeBind', function($uri) {
+ $this->server->httpResponse->setStatus(418);
+ return false;
+ });
+ $request = new HTTP\Request('PUT', '/file2', [], 'hello');
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 418 I\'m a teapot', $response->status);
+ $this->assertEquals(418, $response->getStatus(), 'Incorrect status code received. Full response body: ' .$response->getBodyAsString());
$this->assertFalse(
$this->server->tree->nodeExists('file2')
);
- $this->assertEquals(
- array(
- ),
- $response->headers
- );
-
- }
-
- public function beforeBind() {
-
- $this->server->httpResponse->sendStatus(418);
- return false;
+ $this->assertEquals([
+ 'X-Sabre-Version' => [Version::VERSION],
+ ], $response->getHeaders());
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Issue33Test.php b/vendor/sabre/dav/tests/Sabre/DAV/Issue33Test.php
index c3fba4aae..4ccb42fbb 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Issue33Test.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Issue33Test.php
@@ -28,11 +28,11 @@ class Issue33Test extends \PHPUnit_Framework_TestCase {
'HTTP_OVERWRITE' => 'F',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$server->httpRequest = $request;
- $info = $server->getCopyAndMoveInfo();
+ $info = $server->getCopyAndMoveInfo($request);
$this->assertEquals('%C3%A0fo%C3%B3', urlencode($info['destination']));
$this->assertFalse($info['destinationExists']);
@@ -47,7 +47,7 @@ class Issue33Test extends \PHPUnit_Framework_TestCase {
$dir->createDirectory('bar');
- $tree = new ObjectTree($dir);
+ $tree = new Tree($dir);
$tree->move('bar',urldecode('%C3%A0fo%C3%B3'));
$node = $tree->getNodeForPath(urldecode('%C3%A0fo%C3%B3'));
@@ -78,7 +78,7 @@ class Issue33Test extends \PHPUnit_Framework_TestCase {
'HTTP_OVERWRITE' => 'F',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('');
$response = new HTTP\ResponseMock();
@@ -89,13 +89,14 @@ class Issue33Test extends \PHPUnit_Framework_TestCase {
$dir->createDirectory('bar');
- $tree = new ObjectTree($dir);
+ $tree = new Tree($dir);
$server = new Server($tree);
$server->setBaseUri('/webdav/');
$server->httpRequest = $request;
$server->httpResponse = $response;
+ $server->sapi = new HTTP\SapiMock();
$server->exec();
$this->assertTrue(file_exists(SABRE_TEMPDIR . '/issue33/' . urldecode('%C3%A0fo%C3%B3')));
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/FSTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/FSTest.php
deleted file mode 100644
index 651abf786..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAV/Locks/Backend/FSTest.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-namespace Sabre\DAV\Locks\Backend;
-
-require_once 'Sabre/TestUtil.php';
-
-class FSTest extends AbstractTest {
-
- function getBackend() {
-
- \Sabre\TestUtil::clearTempDir();
- mkdir(SABRE_TEMPDIR . '/locks');
- $backend = new FS(SABRE_TEMPDIR . '/locks/');
- return $backend;
-
- }
-
- function tearDown() {
-
- \Sabre\TestUtil::clearTempDir();
-
- }
-
- function testGetLocksChildren() {
-
- // We're skipping this test. This doesn't work, and it will
- // never. The class is deprecated anyway.
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Locks/GetIfConditionsTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Locks/GetIfConditionsTest.php
deleted file mode 100644
index 7b2cd0db0..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAV/Locks/GetIfConditionsTest.php
+++ /dev/null
@@ -1,375 +0,0 @@
-<?php
-
-namespace Sabre\DAV\Locks;
-
-use Sabre\DAV;
-use Sabre\HTTP;
-
-require_once 'Sabre/HTTP/ResponseMock.php';
-require_once 'Sabre/DAV/AbstractServer.php';
-
-class GetIfConditionsTest extends DAV\AbstractServer {
-
- /**
- * @var Sabre\DAV\Locks\Plugin
- */
- protected $locksPlugin;
-
- function setUp() {
-
- parent::setUp();
- $locksPlugin = new Plugin();
- $this->server->addPlugin($locksPlugin);
- $this->locksPlugin = $locksPlugin;
-
- }
-
- function testNoConditions() {
-
- $serverVars = array(
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
-
- $conditions = $this->locksPlugin->getIfConditions();
- $this->assertEquals(array(),$conditions);
-
- }
-
- function testLockToken() {
-
- $serverVars = array(
- 'HTTP_IF' => '(<opaquelocktoken:token1>)',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
-
- $conditions = $this->locksPlugin->getIfConditions();
-
- $compare = array(
-
- array(
- 'uri' => '',
- 'tokens' => array(
- array(
- 1,
- 'opaquelocktoken:token1',
- '',
- ),
- ),
-
- ),
-
- );
-
- $this->assertEquals($compare,$conditions);
-
- }
-
- function testNotLockToken() {
-
- $serverVars = array(
- 'HTTP_IF' => '(Not <opaquelocktoken:token1>)',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
-
- $conditions = $this->locksPlugin->getIfConditions();
-
- $compare = array(
-
- array(
- 'uri' => '',
- 'tokens' => array(
- array(
- 0,
- 'opaquelocktoken:token1',
- '',
- ),
- ),
-
- ),
-
- );
- $this->assertEquals($compare,$conditions);
-
- }
-
- function testLockTokenUrl() {
-
- $serverVars = array(
- 'HTTP_IF' => '<http://www.example.com/> (<opaquelocktoken:token1>)',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
-
- $conditions = $this->locksPlugin->getIfConditions();
-
- $compare = array(
-
- array(
- 'uri' => 'http://www.example.com/',
- 'tokens' => array(
- array(
- 1,
- 'opaquelocktoken:token1',
- '',
- ),
- ),
-
- ),
-
- );
- $this->assertEquals($compare,$conditions);
-
- }
-
- function test2LockTokens() {
-
- $serverVars = array(
- 'HTTP_IF' => '(<opaquelocktoken:token1>) (Not <opaquelocktoken:token2>)',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
-
- $conditions = $this->locksPlugin->getIfConditions();
-
- $compare = array(
-
- array(
- 'uri' => '',
- 'tokens' => array(
- array(
- 1,
- 'opaquelocktoken:token1',
- '',
- ),
- array(
- 0,
- 'opaquelocktoken:token2',
- '',
- ),
- ),
-
- ),
-
- );
- $this->assertEquals($compare,$conditions);
-
- }
-
- function test2UriLockTokens() {
-
- $serverVars = array(
- 'HTTP_IF' => '<http://www.example.org/node1> (<opaquelocktoken:token1>) <http://www.example.org/node2> (Not <opaquelocktoken:token2>)',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
-
- $conditions = $this->locksPlugin->getIfConditions();
-
- $compare = array(
-
- array(
- 'uri' => 'http://www.example.org/node1',
- 'tokens' => array(
- array(
- 1,
- 'opaquelocktoken:token1',
- '',
- ),
- ),
- ),
- array(
- 'uri' => 'http://www.example.org/node2',
- 'tokens' => array(
- array(
- 0,
- 'opaquelocktoken:token2',
- '',
- ),
- ),
-
- ),
-
- );
- $this->assertEquals($compare,$conditions);
-
- }
-
- function test2UriMultiLockTokens() {
-
- $serverVars = array(
- 'HTTP_IF' => '<http://www.example.org/node1> (<opaquelocktoken:token1>) (<opaquelocktoken:token2>) <http://www.example.org/node2> (Not <opaquelocktoken:token3>)',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
-
- $conditions = $this->locksPlugin->getIfConditions();
-
- $compare = array(
-
- array(
- 'uri' => 'http://www.example.org/node1',
- 'tokens' => array(
- array(
- 1,
- 'opaquelocktoken:token1',
- '',
- ),
- array(
- 1,
- 'opaquelocktoken:token2',
- '',
- ),
- ),
- ),
- array(
- 'uri' => 'http://www.example.org/node2',
- 'tokens' => array(
- array(
- 0,
- 'opaquelocktoken:token3',
- '',
- ),
- ),
-
- ),
-
- );
- $this->assertEquals($compare,$conditions);
-
- }
-
- function testEtag() {
-
- $serverVars = array(
- 'HTTP_IF' => '([etag1])',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
-
- $conditions = $this->locksPlugin->getIfConditions();
-
- $compare = array(
-
- array(
- 'uri' => '',
- 'tokens' => array(
- array(
- 1,
- '',
- 'etag1',
- ),
- ),
- ),
-
- );
- $this->assertEquals($compare,$conditions);
-
- }
-
- function test2Etags() {
-
- $serverVars = array(
- 'HTTP_IF' => '<http://www.example.org/> ([etag1]) ([etag2])',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
-
- $conditions = $this->locksPlugin->getIfConditions();
-
- $compare = array(
-
- array(
- 'uri' => 'http://www.example.org/',
- 'tokens' => array(
- array(
- 1,
- '',
- 'etag1',
- ),
- array(
- 1,
- '',
- 'etag2',
- ),
- ),
- ),
-
- );
- $this->assertEquals($compare,$conditions);
-
- }
-
- function testComplexIf() {
-
- $serverVars = array(
- 'HTTP_IF' => '<http://www.example.org/node1> (<opaquelocktoken:token1> [etag1]) ' .
- '(Not <opaquelocktoken:token2>) ([etag2]) <http://www.example.org/node2> ' .
- '(<opaquelocktoken:token3>) (Not <opaquelocktoken:token4>) ([etag3])',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
-
- $conditions = $this->locksPlugin->getIfConditions();
-
- $compare = array(
-
- array(
- 'uri' => 'http://www.example.org/node1',
- 'tokens' => array(
- array(
- 1,
- 'opaquelocktoken:token1',
- 'etag1',
- ),
- array(
- 0,
- 'opaquelocktoken:token2',
- '',
- ),
- array(
- 1,
- '',
- 'etag2',
- ),
- ),
- ),
- array(
- 'uri' => 'http://www.example.org/node2',
- 'tokens' => array(
- array(
- 1,
- 'opaquelocktoken:token3',
- '',
- ),
- array(
- 0,
- 'opaquelocktoken:token4',
- '',
- ),
- array(
- 1,
- '',
- 'etag3',
- ),
- ),
- ),
-
- );
- $this->assertEquals($compare,$conditions);
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Locks/MSWordTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Locks/MSWordTest.php
index b3d7d447b..23f283796 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Locks/MSWordTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Locks/MSWordTest.php
@@ -10,6 +10,12 @@ require_once 'Sabre/TestUtil.php';
class MSWordTest extends \PHPUnit_Framework_TestCase {
+ function tearDown() {
+
+ \Sabre\TestUtil::clearTempDir();
+
+ }
+
function testLockEtc() {
mkdir(SABRE_TEMPDIR . '/mstest');
@@ -25,11 +31,12 @@ class MSWordTest extends \PHPUnit_Framework_TestCase {
$server->httpRequest = $this->getLockRequest();
$server->httpResponse = $response1;
+ $server->sapi = new HTTP\SapiMock();
$server->exec();
- $this->assertEquals('HTTP/1.1 201 Created', $server->httpResponse->status);
- $this->assertTrue(isset($server->httpResponse->headers['Lock-Token']));
- $lockToken = $server->httpResponse->headers['Lock-Token'];
+ $this->assertEquals(201, $server->httpResponse->getStatus(), 'Full response body:' . $response1->getBodyAsString());
+ $this->assertTrue(!!$server->httpResponse->getHeaders('Lock-Token'));
+ $lockToken = $server->httpResponse->getHeader('Lock-Token');
//sleep(10);
@@ -39,8 +46,8 @@ class MSWordTest extends \PHPUnit_Framework_TestCase {
$server->httpResponse = $response2;
$server->exec();
- $this->assertEquals('HTTP/1.1 201 Created', $server->httpResponse->status);
- $this->assertTrue(isset($server->httpResponse->headers['Lock-Token']));
+ $this->assertEquals(201, $server->httpResponse->status);
+ $this->assertTrue(!!$server->httpResponse->getHeaders('Lock-Token'));
//sleep(10);
@@ -49,19 +56,13 @@ class MSWordTest extends \PHPUnit_Framework_TestCase {
$server->httpResponse = $response3;
$server->exec();
- $this->assertEquals('HTTP/1.1 204 No Content', $server->httpResponse->status);
-
- }
-
- function tearDown() {
-
- \Sabre\TestUtil::clearTempDir();
+ $this->assertEquals(204, $server->httpResponse->status);
}
function getLockRequest() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'LOCK',
'HTTP_CONTENT_TYPE' => 'application/xml',
'HTTP_TIMEOUT' => 'Second-3600',
@@ -85,7 +86,7 @@ class MSWordTest extends \PHPUnit_Framework_TestCase {
}
function getLockRequest2() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'LOCK',
'HTTP_CONTENT_TYPE' => 'application/xml',
'HTTP_TIMEOUT' => 'Second-3600',
@@ -110,7 +111,7 @@ class MSWordTest extends \PHPUnit_Framework_TestCase {
function getPutRequest($lockToken) {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'PUT',
'REQUEST_URI' => '/Nouveau%20Microsoft%20Office%20Excel%20Worksheet.xlsx',
'HTTP_IF' => 'If: ('.$lockToken.')',
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Locks/PluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Locks/PluginTest.php
index caa1d0118..ef0e473ae 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Locks/PluginTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Locks/PluginTest.php
@@ -10,7 +10,7 @@ require_once 'Sabre/DAV/AbstractServer.php';
class PluginTest extends DAV\AbstractServer {
/**
- * @var Sabre\DAV\Locks\Plugin
+ * @var Plugin
*/
protected $locksPlugin;
@@ -24,62 +24,47 @@ class PluginTest extends DAV\AbstractServer {
}
- function testGetFeatures() {
-
- $this->assertEquals(array(2),$this->locksPlugin->getFeatures());
-
- }
+ function testGetInfo() {
- function testGetHTTPMethods() {
-
- $this->assertEquals(array('LOCK','UNLOCK'),$this->locksPlugin->getHTTPMethods(''));
+ $this->assertArrayHasKey(
+ 'name',
+ $this->locksPlugin->getPluginInfo()
+ );
}
- function testGetHTTPMethodsNoBackend() {
+ function testGetFeatures() {
- $locksPlugin = new Plugin();
- $this->server->addPlugin($locksPlugin);
- $this->assertEquals(array(),$locksPlugin->getHTTPMethods(''));
+ $this->assertEquals(array(2),$this->locksPlugin->getFeatures());
}
- function testUnknownMethodPassthough() {
+ function testGetHTTPMethods() {
- $this->assertNull($this->locksPlugin->unknownMethod('BLA','/'));
+ $this->assertEquals(array('LOCK','UNLOCK'),$this->locksPlugin->getHTTPMethods(''));
}
function testLockNoBody() {
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'LOCK',
- );
-
- $request = new HTTP\Request($serverVars);
- $request->setBody('');
- $this->server->httpRequest = ($request);
+ $request = new HTTP\Request('LOCK', '/test.txt');
+ $this->server->httpRequest = $request;
$this->server->exec();
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
),
- $this->response->headers
+ $this->response->getHeaders()
);
- $this->assertEquals('HTTP/1.1 400 Bad request',$this->response->status);
+ $this->assertEquals(400, $this->response->status);
}
function testLock() {
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'LOCK',
- );
-
- $request = new HTTP\Request($serverVars);
+ $request = new HTTP\Request('LOCK', '/test.txt');
$request->setBody('<?xml version="1.0"?>
<D:lockinfo xmlns:D="DAV:">
<D:lockscope><D:exclusive/></D:lockscope>
@@ -92,10 +77,10 @@ class PluginTest extends DAV\AbstractServer {
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
- $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->headers['Lock-Token'])===1,'We did not get a valid Locktoken back (' . $this->response->headers['Lock-Token'] . ')');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+ $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->getHeader('Lock-Token'))===1,'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')');
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status,'Got an incorrect status back. Response body: ' . $this->response->body);
+ $this->assertEquals(200, $this->response->status,'Got an incorrect status back. Response body: ' . $this->response->body);
$body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/","xmlns\\1=\"urn:DAV\"",$this->response->body);
$xml = simplexml_load_string($body);
@@ -127,7 +112,7 @@ class PluginTest extends DAV\AbstractServer {
$this->assertEquals('infinity',(string)$depth[0]);
$token = $xml->xpath('/d:prop/d:lockdiscovery/d:activelock/d:locktoken/d:href');
- $this->assertEquals($this->response->headers['Lock-Token'],'<' . (string)$token[0] . '>','Token in response body didn\'t match token in response header.');
+ $this->assertEquals($this->response->getHeader('Lock-Token'),'<' . (string)$token[0] . '>','Token in response body didn\'t match token in response header.');
}
@@ -136,12 +121,7 @@ class PluginTest extends DAV\AbstractServer {
*/
function testDoubleLock() {
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'LOCK',
- );
-
- $request = new HTTP\Request($serverVars);
+ $request = new HTTP\Request('LOCK', '/test.txt');
$request->setBody('<?xml version="1.0"?>
<D:lockinfo xmlns:D="DAV:">
<D:lockscope><D:exclusive/></D:lockscope>
@@ -159,9 +139,9 @@ class PluginTest extends DAV\AbstractServer {
$this->server->exec();
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
- $this->assertEquals('HTTP/1.1 423 Locked',$this->response->status);
+ $this->assertEquals(423, $this->response->status, 'Full response: ' . $this->response->body);
}
@@ -170,12 +150,7 @@ class PluginTest extends DAV\AbstractServer {
*/
function testLockRefresh() {
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'LOCK',
- );
-
- $request = new HTTP\Request($serverVars);
+ $request = new HTTP\Request('LOCK', '/test.txt');
$request->setBody('<?xml version="1.0"?>
<D:lockinfo xmlns:D="DAV:">
<D:lockscope><D:exclusive/></D:lockscope>
@@ -188,25 +163,55 @@ class PluginTest extends DAV\AbstractServer {
$this->server->httpRequest = $request;
$this->server->exec();
- $lockToken = $this->response->headers['Lock-Token'];
+ $lockToken = $this->response->getHeader('Lock-Token');
$this->response = new HTTP\ResponseMock();
$this->server->httpResponse = $this->response;
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'LOCK',
- 'HTTP_IF' => '(' . $lockToken . ')',
- );
- $request = new HTTP\Request($serverVars);
+ $request = new HTTP\Request('LOCK', '/test.txt', ['If' => '(' . $lockToken . ')' ]);
$request->setBody('');
+
+ $this->server->httpRequest = $request;
+ $this->server->exec();
+
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+
+ $this->assertEquals(200, $this->response->status,'We received an incorrect status code. Full response body: ' . $this->response->getBody());
+
+ }
+
+ /**
+ * @depends testLock
+ */
+ function testLockRefreshBadToken() {
+
+ $request = new HTTP\Request('LOCK', '/test.txt');
+ $request->setBody('<?xml version="1.0"?>
+<D:lockinfo xmlns:D="DAV:">
+ <D:lockscope><D:exclusive/></D:lockscope>
+ <D:locktype><D:write/></D:locktype>
+ <D:owner>
+ <D:href>http://example.org/~ejw/contact.html</D:href>
+ </D:owner>
+</D:lockinfo>');
+
$this->server->httpRequest = $request;
+ $this->server->exec();
+
+ $lockToken = $this->response->getHeader('Lock-Token');
+ $this->response = new HTTP\ResponseMock();
+ $this->server->httpResponse = $this->response;
+
+ $request = new HTTP\Request('LOCK', '/test.txt', ['If' => '(' . $lockToken . 'foobar) (<opaquelocktoken:anotherbadtoken>)' ]);
+ $request->setBody('');
+
+ $this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status,'We received an incorrect status code. Full response body: ' . $this->response->body);
+ $this->assertEquals(423, $this->response->getStatus(),'We received an incorrect status code. Full response body: ' . $this->response->getBody());
}
@@ -215,12 +220,7 @@ class PluginTest extends DAV\AbstractServer {
*/
function testLockNoFile() {
- $serverVars = array(
- 'REQUEST_URI' => '/notfound.txt',
- 'REQUEST_METHOD' => 'LOCK',
- );
-
- $request = new HTTP\Request($serverVars);
+ $request = new HTTP\Request('LOCK', '/notfound.txt');
$request->setBody('<?xml version="1.0"?>
<D:lockinfo xmlns:D="DAV:">
<D:lockscope><D:exclusive/></D:lockscope>
@@ -233,10 +233,10 @@ class PluginTest extends DAV\AbstractServer {
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
- $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->headers['Lock-Token'])===1,'We did not get a valid Locktoken back (' . $this->response->headers['Lock-Token'] . ')');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+ $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->getHeader('Lock-Token'))===1,'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')');
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status);
+ $this->assertEquals(201, $this->response->status);
}
@@ -245,22 +245,18 @@ class PluginTest extends DAV\AbstractServer {
*/
function testUnlockNoToken() {
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'UNLOCK',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
+ $request = new HTTP\Request('UNLOCK', '/test.txt');
+ $this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),
- $this->response->headers
+ $this->assertEquals([
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ],
+ $this->response->getHeaders()
);
- $this->assertEquals('HTTP/1.1 400 Bad request',$this->response->status);
+ $this->assertEquals(400, $this->response->status);
}
@@ -269,23 +265,18 @@ class PluginTest extends DAV\AbstractServer {
*/
function testUnlockBadToken() {
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'UNLOCK',
- 'HTTP_LOCK_TOKEN' => '<opaquelocktoken:blablabla>',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
+ $request = new HTTP\Request('UNLOCK', '/test.txt', ['Lock-Token' => '<opaquelocktoken:blablabla>']);
+ $this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),
- $this->response->headers
+ $this->assertEquals([
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ],
+ $this->response->getHeaders()
);
- $this->assertEquals('HTTP/1.1 409 Conflict',$this->response->status,'Got an incorrect status code. Full response body: ' . $this->response->body);
+ $this->assertEquals(409, $this->response->status, 'Got an incorrect status code. Full response body: ' . $this->response->body);
}
@@ -294,12 +285,7 @@ class PluginTest extends DAV\AbstractServer {
*/
function testLockPutNoToken() {
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'LOCK',
- );
-
- $request = new HTTP\Request($serverVars);
+ $request = new HTTP\Request('LOCK', '/test.txt');
$request->setBody('<?xml version="1.0"?>
<D:lockinfo xmlns:D="DAV:">
<D:lockscope><D:exclusive/></D:lockscope>
@@ -312,25 +298,20 @@ class PluginTest extends DAV\AbstractServer {
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
- $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->headers['Lock-Token'])===1,'We did not get a valid Locktoken back (' . $this->response->headers['Lock-Token'] . ')');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+ $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->getHeader('Lock-Token'))===1,'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')');
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
+ $this->assertEquals(200, $this->response->status);
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'PUT',
- );
-
- $request = new HTTP\Request($serverVars);
+ $request = new HTTP\Request('PUT', '/test.txt');
$request->setBody('newbody');
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
- $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->headers['Lock-Token'])===1,'We did not get a valid Locktoken back (' . $this->response->headers['Lock-Token'] . ')');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+ $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->getHeader('Lock-Token'))===1,'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')');
- $this->assertEquals('HTTP/1.1 423 Locked',$this->response->status);
+ $this->assertEquals(423, $this->response->status);
}
@@ -339,7 +320,7 @@ class PluginTest extends DAV\AbstractServer {
*/
function testUnlock() {
- $request = new HTTP\Request(array());
+ $request = new HTTP\Request('LOCK', '/test.txt');
$this->server->httpRequest = $request;
$request->setBody('<?xml version="1.0"?>
@@ -351,23 +332,20 @@ class PluginTest extends DAV\AbstractServer {
</D:owner>
</D:lockinfo>');
- $this->server->invokeMethod('LOCK','test.txt');
- $lockToken = $this->server->httpResponse->headers['Lock-Token'];
-
- $serverVars = array(
- 'HTTP_LOCK_TOKEN' => $lockToken,
- );
+ $this->server->invokeMethod($request, $this->server->httpResponse);
+ $lockToken = $this->server->httpResponse->getHeader('Lock-Token');
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
+ $request = new HTTP\Request('UNLOCK', '/test.txt', ['Lock-Token' => $lockToken]);
+ $this->server->httpRequest = $request;
$this->server->httpResponse = new HTTP\ResponseMock();
- $this->server->invokeMethod('UNLOCK', 'test.txt');
-
- $this->assertEquals('HTTP/1.1 204 No Content',$this->server->httpResponse->status,'Got an incorrect status code. Full response body: ' . $this->response->body);
- $this->assertEquals(array(
- 'Content-Length' => '0',
- ),
- $this->server->httpResponse->headers
+ $this->server->invokeMethod($request, $this->server->httpResponse);
+
+ $this->assertEquals(204,$this->server->httpResponse->status,'Got an incorrect status code. Full response body: ' . $this->response->body);
+ $this->assertEquals([
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Length' => ['0'],
+ ],
+ $this->server->httpResponse->getHeaders()
);
@@ -378,7 +356,7 @@ class PluginTest extends DAV\AbstractServer {
*/
function testUnlockWindowsBug() {
- $request = new HTTP\Request(array());
+ $request = new HTTP\Request('LOCK', '/test.txt');
$this->server->httpRequest = $request;
$request->setBody('<?xml version="1.0"?>
@@ -390,26 +368,23 @@ class PluginTest extends DAV\AbstractServer {
</D:owner>
</D:lockinfo>');
- $this->server->invokeMethod('LOCK','test.txt');
- $lockToken = $this->server->httpResponse->headers['Lock-Token'];
+ $this->server->invokeMethod($request, $this->server->httpResponse);
+ $lockToken = $this->server->httpResponse->getHeader('Lock-Token');
// See Issue 123
$lockToken = trim($lockToken,'<>');
- $serverVars = array(
- 'HTTP_LOCK_TOKEN' => $lockToken,
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
+ $request = new HTTP\Request('UNLOCK', '/test.txt', ['Lock-Token' => $lockToken]);
+ $this->server->httpRequest = $request;
$this->server->httpResponse = new HTTP\ResponseMock();
- $this->server->invokeMethod('UNLOCK', 'test.txt');
-
- $this->assertEquals('HTTP/1.1 204 No Content',$this->server->httpResponse->status,'Got an incorrect status code. Full response body: ' . $this->response->body);
- $this->assertEquals(array(
- 'Content-Length' => '0',
- ),
- $this->server->httpResponse->headers
+ $this->server->invokeMethod($request, $this->server->httpResponse);
+
+ $this->assertEquals(204, $this->server->httpResponse->status,'Got an incorrect status code. Full response body: ' . $this->response->body);
+ $this->assertEquals([
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Length' => ['0'],
+ ],
+ $this->server->httpResponse->getHeaders()
);
@@ -420,7 +395,10 @@ class PluginTest extends DAV\AbstractServer {
*/
function testLockRetainOwner() {
- $request = new HTTP\Request(array());
+ $request = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_URI' => '/test.txt',
+ 'REQUEST_METHOD' => 'LOCK',
+ ]);
$this->server->httpRequest = $request;
$request->setBody('<?xml version="1.0"?>
@@ -430,8 +408,8 @@ class PluginTest extends DAV\AbstractServer {
<D:owner>Evert</D:owner>
</D:lockinfo>');
- $this->server->invokeMethod('LOCK','test.txt');
- $lockToken = $this->server->httpResponse->headers['Lock-Token'];
+ $this->server->invokeMethod($request, $this->server->httpResponse);
+ $lockToken = $this->server->httpResponse->getHeader('Lock-Token');
$locks = $this->locksPlugin->getLocks('test.txt');
$this->assertEquals(1,count($locks));
@@ -450,7 +428,7 @@ class PluginTest extends DAV\AbstractServer {
'REQUEST_METHOD' => 'LOCK',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('<?xml version="1.0"?>
<D:lockinfo xmlns:D="DAV:">
<D:lockscope><D:exclusive/></D:lockscope>
@@ -463,10 +441,10 @@ class PluginTest extends DAV\AbstractServer {
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
- $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->headers['Lock-Token'])===1,'We did not get a valid Locktoken back (' . $this->response->headers['Lock-Token'] . ')');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+ $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->getHeader('Lock-Token'))===1,'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')');
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
+ $this->assertEquals(200, $this->response->status);
$serverVars = array(
'REQUEST_URI' => '/test.txt',
@@ -474,15 +452,16 @@ class PluginTest extends DAV\AbstractServer {
'HTTP_IF' => '(<opaquelocktoken:token1>)',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('newbody');
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
- $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->headers['Lock-Token'])===1,'We did not get a valid Locktoken back (' . $this->response->headers['Lock-Token'] . ')');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+ $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->getHeader('Lock-Token'))===1,'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')');
- $this->assertEquals('HTTP/1.1 412 Precondition failed',$this->response->status);
+ // $this->assertEquals('412 Precondition failed',$this->response->status);
+ $this->assertEquals(423, $this->response->status);
}
@@ -496,7 +475,7 @@ class PluginTest extends DAV\AbstractServer {
'REQUEST_METHOD' => 'LOCK',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('<?xml version="1.0"?>
<D:lockinfo xmlns:D="DAV:">
<D:lockscope><D:exclusive/></D:lockscope>
@@ -509,22 +488,22 @@ class PluginTest extends DAV\AbstractServer {
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
- $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->headers['Lock-Token'])===1,'We did not get a valid Locktoken back (' . $this->response->headers['Lock-Token'] . ')');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+ $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->getHeader('Lock-Token'))===1,'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')');
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
+ $this->assertEquals(200, $this->response->status);
$serverVars = array(
'REQUEST_URI' => '/dir',
'REQUEST_METHOD' => 'DELETE',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 423 Locked',$this->response->status);
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
+ $this->assertEquals(423, $this->response->status);
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
}
/**
@@ -537,7 +516,7 @@ class PluginTest extends DAV\AbstractServer {
'REQUEST_METHOD' => 'LOCK',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('<?xml version="1.0"?>
<D:lockinfo xmlns:D="DAV:">
<D:lockscope><D:exclusive/></D:lockscope>
@@ -550,23 +529,23 @@ class PluginTest extends DAV\AbstractServer {
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
- $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->headers['Lock-Token'])===1,'We did not get a valid Locktoken back (' . $this->response->headers['Lock-Token'] . ')');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+ $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->getHeader('Lock-Token'))===1,'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')');
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
+ $this->assertEquals(200, $this->response->status);
$serverVars = array(
'REQUEST_URI' => '/dir/child.txt',
'REQUEST_METHOD' => 'DELETE',
- 'HTTP_IF' => '(' . $this->response->headers['Lock-Token'] . ')',
+ 'HTTP_IF' => '(' . $this->response->getHeader('Lock-Token') . ')',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 204 No Content',$this->response->status);
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
+ $this->assertEquals(204, $this->response->status);
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
}
@@ -580,7 +559,7 @@ class PluginTest extends DAV\AbstractServer {
'REQUEST_METHOD' => 'LOCK',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('<?xml version="1.0"?>
<D:lockinfo xmlns:D="DAV:">
<D:lockscope><D:exclusive/></D:lockscope>
@@ -593,10 +572,10 @@ class PluginTest extends DAV\AbstractServer {
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
- $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->headers['Lock-Token'])===1,'We did not get a valid Locktoken back (' . $this->response->headers['Lock-Token'] . ')');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+ $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->getHeader('Lock-Token'))===1,'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')');
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
+ $this->assertEquals(200, $this->response->status);
$serverVars = array(
'REQUEST_URI' => '/dir/child.txt',
@@ -604,12 +583,12 @@ class PluginTest extends DAV\AbstractServer {
'HTTP_DESTINATION' => '/dir/child2.txt',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status,'Copy must succeed if only the source is locked, but not the destination');
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
+ $this->assertEquals(201, $this->response->status,'Copy must succeed if only the source is locked, but not the destination');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
}
/**
@@ -622,7 +601,7 @@ class PluginTest extends DAV\AbstractServer {
'REQUEST_METHOD' => 'LOCK',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('<?xml version="1.0"?>
<D:lockinfo xmlns:D="DAV:">
<D:lockscope><D:exclusive/></D:lockscope>
@@ -635,10 +614,10 @@ class PluginTest extends DAV\AbstractServer {
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
- $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->headers['Lock-Token'])===1,'We did not get a valid Locktoken back (' . $this->response->headers['Lock-Token'] . ')');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+ $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->getHeader('Lock-Token'))===1,'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')');
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status);
+ $this->assertEquals(201, $this->response->status);
$serverVars = array(
'REQUEST_URI' => '/dir/child.txt',
@@ -646,12 +625,12 @@ class PluginTest extends DAV\AbstractServer {
'HTTP_DESTINATION' => '/dir/child2.txt',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 423 Locked',$this->response->status,'Copy must succeed if only the source is locked, but not the destination');
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
+ $this->assertEquals(423, $this->response->status,'Copy must succeed if only the source is locked, but not the destination');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
}
@@ -665,7 +644,7 @@ class PluginTest extends DAV\AbstractServer {
'REQUEST_METHOD' => 'LOCK',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('<?xml version="1.0"?>
<D:lockinfo xmlns:D="DAV:">
<D:lockscope><D:exclusive/></D:lockscope>
@@ -678,10 +657,10 @@ class PluginTest extends DAV\AbstractServer {
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
- $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->headers['Lock-Token'])===1,'We did not get a valid Locktoken back (' . $this->response->headers['Lock-Token'] . ')');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+ $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->getHeader('Lock-Token'))===1,'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')');
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
+ $this->assertEquals(200, $this->response->status);
$serverVars = array(
'REQUEST_URI' => '/dir/child.txt',
@@ -689,12 +668,12 @@ class PluginTest extends DAV\AbstractServer {
'HTTP_DESTINATION' => '/dir/child2.txt',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 423 Locked',$this->response->status,'Copy must succeed if only the source is locked, but not the destination');
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
+ $this->assertEquals(423, $this->response->status,'Copy must succeed if only the source is locked, but not the destination');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
}
@@ -708,7 +687,7 @@ class PluginTest extends DAV\AbstractServer {
'REQUEST_METHOD' => 'LOCK',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('<?xml version="1.0"?>
<D:lockinfo xmlns:D="DAV:">
<D:lockscope><D:exclusive/></D:lockscope>
@@ -721,23 +700,23 @@ class PluginTest extends DAV\AbstractServer {
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
- $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->headers['Lock-Token'])===1,'We did not get a valid Locktoken back (' . $this->response->headers['Lock-Token'] . ')');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+ $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->getHeader('Lock-Token'))===1,'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')');
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
+ $this->assertEquals(200, $this->response->status);
$serverVars = array(
'REQUEST_URI' => '/dir/child.txt',
'REQUEST_METHOD' => 'MOVE',
'HTTP_DESTINATION' => '/dir/child2.txt',
- 'HTTP_IF' => '(' . $this->response->headers['Lock-Token'] . ')',
+ 'HTTP_IF' => '(' . $this->response->getHeader('Lock-Token') . ')',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status,'A valid lock-token was provided for the source, so this MOVE operation must succeed. Full response body: ' . $this->response->body);
+ $this->assertEquals(201, $this->response->status,'A valid lock-token was provided for the source, so this MOVE operation must succeed. Full response body: ' . $this->response->body);
}
@@ -751,7 +730,7 @@ class PluginTest extends DAV\AbstractServer {
'REQUEST_METHOD' => 'LOCK',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('<?xml version="1.0"?>
<D:lockinfo xmlns:D="DAV:">
<D:lockscope><D:exclusive/></D:lockscope>
@@ -764,10 +743,10 @@ class PluginTest extends DAV\AbstractServer {
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
- $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->headers['Lock-Token'])===1,'We did not get a valid Locktoken back (' . $this->response->headers['Lock-Token'] . ')');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+ $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->getHeader('Lock-Token'))===1,'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')');
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status);
+ $this->assertEquals(201, $this->response->status);
$serverVars = array(
'REQUEST_URI' => '/dir/child.txt',
@@ -775,12 +754,12 @@ class PluginTest extends DAV\AbstractServer {
'HTTP_DESTINATION' => '/dir/child2.txt',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 423 Locked',$this->response->status,'Copy must succeed if only the source is locked, but not the destination');
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
+ $this->assertEquals(423, $this->response->status,'Copy must succeed if only the source is locked, but not the destination');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
}
/**
@@ -794,7 +773,7 @@ class PluginTest extends DAV\AbstractServer {
'HTTP_DEPTH' => 'infinite',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('<?xml version="1.0"?>
<D:lockinfo xmlns:D="DAV:">
<D:lockscope><D:exclusive/></D:lockscope>
@@ -807,24 +786,24 @@ class PluginTest extends DAV\AbstractServer {
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
- $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->headers['Lock-Token'])===1,'We did not get a valid Locktoken back (' . $this->response->headers['Lock-Token'] . ')');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+ $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->getHeader('Lock-Token'))===1,'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')');
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
+ $this->assertEquals(200,$this->response->status);
$serverVars = array(
'REQUEST_URI' => '/dir/child.txt',
'REQUEST_METHOD' => 'MOVE',
'HTTP_DESTINATION' => '/dir/child2.txt',
- 'HTTP_IF' => '</dir> (' . $this->response->headers['Lock-Token'] . ')',
+ 'HTTP_IF' => '</dir> (' . $this->response->getHeader('Lock-Token') . ')',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status,'We locked the parent of both the source and destination, but the move didn\'t succeed.');
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
+ $this->assertEquals(201, $this->response->status,'We locked the parent of both the source and destination, but the move didn\'t succeed.');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
}
@@ -838,7 +817,7 @@ class PluginTest extends DAV\AbstractServer {
'REQUEST_METHOD' => 'LOCK',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('<?xml version="1.0"?>
<D:lockinfo xmlns:D="DAV:">
<D:lockscope><D:exclusive/></D:lockscope>
@@ -851,26 +830,65 @@ class PluginTest extends DAV\AbstractServer {
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
- $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->headers['Lock-Token'])===1,'We did not get a valid Locktoken back (' . $this->response->headers['Lock-Token'] . ')');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+ $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->getHeader('Lock-Token'))===1,'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')');
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
+ $this->assertEquals(200, $this->response->status);
$serverVars = array(
'REQUEST_URI' => '/test.txt',
'REQUEST_METHOD' => 'PUT',
- 'HTTP_IF' => '('.$this->response->headers['Lock-Token'].')',
+ 'HTTP_IF' => '('.$this->response->getHeader('Lock-Token').')',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('newbody');
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
- $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->headers['Lock-Token'])===1,'We did not get a valid Locktoken back (' . $this->response->headers['Lock-Token'] . ')');
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+ $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->getHeader('Lock-Token'))===1,'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')');
- $this->assertEquals('HTTP/1.1 204 No Content',$this->response->status);
+ $this->assertEquals(204, $this->response->status);
+
+ }
+
+ /**
+ * @depends testLock
+ */
+ function testLockPutUnrelatedToken() {
+
+ $request = new HTTP\Request('LOCK', '/unrelated.txt');
+ $request->setBody('<?xml version="1.0"?>
+<D:lockinfo xmlns:D="DAV:">
+ <D:lockscope><D:exclusive/></D:lockscope>
+ <D:locktype><D:write/></D:locktype>
+ <D:owner>
+ <D:href>http://example.org/~ejw/contact.html</D:href>
+ </D:owner>
+</D:lockinfo>');
+
+ $this->server->httpRequest = $request;
+ $this->server->exec();
+
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+ $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->getHeader('Lock-Token'))===1,'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')');
+
+ $this->assertEquals(201, $this->response->getStatus());
+
+ $request = new HTTP\Request(
+ 'PUT',
+ '/test.txt',
+ ['If' => '</unrelated.txt> ('.$this->response->getHeader('Lock-Token').')']
+ );
+ $request->setBody('newbody');
+ $this->server->httpRequest = $request;
+ $this->server->exec();
+
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+ $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->getHeader('Lock-Token'))===1,'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')');
+
+ $this->assertEquals(204, $this->response->status);
}
@@ -882,11 +900,11 @@ class PluginTest extends DAV\AbstractServer {
'HTTP_IF' => '(["etag1"])',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('newbody');
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 412 Precondition failed',$this->response->status);
+ $this->assertEquals(412, $this->response->status);
}
@@ -895,22 +913,27 @@ class PluginTest extends DAV\AbstractServer {
*/
function testPutWithCorrectETag() {
- // We need an etag-enabled file node.
- $tree = new DAV\ObjectTree(new DAV\FSExt\Directory(SABRE_TEMPDIR));
+ // We need an ETag-enabled file node.
+ $tree = new DAV\Tree(new DAV\FSExt\Directory(SABRE_TEMPDIR));
$this->server->tree = $tree;
- $etag = md5(file_get_contents(SABRE_TEMPDIR . '/test.txt'));
+ $filename = SABRE_TEMPDIR . '/test.txt';
+ $etag = sha1(
+ fileinode($filename) .
+ filesize($filename ) .
+ filemtime($filename)
+ );
$serverVars = array(
'REQUEST_URI' => '/test.txt',
'REQUEST_METHOD' => 'PUT',
'HTTP_IF' => '(["'.$etag.'"])',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('newbody');
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 204 No Content',$this->response->status, 'Incorrect status received. Full response body:' . $this->response->body);
+ $this->assertEquals(204, $this->response->status, 'Incorrect status received. Full response body:' . $this->response->body);
}
@@ -921,18 +944,17 @@ class PluginTest extends DAV\AbstractServer {
'REQUEST_METHOD' => 'DELETE',
'HTTP_IF' => '(["etag1"])',
);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
- $request = new HTTP\Request($serverVars);
- $request->setBody('newbody');
$this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 412 Precondition failed',$this->response->status);
+ $this->assertEquals(412, $this->response->status);
}
function testGetTimeoutHeader() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'HTTP_TIMEOUT' => 'second-100',
));
@@ -941,22 +963,21 @@ class PluginTest extends DAV\AbstractServer {
}
+ function testGetTimeoutHeaderTwoItems() {
- function testGetTimeoutHeaderNotSet() {
-
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
+ 'HTTP_TIMEOUT' => 'second-5, infinite',
));
$this->server->httpRequest = $request;
- $this->assertEquals(0, $this->locksPlugin->getTimeoutHeader());
+ $this->assertEquals(5, $this->locksPlugin->getTimeoutHeader());
}
-
function testGetTimeoutHeaderInfinite() {
- $request = new HTTP\Request(array(
- 'HTTP_TIMEOUT' => 'infinite',
+ $request = HTTP\Sapi::createFromServerArray(array(
+ 'HTTP_TIMEOUT' => 'infinite, second-5',
));
$this->server->httpRequest = $request;
@@ -969,7 +990,7 @@ class PluginTest extends DAV\AbstractServer {
*/
function testGetTimeoutHeaderInvalid() {
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'HTTP_TIMEOUT' => 'yourmom',
));
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Mock/Collection.php b/vendor/sabre/dav/tests/Sabre/DAV/Mock/Collection.php
index b2613ec9f..6ccab4f66 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Mock/Collection.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Mock/Collection.php
@@ -15,7 +15,7 @@ use Sabre\DAV;
* * a string, for a file
* * An instance of \Sabre\DAV\INode.
*
- * @copyright Copyright (C) 2007-2014 fruux GmbH. All rights reserved.
+ * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
@@ -32,10 +32,20 @@ class Collection extends DAV\Collection {
* @param array $children
* @return void
*/
- public function __construct($name, array $children = array(), Collection $parent = null) {
+ function __construct($name, array $children = [], Collection $parent = null) {
$this->name = $name;
- $this->children = $children;
+ foreach ($children as $key => $value) {
+ if (is_string($value)) {
+ $this->children[] = new File($key, $value, $this);
+ } elseif (is_array($value)) {
+ $this->children[] = new self($key, $value, $this);
+ } elseif ($value instanceof \Sabre\DAV\INode) {
+ $this->children[] = $value;
+ } else {
+ throw new \InvalidArgumentException('Unknown value passed in $children');
+ }
+ }
$this->parent = $parent;
}
@@ -47,7 +57,7 @@ class Collection extends DAV\Collection {
*
* @return string
*/
- public function getName() {
+ function getName() {
return $this->name;
@@ -77,12 +87,12 @@ class Collection extends DAV\Collection {
* @param resource|string $data Initial payload
* @return null|string
*/
- public function createFile($name, $data = null) {
+ function createFile($name, $data = null) {
if (is_resource($data)) {
$data = stream_get_contents($data);
}
- $this->children[$name] = $data;
+ $this->children[] = new File($name, $data, $this);
return '"' . md5($data) . '"';
}
@@ -93,9 +103,9 @@ class Collection extends DAV\Collection {
* @param string $name
* @return void
*/
- public function createDirectory($name) {
+ function createDirectory($name) {
- $this->children[$name] = array();
+ $this->children[] = new self($name);
}
@@ -104,22 +114,18 @@ class Collection extends DAV\Collection {
*
* @return \Sabre\DAV\INode[]
*/
- public function getChildren() {
+ function getChildren() {
- $result = array();
- foreach($this->children as $key=>$value) {
+ return $this->children;
- if ($value instanceof DAV\INode) {
- $result[] = $value;
- } elseif (is_array($value)) {
- $result[] = new Collection($key, $value, $this);
- } else {
- $result[] = new File($key, $value, $this);
- }
+ }
- }
+ /**
+ * Adds an already existing node to this collection.
+ */
+ function addNode(\Sabre\DAV\INode $node) {
- return $result;
+ $this->children[] = $node;
}
@@ -129,16 +135,11 @@ class Collection extends DAV\Collection {
* @param string $name
* @return void
*/
- public function deleteChild($name) {
+ function deleteChild($name) {
- foreach($this->children as $key=>$value) {
+ foreach ($this->children as $key => $value) {
- if ($value instanceof DAV\INode) {
- if ($value->getName() == $name) {
- unset($this->children[$key]);
- return;
- }
- } elseif ($key === $name) {
+ if ($value->getName() == $name) {
unset($this->children[$key]);
return;
}
@@ -152,9 +153,9 @@ class Collection extends DAV\Collection {
*
* @return void
*/
- public function delete() {
+ function delete() {
- foreach($this->getChildren() as $child) {
+ foreach ($this->getChildren() as $child) {
$this->deleteChild($child->getName());
}
$this->parent->deleteChild($this->getName());
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Mock/File.php b/vendor/sabre/dav/tests/Sabre/DAV/Mock/File.php
index 2b25bbb88..23855e3c5 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Mock/File.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Mock/File.php
@@ -9,7 +9,7 @@ use Sabre\DAV;
*
* See the Collection in this directory for more details.
*
- * @copyright Copyright (C) 2007-2014 fruux GmbH. All rights reserved.
+ * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
@@ -18,6 +18,7 @@ class File extends DAV\File {
protected $name;
protected $contents;
protected $parent;
+ protected $lastModified;
/**
* Creates the object
@@ -26,12 +27,18 @@ class File extends DAV\File {
* @param array $children
* @return void
*/
- public function __construct($name, $contents, Collection $parent) {
+ function __construct($name, $contents, Collection $parent = null, $lastModified = -1) {
$this->name = $name;
$this->put($contents);
$this->parent = $parent;
+ if ($lastModified === -1) {
+ $lastModified = time();
+ }
+
+ $this->lastModified = $lastModified;
+
}
/**
@@ -41,13 +48,24 @@ class File extends DAV\File {
*
* @return string
*/
- public function getName() {
+ function getName() {
return $this->name;
}
/**
+ * Changes the name of the node.
+ *
+ * @return void
+ */
+ function setName($name) {
+
+ $this->name = $name;
+
+ }
+
+ /**
* Updates the data
*
* The data argument is a readable stream resource.
@@ -67,7 +85,7 @@ class File extends DAV\File {
* @param resource $data
* @return string|null
*/
- public function put($data) {
+ function put($data) {
if (is_resource($data)) {
$data = stream_get_contents($data);
@@ -84,7 +102,7 @@ class File extends DAV\File {
*
* @return mixed
*/
- public function get() {
+ function get() {
return $this->contents;
@@ -99,7 +117,7 @@ class File extends DAV\File {
*
* @return void
*/
- public function getETag() {
+ function getETag() {
return '"' . md5($this->contents) . '"';
@@ -110,7 +128,7 @@ class File extends DAV\File {
*
* @return int
*/
- public function getSize() {
+ function getSize() {
return strlen($this->contents);
@@ -121,10 +139,22 @@ class File extends DAV\File {
*
* @return void
*/
- public function delete() {
+ function delete() {
$this->parent->deleteChild($this->name);
}
+ /**
+ * Returns the last modification time as a unix timestamp.
+ * If the information is not available, return null.
+ *
+ * @return int
+ */
+ function getLastModified() {
+
+ return $this->lastModified;
+
+ }
+
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Mount/PluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Mount/PluginTest.php
index e818fe043..e6415792c 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/Mount/PluginTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Mount/PluginTest.php
@@ -23,11 +23,11 @@ class PluginTest extends DAV\AbstractServer {
'REQUEST_METHOD' => 'GET',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$this->server->httpRequest = ($request);
$this->server->exec();
- $this->assertEquals('HTTP/1.1 501 Not Implemented',$this->response->status,'We expected GET to not be implemented for Directories. Response body: ' . $this->response->body);
+ $this->assertEquals(501, $this->response->status,'We expected GET to not be implemented for Directories. Response body: ' . $this->response->body);
}
@@ -40,14 +40,14 @@ class PluginTest extends DAV\AbstractServer {
'HTTP_HOST' => 'example.org',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$this->server->httpRequest = ($request);
$this->server->exec();
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
+ $this->assertEquals(200, $this->response->status);
$xml = simplexml_load_string($this->response->body);
- $this->assertTrue($xml==true,'Response was not a valid xml document');
+ $this->assertInstanceOf('SimpleXMLElement',$xml, 'Response was not a valid xml document. The list of errors:' . print_r(libxml_get_errors(),true) . '. xml body: ' . $this->response->body . '. What type we got: ' . gettype($xml) . ' class, if object: ' . get_class($xml));
$xml->registerXPathNamespace('dm','http://purl.org/NET/webdav/mount');
$url = $xml->xpath('//dm:url');
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ObjectTreeTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ObjectTreeTest.php
index 330058b6d..9b7eeb90c 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/ObjectTreeTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/ObjectTreeTest.php
@@ -16,7 +16,7 @@ class ObjectTreeTest extends \PHPUnit_Framework_TestCase {
file_put_contents(SABRE_TEMPDIR . '/root/file.txt','contents');
file_put_contents(SABRE_TEMPDIR . '/root/subdir/subfile.txt','subcontents');
$rootNode = new FSExt\Directory(SABRE_TEMPDIR . '/root');
- $this->tree = new ObjectTree($rootNode);
+ $this->tree = new Tree($rootNode);
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/FileMock.php b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/FileMock.php
index e8cdc1666..d6cc406be 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/FileMock.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/FileMock.php
@@ -3,7 +3,7 @@
namespace Sabre\DAV\PartialUpdate;
use Sabre\DAV;
-class FileMock implements IFile {
+class FileMock implements IPatchSupport {
protected $data = '';
@@ -16,14 +16,56 @@ class FileMock implements IFile {
}
- function putRange($str,$start) {
-
- if (is_resource($str)) {
- $str = stream_get_contents($str);
+ /**
+ * Updates the file based on a range specification.
+ *
+ * The first argument is the data, which is either a readable stream
+ * resource or a string.
+ *
+ * The second argument is the type of update we're doing.
+ * This is either:
+ * * 1. append
+ * * 2. update based on a start byte
+ * * 3. update based on an end byte
+ *;
+ * The third argument is the start or end byte.
+ *
+ * After a successful put operation, you may choose to return an ETag. The
+ * etag must always be surrounded by double-quotes. These quotes must
+ * appear in the actual string you're returning.
+ *
+ * Clients may use the ETag from a PUT request to later on make sure that
+ * when they update the file, the contents haven't changed in the mean
+ * time.
+ *
+ * @param resource|string $data
+ * @param int $rangeType
+ * @param int $offset
+ * @return string|null
+ */
+ function patch($data, $rangeType, $offset = null) {
+
+ if (is_resource($data)) {
+ $data = stream_get_contents($data);
}
- $this->data = substr($this->data, 0, $start) . $str . substr($this->data, $start + strlen($str));
+ switch($rangeType) {
+
+ case 1 :
+ $this->data.=$data;
+ break;
+ case 3 :
+ // Turn the offset into an offset-offset.
+ $offset = strlen($this->data) - $offset;
+ // No break is intentional
+ case 2 :
+ $this->data =
+ substr($this->data, 0, $offset) .
+ $data .
+ substr($this->data, $offset + strlen($data));
+ break;
+ }
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/PluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/PluginTest.php
index 32f7e4e2c..5bd696416 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/PluginTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/PluginTest.php
@@ -12,7 +12,7 @@ class PluginTest extends \Sabre\DAVServerTest {
protected $node;
protected $plugin;
- public function setUp() {
+ function setUp() {
$this->node = new FileMock();
$this->tree[] = $this->node;
@@ -26,124 +26,109 @@ class PluginTest extends \Sabre\DAVServerTest {
}
- public function testInit() {
+ function testInit() {
$this->assertEquals('partialupdate', $this->plugin->getPluginName());
- $this->assertEquals(array('sabredav-partialupdate'), $this->plugin->getFeatures());
- $this->assertEquals(array(
+ $this->assertEquals(['sabredav-partialupdate'], $this->plugin->getFeatures());
+ $this->assertEquals([
'PATCH'
- ), $this->plugin->getHTTPMethods('partial'));
- $this->assertEquals(array(
- ), $this->plugin->getHTTPMethods(''));
-
- $this->assertNull($this->plugin->unknownMethod('FOO','partial'));
+ ], $this->plugin->getHTTPMethods('partial'));
+ $this->assertEquals([
+ ], $this->plugin->getHTTPMethods(''));
}
- public function testPatchNoRange() {
+ function testPatchNoRange() {
- $this->node->put('00000000');
- $request = new HTTP\Request(array(
+ $this->node->put('aaaaaaaa');
+ $request = HTTP\Sapi::createFromServerArray([
'REQUEST_METHOD' => 'PATCH',
'REQUEST_URI' => '/partial',
- ));
+ ]);
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 400 Bad request', $response->status, 'Full response body:' . $response->body);
+ $this->assertEquals(400, $response->status, 'Full response body:' . $response->body);
}
- public function testPatchNotSupported() {
-
- $this->node->put('00000000');
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'PATCH',
- 'REQUEST_URI' => '/',
- 'X_UPDATE_RANGE' => '3-4',
+ function testPatchNotSupported() {
- ));
+ $this->node->put('aaaaaaaa');
+ $request = new HTTP\Request('PATCH', '/', ['X-Update-Range' => '3-4']);
$request->setBody(
- '111'
+ 'bbb'
);
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 405 Method Not Allowed', $response->status, 'Full response body:' . $response->body);
+ $this->assertEquals(405, $response->status, 'Full response body:' . $response->body);
}
- public function testPatchNoContentType() {
+ function testPatchNoContentType() {
- $this->node->put('00000000');
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'PATCH',
- 'REQUEST_URI' => '/partial',
- 'HTTP_X_UPDATE_RANGE' => 'bytes=3-4',
+ $this->node->put('aaaaaaaa');
+ $request = new HTTP\Request('PATCH', '/partial', ['X-Update-Range' => 'bytes=3-4']);
+ $request->setBody(
+ 'bbb'
+ );
+ $response = $this->request($request);
- ));
+ $this->assertEquals(415, $response->status, 'Full response body:' . $response->body);
+
+ }
+
+ function testPatchBadRange() {
+
+ $this->node->put('aaaaaaaa');
+ $request = new HTTP\Request('PATCH', '/partial', ['X-Update-Range' => 'bytes=3-4', 'Content-Type' => 'application/x-sabredav-partialupdate', 'Content-Length' => '3']);
$request->setBody(
- '111'
+ 'bbb'
);
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 415 Unsupported Media Type', $response->status, 'Full response body:' . $response->body);
+ $this->assertEquals(416, $response->status, 'Full response body:' . $response->body);
}
- public function testPatchBadRange() {
+ function testPatchNoLength() {
- $this->node->put('00000000');
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'PATCH',
- 'REQUEST_URI' => '/partial',
- 'HTTP_X_UPDATE_RANGE' => 'bytes=3-4',
- 'HTTP_CONTENT_TYPE' => 'application/x-sabredav-partialupdate',
- ));
+ $this->node->put('aaaaaaaa');
+ $request = new HTTP\Request('PATCH', '/partial', ['X-Update-Range' => 'bytes=3-5', 'Content-Type' => 'application/x-sabredav-partialupdate']);
$request->setBody(
- '111'
+ 'bbb'
);
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 411 Length Required', $response->status, 'Full response body:' . $response->body);
+ $this->assertEquals(411, $response->status, 'Full response body:' . $response->body);
}
- public function testPatchSuccess() {
+ function testPatchSuccess() {
- $this->node->put('00000000');
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'PATCH',
- 'REQUEST_URI' => '/partial',
- 'HTTP_X_UPDATE_RANGE' => 'bytes=3-5',
- 'HTTP_CONTENT_TYPE' => 'application/x-sabredav-partialupdate',
- 'HTTP_CONTENT_LENGTH' => 3,
- ));
+ $this->node->put('aaaaaaaa');
+ $request = new HTTP\Request('PATCH', '/partial', ['X-Update-Range' => 'bytes=3-5', 'Content-Type' => 'application/x-sabredav-partialupdate', 'Content-Length' => 3]);
$request->setBody(
- '111'
+ 'bbb'
);
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 204 No Content', $response->status, 'Full response body:' . $response->body);
- $this->assertEquals('00011100', $this->node->get());
+ $this->assertEquals(204, $response->status, 'Full response body:' . $response->body);
+ $this->assertEquals('aaabbbaa', $this->node->get());
}
- public function testPatchNoEndRange() {
+ function testPatchNoEndRange() {
- $this->node->put('00000');
- $request = new HTTP\Request(array(
- 'REQUEST_METHOD' => 'PATCH',
- 'REQUEST_URI' => '/partial',
- 'HTTP_X_UPDATE_RANGE' => 'bytes=3-',
- 'HTTP_CONTENT_TYPE' => 'application/x-sabredav-partialupdate',
- 'HTTP_CONTENT_LENGTH' => 3,
- ));
+ $this->node->put('aaaaa');
+ $request = new HTTP\Request('PATCH', '/partial', ['X-Update-Range' => 'bytes=3-', 'Content-Type' => 'application/x-sabredav-partialupdate', 'Content-Length' => '3']);
$request->setBody(
- '111'
+ 'bbb'
);
+
$response = $this->request($request);
- $this->assertEquals('HTTP/1.1 204 No Content', $response->status, 'Full response body:' . $response->body);
- $this->assertEquals('00111', $this->node->get());
+ $this->assertEquals(204, $response->getStatus(), 'Full response body:' . $response->getBodyAsString());
+ $this->assertEquals('aaabbb', $this->node->get());
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php
index 7abe69c55..31be2a1b1 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/PartialUpdate/SpecificationTest.php
@@ -42,21 +42,21 @@ class SpecificationTest extends \PHPUnit_Framework_TestCase {
*/
public function testUpdateRange($headerValue, $httpStatus, $endResult, $contentLength = 4) {
- $vars = array(
- 'REQUEST_METHOD' => 'PATCH',
- 'HTTP_CONTENT_TYPE' => 'application/x-sabredav-partialupdate',
- 'HTTP_X_UPDATE_RANGE' => $headerValue,
- 'REQUEST_URI' => '/foobar.txt',
- );
+ $headers = [
+ 'Content-Type' => 'application/x-sabredav-partialupdate',
+ 'X-Update-Range' => $headerValue,
+ ];
+
if ($contentLength) {
- $vars['HTTP_CONTENT_LENGTH'] = (string)$contentLength;
+ $headers['Content-Length'] = (string)$contentLength;
}
- $request = new HTTP\Request($vars);
+ $request = new HTTP\Request('PATCH', '/foobar.txt', $headers, '----');
$request->setBody('----');
$this->server->httpRequest = $request;
$this->server->httpResponse = new HTTP\ResponseMock();
+ $this->server->sapi = new HTTP\SapiMock();
$this->server->exec();
$this->assertEquals($httpStatus, $this->server->httpResponse->status, 'Incorrect http status received: ' . $this->server->httpResponse->body);
@@ -70,17 +70,17 @@ class SpecificationTest extends \PHPUnit_Framework_TestCase {
return array(
// Problems
- array('foo', 'HTTP/1.1 400 Bad request', null),
- array('bytes=0-3', 'HTTP/1.1 411 Length Required', null, 0),
- array('bytes=4-1', 'HTTP/1.1 416 Requested Range Not Satisfiable', null),
-
- array('bytes=0-3', 'HTTP/1.1 204 No Content', '----567890'),
- array('bytes=1-4', 'HTTP/1.1 204 No Content', '1----67890'),
- array('bytes=0-', 'HTTP/1.1 204 No Content', '----567890'),
- array('bytes=-4', 'HTTP/1.1 204 No Content', '123456----'),
- array('bytes=-2', 'HTTP/1.1 204 No Content', '12345678----'),
- array('bytes=2-', 'HTTP/1.1 204 No Content', '12----7890'),
- array('append', 'HTTP/1.1 204 No Content', '1234567890----'),
+ array('foo', 400, null),
+ array('bytes=0-3', 411, null, 0),
+ array('bytes=4-1', 416, null),
+
+ array('bytes=0-3', 204, '----567890'),
+ array('bytes=1-4', 204, '1----67890'),
+ array('bytes=0-', 204, '----567890'),
+ array('bytes=-4', 204, '123456----'),
+ array('bytes=-2', 204, '12345678----'),
+ array('bytes=2-', 204, '12----7890'),
+ array('append', 204, '1234567890----'),
);
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Property/GetLastModifiedTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Property/GetLastModifiedTest.php
deleted file mode 100644
index de8ca1283..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAV/Property/GetLastModifiedTest.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-
-namespace Sabre\DAV\Property;
-
-use Sabre\DAV;
-use Sabre\HTTP;
-
-class GetLastModifiedTest extends \PHPUnit_Framework_TestCase {
-
- function testConstructDateTime() {
-
- $dt = new \DateTime('2010-03-14 16:35', new \DateTimeZone('UTC'));
- $lastMod = new GetLastModified($dt);
- $this->assertEquals($dt->format(\DateTime::ATOM), $lastMod->getTime()->format(\DateTime::ATOM));
-
- }
-
- function testConstructString() {
-
- $dt = new \DateTime('2010-03-14 16:35', new \DateTimeZone('UTC'));
- $lastMod = new GetLastModified('2010-03-14 16:35');
- $this->assertEquals($dt->format(\DateTime::ATOM), $lastMod->getTime()->format(\DateTime::ATOM));
-
- }
-
- function testConstructInt() {
-
- $dt = new \DateTime('2010-03-14 16:35', new \DateTimeZone('UTC'));
- $lastMod = new GetLastModified((int)$dt->format('U'));
- $this->assertEquals($dt->format(\DateTime::ATOM), $lastMod->getTime()->format(\DateTime::ATOM));
-
- }
-
- function testSerialize() {
-
- $dt = new \DateTime('2010-03-14 16:35', new \DateTimeZone('UTC'));
- $lastMod = new GetLastModified($dt);
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:getlastmodified');
- $root->setAttribute('xmlns:d','DAV:');
-
- $doc->appendChild($root);
- $server = new DAV\Server();
-
- $lastMod->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- /*
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:getlastmodified xmlns:d="DAV:" xmlns:b="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/" b:dt="dateTime.rfc1123">' .
-HTTP\Util::toHTTPDate($dt) .
-'</d:getlastmodified>
-', $xml);
- */
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:getlastmodified xmlns:d="DAV:">' .
-HTTP\Util::toHTTPDate($dt) .
-'</d:getlastmodified>
-', $xml);
-
- $ok = false;
- try {
- GetLastModified::unserialize(DAV\XMLUtil::loadDOMDocument($xml)->firstChild);
- } catch (DAV\Exception $e) {
- $ok = true;
- }
- if (!$ok) $this->markTestFailed('Unserialize should not be supported');
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Property/HrefListTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Property/HrefListTest.php
deleted file mode 100644
index fe2bc81f9..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAV/Property/HrefListTest.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-
-namespace Sabre\DAV\Property;
-use Sabre\DAV;
-
-class HrefListTest extends \PHPUnit_Framework_TestCase {
-
- function testConstruct() {
-
- $href = new HrefList(array('foo','bar'));
- $this->assertEquals(array('foo','bar'),$href->getHrefs());
-
- }
-
- function testSerialize() {
-
- $href = new HrefList(array('foo','bar'));
- $this->assertEquals(array('foo','bar'),$href->getHrefs());
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:anything');
- $root->setAttribute('xmlns:d','DAV:');
-
- $doc->appendChild($root);
- $server = new DAV\Server();
- $server->setBaseUri('/bla/');
-
- $href->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:anything xmlns:d="DAV:"><d:href>/bla/foo</d:href><d:href>/bla/bar</d:href></d:anything>
-', $xml);
-
- }
-
- function testSerializeNoPrefix() {
-
- $href = new HrefList(array('foo','bar'), false);
- $this->assertEquals(array('foo','bar'),$href->getHrefs());
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:anything');
- $root->setAttribute('xmlns:d','DAV:');
-
- $doc->appendChild($root);
- $server = new DAV\Server();
- $server->setBaseUri('/bla/');
-
- $href->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:anything xmlns:d="DAV:"><d:href>foo</d:href><d:href>bar</d:href></d:anything>
-', $xml);
-
- }
-
- function testUnserialize() {
-
- $xml = '<?xml version="1.0"?>
-<d:anything xmlns:d="urn:DAV"><d:href>/bla/foo</d:href><d:href>/bla/bar</d:href></d:anything>
-';
-
- $dom = new \DOMDocument();
- $dom->loadXML($xml);
-
- $href = HrefList::unserialize($dom->firstChild);
- $this->assertEquals(array('/bla/foo','/bla/bar'),$href->getHrefs());
-
- }
-
- function testUnserializeIncompatible() {
-
- $xml = '<?xml version="1.0"?>
-<d:anything xmlns:d="urn:DAV"><d:href2>/bla/foo</d:href2></d:anything>
-';
-
- $dom = new \DOMDocument();
- $dom->loadXML($xml);
-
- $href = HrefList::unserialize($dom->firstChild);
- $this->assertEquals(array(), $href->getHrefs());
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Property/HrefTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Property/HrefTest.php
deleted file mode 100644
index e5607f51b..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAV/Property/HrefTest.php
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-
-namespace Sabre\DAV\Property;
-
-use Sabre\DAV;
-
-class HrefTest extends \PHPUnit_Framework_TestCase {
-
- function testConstruct() {
-
- $href = new Href('path');
- $this->assertEquals('path',$href->getHref());
-
- }
-
- function testSerialize() {
-
- $href = new Href('path');
- $this->assertEquals('path',$href->getHref());
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:anything');
- $root->setAttribute('xmlns:d','DAV:');
-
- $doc->appendChild($root);
- $server = new DAV\Server();
- $server->setBaseUri('/bla/');
-
- $href->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:anything xmlns:d="DAV:"><d:href>/bla/path</d:href></d:anything>
-', $xml);
-
- }
-
- function testSerializeNoPrefix() {
-
- $href = new Href('path',false);
- $this->assertEquals('path',$href->getHref());
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:anything');
- $root->setAttribute('xmlns:d','DAV:');
-
- $doc->appendChild($root);
- $server = new DAV\Server();
- $server->setBaseUri('/bla/');
-
- $href->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:anything xmlns:d="DAV:"><d:href>path</d:href></d:anything>
-', $xml);
-
- }
-
- function testUnserialize() {
-
- $xml = '<?xml version="1.0"?>
-<d:anything xmlns:d="urn:DAV"><d:href>/bla/path</d:href></d:anything>
-';
-
- $dom = new \DOMDocument();
- $dom->loadXML($xml);
-
- $href = Href::unserialize($dom->firstChild);
- $this->assertEquals('/bla/path',$href->getHref());
-
- }
-
- function testUnserializeIncompatible() {
-
- $xml = '<?xml version="1.0"?>
-<d:anything xmlns:d="urn:DAV"><d:href2>/bla/path</d:href2></d:anything>
-';
-
- $dom = new \DOMDocument();
- $dom->loadXML($xml);
-
- $href = Href::unserialize($dom->firstChild);
- $this->assertNull($href);
-
- }
-
- /**
- * This method tests if hrefs containing & are correctly encoded.
- */
- function testSerializeEntity() {
-
- $href = new Href('http://example.org/?a&b', false);
- $this->assertEquals('http://example.org/?a&b',$href->getHref());
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:anything');
- $root->setAttribute('xmlns:d','DAV:');
-
- $doc->appendChild($root);
- $server = new DAV\Server();
- $server->setBaseUri('/bla/');
-
- $href->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:anything xmlns:d="DAV:"><d:href>http://example.org/?a&amp;b</d:href></d:anything>
-', $xml);
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Property/ResourceTypeTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Property/ResourceTypeTest.php
deleted file mode 100644
index 8a579baec..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAV/Property/ResourceTypeTest.php
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-
-namespace Sabre\DAV\Property;
-
-use Sabre\DAV;
-
-class ResourceTypeTest extends \PHPUnit_Framework_TestCase {
-
- function testConstruct() {
-
- $resourceType = new ResourceType(array('{DAV:}collection'));
- $this->assertEquals(array('{DAV:}collection'),$resourceType->getValue());
-
- $resourceType = new ResourceType(DAV\Server::NODE_FILE);
- $this->assertEquals(array(),$resourceType->getValue());
-
- $resourceType = new ResourceType(DAV\Server::NODE_DIRECTORY);
- $this->assertEquals(array('{DAV:}collection'),$resourceType->getValue());
-
- $resourceType = new ResourceType('{DAV:}principal');
- $this->assertEquals(array('{DAV:}principal'),$resourceType->getValue());
-
- }
-
- /**
- * @depends testConstruct
- */
- function testSerialize() {
-
- $resourceType = new ResourceType(array('{DAV:}collection','{DAV:}principal'));
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:anything');
- $root->setAttribute('xmlns:d','DAV:');
-
- $doc->appendChild($root);
- $server = new DAV\Server();
- $resourceType->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:anything xmlns:d="DAV:"><d:collection/><d:principal/></d:anything>
-', $xml);
-
- }
-
- /**
- * @depends testSerialize
- */
- function testSerializeCustomNS() {
-
- $resourceType = new ResourceType(array('{http://example.org/NS}article'));
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:anything');
- $root->setAttribute('xmlns:d','DAV:');
-
- $doc->appendChild($root);
- $server = new DAV\Server();
- $resourceType->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:anything xmlns:d="DAV:"><custom:article xmlns:custom="http://example.org/NS"/></d:anything>
-', $xml);
-
- }
-
- /**
- * @depends testConstruct
- */
- function testIs() {
-
- $resourceType = new ResourceType(array('{DAV:}collection','{DAV:}principal'));
- $this->assertTrue($resourceType->is('{DAV:}collection'));
- $this->assertFalse($resourceType->is('{DAV:}blabla'));
-
- }
-
- /**
- * @depends testConstruct
- */
- function testAdd() {
-
- $resourceType = new ResourceType(array('{DAV:}collection','{DAV:}principal'));
- $resourceType->add('{DAV:}foo');
- $this->assertEquals(array('{DAV:}collection','{DAV:}principal','{DAV:}foo'), $resourceType->getValue());
-
- }
-
- /**
- * @depends testConstruct
- */
- function testUnserialize() {
-
- $xml ='<?xml version="1.0"?>
-<d:anything xmlns:d="DAV:"><d:collection/><d:principal/></d:anything>
-';
-
- $dom = DAV\XMLUtil::loadDOMDocument($xml);
-
- $resourceType = ResourceType::unserialize($dom->firstChild);
- $this->assertEquals(array('{DAV:}collection','{DAV:}principal'),$resourceType->getValue());
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Property/ResponseListTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Property/ResponseListTest.php
deleted file mode 100644
index d13066b80..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAV/Property/ResponseListTest.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-namespace Sabre\DAV\Property;
-
-class ResponseListTest extends \PHPUnit_Framework_TestCase {
-
- /**
- * This was the only part not yet covered by other tests, so I'm going to
- * be lazy and (for now) only test this case.
- *
- * @expectedException InvalidArgumentException
- */
- public function testInvalidArg() {
-
- $response = new ResponseList(array(1,2));
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Property/ResponseTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Property/ResponseTest.php
deleted file mode 100644
index 073cbb2ce..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAV/Property/ResponseTest.php
+++ /dev/null
@@ -1,230 +0,0 @@
-<?php
-
-namespace Sabre\DAV\Property;
-
-use Sabre\DAV;
-
-class ResponseTest extends \PHPUnit_Framework_TestCase {
-
- function testSimple() {
-
- $innerProps = array(
- 200 => array(
- '{DAV:}displayname' => 'my file',
- ),
- 404 => array(
- '{DAV:}owner' => null,
- )
- );
-
- $property = new Response('uri',$innerProps);
-
- $this->assertEquals('uri',$property->getHref());
- $this->assertEquals($innerProps,$property->getResponseProperties());
-
-
- }
-
- /**
- * @depends testSimple
- */
- function testSerialize() {
-
- $innerProps = array(
- 200 => array(
- '{DAV:}displayname' => 'my file',
- ),
- 404 => array(
- '{DAV:}owner' => null,
- )
- );
-
- $property = new Response('uri',$innerProps);
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:root');
- $root->setAttribute('xmlns:d','DAV:');
-
- $doc->appendChild($root);
- $server = new DAV\Server();
-
- $property->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:root xmlns:d="DAV:">' .
-'<d:response>' .
-'<d:href>/uri</d:href>' .
-'<d:propstat>' .
-'<d:prop>' .
-'<d:displayname>my file</d:displayname>' .
-'</d:prop>' .
-'<d:status>HTTP/1.1 200 OK</d:status>' .
-'</d:propstat>' .
-'<d:propstat>' .
-'<d:prop>' .
-'<d:owner/>' .
-'</d:prop>' .
-'<d:status>HTTP/1.1 404 Not Found</d:status>' .
-'</d:propstat>' .
-'</d:response>' .
-'</d:root>
-', $xml);
-
- }
-
- /**
- * This one is specifically for testing properties with no namespaces, which is legal xml
- *
- * @depends testSerialize
- */
- function testSerializeEmptyNamespace() {
-
- $innerProps = array(
- 200 => array(
- '{}propertyname' => 'value',
- ),
- );
-
- $property = new Response('uri',$innerProps);
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:root');
- $root->setAttribute('xmlns:d','DAV:');
-
- $doc->appendChild($root);
- $server = new DAV\Server();
-
- $property->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:root xmlns:d="DAV:">' .
-'<d:response>' .
-'<d:href>/uri</d:href>' .
-'<d:propstat>' .
-'<d:prop>' .
-'<propertyname xmlns="">value</propertyname>' .
-'</d:prop>' .
-'<d:status>HTTP/1.1 200 OK</d:status>' .
-'</d:propstat>' .
-'</d:response>' .
-'</d:root>
-', $xml);
-
- }
-
- /**
- * This one is specifically for testing properties with no namespaces, which is legal xml
- *
- * @depends testSerialize
- */
- function testSerializeCustomNamespace() {
-
- $innerProps = array(
- 200 => array(
- '{http://sabredav.org/NS/example}propertyname' => 'value',
- ),
- );
-
- $property = new Response('uri',$innerProps);
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:root');
- $root->setAttribute('xmlns:d','DAV:');
-
- $doc->appendChild($root);
- $server = new DAV\Server();
-
- $property->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:root xmlns:d="DAV:">' .
-'<d:response>' .
-'<d:href>/uri</d:href>' .
-'<d:propstat>' .
-'<d:prop>' .
-'<x2:propertyname xmlns:x2="http://sabredav.org/NS/example">value</x2:propertyname>' .
-'</d:prop>' .
-'<d:status>HTTP/1.1 200 OK</d:status>' .
-'</d:propstat>' .
-'</d:response>' .
-'</d:root>
-', $xml);
-
- }
-
- /**
- * @depends testSerialize
- */
- function testSerializeComplexProperty() {
-
- $innerProps = array(
- 200 => array(
- '{DAV:}link' => new Href('http://sabredav.org/', false)
- ),
- );
-
- $property = new Response('uri',$innerProps);
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:root');
- $root->setAttribute('xmlns:d','DAV:');
-
- $doc->appendChild($root);
- $server = new DAV\Server();
-
- $property->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:root xmlns:d="DAV:">' .
-'<d:response>' .
-'<d:href>/uri</d:href>' .
-'<d:propstat>' .
-'<d:prop>' .
-'<d:link><d:href>http://sabredav.org/</d:href></d:link>' .
-'</d:prop>' .
-'<d:status>HTTP/1.1 200 OK</d:status>' .
-'</d:propstat>' .
-'</d:response>' .
-'</d:root>
-', $xml);
-
- }
-
- /**
- * @depends testSerialize
- * @expectedException Sabre\DAV\Exception
- */
- function testSerializeBreak() {
-
- $innerProps = array(
- 200 => array(
- '{DAV:}link' => new \STDClass()
- ),
- );
-
- $property = new Response('uri',$innerProps);
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:root');
- $root->setAttribute('xmlns:d','DAV:');
-
- $doc->appendChild($root);
- $server = new DAV\Server();
-
- $property->serialize($server, $root);
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Property/SupportedReportSetTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Property/SupportedReportSetTest.php
deleted file mode 100644
index 445e22ab3..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAV/Property/SupportedReportSetTest.php
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-
-namespace Sabre\DAV\Property;
-
-use Sabre\DAV;
-use Sabre\HTTP;
-
-require_once 'Sabre/HTTP/ResponseMock.php';
-require_once 'Sabre/DAV/AbstractServer.php';
-
-class SupportedReportSetTest extends DAV\AbstractServer {
-
- public function sendPROPFIND($body) {
-
- $serverVars = array(
- 'REQUEST_URI' => '/',
- 'REQUEST_METHOD' => 'PROPFIND',
- 'HTTP_DEPTH' => '0',
- );
-
- $request = new HTTP\Request($serverVars);
- $request->setBody($body);
-
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- }
-
- /**
- * @covers Sabre\DAV\Property\SupportedReportSet
- */
- function testNoReports() {
-
- $xml = '<?xml version="1.0"?>
-<d:propfind xmlns:d="DAV:">
- <d:prop>
- <d:supported-report-set />
- </d:prop>
-</d:propfind>';
-
- $this->sendPROPFIND($xml);
-
- $this->assertEquals('HTTP/1.1 207 Multi-Status',$this->response->status,'We expected a multi-status response. Full response body: ' . $this->response->body);
-
- $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/","xmlns\\1=\"urn:DAV\"",$this->response->body);
- $xml = simplexml_load_string($body);
- $xml->registerXPathNamespace('d','urn:DAV');
-
- $data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop');
- $this->assertEquals(1,count($data),'We expected 1 \'d:prop\' element');
-
- $data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:supported-report-set');
- $this->assertEquals(1,count($data),'We expected 1 \'d:supported-report-set\' element');
-
- $data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:status');
- $this->assertEquals(1,count($data),'We expected 1 \'d:status\' element');
-
- $this->assertEquals('HTTP/1.1 200 OK',(string)$data[0],'The status for this property should have been 200');
-
- }
-
- /**
- * @covers Sabre\DAV\Property\SupportedReportSet
- * @depends testNoReports
- */
- function testCustomReport() {
-
- // Intercepting the report property
- $this->server->subscribeEvent('afterGetProperties',array($this,'addProp'));
-
- $xml = '<?xml version="1.0"?>
-<d:propfind xmlns:d="DAV:">
- <d:prop>
- <d:supported-report-set />
- </d:prop>
-</d:propfind>';
-
- $this->sendPROPFIND($xml);
-
- $this->assertEquals('HTTP/1.1 207 Multi-Status',$this->response->status,'We expected a multi-status response. Full response body: ' . $this->response->body);
-
- $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/","xmlns\\1=\"urn:DAV\"",$this->response->body);
- $xml = simplexml_load_string($body);
- $xml->registerXPathNamespace('d','urn:DAV');
- $xml->registerXPathNamespace('x','http://www.rooftopsolutions.nl/testnamespace');
-
- $data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop');
- $this->assertEquals(1,count($data),'We expected 1 \'d:prop\' element');
-
- $data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:supported-report-set');
- $this->assertEquals(1,count($data),'We expected 1 \'d:supported-report-set\' element');
-
- $data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:supported-report-set/d:supported-report');
- $this->assertEquals(2,count($data),'We expected 2 \'d:supported-report\' elements');
-
- $data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:supported-report-set/d:supported-report/d:report');
- $this->assertEquals(2,count($data),'We expected 2 \'d:report\' elements');
-
- $data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:supported-report-set/d:supported-report/d:report/x:myreport');
- $this->assertEquals(1,count($data),'We expected 1 \'x:myreport\' element. Full body: ' . $this->response->body);
-
- $data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:supported-report-set/d:supported-report/d:report/d:anotherreport');
- $this->assertEquals(1,count($data),'We expected 1 \'d:anotherreport\' element. Full body: ' . $this->response->body);
-
- $data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:status');
- $this->assertEquals(1,count($data),'We expected 1 \'d:status\' element');
-
- $this->assertEquals('HTTP/1.1 200 OK',(string)$data[0],'The status for this property should have been 200');
-
- }
-
- /**
- * This method is used as a callback for afterGetProperties
- */
- function addProp($path, &$properties) {
-
- if (isset($properties[200]['{DAV:}supported-report-set'])) {
- $properties[200]['{DAV:}supported-report-set']->addReport('{http://www.rooftopsolutions.nl/testnamespace}myreport');
- $properties[200]['{DAV:}supported-report-set']->addReport('{DAV:}anotherreport');
- }
-
- }
-
-
-
-}
-
-?>
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerCopyMoveTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerCopyMoveTest.php
deleted file mode 100644
index 88e107c19..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAV/ServerCopyMoveTest.php
+++ /dev/null
@@ -1,268 +0,0 @@
-<?php
-
-namespace Sabre\DAV;
-
-use Sabre\HTTP;
-
-require_once 'Sabre/HTTP/ResponseMock.php';
-
-class ServerCopyMoveTest extends \PHPUnit_Framework_TestCase {
-
- private $response;
- /**
- * @var Server
- */
- private $server;
-
- function setUp() {
-
- $this->response = new HTTP\ResponseMock();
- $dir = new FS\Directory(SABRE_TEMPDIR);
- $tree = new ObjectTree($dir);
- $this->server = new Server($tree);
- $this->server->debugExceptions = true;
- $this->server->httpResponse = $this->response;
- file_put_contents(SABRE_TEMPDIR . '/test.txt', 'Test contents');
- file_put_contents(SABRE_TEMPDIR . '/test2.txt', 'Test contents2');
- mkdir(SABRE_TEMPDIR . '/col');
- file_put_contents(SABRE_TEMPDIR . 'col/test.txt', 'Test contents');
-
- }
-
- function tearDown() {
-
- $cleanUp = array('test.txt','testput.txt','testcol','test2.txt','test3.txt','col/test.txt','col','col2/test.txt','col2');
- foreach($cleanUp as $file) {
- $tmpFile = SABRE_TEMPDIR . '/' . $file;
- if (file_exists($tmpFile)) {
-
- if (is_dir($tmpFile)) {
- rmdir($tmpFile);
- } else {
- unlink($tmpFile);
- }
-
- }
- }
-
- }
-
-
- function testCopyOverWrite() {
-
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'COPY',
- 'HTTP_DESTINATION' => '/test2.txt',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals('HTTP/1.1 204 No Content',$this->response->status,'Received an incorrect HTTP status. Full body inspection: ' . $this->response->body);
- $this->assertEquals(array(
- 'Content-Length' => '0',
- ),
- $this->response->headers
- );
-
- $this->assertEquals('Test contents',file_get_contents(SABRE_TEMPDIR. '/test2.txt'));
-
- }
-
- function testCopyToSelf() {
-
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'COPY',
- 'HTTP_DESTINATION' => '/test.txt',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals('HTTP/1.1 403 Forbidden',$this->response->status,'Received an incorrect HTTP status. Full body inspection: ' . $this->response->body);
- $this->assertEquals('Test contents',file_get_contents(SABRE_TEMPDIR. '/test.txt'));
-
- }
-
- function testMoveToSelf() {
-
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'MOVE',
- 'HTTP_DESTINATION' => '/test.txt',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals('HTTP/1.1 403 Forbidden',$this->response->status,'Received an incorrect HTTP status. Full body inspection: ' . $this->response->body);
- $this->assertEquals('Test contents',file_get_contents(SABRE_TEMPDIR. '/test.txt'));
-
- }
-
- function testMoveOverWrite() {
-
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'MOVE',
- 'HTTP_DESTINATION' => '/test2.txt',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals(array(
- 'Content-Length' => 0,
- ),
- $this->response->headers
- );
-
- $this->assertEquals('HTTP/1.1 204 No Content',$this->response->status);
- $this->assertEquals('Test contents',file_get_contents(SABRE_TEMPDIR . '/test2.txt'));
- $this->assertFalse(file_exists(SABRE_TEMPDIR . '/test.txt'),'The sourcefile test.txt should no longer exist at this point');
-
- }
-
- function testBlockedOverWrite() {
-
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'COPY',
- 'HTTP_DESTINATION' => '/test2.txt',
- 'HTTP_OVERWRITE' => 'F',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),
- $this->response->headers
- );
-
- $this->assertEquals('HTTP/1.1 412 Precondition failed',$this->response->status);
- $this->assertEquals('Test contents2',file_get_contents(SABRE_TEMPDIR . '/test2.txt'));
-
-
- }
-
- function testNonExistantParent() {
-
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'COPY',
- 'HTTP_DESTINATION' => '/testcol2/test2.txt',
- 'HTTP_OVERWRITE' => 'F',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),
- $this->response->headers
- );
-
- $this->assertEquals('HTTP/1.1 409 Conflict',$this->response->status);
-
- }
-
- function testRandomOverwriteHeader() {
-
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'COPY',
- 'HTTP_DESTINATION' => '/testcol2/test2.txt',
- 'HTTP_OVERWRITE' => 'SURE!',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals('HTTP/1.1 400 Bad request',$this->response->status);
-
- }
-
- function testCopyDirectory() {
-
- $serverVars = array(
- 'REQUEST_URI' => '/col',
- 'REQUEST_METHOD' => 'COPY',
- 'HTTP_DESTINATION' => '/col2',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals(array(
- 'Content-Length' => '0',
- ),
- $this->response->headers
- );
-
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status);
- $this->assertEquals('Test contents',file_get_contents(SABRE_TEMPDIR . '/col2/test.txt'));
-
- }
-
- function testSimpleCopyFile() {
-
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'COPY',
- 'HTTP_DESTINATION' => '/test3.txt',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals(array(
- 'Content-Length' => '0',
- ),
- $this->response->headers
- );
-
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status);
- $this->assertEquals('Test contents',file_get_contents(SABRE_TEMPDIR . '/test3.txt'));
-
- }
-
- function testSimpleCopyCollection() {
-
- $serverVars = array(
- 'REQUEST_URI' => '/col',
- 'REQUEST_METHOD' => 'COPY',
- 'HTTP_DESTINATION' => '/col2',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status,'Incorrect status received. Full response body: ' . $this->response->body);
-
- $this->assertEquals(array(
- 'Content-Length' => '0',
- ),
- $this->response->headers
- );
-
-
- $this->assertEquals('Test contents',file_get_contents(SABRE_TEMPDIR . '/col2/test.txt'));
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerEventsTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerEventsTest.php
index 2c7a074df..6ac20d2da 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/ServerEventsTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerEventsTest.php
@@ -1,6 +1,7 @@
<?php
namespace Sabre\DAV;
+
use Sabre\HTTP;
require_once 'Sabre/DAV/AbstractServer.php';
@@ -13,11 +14,11 @@ class ServerEventsTest extends AbstractServer {
function testAfterBind() {
- $this->server->subscribeEvent('afterBind',array($this,'afterBindHandler'));
+ $this->server->on('afterBind', [$this, 'afterBindHandler']);
$newPath = 'afterBind';
$this->tempPath = '';
- $this->server->createFile($newPath,'body');
+ $this->server->createFile($newPath, 'body');
$this->assertEquals($newPath, $this->tempPath);
}
@@ -28,25 +29,41 @@ class ServerEventsTest extends AbstractServer {
}
+ function testAfterResponse() {
+
+ $mock = $this->getMock('stdClass', ['afterResponseCallback']);
+ $mock->expects($this->once())->method('afterResponseCallback');
+
+ $this->server->on('afterResponse', [$mock, 'afterResponseCallback']);
+
+ $this->server->httpRequest = HTTP\Sapi::createFromServerArray([
+ 'REQUEST_METHOD' => 'GET',
+ 'REQUEST_URI' => '/test.txt',
+ ]);
+
+ $this->server->exec();
+
+ }
+
function testBeforeBindCancel() {
- $this->server->subscribeEvent('beforeBind', array($this,'beforeBindCancelHandler'));
- $this->assertFalse($this->server->createFile('bla','body'));
+ $this->server->on('beforeBind', [$this, 'beforeBindCancelHandler']);
+ $this->assertFalse($this->server->createFile('bla', 'body'));
// Also testing put()
- $req = new HTTP\Request(array(
+ $req = HTTP\Sapi::createFromServerArray([
'REQUEST_METHOD' => 'PUT',
- 'REQUEST_URI' => '/barbar',
- ));
+ 'REQUEST_URI' => '/barbar',
+ ]);
$this->server->httpRequest = $req;
$this->server->exec();
- $this->assertEquals('',$this->server->httpResponse->status);
+ $this->assertEquals(500, $this->server->httpResponse->getStatus());
}
- function beforeBindCancelHandler() {
+ function beforeBindCancelHandler($path) {
return false;
@@ -54,12 +71,12 @@ class ServerEventsTest extends AbstractServer {
function testException() {
- $this->server->subscribeEvent('exception', array($this, 'exceptionHandler'));
+ $this->server->on('exception', [$this, 'exceptionHandler']);
- $req = new HTTP\Request(array(
+ $req = HTTP\Sapi::createFromServerArray([
'REQUEST_METHOD' => 'GET',
- 'REQUEST_URI' => '/not/exisitng',
- ));
+ 'REQUEST_URI' => '/not/exisitng',
+ ]);
$this->server->httpRequest = $req;
$this->server->exec();
@@ -73,4 +90,35 @@ class ServerEventsTest extends AbstractServer {
}
+ function testMethod() {
+
+ $k = 1;
+ $this->server->on('method', function($request, $response) use (&$k) {
+
+ $k += 1;
+
+ return false;
+
+ });
+ $this->server->on('method', function($request, $response) use (&$k) {
+
+ $k += 2;
+
+ return false;
+
+ });
+
+ try {
+ $this->server->invokeMethod(
+ new HTTP\Request('BLABLA', '/'),
+ new HTTP\Response(),
+ false
+ );
+ } catch (Exception $e) {}
+
+ $this->assertEquals(2, $k);
+
+
+ }
+
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerMKCOLTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerMKCOLTest.php
index 34b084dcd..e35189ec3 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/ServerMKCOLTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerMKCOLTest.php
@@ -4,10 +4,6 @@ namespace Sabre\DAV;
use Sabre\HTTP;
-require_once 'Sabre/HTTP/ResponseMock.php';
-require_once 'Sabre/DAV/AbstractServer.php';
-require_once 'Sabre/DAV/Exception.php';
-
class ServerMKCOLTest extends AbstractServer {
function testMkcol() {
@@ -17,16 +13,17 @@ class ServerMKCOLTest extends AbstractServer {
'REQUEST_METHOD' => 'MKCOL',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody("");
$this->server->httpRequest = ($request);
$this->server->exec();
$this->assertEquals(array(
- 'Content-Length' => '0',
- ),$this->response->headers);
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Length' => ['0'],
+ ),$this->response->getHeaders());
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status);
+ $this->assertEquals(201, $this->response->status);
$this->assertEquals('', $this->response->body);
$this->assertTrue(is_dir($this->tempDir . '/testcol'));
@@ -42,16 +39,17 @@ class ServerMKCOLTest extends AbstractServer {
'REQUEST_METHOD' => 'MKCOL',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody("Hello");
$this->server->httpRequest = ($request);
$this->server->exec();
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),$this->response->headers);
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ),$this->response->getHeaders());
- $this->assertEquals('HTTP/1.1 415 Unsupported Media Type',$this->response->status);
+ $this->assertEquals(415, $this->response->status);
}
@@ -66,16 +64,17 @@ class ServerMKCOLTest extends AbstractServer {
'HTTP_CONTENT_TYPE' => 'application/xml',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody("Hello");
$this->server->httpRequest = ($request);
$this->server->exec();
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),$this->response->headers);
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ),$this->response->getHeaders());
- $this->assertEquals('HTTP/1.1 400 Bad request',$this->response->status);
+ $this->assertEquals(400, $this->response->getStatus(), $this->response->getBodyAsString() );
}
@@ -90,16 +89,17 @@ class ServerMKCOLTest extends AbstractServer {
'HTTP_CONTENT_TYPE' => 'application/xml',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('<?xml version="1.0"?><html></html>');
$this->server->httpRequest = ($request);
$this->server->exec();
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),$this->response->headers);
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ),$this->response->getHeaders());
- $this->assertEquals('HTTP/1.1 415 Unsupported Media Type',$this->response->status);
+ $this->assertEquals(400, $this->response->getStatus());
}
@@ -114,7 +114,7 @@ class ServerMKCOLTest extends AbstractServer {
'HTTP_CONTENT_TYPE' => 'application/xml',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('<?xml version="1.0"?>
<mkcol xmlns="DAV:">
<set>
@@ -127,15 +127,16 @@ class ServerMKCOLTest extends AbstractServer {
$this->server->exec();
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),$this->response->headers);
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ),$this->response->getHeaders());
- $this->assertEquals('HTTP/1.1 400 Bad request',$this->response->status,'Wrong statuscode received. Full response body: ' .$this->response->body);
+ $this->assertEquals(400, $this->response->status, 'Wrong statuscode received. Full response body: ' .$this->response->body);
}
/**
- * @depends testMKCOLNoResourceType
+ * @depends testMkcol
*/
function testMKCOLIncorrectResourceType() {
@@ -145,38 +146,7 @@ class ServerMKCOLTest extends AbstractServer {
'HTTP_CONTENT_TYPE' => 'application/xml',
);
- $request = new HTTP\Request($serverVars);
- $request->setBody('<?xml version="1.0"?>
-<mkcol xmlns="DAV:">
- <set>
- <prop>
- <resourcetype><blabla /></resourcetype>
- </prop>
- </set>
-</mkcol>');
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),$this->response->headers);
-
- $this->assertEquals('HTTP/1.1 403 Forbidden',$this->response->status,'Wrong statuscode received. Full response body: ' .$this->response->body);
-
- }
-
- /**
- * @depends testMKCOLIncorrectResourceType
- */
- function testMKCOLIncorrectResourceType2() {
-
- $serverVars = array(
- 'REQUEST_URI' => '/testcol',
- 'REQUEST_METHOD' => 'MKCOL',
- 'HTTP_CONTENT_TYPE' => 'application/xml',
- );
-
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('<?xml version="1.0"?>
<mkcol xmlns="DAV:">
<set>
@@ -189,15 +159,16 @@ class ServerMKCOLTest extends AbstractServer {
$this->server->exec();
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),$this->response->headers);
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ),$this->response->getHeaders());
- $this->assertEquals('HTTP/1.1 403 Forbidden',$this->response->status,'Wrong statuscode received. Full response body: ' .$this->response->body);
+ $this->assertEquals(403, $this->response->status, 'Wrong statuscode received. Full response body: ' .$this->response->body);
}
/**
- * @depends testMKCOLIncorrectResourceType2
+ * @depends testMKCOLIncorrectResourceType
*/
function testMKCOLSuccess() {
@@ -207,7 +178,7 @@ class ServerMKCOLTest extends AbstractServer {
'HTTP_CONTENT_TYPE' => 'application/xml',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('<?xml version="1.0"?>
<mkcol xmlns="DAV:">
<set>
@@ -220,15 +191,16 @@ class ServerMKCOLTest extends AbstractServer {
$this->server->exec();
$this->assertEquals(array(
- 'Content-Length' => '0',
- ),$this->response->headers);
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Length' => ['0'],
+ ),$this->response->getHeaders());
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status,'Wrong statuscode received. Full response body: ' .$this->response->body);
+ $this->assertEquals(201, $this->response->status, 'Wrong statuscode received. Full response body: ' .$this->response->body);
}
/**
- * @depends testMKCOLIncorrectResourceType2
+ * @depends testMKCOLIncorrectResourceType
*/
function testMKCOLWhiteSpaceResourceType() {
@@ -238,7 +210,7 @@ class ServerMKCOLTest extends AbstractServer {
'HTTP_CONTENT_TYPE' => 'application/xml',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('<?xml version="1.0"?>
<mkcol xmlns="DAV:">
<set>
@@ -253,15 +225,16 @@ class ServerMKCOLTest extends AbstractServer {
$this->server->exec();
$this->assertEquals(array(
- 'Content-Length' => '0',
- ),$this->response->headers);
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Length' => ['0'],
+ ),$this->response->getHeaders());
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status,'Wrong statuscode received. Full response body: ' .$this->response->body);
+ $this->assertEquals(201, $this->response->status, 'Wrong statuscode received. Full response body: ' .$this->response->body);
}
/**
- * @depends testMKCOLIncorrectResourceType2
+ * @depends testMKCOLIncorrectResourceType
*/
function testMKCOLNoParent() {
@@ -270,22 +243,23 @@ class ServerMKCOLTest extends AbstractServer {
'REQUEST_METHOD' => 'MKCOL',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('');
$this->server->httpRequest = ($request);
$this->server->exec();
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),$this->response->headers);
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ),$this->response->getHeaders());
- $this->assertEquals('HTTP/1.1 409 Conflict',$this->response->status,'Wrong statuscode received. Full response body: ' .$this->response->body);
+ $this->assertEquals(409, $this->response->status, 'Wrong statuscode received. Full response body: ' .$this->response->body);
}
/**
- * @depends testMKCOLIncorrectResourceType2
+ * @depends testMKCOLIncorrectResourceType
*/
function testMKCOLParentIsNoCollection() {
@@ -294,22 +268,23 @@ class ServerMKCOLTest extends AbstractServer {
'REQUEST_METHOD' => 'MKCOL',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('');
$this->server->httpRequest = ($request);
$this->server->exec();
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),$this->response->headers);
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ),$this->response->getHeaders());
- $this->assertEquals('HTTP/1.1 409 Conflict',$this->response->status,'Wrong statuscode received. Full response body: ' .$this->response->body);
+ $this->assertEquals(409, $this->response->status, 'Wrong statuscode received. Full response body: ' .$this->response->body);
}
/**
- * @depends testMKCOLIncorrectResourceType2
+ * @depends testMKCOLIncorrectResourceType
*/
function testMKCOLAlreadyExists() {
@@ -318,18 +293,19 @@ class ServerMKCOLTest extends AbstractServer {
'REQUEST_METHOD' => 'MKCOL',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('');
$this->server->httpRequest = ($request);
$this->server->exec();
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- 'Allow' => 'OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT',
- ),$this->response->headers);
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ 'Allow' => ['OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT'],
+ ),$this->response->getHeaders());
- $this->assertEquals('HTTP/1.1 405 Method Not Allowed',$this->response->status,'Wrong statuscode received. Full response body: ' .$this->response->body);
+ $this->assertEquals(405, $this->response->status, 'Wrong statuscode received. Full response body: ' .$this->response->body);
}
@@ -345,7 +321,7 @@ class ServerMKCOLTest extends AbstractServer {
'HTTP_CONTENT_TYPE' => 'application/xml',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody('<?xml version="1.0"?>
<mkcol xmlns="DAV:">
<set>
@@ -358,13 +334,12 @@ class ServerMKCOLTest extends AbstractServer {
$this->server->httpRequest = ($request);
$this->server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status',$this->response->status,'Wrong statuscode received. Full response body: ' .$this->response->body);
+ $this->assertEquals(207, $this->response->status, 'Wrong statuscode received. Full response body: ' .$this->response->body);
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),$this->response->headers);
-
-
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ),$this->response->getHeaders());
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerPluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerPluginTest.php
index 8f1451b49..ab0ad295e 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/ServerPluginTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerPluginTest.php
@@ -24,13 +24,19 @@ class ServerPluginTest extends AbstractServer {
}
/**
- * @covers \Sabre\DAV\ServerPlugin
*/
function testBaseClass() {
$p = new ServerPluginMock();
- $this->assertEquals(array(),$p->getFeatures());
- $this->assertEquals(array(),$p->getHTTPMethods(''));
+ $this->assertEquals([],$p->getFeatures());
+ $this->assertEquals([],$p->getHTTPMethods(''));
+ $this->assertEquals(
+ [
+ 'name' => 'Sabre\DAV\ServerPluginMock',
+ 'description' => null,
+ 'link' => null
+ ], $p->getPluginInfo()
+ );
}
@@ -41,20 +47,20 @@ class ServerPluginTest extends AbstractServer {
'REQUEST_METHOD' => 'OPTIONS',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$this->server->httpRequest = ($request);
$this->server->exec();
$this->assertEquals(array(
- 'DAV' => '1, 3, extended-mkcol, drinking',
- 'MS-Author-Via' => 'DAV',
- 'Allow' => 'OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT, BEER, WINE',
- 'Accept-Ranges' => 'bytes',
- 'Content-Length' => '0',
- 'X-Sabre-Version' => Version::VERSION,
- ),$this->response->headers);
-
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
+ 'DAV' => ['1, 3, extended-mkcol, drinking'],
+ 'MS-Author-Via' => ['DAV'],
+ 'Allow' => ['OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT, BEER, WINE'],
+ 'Accept-Ranges' => ['bytes'],
+ 'Content-Length' => ['0'],
+ 'X-Sabre-Version' => [Version::VERSION],
+ ),$this->response->getHeaders());
+
+ $this->assertEquals(200, $this->response->status);
$this->assertEquals('', $this->response->body);
$this->assertEquals('OPTIONS',$this->testPlugin->beforeMethod);
@@ -82,7 +88,10 @@ class ServerPluginTest extends AbstractServer {
function testGetPlugins() {
$this->assertEquals(
- array(get_class($this->testPlugin) => $this->testPlugin),
+ array(
+ get_class($this->testPlugin) => $this->testPlugin,
+ 'core' => $this->server->getPlugin('core'),
+ ),
$this->server->getPlugins()
);
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerPreconditionTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerPreconditionTest.php
index ea09852a7..1dc8d8a37 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/ServerPreconditionTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerPreconditionTest.php
@@ -9,362 +9,311 @@ require_once 'Sabre/HTTP/ResponseMock.php';
class ServerPreconditionsTest extends \PHPUnit_Framework_TestCase {
/**
- * @covers Sabre\DAV\Server::checkPreconditions
* @expectedException Sabre\DAV\Exception\PreconditionFailed
*/
function testIfMatchNoNode() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
- 'HTTP_IF_MATCH' => '*',
- 'REQUEST_URI' => '/bar'
- ));
- $server->httpRequest = $httpRequest;
-
- $server->checkPreconditions();
+ $httpRequest = new HTTP\Request('GET', '/bar', ['If-Match' => '*']);
+ $httpResponse = new HTTP\Response();
+ $server->checkPreconditions($httpRequest, $httpResponse);
}
/**
- * @covers \Sabre\DAV\Server::checkPreconditions
*/
function testIfMatchHasNode() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
- 'HTTP_IF_MATCH' => '*',
- 'REQUEST_URI' => '/foo'
- ));
- $server->httpRequest = $httpRequest;
-
- $this->assertTrue($server->checkPreconditions());
+ $httpRequest = new HTTP\Request('GET', '/foo', ['If-Match' => '*']);
+ $httpResponse = new HTTP\Response();
+ $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse));
}
/**
- * @covers \Sabre\DAV\Server::checkPreconditions
* @expectedException Sabre\DAV\Exception\PreconditionFailed
*/
function testIfMatchWrongEtag() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
- 'HTTP_IF_MATCH' => '1234',
- 'REQUEST_URI' => '/foo'
- ));
- $server->httpRequest = $httpRequest;
-
- $server->checkPreconditions();
+ $httpRequest = new HTTP\Request('GET', '/foo', ['If-Match' => '1234']);
+ $httpResponse = new HTTP\Response();
+ $server->checkPreconditions($httpRequest, $httpResponse);
}
/**
- * @covers \Sabre\DAV\Server::checkPreconditions
*/
function testIfMatchCorrectEtag() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
- 'HTTP_IF_MATCH' => '"abc123"',
- 'REQUEST_URI' => '/foo'
- ));
- $server->httpRequest = $httpRequest;
-
- $this->assertTrue($server->checkPreconditions());
+ $httpRequest = new HTTP\Request('GET', '/foo', ['If-Match' => '"abc123"']);
+ $httpResponse = new HTTP\Response();
+ $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse));
}
/**
* Evolution sometimes uses \" instead of " for If-Match headers.
*
- * @covers \Sabre\DAV\Server::checkPreconditions
* @depends testIfMatchCorrectEtag
*/
function testIfMatchEvolutionEtag() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
- 'HTTP_IF_MATCH' => '\\"abc123\\"',
- 'REQUEST_URI' => '/foo'
- ));
- $server->httpRequest = $httpRequest;
-
- $this->assertTrue($server->checkPreconditions());
+ $httpRequest = new HTTP\Request('GET', '/foo', ['If-Match' => '\\"abc123\\"']);
+ $httpResponse = new HTTP\Response();
+ $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse));
}
/**
- * @covers \Sabre\DAV\Server::checkPreconditions
*/
function testIfMatchMultiple() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
- 'HTTP_IF_MATCH' => '"hellothere", "abc123"',
- 'REQUEST_URI' => '/foo'
- ));
- $server->httpRequest = $httpRequest;
-
- $this->assertTrue($server->checkPreconditions());
+ $httpRequest = new HTTP\Request('GET', '/foo', ['If-Match' => '"hellothere", "abc123"']);
+ $httpResponse = new HTTP\Response();
+ $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse));
}
/**
- * @covers \Sabre\DAV\Server::checkPreconditions
*/
function testIfNoneMatchNoNode() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
- 'HTTP_IF_NONE_MATCH' => '*',
- 'REQUEST_URI' => '/bar'
- ));
- $server->httpRequest = $httpRequest;
-
- $this->assertTrue($server->checkPreconditions());
+ $httpRequest = new HTTP\Request('GET', '/bar', ['If-None-Match' => '*']);
+ $httpResponse = new HTTP\Response();
+ $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse));
}
/**
- * @covers \Sabre\DAV\Server::checkPreconditions
* @expectedException Sabre\DAV\Exception\PreconditionFailed
*/
function testIfNoneMatchHasNode() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
- 'HTTP_IF_NONE_MATCH' => '*',
- 'REQUEST_URI' => '/foo'
- ));
- $server->httpRequest = $httpRequest;
-
- $server->checkPreconditions();
+ $httpRequest = new HTTP\Request('POST', '/foo', ['If-None-Match' => '*']);
+ $httpResponse = new HTTP\Response();
+ $server->checkPreconditions($httpRequest, $httpResponse);
}
/**
- * @covers \Sabre\DAV\Server::checkPreconditions
*/
function testIfNoneMatchWrongEtag() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
- 'HTTP_IF_NONE_MATCH' => '"1234"',
- 'REQUEST_URI' => '/foo'
- ));
- $server->httpRequest = $httpRequest;
-
- $this->assertTrue($server->checkPreconditions());
+ $httpRequest = new HTTP\Request('POST', '/foo', ['If-None-Match' => '"1234"']);
+ $httpResponse = new HTTP\Response();
+ $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse));
}
/**
- * @covers \Sabre\DAV\Server::checkPreconditions
*/
function testIfNoneMatchWrongEtagMultiple() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
- 'HTTP_IF_NONE_MATCH' => '"1234", "5678"',
- 'REQUEST_URI' => '/foo'
- ));
- $server->httpRequest = $httpRequest;
-
- $this->assertTrue($server->checkPreconditions());
+ $httpRequest = new HTTP\Request('POST', '/foo', ['If-None-Match' => '"1234", "5678"']);
+ $httpResponse = new HTTP\Response();
+ $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse));
}
/**
- * @covers \Sabre\DAV\Server::checkPreconditions
* @expectedException Sabre\DAV\Exception\PreconditionFailed
*/
public function testIfNoneMatchCorrectEtag() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
- 'HTTP_IF_NONE_MATCH' => '"abc123"',
- 'REQUEST_URI' => '/foo'
- ));
- $server->httpRequest = $httpRequest;
-
- $server->checkPreconditions();
+ $httpRequest = new HTTP\Request('POST', '/foo', ['If-None-Match' => '"abc123"']);
+ $httpResponse = new HTTP\Response();
+ $server->checkPreconditions($httpRequest, $httpResponse);
}
/**
- * @covers \Sabre\DAV\Server::checkPreconditions
* @expectedException Sabre\DAV\Exception\PreconditionFailed
*/
public function testIfNoneMatchCorrectEtagMultiple() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
- 'HTTP_IF_NONE_MATCH' => '"1234", "abc123"',
- 'REQUEST_URI' => '/foo'
- ));
- $server->httpRequest = $httpRequest;
-
- $server->checkPreconditions();
+ $httpRequest = new HTTP\Request('POST', '/foo', ['If-None-Match' => '"1234, "abc123"']);
+ $httpResponse = new HTTP\Response();
+ $server->checkPreconditions($httpRequest, $httpResponse);
}
/**
- * @covers \Sabre\DAV\Server::checkPreconditions
*/
public function testIfNoneMatchCorrectEtagAsGet() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
- 'HTTP_IF_NONE_MATCH' => '"abc123"',
- 'REQUEST_URI' => '/foo'
- ));
+ $httpRequest = new HTTP\Request('GET', '/foo', ['If-None-Match' => '"abc123"']);
+ $server->httpResponse = new HTTP\ResponseMock();
+
+ $this->assertFalse($server->checkPreconditions($httpRequest, $server->httpResponse));
+ $this->assertEquals(304, $server->httpResponse->getStatus());
+ $this->assertEquals(['ETag' => ['"abc123"']], $server->httpResponse->getHeaders());
+
+ }
+
+ /**
+ * This was a test written for issue #515.
+ */
+ public function testNoneMatchCorrectEtagEnsureSapiSent() {
+
+ $root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
+ $server = new Server($root);
+ $server->sapi = new HTTP\SapiMock();
+ HTTP\SapiMock::$sent = 0;
+ $httpRequest = new HTTP\Request('GET', '/foo', ['If-None-Match' => '"abc123"']);
$server->httpRequest = $httpRequest;
$server->httpResponse = new HTTP\ResponseMock();
- $this->assertFalse($server->checkPreconditions(true));
- $this->assertEquals('HTTP/1.1 304 Not Modified',$server->httpResponse->status);
+ $server->exec();
+
+ $this->assertFalse($server->checkPreconditions($httpRequest, $server->httpResponse));
+ $this->assertEquals(304, $server->httpResponse->getStatus());
+ $this->assertEquals([
+ 'ETag' => ['"abc123"'],
+ 'X-Sabre-Version' => [Version::VERSION],
+ ], $server->httpResponse->getHeaders());
+ $this->assertEquals(1, HTTP\SapiMock::$sent);
}
/**
- * @covers \Sabre\DAV\Server::checkPreconditions
*/
public function testIfModifiedSinceUnModified() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
+ $httpRequest = HTTP\Sapi::createFromServerArray(array(
'HTTP_IF_MODIFIED_SINCE' => 'Sun, 06 Nov 1994 08:49:37 GMT',
'REQUEST_URI' => '/foo'
));
- $server->httpRequest = $httpRequest;
$server->httpResponse = new HTTP\ResponseMock();
- $this->assertFalse($server->checkPreconditions());
+ $this->assertFalse($server->checkPreconditions($httpRequest, $server->httpResponse));
- $this->assertEquals('HTTP/1.1 304 Not Modified',$server->httpResponse->status);
+ $this->assertEquals(304, $server->httpResponse->status);
$this->assertEquals(array(
- 'Last-Modified' => 'Sat, 06 Apr 1985 23:30:00 GMT',
- ), $server->httpResponse->headers);
+ 'Last-Modified' => ['Sat, 06 Apr 1985 23:30:00 GMT'],
+ ), $server->httpResponse->getHeaders());
}
/**
- * @covers \Sabre\DAV\Server::checkPreconditions
*/
public function testIfModifiedSinceModified() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
+ $httpRequest = HTTP\Sapi::createFromServerArray(array(
'HTTP_IF_MODIFIED_SINCE' => 'Tue, 06 Nov 1984 08:49:37 GMT',
'REQUEST_URI' => '/foo'
));
- $server->httpRequest = $httpRequest;
- $server->httpResponse = new HTTP\ResponseMock();
- $this->assertTrue($server->checkPreconditions());
+
+ $httpResponse = new HTTP\ResponseMock();
+ $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse));
}
/**
- * @covers \Sabre\DAV\Server::checkPreconditions
*/
public function testIfModifiedSinceInvalidDate() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
+ $httpRequest = HTTP\Sapi::createFromServerArray(array(
'HTTP_IF_MODIFIED_SINCE' => 'Your mother',
'REQUEST_URI' => '/foo'
));
- $server->httpRequest = $httpRequest;
- $server->httpResponse = new HTTP\ResponseMock();
+ $httpResponse = new HTTP\ResponseMock();
// Invalid dates must be ignored, so this should return true
- $this->assertTrue($server->checkPreconditions());
+ $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse));
}
/**
- * @covers \Sabre\DAV\Server::checkPreconditions
*/
public function testIfModifiedSinceInvalidDate2() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
+ $httpRequest = HTTP\Sapi::createFromServerArray(array(
'HTTP_IF_MODIFIED_SINCE' => 'Sun, 06 Nov 1994 08:49:37 EST',
'REQUEST_URI' => '/foo'
));
- $server->httpRequest = $httpRequest;
- $server->httpResponse = new HTTP\ResponseMock();
- $this->assertTrue($server->checkPreconditions());
+ $httpResponse = new HTTP\ResponseMock();
+ $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse));
}
/**
- * @covers \Sabre\DAV\Server::checkPreconditions
*/
public function testIfUnmodifiedSinceUnModified() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
+ $httpRequest = HTTP\Sapi::createFromServerArray(array(
'HTTP_IF_UNMODIFIED_SINCE' => 'Sun, 06 Nov 1994 08:49:37 GMT',
'REQUEST_URI' => '/foo'
));
- $server->httpRequest = $httpRequest;
- $this->assertTrue($server->checkPreconditions());
+ $httpResponse = new HTTP\Response();
+ $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse));
}
/**
- * @covers \Sabre\DAV\Server::checkPreconditions
* @expectedException Sabre\DAV\Exception\PreconditionFailed
*/
public function testIfUnmodifiedSinceModified() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
+ $httpRequest = HTTP\Sapi::createFromServerArray(array(
'HTTP_IF_UNMODIFIED_SINCE' => 'Tue, 06 Nov 1984 08:49:37 GMT',
'REQUEST_URI' => '/foo'
));
- $server->httpRequest = $httpRequest;
- $server->httpResponse = new HTTP\ResponseMock();
- $server->checkPreconditions();
+ $httpResponse = new HTTP\ResponseMock();
+ $server->checkPreconditions($httpRequest, $httpResponse);
}
/**
- * @covers \Sabre\DAV\Server::checkPreconditions
*/
public function testIfUnmodifiedSinceInvalidDate() {
$root = new SimpleCollection('root',array(new ServerPreconditionsNode()));
$server = new Server($root);
- $httpRequest = new HTTP\Request(array(
+ $httpRequest = HTTP\Sapi::createFromServerArray(array(
'HTTP_IF_UNMODIFIED_SINCE' => 'Sun, 06 Nov 1984 08:49:37 CET',
'REQUEST_URI' => '/foo'
));
- $server->httpRequest = $httpRequest;
- $server->httpResponse = new HTTP\ResponseMock();
- $this->assertTrue($server->checkPreconditions());
+ $httpResponse = new HTTP\ResponseMock();
+ $this->assertTrue($server->checkPreconditions($httpRequest, $httpResponse));
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerPropsTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerPropsTest.php
index 859a91070..253200be7 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/ServerPropsTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerPropsTest.php
@@ -1,6 +1,7 @@
<?php
namespace Sabre\DAV;
+
use Sabre\HTTP;
require_once 'Sabre/HTTP/ResponseMock.php';
@@ -16,7 +17,7 @@ class ServerPropsTest extends AbstractServer {
function setUp() {
- if (file_exists(SABRE_TEMPDIR.'../.sabredav')) unlink(SABRE_TEMPDIR.'../.sabredav');
+ if (file_exists(SABRE_TEMPDIR . '../.sabredav')) unlink(SABRE_TEMPDIR . '../.sabredav');
parent::setUp();
file_put_contents(SABRE_TEMPDIR . '/test2.txt', 'Test contents2');
mkdir(SABRE_TEMPDIR . '/col');
@@ -28,64 +29,68 @@ class ServerPropsTest extends AbstractServer {
function tearDown() {
parent::tearDown();
- if (file_exists(SABRE_TEMPDIR.'../.locksdb')) unlink(SABRE_TEMPDIR.'../.locksdb');
+ if (file_exists(SABRE_TEMPDIR . '../.locksdb')) unlink(SABRE_TEMPDIR . '../.locksdb');
}
- private function sendRequest($body) {
-
- $serverVars = array(
- 'REQUEST_URI' => '/',
- 'REQUEST_METHOD' => 'PROPFIND',
- 'HTTP_DEPTH' => '0',
- );
+ private function sendRequest($body, $path = '/', $headers = ['Depth' => '0']) {
- $request = new HTTP\Request($serverVars);
- $request->setBody($body);
+ $request = new HTTP\Request('PROPFIND', $path, $headers, $body);
- $this->server->httpRequest = ($request);
+ $this->server->httpRequest = $request;
$this->server->exec();
}
- public function testPropFindEmptyBody() {
+ function testPropFindEmptyBody() {
- $hasFired = false;
+ $this->sendRequest("");
+ $this->assertEquals(207, $this->response->status);
+
+ $this->assertEquals([
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ 'DAV' => ['1, 3, extended-mkcol, 2'],
+ 'Vary' => ['Brief,Prefer'],
+ ],
+ $this->response->getHeaders()
+ );
- $self = $this;
- // Also testing the beforeGetPropertiesForPath event.
- $this->server->subscribeEvent('beforeGetPropertiesForPath', function($path, $properties, $depth) use ($self, &$hasFired) {
+ $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/", "xmlns\\1=\"urn:DAV\"", $this->response->body);
+ $xml = simplexml_load_string($body);
+ $xml->registerXPathNamespace('d', 'urn:DAV');
- $hasFired = true;
- $self->assertEquals('', $path);
- $self->assertEquals(array(), $properties);
- $self->assertEquals(0, $depth);
+ list($data) = $xml->xpath('/d:multistatus/d:response/d:href');
+ $this->assertEquals('/', (string)$data, 'href element should have been /');
- });
+ $data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:resourcetype');
+ $this->assertEquals(1, count($data));
- $this->sendRequest("");
+ }
- $this->assertTrue($hasFired);
+ function testPropFindEmptyBodyFile() {
- $this->assertEquals('HTTP/1.1 207 Multi-Status',$this->response->status);
+ $this->sendRequest("", '/test2.txt', []);
+ $this->assertEquals(207, $this->response->status);
- $this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- 'DAV' => '1, 3, extended-mkcol, 2',
- 'Vary' => 'Brief,Prefer',
- ),
- $this->response->headers
+ $this->assertEquals([
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ 'DAV' => ['1, 3, extended-mkcol, 2'],
+ 'Vary' => ['Brief,Prefer'],
+ ],
+ $this->response->getHeaders()
);
- $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/","xmlns\\1=\"urn:DAV\"",$this->response->body);
+ $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/", "xmlns\\1=\"urn:DAV\"", $this->response->body);
$xml = simplexml_load_string($body);
- $xml->registerXPathNamespace('d','urn:DAV');
+ $xml->registerXPathNamespace('d', 'urn:DAV');
list($data) = $xml->xpath('/d:multistatus/d:response/d:href');
- $this->assertEquals('/',(string)$data,'href element should have been /');
+ $this->assertEquals('/test2.txt', (string)$data, 'href element should have been /test2.txt');
- $data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:resourcetype');
- $this->assertEquals(1,count($data));
+ $data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:getcontentlength');
+ $this->assertEquals(1, count($data));
}
@@ -100,27 +105,27 @@ class ServerPropsTest extends AbstractServer {
$this->sendRequest($xml);
- $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/","xmlns\\1=\"urn:DAV\"",$this->response->body);
+ $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/", "xmlns\\1=\"urn:DAV\"", $this->response->body);
$xml = simplexml_load_string($body);
- $xml->registerXPathNamespace('d','urn:DAV');
+ $xml->registerXPathNamespace('d', 'urn:DAV');
$data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:supportedlock/d:lockentry');
- $this->assertEquals(2,count($data),'We expected two \'d:lockentry\' tags');
+ $this->assertEquals(2, count($data), 'We expected two \'d:lockentry\' tags');
$data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:supportedlock/d:lockentry/d:lockscope');
- $this->assertEquals(2,count($data),'We expected two \'d:lockscope\' tags');
+ $this->assertEquals(2, count($data), 'We expected two \'d:lockscope\' tags');
$data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:supportedlock/d:lockentry/d:locktype');
- $this->assertEquals(2,count($data),'We expected two \'d:locktype\' tags');
+ $this->assertEquals(2, count($data), 'We expected two \'d:locktype\' tags');
$data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:supportedlock/d:lockentry/d:lockscope/d:shared');
- $this->assertEquals(1,count($data),'We expected a \'d:shared\' tag');
+ $this->assertEquals(1, count($data), 'We expected a \'d:shared\' tag');
$data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:supportedlock/d:lockentry/d:lockscope/d:exclusive');
- $this->assertEquals(1,count($data),'We expected a \'d:exclusive\' tag');
+ $this->assertEquals(1, count($data), 'We expected a \'d:exclusive\' tag');
$data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:supportedlock/d:lockentry/d:locktype/d:write');
- $this->assertEquals(2,count($data),'We expected two \'d:write\' tags');
+ $this->assertEquals(2, count($data), 'We expected two \'d:write\' tags');
}
function testLockDiscovery() {
@@ -134,12 +139,12 @@ class ServerPropsTest extends AbstractServer {
$this->sendRequest($xml);
- $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/","xmlns\\1=\"urn:DAV\"",$this->response->body);
+ $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/", "xmlns\\1=\"urn:DAV\"", $this->response->body);
$xml = simplexml_load_string($body);
- $xml->registerXPathNamespace('d','urn:DAV');
+ $xml->registerXPathNamespace('d', 'urn:DAV');
$data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop/d:lockdiscovery');
- $this->assertEquals(1,count($data),'We expected a \'d:lockdiscovery\' tag');
+ $this->assertEquals(1, count($data), 'We expected a \'d:lockdiscovery\' tag');
}
@@ -153,31 +158,28 @@ class ServerPropsTest extends AbstractServer {
</d:propfind>';
$this->sendRequest($xml);
- $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/","xmlns\\1=\"urn:DAV\"",$this->response->body);
+ $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/", "xmlns\\1=\"urn:DAV\"", $this->response->body);
$xml = simplexml_load_string($body);
- $xml->registerXPathNamespace('d','urn:DAV');
- $pathTests = array(
+ $xml->registerXPathNamespace('d', 'urn:DAV');
+ $pathTests = [
'/d:multistatus',
'/d:multistatus/d:response',
'/d:multistatus/d:response/d:propstat',
'/d:multistatus/d:response/d:propstat/d:status',
'/d:multistatus/d:response/d:propstat/d:prop',
'/d:multistatus/d:response/d:propstat/d:prop/d:macaroni',
- );
- foreach($pathTests as $test) {
- $this->assertTrue(count($xml->xpath($test))==true,'We expected the ' . $test . ' element to appear in the response, we got: ' . $body);
+ ];
+ foreach ($pathTests as $test) {
+ $this->assertTrue(count($xml->xpath($test)) == true, 'We expected the ' . $test . ' element to appear in the response, we got: ' . $body);
}
$val = $xml->xpath('/d:multistatus/d:response/d:propstat/d:status');
- $this->assertEquals(1,count($val),$body);
- $this->assertEquals('HTTP/1.1 404 Not Found',(string)$val[0]);
+ $this->assertEquals(1, count($val), $body);
+ $this->assertEquals('HTTP/1.1 404 Not Found', (string)$val[0]);
}
- /**
- * @covers Sabre\DAV\Server::parsePropPatchRequest
- */
- public function testParsePropPatchRequest() {
+ function testParsePropPatchRequest() {
$body = '<?xml version="1.0"?>
<d:propertyupdate xmlns:d="DAV:" xmlns:s="http://sabredav.org/NS/test">
@@ -187,226 +189,12 @@ class ServerPropsTest extends AbstractServer {
<d:remove><d:prop><s:someprop3 /></d:prop></d:remove>
</d:propertyupdate>';
- $result = $this->server->parsePropPatchRequest($body);
- $this->assertEquals(array(
- '{http://sabredav.org/NS/test}someprop' => 'somevalue',
+ $result = $this->server->xml->parse($body);
+ $this->assertEquals([
+ '{http://sabredav.org/NS/test}someprop' => 'somevalue',
'{http://sabredav.org/NS/test}someprop2' => null,
'{http://sabredav.org/NS/test}someprop3' => null,
- ), $result);
-
- }
-
- /**
- * @covers Sabre\DAV\Server::updateProperties
- */
- public function testUpdateProperties() {
-
- $props = array(
- '{http://sabredav.org/NS/test}someprop' => 'somevalue',
- );
-
- $result = $this->server->updateProperties('/test2.txt',$props);
-
- $this->assertEquals(array(
- '200' => array('{http://sabredav.org/NS/test}someprop' => null),
- 'href' => '/test2.txt',
- ), $result);
-
- }
-
- /**
- * @covers Sabre\DAV\Server::updateProperties
- * @depends testUpdateProperties
- */
- public function testUpdatePropertiesProtected() {
-
- $props = array(
- '{http://sabredav.org/NS/test}someprop' => 'somevalue',
- '{DAV:}getcontentlength' => 50,
- );
-
- $result = $this->server->updateProperties('/test2.txt',$props);
-
- $this->assertEquals(array(
- '424' => array('{http://sabredav.org/NS/test}someprop' => null),
- '403' => array('{DAV:}getcontentlength' => null),
- 'href' => '/test2.txt',
- ), $result);
-
- }
-
- /**
- * @covers Sabre\DAV\Server::updateProperties
- * @depends testUpdateProperties
- */
- public function testUpdatePropertiesFail1() {
-
- $dir = new PropTestDirMock('updatepropsfalse');
- $objectTree = new ObjectTree($dir);
- $this->server->tree = $objectTree;
-
- $props = array(
- '{http://sabredav.org/NS/test}someprop' => 'somevalue',
- );
-
- $result = $this->server->updateProperties('/',$props);
-
- $this->assertEquals(array(
- '403' => array('{http://sabredav.org/NS/test}someprop' => null),
- 'href' => '/',
- ), $result);
-
- }
-
- /**
- * @covers Sabre\DAV\Server::updateProperties
- * @depends testUpdateProperties
- */
- public function testUpdatePropertiesFail2() {
-
- $dir = new PropTestDirMock('updatepropsarray');
- $objectTree = new ObjectTree($dir);
- $this->server->tree = $objectTree;
-
- $props = array(
- '{http://sabredav.org/NS/test}someprop' => 'somevalue',
- );
-
- $result = $this->server->updateProperties('/',$props);
-
- $this->assertEquals(array(
- '402' => array('{http://sabredav.org/NS/test}someprop' => null),
- 'href' => '/',
- ), $result);
-
- }
-
- /**
- * @covers Sabre\DAV\Server::updateProperties
- * @depends testUpdateProperties
- * @expectedException Sabre\DAV\Exception
- */
- public function testUpdatePropertiesFail3() {
-
- $dir = new PropTestDirMock('updatepropsobj');
- $objectTree = new ObjectTree($dir);
- $this->server->tree = $objectTree;
-
- $props = array(
- '{http://sabredav.org/NS/test}someprop' => 'somevalue',
- );
-
- $result = $this->server->updateProperties('/',$props);
-
- }
-
- /**
- * @depends testParsePropPatchRequest
- * @depends testUpdateProperties
- * @covers Sabre\DAV\Server::httpPropPatch
- */
- public function testPropPatch() {
-
- $serverVars = array(
- 'REQUEST_URI' => '/',
- 'REQUEST_METHOD' => 'PROPPATCH',
- );
-
- $body = '<?xml version="1.0"?>
-<d:propertyupdate xmlns:d="DAV:" xmlns:s="http://www.rooftopsolutions.nl/testnamespace">
- <d:set><d:prop><s:someprop>somevalue</s:someprop></d:prop></d:set>
-</d:propertyupdate>';
-
- $request = new HTTP\Request($serverVars);
- $request->setBody($body);
-
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- 'Vary' => 'Brief,Prefer',
- ),
- $this->response->headers
- );
-
- $this->assertEquals('HTTP/1.1 207 Multi-Status',$this->response->status,'We got the wrong status. Full XML response: ' . $this->response->body);
-
- $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/","xmlns\\1=\"urn:DAV\"",$this->response->body);
- $xml = simplexml_load_string($body);
- $xml->registerXPathNamespace('d','urn:DAV');
- $xml->registerXPathNamespace('bla','http://www.rooftopsolutions.nl/testnamespace');
-
- $data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:prop');
- $this->assertEquals(1,count($data),'We expected one \'d:prop\' element. Response body: ' . $body);
-
- $data = $xml->xpath('//bla:someprop');
- $this->assertEquals(1,count($data),'We expected one \'s:someprop\' element. Response body: ' . $body);
-
- $data = $xml->xpath('/d:multistatus/d:response/d:propstat/d:status');
- $this->assertEquals(1,count($data),'We expected one \'s:status\' element. Response body: ' . $body);
-
- $this->assertEquals('HTTP/1.1 200 OK',(string)$data[0]);
-
- }
-
- /**
- * @depends testPropPatch
- */
- public function testPropPatchAndFetch() {
-
- $this->testPropPatch();
- $xml = '<?xml version="1.0"?>
-<d:propfind xmlns:d="DAV:" xmlns:s="http://www.rooftopsolutions.nl/testnamespace">
- <d:prop>
- <s:someprop />
- </d:prop>
-</d:propfind>';
-
- $this->sendRequest($xml);
-
- $body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/","xmlns\\1=\"urn:DAV\"",$this->response->body);
- $xml = simplexml_load_string($body);
- $xml->registerXPathNamespace('d','urn:DAV');
- $xml->registerXPathNamespace('bla','http://www.rooftopsolutions.nl/testnamespace');
-
- $xpath='//bla:someprop';
- $result = $xml->xpath($xpath);
- $this->assertEquals(1,count($result),'We couldn\'t find our new property in the response. Full response body:' . "\n" . $body);
- $this->assertEquals('somevalue',(string)$result[0],'We couldn\'t find our new property in the response. Full response body:' . "\n" . $body);
-
- }
-
-}
-
-class PropTestDirMock extends SimpleCollection implements IProperties {
-
- public $type;
-
- function __construct($type) {
-
- $this->type =$type;
- parent::__construct('root');
-
- }
-
- function updateProperties($updateProperties) {
-
- switch($this->type) {
- case 'updatepropsfalse' : return false;
- case 'updatepropsarray' :
- $r = array(402 => array());
- foreach($updateProperties as $k=>$v) $r[402][$k] = null;
- return $r;
- case 'updatepropsobj' :
- return new \STDClass();
- }
-
- }
-
- function getProperties($requestedPropeties) {
-
- return array();
+ ], $result->properties);
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerRangeTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerRangeTest.php
index a06fcb0be..bafbef6e4 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/ServerRangeTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerRangeTest.php
@@ -1,42 +1,62 @@
<?php
namespace Sabre\DAV;
-use Sabre\HTTP;
-require_once 'Sabre/DAV/AbstractServer.php';
+use DateTime;
+use Sabre\HTTP;
-class ServerRangeTest extends AbstractServer{
+/**
+ * This file tests HTTP requests that use the Range: header.
+ *
+ * @copyright Copyright (C) fruux GmbH. (https://fruux.com/)
+ * @author Evert Pot (http://evertpot.com/)
+ * @license http://sabre.io/license/ Modified BSD License
+ */
+class ServerRangeTest extends \Sabre\DAVServerTest {
- protected function getRootNode() {
+ protected $setupFiles = true;
- return new FSExt\Directory(SABRE_TEMPDIR);
+ /**
+ * We need this string a lot
+ */
+ protected $lastModified;
- }
+ function setUp() {
- function testRange() {
+ parent::setUp();
+ $this->server->createFile('files/test.txt', 'Test contents');
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'GET',
- 'HTTP_RANGE' => 'bytes=2-5',
+ $this->lastModified = HTTP\Util::toHTTPDate(
+ new DateTime('@' . $this->server->tree->getNodeForPath('files/test.txt')->getLastModified())
);
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
+ $stream = popen('echo "Test contents"', 'r');
+ $streamingFile = new Mock\StreamingFile(
+ 'no-seeking.txt',
+ $stream
+ );
+ $streamingFile->setSize(12);
+ $this->server->tree->getNodeForPath('files')->addNode($streamingFile);
- $this->assertEquals(array(
- 'Content-Type' => 'application/octet-stream',
- 'Content-Length' => 4,
- 'Content-Range' => 'bytes 2-5/13',
- 'Last-Modified' => HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($this->tempDir . '/test.txt'))),
- 'ETag' => '"' . md5(file_get_contents(SABRE_TEMPDIR . '/test.txt')). '"',
- ),
- $this->response->headers
- );
+ }
- $this->assertEquals('HTTP/1.1 206 Partial Content',$this->response->status);
- $this->assertEquals('st c', stream_get_contents($this->response->body));
+ function testRange() {
+
+ $request = new HTTP\Request('GET', '/files/test.txt', ['Range' => 'bytes=2-5']);
+ $response = $this->request($request);
+
+ $this->assertEquals([
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/octet-stream'],
+ 'Content-Length' => [4],
+ 'Content-Range' => ['bytes 2-5/13'],
+ 'ETag' => ['"' . md5('Test contents') . '"'],
+ 'Last-Modified' => [$this->lastModified],
+ ],
+ $response->getHeaders()
+ );
+ $this->assertEquals(206, $response->getStatus());
+ $this->assertEquals('st c', $response->getBodyAsString());
}
@@ -45,28 +65,22 @@ class ServerRangeTest extends AbstractServer{
*/
function testStartRange() {
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'GET',
- 'HTTP_RANGE' => 'bytes=2-',
+ $request = new HTTP\Request('GET', '/files/test.txt', ['Range' => 'bytes=2-']);
+ $response = $this->request($request);
+
+ $this->assertEquals([
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/octet-stream'],
+ 'Content-Length' => [11],
+ 'Content-Range' => ['bytes 2-12/13'],
+ 'ETag' => ['"' . md5('Test contents') . '"'],
+ 'Last-Modified' => [$this->lastModified],
+ ],
+ $response->getHeaders()
);
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals(array(
- 'Content-Type' => 'application/octet-stream',
- 'Content-Length' => 11,
- 'Content-Range' => 'bytes 2-12/13',
- 'Last-Modified' => HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($this->tempDir . '/test.txt'))),
- 'ETag' => '"' . md5(file_get_contents(SABRE_TEMPDIR . '/test.txt')) . '"',
- ),
- $this->response->headers
- );
-
- $this->assertEquals('HTTP/1.1 206 Partial Content',$this->response->status);
- $this->assertEquals('st contents', stream_get_contents($this->response->body));
+ $this->assertEquals(206, $response->getStatus());
+ $this->assertEquals('st contents', $response->getBodyAsString());
}
@@ -75,28 +89,22 @@ class ServerRangeTest extends AbstractServer{
*/
function testEndRange() {
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'GET',
- 'HTTP_RANGE' => 'bytes=-8',
+ $request = new HTTP\Request('GET', '/files/test.txt', ['Range' => 'bytes=-8']);
+ $response = $this->request($request);
+
+ $this->assertEquals([
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/octet-stream'],
+ 'Content-Length' => [8],
+ 'Content-Range' => ['bytes 5-12/13'],
+ 'ETag' => ['"' . md5('Test contents') . '"'],
+ 'Last-Modified' => [$this->lastModified],
+ ],
+ $response->getHeaders()
);
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals(array(
- 'Content-Type' => 'application/octet-stream',
- 'Content-Length' => 8,
- 'Content-Range' => 'bytes 5-12/13',
- 'Last-Modified' => HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($this->tempDir . '/test.txt'))),
- 'ETag' => '"' . md5(file_get_contents(SABRE_TEMPDIR . '/test.txt')). '"',
- ),
- $this->response->headers
- );
-
- $this->assertEquals('HTTP/1.1 206 Partial Content',$this->response->status);
- $this->assertEquals('contents', stream_get_contents($this->response->body));
+ $this->assertEquals(206, $response->getStatus());
+ $this->assertEquals('contents', $response->getBodyAsString());
}
@@ -105,17 +113,10 @@ class ServerRangeTest extends AbstractServer{
*/
function testTooHighRange() {
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'GET',
- 'HTTP_RANGE' => 'bytes=100-200',
- );
+ $request = new HTTP\Request('GET', '/files/test.txt', ['Range' => 'bytes=100-200']);
+ $response = $this->request($request);
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals('HTTP/1.1 416 Requested Range Not Satisfiable',$this->response->status);
+ $this->assertEquals(416, $response->getStatus());
}
@@ -124,151 +125,138 @@ class ServerRangeTest extends AbstractServer{
*/
function testCrazyRange() {
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'GET',
- 'HTTP_RANGE' => 'bytes=8-4',
- );
+ $request = new HTTP\Request('GET', '/files/test.txt', ['Range' => 'bytes=8-4']);
+ $response = $this->request($request);
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
+ $this->assertEquals(416, $response->getStatus());
- $this->assertEquals('HTTP/1.1 416 Requested Range Not Satisfiable',$this->response->status);
+ }
+
+ function testNonSeekableStream() {
+
+ $request = new HTTP\Request('GET', '/files/no-seeking.txt', ['Range' => 'bytes=2-5']);
+ $response = $this->request($request);
+
+ $this->assertEquals(206, $response->getStatus(), $response);
+ $this->assertEquals([
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/octet-stream'],
+ 'Content-Length' => [4],
+ 'Content-Range' => ['bytes 2-5/12'],
+ // 'ETag' => ['"' . md5('Test contents') . '"'],
+ 'Last-Modified' => [$this->lastModified],
+ ],
+ $response->getHeaders()
+ );
+
+ $this->assertEquals('st c', $response->getBodyAsString());
}
/**
* @depends testRange
- * @covers \Sabre\DAV\Server::httpGet
*/
function testIfRangeEtag() {
- $node = $this->server->tree->getNodeForPath('test.txt');
-
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'GET',
- 'HTTP_RANGE' => 'bytes=2-5',
- 'HTTP_IF_RANGE' => $node->getETag(),
+ $request = new HTTP\Request('GET', '/files/test.txt', [
+ 'Range' => 'bytes=2-5',
+ 'If-Range' => '"' . md5('Test contents') . '"',
+ ]);
+ $response = $this->request($request);
+
+ $this->assertEquals([
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/octet-stream'],
+ 'Content-Length' => [4],
+ 'Content-Range' => ['bytes 2-5/13'],
+ 'ETag' => ['"' . md5('Test contents') . '"'],
+ 'Last-Modified' => [$this->lastModified],
+ ],
+ $response->getHeaders()
);
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals(array(
- 'Content-Type' => 'application/octet-stream',
- 'Content-Length' => 4,
- 'Content-Range' => 'bytes 2-5/13',
- 'Last-Modified' => HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($this->tempDir . '/test.txt'))),
- 'ETag' => '"' . md5(file_get_contents(SABRE_TEMPDIR . '/test.txt')) . '"',
- ),
- $this->response->headers
- );
-
- $this->assertEquals('HTTP/1.1 206 Partial Content',$this->response->status);
- $this->assertEquals('st c', stream_get_contents($this->response->body));
+ $this->assertEquals(206, $response->getStatus());
+ $this->assertEquals('st c', $response->getBodyAsString());
}
/**
- * @depends testRange
- * @covers \Sabre\DAV\Server::httpGet
+ * @depends testIfRangeEtag
*/
function testIfRangeEtagIncorrect() {
- $node = $this->server->tree->getNodeForPath('test.txt');
-
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'GET',
- 'HTTP_RANGE' => 'bytes=2-5',
- 'HTTP_IF_RANGE' => $node->getETag() . 'blabla',
+ $request = new HTTP\Request('GET', '/files/test.txt', [
+ 'Range' => 'bytes=2-5',
+ 'If-Range' => '"foobar"',
+ ]);
+ $response = $this->request($request);
+
+ $this->assertEquals([
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/octet-stream'],
+ 'Content-Length' => [13],
+ 'ETag' => ['"' . md5('Test contents') . '"'],
+ 'Last-Modified' => [$this->lastModified],
+ ],
+ $response->getHeaders()
);
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals(array(
- 'Content-Type' => 'application/octet-stream',
- 'Content-Length' => 13,
- 'Last-Modified' => HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($this->tempDir . '/test.txt'))),
- 'ETag' => '"' . md5(file_get_contents(SABRE_TEMPDIR . '/test.txt')) . '"',
- ),
- $this->response->headers
- );
-
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
- $this->assertEquals('Test contents', stream_get_contents($this->response->body));
+ $this->assertEquals(200, $response->getStatus());
+ $this->assertEquals('Test contents', $response->getBodyAsString());
}
/**
- * @depends testRange
- * @covers \Sabre\DAV\Server::httpGet
+ * @depends testIfRangeEtag
*/
function testIfRangeModificationDate() {
- $node = $this->server->tree->getNodeForPath('test.txt');
-
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'GET',
- 'HTTP_RANGE' => 'bytes=2-5',
- 'HTTP_IF_RANGE' => 'tomorrow',
+ $request = new HTTP\Request('GET', '/files/test.txt', [
+ 'Range' => 'bytes=2-5',
+ 'If-Range' => 'tomorrow',
+ ]);
+ $response = $this->request($request);
+
+ $this->assertEquals([
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/octet-stream'],
+ 'Content-Length' => [4],
+ 'Content-Range' => ['bytes 2-5/13'],
+ 'ETag' => ['"' . md5('Test contents') . '"'],
+ 'Last-Modified' => [$this->lastModified],
+ ],
+ $response->getHeaders()
);
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals(array(
- 'Content-Type' => 'application/octet-stream',
- 'Content-Length' => 4,
- 'Content-Range' => 'bytes 2-5/13',
- 'Last-Modified' => HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($this->tempDir . '/test.txt'))),
- 'ETag' => '"' . md5(file_get_contents(SABRE_TEMPDIR . '/test.txt')) . '"',
- ),
- $this->response->headers
- );
-
- $this->assertEquals('HTTP/1.1 206 Partial Content',$this->response->status);
- $this->assertEquals('st c', stream_get_contents($this->response->body));
+ $this->assertEquals(206, $response->getStatus());
+ $this->assertEquals('st c', $response->getBodyAsString());
}
/**
- * @depends testRange
- * @covers \Sabre\DAV\Server::httpGet
+ * @depends testIfRangeModificationDate
*/
function testIfRangeModificationDateModified() {
- $node = $this->server->tree->getNodeForPath('test.txt');
-
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'GET',
- 'HTTP_RANGE' => 'bytes=2-5',
- 'HTTP_IF_RANGE' => '-2 years',
+ $request = new HTTP\Request('GET', '/files/test.txt', [
+ 'Range' => 'bytes=2-5',
+ 'If-Range' => '-2 years',
+ ]);
+ $response = $this->request($request);
+
+ $this->assertEquals([
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/octet-stream'],
+ 'Content-Length' => [13],
+ 'ETag' => ['"' . md5('Test contents') . '"'],
+ 'Last-Modified' => [$this->lastModified],
+ ],
+ $response->getHeaders()
);
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals(array(
- 'Content-Type' => 'application/octet-stream',
- 'Content-Length' => 13,
- 'Last-Modified' => HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($this->tempDir . '/test.txt'))),
- 'ETag' => '"' . md5(file_get_contents(SABRE_TEMPDIR . '/test.txt')) . '"',
- ),
- $this->response->headers
- );
-
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
- $this->assertEquals('Test contents', stream_get_contents($this->response->body));
+ $this->assertEquals(200, $response->getStatus());
+ $this->assertEquals('Test contents', $response->getBodyAsString());
}
+
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerSimpleTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerSimpleTest.php
index 21e0ab2ea..66dde9db8 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/ServerSimpleTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerSimpleTest.php
@@ -4,17 +4,13 @@ namespace Sabre\DAV;
use Sabre\HTTP;
-require_once 'Sabre/HTTP/ResponseMock.php';
-require_once 'Sabre/DAV/AbstractServer.php';
-require_once 'Sabre/DAV/Exception.php';
-
class ServerSimpleTest extends AbstractServer{
function testConstructArray() {
- $nodes = array(
+ $nodes = [
new SimpleCollection('hello')
- );
+ ];
$server = new Server($nodes);
$this->assertEquals($nodes[0], $server->tree->getNodeForPath('hello'));
@@ -26,10 +22,10 @@ class ServerSimpleTest extends AbstractServer{
*/
function testConstructIncorrectObj() {
- $nodes = array(
+ $nodes = [
new SimpleCollection('hello'),
new \STDClass(),
- );
+ ];
$server = new Server($nodes);
@@ -44,253 +40,108 @@ class ServerSimpleTest extends AbstractServer{
}
- function testGet() {
-
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'GET',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals(array(
- 'Content-Type' => 'application/octet-stream',
- 'Content-Length' => 13,
- 'Last-Modified' => HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($this->tempDir . '/test.txt'))),
- ),
- $this->response->headers
- );
-
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
- $this->assertEquals('Test contents', stream_get_contents($this->response->body));
-
- }
- function testGetHttp10() {
-
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'GET',
- 'SERVER_PROTOCOL' => 'HTTP/1.0',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals(array(
- 'Content-Type' => 'application/octet-stream',
- 'Content-Length' => 13,
- 'Last-Modified' => HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($this->tempDir . '/test.txt'))),
- ),
- $this->response->headers
- );
-
- $this->assertEquals('HTTP/1.0 200 OK',$this->response->status);
- $this->assertEquals('Test contents', stream_get_contents($this->response->body));
-
- }
-
- function testGetDoesntExist() {
-
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt_randomblbla',
- 'REQUEST_METHOD' => 'GET',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
- $this->assertEquals('HTTP/1.1 404 Not Found',$this->response->status);
-
- }
-
- function testGetDoesntExist2() {
-
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt/randomblbla',
- 'REQUEST_METHOD' => 'GET',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
- $this->assertEquals('HTTP/1.1 404 Not Found',$this->response->status);
-
- }
-
- /**
- * This test should have the exact same result as testGet.
- *
- * The idea is that double slashes // are converted to single ones /
- *
- */
- function testGetDoubleSlash() {
-
- $serverVars = array(
- 'REQUEST_URI' => '//test.txt',
- 'REQUEST_METHOD' => 'GET',
- );
+ function testOptions() {
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
+ $request = new HTTP\Request('OPTIONS', '/');
+ $this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals(array(
- 'Content-Type' => 'application/octet-stream',
- 'Content-Length' => 13,
- 'Last-Modified' => HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($this->tempDir . '/test.txt'))),
- ),
- $this->response->headers
- );
-
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
- $this->assertEquals('Test contents', stream_get_contents($this->response->body));
-
- }
-
-
- function testHEAD() {
-
- $serverVars = array(
- 'REQUEST_URI' => '/test.txt',
- 'REQUEST_METHOD' => 'HEAD',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
+ $this->assertEquals([
+ 'DAV' => ['1, 3, extended-mkcol'],
+ 'MS-Author-Via' => ['DAV'],
+ 'Allow' => ['OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT'],
+ 'Accept-Ranges' => ['bytes'],
+ 'Content-Length' => ['0'],
+ 'X-Sabre-Version' => [Version::VERSION],
+ ], $this->response->getHeaders());
- $this->assertEquals(array(
- 'Content-Type' => 'application/octet-stream',
- 'Content-Length' => 13,
- 'Last-Modified' => HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($this->tempDir . '/test.txt'))),
- ),
- $this->response->headers
- );
-
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
+ $this->assertEquals(200, $this->response->status);
$this->assertEquals('', $this->response->body);
}
- function testOptions() {
+ function testOptionsUnmapped() {
- $serverVars = array(
- 'REQUEST_URI' => '/',
- 'REQUEST_METHOD' => 'OPTIONS',
- );
+ $request = new HTTP\Request('OPTIONS', '/unmapped');
+ $this->server->httpRequest = $request;
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
$this->server->exec();
- $this->assertEquals(array(
- 'DAV' => '1, 3, extended-mkcol',
- 'MS-Author-Via' => 'DAV',
- 'Allow' => 'OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT',
- 'Accept-Ranges' => 'bytes',
- 'Content-Length' => '0',
- 'X-Sabre-Version' => Version::VERSION,
- ),$this->response->headers);
+ $this->assertEquals([
+ 'DAV' => ['1, 3, extended-mkcol'],
+ 'MS-Author-Via' => ['DAV'],
+ 'Allow' => ['OPTIONS, GET, HEAD, DELETE, PROPFIND, PUT, PROPPATCH, COPY, MOVE, REPORT, MKCOL'],
+ 'Accept-Ranges' => ['bytes'],
+ 'Content-Length' => ['0'],
+ 'X-Sabre-Version' => [Version::VERSION],
+ ], $this->response->getHeaders());
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
+ $this->assertEquals(200, $this->response->status);
$this->assertEquals('', $this->response->body);
-
}
+
function testNonExistantMethod() {
- $serverVars = array(
+ $serverVars = [
'REQUEST_URI' => '/',
'REQUEST_METHOD' => 'BLABLA',
- );
+ ];
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$this->server->httpRequest = ($request);
$this->server->exec();
- $this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),$this->response->headers);
+ $this->assertEquals([
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ], $this->response->getHeaders());
- $this->assertEquals('HTTP/1.1 501 Not Implemented',$this->response->status);
+ $this->assertEquals(501, $this->response->status);
}
- function testGETOnCollection() {
-
- $serverVars = array(
- 'REQUEST_URI' => '/',
- 'REQUEST_METHOD' => 'GET',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),$this->response->headers);
-
- $this->assertEquals('HTTP/1.1 501 Not Implemented',$this->response->status);
-
- }
-
- function testHEADOnCollection() {
-
- $serverVars = array(
- 'REQUEST_URI' => '/',
- 'REQUEST_METHOD' => 'HEAD',
- );
-
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
- $this->server->exec();
-
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
-
- }
-
function testBaseUri() {
- $serverVars = array(
+ $serverVars = [
'REQUEST_URI' => '/blabla/test.txt',
'REQUEST_METHOD' => 'GET',
- );
+ ];
+ $filename = $this->tempDir . '/test.txt';
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$this->server->setBaseUri('/blabla/');
- $this->assertEquals('/blabla/',$this->server->getBaseUri());
+ $this->assertEquals('/blabla/', $this->server->getBaseUri());
$this->server->httpRequest = ($request);
$this->server->exec();
- $this->assertEquals(array(
- 'Content-Type' => 'application/octet-stream',
- 'Content-Length' => 13,
- 'Last-Modified' => HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($this->tempDir . '/test.txt'))),
- ),
- $this->response->headers
+ $this->assertEquals([
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/octet-stream'],
+ 'Content-Length' => [13],
+ 'Last-Modified' => [HTTP\Util::toHTTPDate(new \DateTime('@' . filemtime($filename)))],
+ 'ETag' => ['"' . sha1(fileinode($filename) . filesize($filename) . filemtime($filename)) . '"'],
+ ],
+ $this->response->getHeaders()
);
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
+ $this->assertEquals(200, $this->response->status);
$this->assertEquals('Test contents', stream_get_contents($this->response->body));
}
function testBaseUriAddSlash() {
- $tests = array(
+ $tests = [
'/' => '/',
'/foo' => '/foo/',
'/foo/' => '/foo/',
'/foo/bar' => '/foo/bar/',
'/foo/bar/' => '/foo/bar/',
- );
+ ];
- foreach($tests as $test=>$result) {
+ foreach ($tests as $test => $result) {
$this->server->setBaseUri($test);
$this->assertEquals($result, $this->server->getBaseUri());
@@ -301,25 +152,25 @@ class ServerSimpleTest extends AbstractServer{
function testCalculateUri() {
- $uris = array(
+ $uris = [
'http://www.example.org/root/somepath',
'/root/somepath',
'/root/somepath/',
- );
+ ];
$this->server->setBaseUri('/root/');
- foreach($uris as $uri) {
+ foreach ($uris as $uri) {
- $this->assertEquals('somepath',$this->server->calculateUri($uri));
+ $this->assertEquals('somepath', $this->server->calculateUri($uri));
}
$this->server->setBaseUri('/root');
- foreach($uris as $uri) {
+ foreach ($uris as $uri) {
- $this->assertEquals('somepath',$this->server->calculateUri($uri));
+ $this->assertEquals('somepath', $this->server->calculateUri($uri));
}
@@ -329,72 +180,60 @@ class ServerSimpleTest extends AbstractServer{
function testCalculateUriSpecialChars() {
- $uris = array(
+ $uris = [
'http://www.example.org/root/%C3%A0fo%C3%B3',
'/root/%C3%A0fo%C3%B3',
'/root/%C3%A0fo%C3%B3/'
- );
+ ];
$this->server->setBaseUri('/root/');
- foreach($uris as $uri) {
+ foreach ($uris as $uri) {
- $this->assertEquals("\xc3\xa0fo\xc3\xb3",$this->server->calculateUri($uri));
+ $this->assertEquals("\xc3\xa0fo\xc3\xb3", $this->server->calculateUri($uri));
}
$this->server->setBaseUri('/root');
- foreach($uris as $uri) {
+ foreach ($uris as $uri) {
- $this->assertEquals("\xc3\xa0fo\xc3\xb3",$this->server->calculateUri($uri));
+ $this->assertEquals("\xc3\xa0fo\xc3\xb3", $this->server->calculateUri($uri));
}
$this->server->setBaseUri('/');
- foreach($uris as $uri) {
+ foreach ($uris as $uri) {
- $this->assertEquals("root/\xc3\xa0fo\xc3\xb3",$this->server->calculateUri($uri));
+ $this->assertEquals("root/\xc3\xa0fo\xc3\xb3", $this->server->calculateUri($uri));
}
}
- function testBaseUriCheck() {
-
- $uris = array(
- 'http://www.example.org/root/somepath',
- '/root/somepath',
- '/root/somepath/'
- );
-
- try {
-
- $this->server->setBaseUri('root/');
- $this->server->calculateUri('/root/testuri');
-
- $this->fail('Expected an exception');
-
- } catch (Exception\Forbidden $e) {
+ /**
+ * @expectedException \Sabre\DAV\Exception\Forbidden
+ */
+ function testCalculateUriBreakout() {
- // This was expected
+ $uri = '/path1/';
- }
+ $this->server->setBaseUri('/path2/');
+ $this->server->calculateUri($uri);
}
/**
- * @covers \Sabre\DAV\Server::guessBaseUri
*/
function testGuessBaseUri() {
- $serverVars = array(
+ $serverVars = [
'REQUEST_URI' => '/index.php/root',
'PATH_INFO' => '/root',
- );
+ ];
- $httpRequest = new HTTP\Request($serverVars);
+ $httpRequest = HTTP\Sapi::createFromServerArray($serverVars);
$server = new Server();
$server->httpRequest = $httpRequest;
@@ -404,16 +243,15 @@ class ServerSimpleTest extends AbstractServer{
/**
* @depends testGuessBaseUri
- * @covers Sabre\DAV\Server::guessBaseUri
*/
function testGuessBaseUriPercentEncoding() {
- $serverVars = array(
+ $serverVars = [
'REQUEST_URI' => '/index.php/dir/path2/path%20with%20spaces',
'PATH_INFO' => '/dir/path2/path with spaces',
- );
+ ];
- $httpRequest = new HTTP\Request($serverVars);
+ $httpRequest = HTTP\Sapi::createFromServerArray($serverVars);
$server = new Server();
$server->httpRequest = $httpRequest;
@@ -423,18 +261,17 @@ class ServerSimpleTest extends AbstractServer{
/**
* @depends testGuessBaseUri
- * @covers \Sabre\DAV\Server::guessBaseUri
*/
/*
function testGuessBaseUriPercentEncoding2() {
$this->markTestIncomplete('This behaviour is not yet implemented');
- $serverVars = array(
+ $serverVars = [
'REQUEST_URI' => '/some%20directory+mixed/index.php/dir/path2/path%20with%20spaces',
'PATH_INFO' => '/dir/path2/path with spaces',
- );
+ ];
- $httpRequest = new HTTP\Request($serverVars);
+ $httpRequest = HTTP\Sapi::createFromServerArray($serverVars);
$server = new Server();
$server->httpRequest = $httpRequest;
@@ -444,12 +281,12 @@ class ServerSimpleTest extends AbstractServer{
function testGuessBaseUri2() {
- $serverVars = array(
+ $serverVars = [
'REQUEST_URI' => '/index.php/root/',
'PATH_INFO' => '/root/',
- );
+ ];
- $httpRequest = new HTTP\Request($serverVars);
+ $httpRequest = HTTP\Sapi::createFromServerArray($serverVars);
$server = new Server();
$server->httpRequest = $httpRequest;
@@ -459,11 +296,11 @@ class ServerSimpleTest extends AbstractServer{
function testGuessBaseUriNoPathInfo() {
- $serverVars = array(
+ $serverVars = [
'REQUEST_URI' => '/index.php/root',
- );
+ ];
- $httpRequest = new HTTP\Request($serverVars);
+ $httpRequest = HTTP\Sapi::createFromServerArray($serverVars);
$server = new Server();
$server->httpRequest = $httpRequest;
@@ -473,11 +310,11 @@ class ServerSimpleTest extends AbstractServer{
function testGuessBaseUriNoPathInfo2() {
- $serverVars = array(
+ $serverVars = [
'REQUEST_URI' => '/a/b/c/test.php',
- );
+ ];
- $httpRequest = new HTTP\Request($serverVars);
+ $httpRequest = HTTP\Sapi::createFromServerArray($serverVars);
$server = new Server();
$server->httpRequest = $httpRequest;
@@ -487,17 +324,16 @@ class ServerSimpleTest extends AbstractServer{
/**
- * @covers \Sabre\DAV\Server::guessBaseUri
* @depends testGuessBaseUri
*/
function testGuessBaseUriQueryString() {
- $serverVars = array(
+ $serverVars = [
'REQUEST_URI' => '/index.php/root?query_string=blabla',
'PATH_INFO' => '/root',
- );
+ ];
- $httpRequest = new HTTP\Request($serverVars);
+ $httpRequest = HTTP\Sapi::createFromServerArray($serverVars);
$server = new Server();
$server->httpRequest = $httpRequest;
@@ -506,18 +342,17 @@ class ServerSimpleTest extends AbstractServer{
}
/**
- * @covers \Sabre\DAV\Server::guessBaseUri
* @depends testGuessBaseUri
* @expectedException \Sabre\DAV\Exception
*/
function testGuessBaseUriBadConfig() {
- $serverVars = array(
+ $serverVars = [
'REQUEST_URI' => '/index.php/root/heyyy',
'PATH_INFO' => '/root',
- );
+ ];
- $httpRequest = new HTTP\Request($serverVars);
+ $httpRequest = HTTP\Sapi::createFromServerArray($serverVars);
$server = new Server();
$server->httpRequest = $httpRequest;
@@ -527,25 +362,25 @@ class ServerSimpleTest extends AbstractServer{
function testTriggerException() {
- $serverVars = array(
- 'REQUEST_URI' => '/',
+ $serverVars = [
+ 'REQUEST_URI' => '/',
'REQUEST_METHOD' => 'FOO',
- );
+ ];
- $httpRequest = new HTTP\Request($serverVars);
+ $httpRequest = HTTP\Sapi::createFromServerArray($serverVars);
$this->server->httpRequest = $httpRequest;
- $this->server->subscribeEvent('beforeMethod',array($this,'exceptionTrigger'));
+ $this->server->on('beforeMethod', [$this, 'exceptionTrigger']);
$this->server->exec();
- $this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),$this->response->headers);
+ $this->assertEquals([
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ], $this->response->getHeaders());
- $this->assertEquals('HTTP/1.1 500 Internal Server Error',$this->response->status);
+ $this->assertEquals(500, $this->response->status);
}
- function exceptionTrigger() {
+ function exceptionTrigger($request, $response) {
throw new Exception('Hola');
@@ -553,54 +388,56 @@ class ServerSimpleTest extends AbstractServer{
function testReportNotFound() {
- $serverVars = array(
+ $serverVars = [
'REQUEST_URI' => '/',
'REQUEST_METHOD' => 'REPORT',
- );
+ ];
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$this->server->httpRequest = ($request);
$this->server->httpRequest->setBody('<?xml version="1.0"?><bla:myreport xmlns:bla="http://www.rooftopsolutions.nl/NS"></bla:myreport>');
$this->server->exec();
- $this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),
- $this->response->headers
+ $this->assertEquals([
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ],
+ $this->response->getHeaders()
);
- $this->assertEquals('HTTP/1.1 403 Forbidden',$this->response->status,'We got an incorrect status back. Full response body follows: ' . $this->response->body);
+ $this->assertEquals(415, $this->response->status, 'We got an incorrect status back. Full response body follows: ' . $this->response->body);
}
function testReportIntercepted() {
- $serverVars = array(
+ $serverVars = [
'REQUEST_URI' => '/',
'REQUEST_METHOD' => 'REPORT',
- );
+ ];
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$this->server->httpRequest = ($request);
$this->server->httpRequest->setBody('<?xml version="1.0"?><bla:myreport xmlns:bla="http://www.rooftopsolutions.nl/NS"></bla:myreport>');
- $this->server->subscribeEvent('report',array($this,'reportHandler'));
+ $this->server->on('report', [$this, 'reportHandler']);
$this->server->exec();
- $this->assertEquals(array(
- 'testheader' => 'testvalue',
- ),
- $this->response->headers
+ $this->assertEquals([
+ 'X-Sabre-Version' => [Version::VERSION],
+ 'testheader' => ['testvalue'],
+ ],
+ $this->response->getHeaders()
);
- $this->assertEquals('HTTP/1.1 418 I\'m a teapot',$this->response->status,'We got an incorrect status back. Full response body follows: ' . $this->response->body);
+ $this->assertEquals(418, $this->response->status, 'We got an incorrect status back. Full response body follows: ' . $this->response->body);
}
- function reportHandler($reportName) {
+ function reportHandler($reportName, $result, $path) {
- if ($reportName=='{http://www.rooftopsolutions.nl/NS}myreport') {
- $this->server->httpResponse->sendStatus(418);
- $this->server->httpResponse->setHeader('testheader','testvalue');
+ if ($reportName == '{http://www.rooftopsolutions.nl/NS}myreport') {
+ $this->server->httpResponse->setStatus(418);
+ $this->server->httpResponse->setHeader('testheader', 'testvalue');
return false;
}
else return;
@@ -609,16 +446,29 @@ class ServerSimpleTest extends AbstractServer{
function testGetPropertiesForChildren() {
- $result = $this->server->getPropertiesForChildren('',array(
+ $result = $this->server->getPropertiesForChildren('', [
'{DAV:}getcontentlength',
- ));
+ ]);
- $expected = array(
- 'test.txt' => array('{DAV:}getcontentlength' => 13),
- 'dir/' => array(),
- );
+ $expected = [
+ 'test.txt' => ['{DAV:}getcontentlength' => 13],
+ 'dir/' => [],
+ ];
+
+ $this->assertEquals($expected, $result);
+
+ }
- $this->assertEquals($expected,$result);
+ /**
+ * There are certain cases where no HTTP status may be set. We need to
+ * intercept these and set it to a default error message.
+ */
+ function testNoHTTPSTatusSet() {
+
+ $this->server->on('method:GET', function() { return false; }, 1);
+ $this->server->httpRequest = new HTTP\Request('GET', '/');
+ $this->server->exec();
+ $this->assertEquals(500, $this->response->getStatus());
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/ServerUpdatePropertiesTest.php b/vendor/sabre/dav/tests/Sabre/DAV/ServerUpdatePropertiesTest.php
index a73e8d13f..7fde11b22 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/ServerUpdatePropertiesTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/ServerUpdatePropertiesTest.php
@@ -17,10 +17,7 @@ class ServerUpdatePropertiesTest extends \PHPUnit_Framework_TestCase {
));
$expected = array(
- 'href' => 'foo',
- '403' => array(
- '{DAV:}foo' => null,
- ),
+ '{DAV:}foo' => 403,
);
$this->assertEquals($expected, $result);
@@ -33,19 +30,17 @@ class ServerUpdatePropertiesTest extends \PHPUnit_Framework_TestCase {
);
$server = new Server($tree);
+ $server->on('propPatch', function($path, PropPatch $propPatch) {
+ $propPatch->handleRemaining(function() { return true; });
+ });
$result = $server->updateProperties('foo', array(
'{DAV:}getetag' => 'bla',
'{DAV:}foo' => 'bar'
));
$expected = array(
- 'href' => 'foo',
- '403' => array(
- '{DAV:}getetag' => null,
- ),
- '424' => array(
- '{DAV:}foo' => null,
- ),
+ '{DAV:}getetag' => 403,
+ '{DAV:}foo' => 424,
);
$this->assertEquals($expected, $result);
@@ -57,7 +52,10 @@ class ServerUpdatePropertiesTest extends \PHPUnit_Framework_TestCase {
new SimpleCollection('foo'),
);
$server = new Server($tree);
- $server->subscribeEvent('updateProperties', array($this,'updatepropfail'));
+ $server->on('propPatch', function($path, PropPatch $propPatch) {
+ $propPatch->setResultCode('{DAV:}foo', 404);
+ $propPatch->handleRemaining(function() { return true; });
+ });
$result = $server->updateProperties('foo', array(
'{DAV:}foo' => 'bar',
@@ -65,36 +63,29 @@ class ServerUpdatePropertiesTest extends \PHPUnit_Framework_TestCase {
));
$expected = array(
- 'href' => 'foo',
- '404' => array(
- '{DAV:}foo' => null,
- ),
- '424' => array(
- '{DAV:}foo2' => null,
- ),
+ '{DAV:}foo' => 404,
+ '{DAV:}foo2' => 424,
);
$this->assertEquals($expected, $result);
}
- function updatePropFail(&$propertyDelta, &$result, $node) {
-
- $result[404] = array(
- '{DAV:}foo' => null,
- );
- unset($propertyDelta['{DAV:}foo']);
- return false;
-
- }
-
-
function testUpdatePropertiesEventSuccess() {
$tree = array(
new SimpleCollection('foo'),
);
$server = new Server($tree);
- $server->subscribeEvent('updateProperties', array($this,'updatepropsuccess'));
+ $server->on('propPatch', function($path, PropPatch $propPatch) {
+
+ $propPatch->handle(['{DAV:}foo', '{DAV:}foo2'], function() {
+ return [
+ '{DAV:}foo' => 200,
+ '{DAV:}foo2' => 201,
+ ];
+ });
+
+ });
$result = $server->updateProperties('foo', array(
'{DAV:}foo' => 'bar',
@@ -102,29 +93,11 @@ class ServerUpdatePropertiesTest extends \PHPUnit_Framework_TestCase {
));
$expected = array(
- 'href' => 'foo',
- '200' => array(
- '{DAV:}foo' => null,
- ),
- '201' => array(
- '{DAV:}foo2' => null,
- ),
+ '{DAV:}foo' => 200,
+ '{DAV:}foo2' => 201,
);
$this->assertEquals($expected, $result);
}
- function updatePropSuccess(&$propertyDelta, &$result, $node) {
-
- $result[200] = array(
- '{DAV:}foo' => null,
- );
- $result[201] = array(
- '{DAV:}foo2' => null,
- );
- unset($propertyDelta['{DAV:}foo']);
- unset($propertyDelta['{DAV:}foo2']);
- return;
-
- }
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/SimpleFileTest.php b/vendor/sabre/dav/tests/Sabre/DAV/SimpleFileTest.php
index de8b05734..9b083b998 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/SimpleFileTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/SimpleFileTest.php
@@ -10,8 +10,8 @@ class SimpleFileTest extends \PHPUnit_Framework_TestCase {
$this->assertEquals('filename.txt', $file->getName());
$this->assertEquals('contents', $file->get());
- $this->assertEquals('8', $file->getSize());
- $this->assertEquals('"' . md5('contents') . '"', $file->getETag());
+ $this->assertEquals(8, $file->getSize());
+ $this->assertEquals('"' . sha1('contents') . '"', $file->getETag());
$this->assertEquals('text/plain', $file->getContentType());
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/TemporaryFileFilterTest.php b/vendor/sabre/dav/tests/Sabre/DAV/TemporaryFileFilterTest.php
index d136eeb17..7122f4a01 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/TemporaryFileFilterTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/TemporaryFileFilterTest.php
@@ -16,19 +16,14 @@ class TemporaryFileFilterTest extends AbstractServer {
function testPutNormal() {
- $serverVars = array(
- 'REQUEST_URI' => '/testput.txt',
- 'REQUEST_METHOD' => 'PUT',
- );
+ $request = new HTTP\Request('PUT', '/testput.txt', [], 'Testing new file');
- $request = new HTTP\Request($serverVars);
- $request->setBody('Testing new file');
$this->server->httpRequest = ($request);
$this->server->exec();
$this->assertEquals('', $this->response->body);
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status);
- $this->assertEquals('0', $this->response->headers['Content-Length']);
+ $this->assertEquals(201, $this->response->status);
+ $this->assertEquals('0', $this->response->getHeader('Content-Length'));
$this->assertEquals('Testing new file',file_get_contents(SABRE_TEMPDIR . '/testput.txt'));
@@ -37,21 +32,16 @@ class TemporaryFileFilterTest extends AbstractServer {
function testPutTemp() {
// mimicking an OS/X resource fork
- $serverVars = array(
- 'REQUEST_URI' => '/._testput.txt',
- 'REQUEST_METHOD' => 'PUT',
- );
+ $request = new HTTP\Request('PUT', '/._testput.txt', [], 'Testing new file');
- $request = new HTTP\Request($serverVars);
- $request->setBody('Testing new file');
$this->server->httpRequest = ($request);
$this->server->exec();
$this->assertEquals('', $this->response->body);
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status);
+ $this->assertEquals(201, $this->response->status);
$this->assertEquals(array(
- 'X-Sabre-Temp' => 'true',
- ),$this->response->headers);
+ 'X-Sabre-Temp' => ['true'],
+ ),$this->response->getHeaders());
$this->assertFalse(file_exists(SABRE_TEMPDIR . '/._testput.txt'),'._testput.txt should not exist in the regular file structure.');
@@ -60,70 +50,54 @@ class TemporaryFileFilterTest extends AbstractServer {
function testPutTempIfNoneMatch() {
// mimicking an OS/X resource fork
- $serverVars = array(
- 'REQUEST_URI' => '/._testput.txt',
- 'REQUEST_METHOD' => 'PUT',
- 'HTTP_IF_NONE_MATCH' => '*',
- );
-
- $request = new HTTP\Request($serverVars);
- $request->setBody('Testing new file');
+ $request = new HTTP\Request('PUT', '/._testput.txt', ['If-None-Match' => '*'], 'Testing new file');
+
$this->server->httpRequest = ($request);
$this->server->exec();
$this->assertEquals('', $this->response->body);
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status);
+ $this->assertEquals(201, $this->response->status);
$this->assertEquals(array(
- 'X-Sabre-Temp' => 'true',
- ),$this->response->headers);
+ 'X-Sabre-Temp' => ['true'],
+ ),$this->response->getHeaders());
$this->assertFalse(file_exists(SABRE_TEMPDIR . '/._testput.txt'),'._testput.txt should not exist in the regular file structure.');
$this->server->exec();
- $this->assertEquals('HTTP/1.1 412 Precondition failed',$this->response->status);
+ $this->assertEquals(412, $this->response->status);
$this->assertEquals(array(
- 'X-Sabre-Temp' => 'true',
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),$this->response->headers);
+ 'X-Sabre-Temp' => ['true'],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ),$this->response->getHeaders());
}
function testPutGet() {
// mimicking an OS/X resource fork
- $serverVars = array(
- 'REQUEST_URI' => '/._testput.txt',
- 'REQUEST_METHOD' => 'PUT',
- );
-
- $request = new HTTP\Request($serverVars);
- $request->setBody('Testing new file');
+ $request = new HTTP\Request('PUT', '/._testput.txt', [], 'Testing new file');
$this->server->httpRequest = ($request);
$this->server->exec();
$this->assertEquals('', $this->response->body);
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status);
+ $this->assertEquals(201, $this->response->status);
$this->assertEquals(array(
- 'X-Sabre-Temp' => 'true',
- ),$this->response->headers);
+ 'X-Sabre-Temp' => ['true'],
+ ),$this->response->getHeaders());
- $serverVars = array(
- 'REQUEST_URI' => '/._testput.txt',
- 'REQUEST_METHOD' => 'GET',
- );
+ $request = new HTTP\Request('GET', '/._testput.txt');
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
+ $this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 200 OK',$this->response->status);
+ $this->assertEquals(200, $this->response->status);
$this->assertEquals(array(
- 'X-Sabre-Temp' => 'true',
- 'Content-Length' => 16,
- 'Content-Type' => 'application/octet-stream',
- ),$this->response->headers);
+ 'X-Sabre-Temp' => ['true'],
+ 'Content-Length' => [16],
+ 'Content-Type' => ['application/octet-stream'],
+ ),$this->response->getHeaders());
$this->assertEquals('Testing new file',stream_get_contents($this->response->body));
@@ -132,18 +106,12 @@ class TemporaryFileFilterTest extends AbstractServer {
function testLockNonExistant() {
mkdir(SABRE_TEMPDIR . '/locksdir');
- $locksBackend = new Locks\Backend\FS(SABRE_TEMPDIR . '/locksdir');
+ $locksBackend = new Locks\Backend\File(SABRE_TEMPDIR . '/locks');
$locksPlugin = new Locks\Plugin($locksBackend);
$this->server->addPlugin($locksPlugin);
// mimicking an OS/X resource fork
- $serverVars = array(
- 'REQUEST_URI' => '/._testlock.txt',
- 'REQUEST_METHOD' => 'LOCK',
- );
-
- $request = new HTTP\Request($serverVars);
-
+ $request = new HTTP\Request('LOCK', '/._testput.txt');
$request->setBody('<?xml version="1.0"?>
<D:lockinfo xmlns:D="DAV:">
<D:lockscope><D:exclusive/></D:lockscope>
@@ -156,10 +124,10 @@ class TemporaryFileFilterTest extends AbstractServer {
$this->server->httpRequest = ($request);
$this->server->exec();
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status);
- $this->assertEquals('application/xml; charset=utf-8',$this->response->headers['Content-Type']);
- $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->headers['Lock-Token'])===1,'We did not get a valid Locktoken back (' . $this->response->headers['Lock-Token'] . ')');
- $this->assertEquals('true',$this->response->headers['X-Sabre-Temp']);
+ $this->assertEquals(201, $this->response->status);
+ $this->assertEquals('application/xml; charset=utf-8',$this->response->getHeader('Content-Type'));
+ $this->assertTrue(preg_match('/^<opaquelocktoken:(.*)>$/',$this->response->getHeader('Lock-Token'))===1,'We did not get a valid Locktoken back (' . $this->response->getHeader('Lock-Token') . ')');
+ $this->assertEquals('true',$this->response->getHeader('X-Sabre-Temp'));
$this->assertFalse(file_exists(SABRE_TEMPDIR . '/._testlock.txt'),'._testlock.txt should not exist in the regular file structure.');
@@ -168,35 +136,25 @@ class TemporaryFileFilterTest extends AbstractServer {
function testPutDelete() {
// mimicking an OS/X resource fork
- $serverVars = array(
- 'REQUEST_URI' => '/._testput.txt',
- 'REQUEST_METHOD' => 'PUT',
- );
+ $request = new HTTP\Request('PUT', '/._testput.txt', [], 'Testing new file');
- $request = new HTTP\Request($serverVars);
- $request->setBody('Testing new file');
- $this->server->httpRequest = ($request);
+ $this->server->httpRequest = $request;
$this->server->exec();
$this->assertEquals('', $this->response->body);
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status);
+ $this->assertEquals(201, $this->response->status);
$this->assertEquals(array(
- 'X-Sabre-Temp' => 'true',
- ),$this->response->headers);
-
- $serverVars = array(
- 'REQUEST_URI' => '/._testput.txt',
- 'REQUEST_METHOD' => 'DELETE',
- );
+ 'X-Sabre-Temp' => ['true'],
+ ),$this->response->getHeaders());
- $request = new HTTP\Request($serverVars);
- $this->server->httpRequest = ($request);
+ $request = new HTTP\Request('DELETE', '/._testput.txt');
+ $this->server->httpRequest = $request;
$this->server->exec();
- $this->assertEquals('HTTP/1.1 204 No Content',$this->response->status, "Incorrect status code received. Full body:\n". $this->response->body);
+ $this->assertEquals(204, $this->response->status, "Incorrect status code received. Full body:\n". $this->response->body);
$this->assertEquals(array(
- 'X-Sabre-Temp' => 'true',
- ),$this->response->headers);
+ 'X-Sabre-Temp' => ['true'],
+ ),$this->response->getHeaders());
$this->assertEquals('',$this->response->body);
@@ -205,37 +163,26 @@ class TemporaryFileFilterTest extends AbstractServer {
function testPutPropfind() {
// mimicking an OS/X resource fork
- $serverVars = array(
- 'REQUEST_URI' => '/._testput.txt',
- 'REQUEST_METHOD' => 'PUT',
- );
-
- $request = new HTTP\Request($serverVars);
- $request->setBody('Testing new file');
- $this->server->httpRequest = ($request);
+ $request = new HTTP\Request('PUT', '/._testput.txt', [], 'Testing new file');
+ $this->server->httpRequest = $request;
$this->server->exec();
$this->assertEquals('', $this->response->body);
- $this->assertEquals('HTTP/1.1 201 Created',$this->response->status);
+ $this->assertEquals(201, $this->response->status);
$this->assertEquals(array(
- 'X-Sabre-Temp' => 'true',
- ),$this->response->headers);
+ 'X-Sabre-Temp' => ['true'],
+ ),$this->response->getHeaders());
- $serverVars = array(
- 'REQUEST_URI' => '/._testput.txt',
- 'REQUEST_METHOD' => 'PROPFIND',
- );
+ $request = new HTTP\Request('PROPFIND', '/._testput.txt');
- $request = new HTTP\Request($serverVars);
- $request->setBody('');
$this->server->httpRequest = ($request);
$this->server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status',$this->response->status,'Incorrect status code returned. Body: ' . $this->response->body);
+ $this->assertEquals(207, $this->response->status,'Incorrect status code returned. Body: ' . $this->response->body);
$this->assertEquals(array(
- 'X-Sabre-Temp' => 'true',
- 'Content-Type' => 'application/xml; charset=utf-8',
- ),$this->response->headers);
+ 'X-Sabre-Temp' => ['true'],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ),$this->response->getHeaders());
$body = preg_replace("/xmlns(:[A-Za-z0-9_])?=(\"|\')DAV:(\"|\')/","xmlns\\1=\"urn:DAV\"",$this->response->body);
$xml = simplexml_load_string($body);
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/TestPlugin.php b/vendor/sabre/dav/tests/Sabre/DAV/TestPlugin.php
index 9cf5edbb0..bb5ea6acc 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/TestPlugin.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/TestPlugin.php
@@ -2,31 +2,35 @@
namespace Sabre\DAV;
+use
+ Sabre\HTTP\RequestInterface,
+ Sabre\HTTP\ResponseInterface;
+
class TestPlugin extends ServerPlugin {
public $beforeMethod;
function getFeatures() {
- return array('drinking');
+ return ['drinking'];
}
function getHTTPMethods($uri) {
- return array('BEER','WINE');
+ return ['BEER','WINE'];
}
function initialize(Server $server) {
- $server->subscribeEvent('beforeMethod',array($this,'beforeMethod'));
+ $server->on('beforeMethod', [$this,'beforeMethod']);
}
- function beforeMethod($method) {
+ function beforeMethod(RequestInterface $request, ResponseInterface $response) {
- $this->beforeMethod = $method;
+ $this->beforeMethod = $request->getMethod();
return true;
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Tree/FilesystemTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Tree/FilesystemTest.php
deleted file mode 100644
index 19b08460f..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAV/Tree/FilesystemTest.php
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-
-namespace Sabre\DAV\Tree;
-
-use Sabre\DAV;
-
-/**
- * @covers Sabre\DAV\Tree
- * @covers Sabre\DAV\Tree\Filesystem
- * @covers Sabre\DAV\FS\Node
- * @covers Sabre\DAV\FS\File
- * @covers Sabre\DAV\FS\Directory
- */
-class FilesystemTest extends \PHPUnit_Framework_TestCase {
-
- function setUp() {
-
- \Sabre\TestUtil::clearTempDir();
- file_put_contents(SABRE_TEMPDIR. '/file.txt','Body');
- mkdir(SABRE_TEMPDIR.'/dir');
- file_put_contents(SABRE_TEMPDIR.'/dir/subfile.txt','Body');
-
- }
-
- function tearDown() {
-
- \Sabre\TestUtil::clearTempDir();
-
- }
-
- function testGetNodeForPath_File() {
-
- $fs = new Filesystem(SABRE_TEMPDIR);
- $node = $fs->getNodeForPath('file.txt');
- $this->assertTrue($node instanceof DAV\FS\File);
-
- }
-
- /**
- * @expectedException \Sabre\DAV\Exception\NotFound
- */
- function testGetNodeForPath_DoesntExist() {
-
- $fs = new Filesystem(SABRE_TEMPDIR);
- $node = $fs->getNodeForPath('whoop/file.txt');
-
- }
-
- function testGetNodeForPath_Directory() {
-
- $fs = new Filesystem(SABRE_TEMPDIR);
- $node = $fs->getNodeForPath('dir');
- $this->assertTrue($node instanceof DAV\FS\Directory);
- $this->assertEquals('dir', $node->getName());
- $this->assertInternalType('array', $node->getChildren());
-
- }
-
- function testCopy() {
-
- $fs = new Filesystem(SABRE_TEMPDIR);
- $fs->copy('file.txt','file2.txt');
- $this->assertTrue(file_exists(SABRE_TEMPDIR . '/file2.txt'));
- $this->assertEquals('Body',file_get_contents(SABRE_TEMPDIR . '/file2.txt'));
-
- }
-
- function testCopyDir() {
-
- $fs = new Filesystem(SABRE_TEMPDIR);
- $fs->copy('dir','dir2');
- $this->assertTrue(file_exists(SABRE_TEMPDIR . '/dir2'));
- $this->assertEquals('Body',file_get_contents(SABRE_TEMPDIR . '/dir2/subfile.txt'));
-
- }
-
- function testMove() {
-
- $fs = new Filesystem(SABRE_TEMPDIR);
- $fs->move('file.txt','file2.txt');
- $this->assertTrue(file_exists(SABRE_TEMPDIR . '/file2.txt'));
- $this->assertTrue(!file_exists(SABRE_TEMPDIR . '/file.txt'));
- $this->assertEquals('Body',file_get_contents(SABRE_TEMPDIR . '/file2.txt'));
-
- }
-
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/TreeTest.php b/vendor/sabre/dav/tests/Sabre/DAV/TreeTest.php
index 90df6427e..9516c2390 100644
--- a/vendor/sabre/dav/tests/Sabre/DAV/TreeTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAV/TreeTest.php
@@ -2,9 +2,6 @@
namespace Sabre\DAV;
-/**
- * @covers \Sabre\DAV\Tree
- */
class TreeTest extends \PHPUnit_Framework_TestCase {
function testNodeExists() {
@@ -59,11 +56,31 @@ class TreeTest extends \PHPUnit_Framework_TestCase {
$tree = new TreeMock();
$children = $tree->getChildren('');
- $this->assertEquals(1,count($children));
+ $this->assertEquals(2,count($children));
$this->assertEquals('hi', $children[0]->getName());
}
+ function testGetMultipleNodes() {
+
+ $tree = new TreeMock();
+ $result = $tree->getMultipleNodes(['hi/sub', 'hi/file']);
+ $this->assertArrayHasKey('hi/sub', $result);
+ $this->assertArrayHasKey('hi/file', $result);
+
+ $this->assertEquals('sub', $result['hi/sub']->getName());
+ $this->assertEquals('file', $result['hi/file']->getName());
+
+ }
+ function testGetMultipleNodes2() {
+
+ $tree = new TreeMock();
+ $result = $tree->getMultipleNodes(['multi/1', 'multi/2']);
+ $this->assertArrayHasKey('multi/1', $result);
+ $this->assertArrayHasKey('multi/2', $result);
+
+ }
+
}
class TreeMock extends Tree {
@@ -72,19 +89,23 @@ class TreeMock extends Tree {
function __construct() {
- $this->nodes['hi/sub'] = new TreeDirectoryTester('sub');
- $this->nodes['hi/file'] = new TreeFileTester('file');
- $this->nodes['hi/file']->properties = array('test1' => 'value');
- $this->nodes['hi/file']->data = 'foobar';
- $this->nodes['hi'] = new TreeDirectoryTester('hi',array($this->nodes['hi/sub'], $this->nodes['hi/file']));
- $this->nodes[''] = new TreeDirectoryTester('hi', array($this->nodes['hi']));
-
- }
-
- function getNodeForPath($path) {
+ $file = new TreeFileTester('file');
+ $file->properties = ['test1'=>'value'];
+ $file->data = 'foobar';
- if (isset($this->nodes[$path])) return $this->nodes[$path];
- throw new Exception\NotFound('item not found');
+ parent::__construct(
+ new TreeDirectoryTester('root', [
+ new TreeDirectoryTester('hi', [
+ new TreeDirectoryTester('sub'),
+ $file,
+ ]),
+ new TreeMultiGetTester('multi', [
+ new TreeFileTester('1'),
+ new TreeFileTester('2'),
+ new TreeFileTester('3'),
+ ])
+ ])
+ );
}
@@ -117,6 +138,12 @@ class TreeDirectoryTester extends SimpleCollection {
}
+ function childExists($name) {
+
+ return !!$this->getChild($name);
+
+ }
+
function delete() {
$this->isDeleted = true;
@@ -164,12 +191,51 @@ class TreeFileTester extends File implements IProperties {
}
- function updateProperties($properties) {
+ /**
+ * Updates properties on this node.
+ *
+ * This method received a PropPatch object, which contains all the
+ * information about the update.
+ *
+ * To update specific properties, call the 'handle' method on this object.
+ * Read the PropPatch documentation for more information.
+ *
+ * @param array $mutations
+ * @return bool|array
+ */
+ function propPatch(PropPatch $propPatch) {
- $this->properties = $properties;
- return true;
+ $this->properties = $propPatch->getMutations();
+ $propPatch->setRemainingResultCode(200);
}
}
+class TreeMultiGetTester extends TreeDirectoryTester implements IMultiGet {
+
+ /**
+ * This method receives a list of paths in it's first argument.
+ * It must return an array with Node objects.
+ *
+ * If any children are not found, you do not have to return them.
+ *
+ * @return array
+ */
+ function getMultipleChildren(array $paths) {
+
+ $result = [];
+ foreach($paths as $path) {
+ try {
+ $child = $this->getChild($path);
+ $result[] = $child;
+ } catch (Exception\NotFound $e) {
+ // Do nothing
+ }
+ }
+
+ return $result;
+
+ }
+
+}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/URLUtilTest.php b/vendor/sabre/dav/tests/Sabre/DAV/URLUtilTest.php
deleted file mode 100644
index 5d1380865..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAV/URLUtilTest.php
+++ /dev/null
@@ -1,131 +0,0 @@
-<?php
-
-namespace Sabre\DAV;
-
-class URLUtilTest extends \PHPUnit_Framework_TestCase{
-
- function testEncodePath() {
-
- $str = '';
- for($i=0;$i<128;$i++) $str.=chr($i);
-
- $newStr = URLUtil::encodePath($str);
-
- $this->assertEquals(
- '%00%01%02%03%04%05%06%07%08%09%0a%0b%0c%0d%0e%0f'.
- '%10%11%12%13%14%15%16%17%18%19%1a%1b%1c%1d%1e%1f'.
- '%20%21%22%23%24%25%26%27()%2a%2b%2c-./'.
- '0123456789:%3b%3c%3d%3e%3f'.
- '%40ABCDEFGHIJKLMNO' .
- 'PQRSTUVWXYZ%5b%5c%5d%5e_' .
- '%60abcdefghijklmno' .
- 'pqrstuvwxyz%7b%7c%7d~%7f',
- $newStr);
-
- $this->assertEquals($str,URLUtil::decodePath($newStr));
-
- }
-
- function testEncodePathSegment() {
-
- $str = '';
- for($i=0;$i<128;$i++) $str.=chr($i);
-
- $newStr = URLUtil::encodePathSegment($str);
-
- // Note: almost exactly the same as the last test, with the
- // exception of the encoding of / (ascii code 2f)
- $this->assertEquals(
- '%00%01%02%03%04%05%06%07%08%09%0a%0b%0c%0d%0e%0f'.
- '%10%11%12%13%14%15%16%17%18%19%1a%1b%1c%1d%1e%1f'.
- '%20%21%22%23%24%25%26%27()%2a%2b%2c-.%2f'.
- '0123456789:%3b%3c%3d%3e%3f'.
- '%40ABCDEFGHIJKLMNO' .
- 'PQRSTUVWXYZ%5b%5c%5d%5e_' .
- '%60abcdefghijklmno' .
- 'pqrstuvwxyz%7b%7c%7d~%7f',
- $newStr);
-
- $this->assertEquals($str,URLUtil::decodePathSegment($newStr));
-
- }
-
- function testDecode() {
-
- $str = 'Hello%20Test+Test2.txt';
- $newStr = URLUtil::decodePath($str);
- $this->assertEquals('Hello Test+Test2.txt',$newStr);
-
- }
-
- /**
- * @depends testDecode
- */
- function testDecodeUmlaut() {
-
- $str = 'Hello%C3%BC.txt';
- $newStr = URLUtil::decodePath($str);
- $this->assertEquals("Hello\xC3\xBC.txt",$newStr);
-
- }
-
- /**
- * @depends testDecodeUmlaut
- */
- function testDecodeUmlautLatin1() {
-
- $str = 'Hello%FC.txt';
- $newStr = URLUtil::decodePath($str);
- $this->assertEquals("Hello\xC3\xBC.txt",$newStr);
-
- }
-
- /**
- * This testcase was sent by a bug reporter
- *
- * @depends testDecode
- */
- function testDecodeAccentsWindows7() {
-
- $str = '/webdav/%C3%A0fo%C3%B3';
- $newStr = URLUtil::decodePath($str);
- $this->assertEquals(strtolower($str),URLUtil::encodePath($newStr));
-
- }
-
- function testSplitPath() {
-
- $strings = array(
-
- // input // expected result
- '/foo/bar' => array('/foo','bar'),
- '/foo/bar/' => array('/foo','bar'),
- 'foo/bar/' => array('foo','bar'),
- 'foo/bar' => array('foo','bar'),
- 'foo/bar/baz' => array('foo/bar','baz'),
- 'foo/bar/baz/' => array('foo/bar','baz'),
- 'foo' => array('','foo'),
- 'foo/' => array('','foo'),
- '/foo/' => array('','foo'),
- '/foo' => array('','foo'),
- '' => array(null,null),
-
- // UTF-8
- "/\xC3\xA0fo\xC3\xB3/bar" => array("/\xC3\xA0fo\xC3\xB3",'bar'),
- "/\xC3\xA0foo/b\xC3\xBCr/" => array("/\xC3\xA0foo","b\xC3\xBCr"),
- "foo/\xC3\xA0\xC3\xBCr" => array("foo","\xC3\xA0\xC3\xBCr"),
-
- );
-
- foreach($strings as $input => $expected) {
-
- $output = URLUtil::splitPath($input);
- $this->assertEquals($expected, $output, 'The expected output for \'' . $input . '\' was incorrect');
-
-
- }
-
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/XMLUtilTest.php b/vendor/sabre/dav/tests/Sabre/DAV/XMLUtilTest.php
deleted file mode 100644
index 1d2bfd133..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAV/XMLUtilTest.php
+++ /dev/null
@@ -1,284 +0,0 @@
-<?php
-
-namespace Sabre\DAV;
-
-class XMLUtilTest extends \PHPUnit_Framework_TestCase {
-
- function testToClarkNotation() {
-
- $dom = new \DOMDocument();
- $dom->loadXML('<?xml version="1.0"?><test1 xmlns="http://www.example.org/">Testdoc</test1>');
-
- $this->assertEquals(
- '{http://www.example.org/}test1',
- XMLUtil::toClarkNotation($dom->firstChild)
- );
-
- }
-
- function testToClarkNotation2() {
-
- $dom = new \DOMDocument();
- $dom->loadXML('<?xml version="1.0"?><s:test1 xmlns:s="http://www.example.org/">Testdoc</s:test1>');
-
- $this->assertEquals(
- '{http://www.example.org/}test1',
- XMLUtil::toClarkNotation($dom->firstChild)
- );
-
- }
-
- function testToClarkNotationDAVNamespace() {
-
- $dom = new \DOMDocument();
- $dom->loadXML('<?xml version="1.0"?><s:test1 xmlns:s="urn:DAV">Testdoc</s:test1>');
-
- $this->assertEquals(
- '{DAV:}test1',
- XMLUtil::toClarkNotation($dom->firstChild)
- );
-
- }
-
- function testToClarkNotationNoElem() {
-
- $dom = new \DOMDocument();
- $dom->loadXML('<?xml version="1.0"?><s:test1 xmlns:s="urn:DAV">Testdoc</s:test1>');
-
- $this->assertNull(
- XMLUtil::toClarkNotation($dom->firstChild->firstChild)
- );
-
- }
-
- function testConvertDAVNamespace() {
-
- $xml='<?xml version="1.0"?><document xmlns="DAV:">blablabla</document>';
- $this->assertEquals(
- '<?xml version="1.0"?><document xmlns="urn:DAV">blablabla</document>',
- XMLUtil::convertDAVNamespace($xml)
- );
-
- }
-
- function testConvertDAVNamespace2() {
-
- $xml='<?xml version="1.0"?><s:document xmlns:s="DAV:">blablabla</s:document>';
- $this->assertEquals(
- '<?xml version="1.0"?><s:document xmlns:s="urn:DAV">blablabla</s:document>',
- XMLUtil::convertDAVNamespace($xml)
- );
-
- }
-
- function testConvertDAVNamespace3() {
-
- $xml='<?xml version="1.0"?><s:document xmlns="http://bla" xmlns:s="DAV:" xmlns:z="http://othernamespace">blablabla</s:document>';
- $this->assertEquals(
- '<?xml version="1.0"?><s:document xmlns="http://bla" xmlns:s="urn:DAV" xmlns:z="http://othernamespace">blablabla</s:document>',
- XMLUtil::convertDAVNamespace($xml)
- );
-
- }
-
- function testConvertDAVNamespace4() {
-
- $xml='<?xml version="1.0"?><document xmlns=\'DAV:\'>blablabla</document>';
- $this->assertEquals(
- '<?xml version="1.0"?><document xmlns=\'urn:DAV\'>blablabla</document>',
- XMLUtil::convertDAVNamespace($xml)
- );
-
- }
-
- function testConvertDAVNamespaceMixedQuotes() {
-
- $xml='<?xml version="1.0"?><document xmlns=\'DAV:" xmlns="Another attribute\'>blablabla</document>';
- $this->assertEquals(
- $xml,
- XMLUtil::convertDAVNamespace($xml)
- );
-
- }
-
- /**
- * @depends testConvertDAVNamespace
- */
- function testLoadDOMDocument() {
-
- $xml='<?xml version="1.0"?><document></document>';
- $dom = XMLUtil::loadDOMDocument($xml);
- $this->assertTrue($dom instanceof \DOMDocument);
-
- }
-
- /**
- * @depends testLoadDOMDocument
- * @expectedException Sabre\DAV\Exception\BadRequest
- */
- function testLoadDOMDocumentEmpty() {
-
- XMLUtil::loadDOMDocument('');
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\BadRequest
- * @depends testConvertDAVNamespace
- */
- function testLoadDOMDocumentInvalid() {
-
- $xml='<?xml version="1.0"?><document></docu';
- $dom = XMLUtil::loadDOMDocument($xml);
-
- }
-
- /**
- * @depends testLoadDOMDocument
- */
- function testLoadDOMDocumentUTF16() {
-
- $xml='<?xml version="1.0" encoding="UTF-16"?><root xmlns="DAV:">blabla</root>';
- $xml = iconv('UTF-8','UTF-16LE',$xml);
- $dom = XMLUtil::loadDOMDocument($xml);
- $this->assertEquals('blabla',$dom->firstChild->nodeValue);
-
- }
-
-
- function testParseProperties() {
-
- $xml='<?xml version="1.0"?>
-<root xmlns="DAV:">
- <prop>
- <displayname>Calendars</displayname>
- </prop>
-</root>';
-
- $dom = XMLUtil::loadDOMDocument($xml);
- $properties = XMLUtil::parseProperties($dom->firstChild);
-
- $this->assertEquals(array(
- '{DAV:}displayname' => 'Calendars',
- ), $properties);
-
-
-
- }
-
- /**
- * @depends testParseProperties
- */
- function testParsePropertiesEmpty() {
-
- $xml='<?xml version="1.0"?>
-<root xmlns="DAV:" xmlns:s="http://www.rooftopsolutions.nl/example">
- <prop>
- <displayname>Calendars</displayname>
- </prop>
- <prop>
- <s:example />
- </prop>
-</root>';
-
- $dom = XMLUtil::loadDOMDocument($xml);
- $properties = XMLUtil::parseProperties($dom->firstChild);
-
- $this->assertEquals(array(
- '{DAV:}displayname' => 'Calendars',
- '{http://www.rooftopsolutions.nl/example}example' => null
- ), $properties);
-
- }
-
-
- /**
- * @depends testParseProperties
- */
- function testParsePropertiesComplex() {
-
- $xml='<?xml version="1.0"?>
-<root xmlns="DAV:">
- <prop>
- <displayname>Calendars</displayname>
- </prop>
- <prop>
- <someprop>Complex value <b>right here</b></someprop>
- </prop>
-</root>';
-
- $dom = XMLUtil::loadDOMDocument($xml);
- $properties = XMLUtil::parseProperties($dom->firstChild);
-
- $this->assertEquals(array(
- '{DAV:}displayname' => 'Calendars',
- '{DAV:}someprop' => 'Complex value right here',
- ), $properties);
-
- }
-
-
- /**
- * @depends testParseProperties
- */
- function testParsePropertiesNoProperties() {
-
- $xml='<?xml version="1.0"?>
-<root xmlns="DAV:">
- <prop>
- </prop>
-</root>';
-
- $dom = XMLUtil::loadDOMDocument($xml);
- $properties = XMLUtil::parseProperties($dom->firstChild);
-
- $this->assertEquals(array(), $properties);
-
- }
-
- function testParsePropertiesMapHref() {
-
- $xml='<?xml version="1.0"?>
-<root xmlns="DAV:">
- <prop>
- <displayname>Calendars</displayname>
- </prop>
- <prop>
- <someprop><href>http://sabredav.org/</href></someprop>
- </prop>
-</root>';
-
- $dom = XMLUtil::loadDOMDocument($xml);
- $properties = XMLUtil::parseProperties($dom->firstChild,array('{DAV:}someprop'=>'Sabre\\DAV\\Property\\Href'));
-
- $this->assertEquals(array(
- '{DAV:}displayname' => 'Calendars',
- '{DAV:}someprop' => new Property\Href('http://sabredav.org/',false),
- ), $properties);
-
- }
-
- function testParseClarkNotation() {
-
- $this->assertEquals(array(
- 'DAV:',
- 'foo',
- ), XMLUtil::parseClarkNotation('{DAV:}foo'));
-
- $this->assertEquals(array(
- 'http://example.org/ns/bla',
- 'bar-soap',
- ), XMLUtil::parseClarkNotation('{http://example.org/ns/bla}bar-soap'));
- }
-
- /**
- * @expectedException InvalidArgumentException
- */
- function testParseClarkNotationFail() {
-
- XMLUtil::parseClarkNotation('}foo');
-
- }
-
-}
-
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/ACLMethodTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/ACLMethodTest.php
index 9960180a3..4ecd42717 100644
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/ACLMethodTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAVACL/ACLMethodTest.php
@@ -16,17 +16,7 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase {
$server = new DAV\Server();
$server->addPlugin($acl);
- $acl->unknownMethod('ACL','test');
-
- }
-
- function testCallbackPassthru() {
-
- $acl = new Plugin();
- $server = new DAV\Server();
- $server->addPlugin($acl);
-
- $this->assertNull($acl->unknownMethod('FOO','test'));
+ $acl->httpAcl($server->httpRequest, $server->httpResponse);
}
@@ -49,7 +39,7 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase {
$server->httpRequest->setBody($body);
$server->addPlugin($acl);
- $acl->httpACL('test');
+ $acl->httpACL($server->httpRequest, $server->httpResponse);
}
@@ -61,13 +51,15 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase {
$acl = new Plugin();
$server = new DAV\Server($tree);
$server->httpRequest = new HTTP\Request();
+ $server->httpRequest->setUrl('/test');
+
$body = '<?xml version="1.0"?>
<d:acl xmlns:d="DAV:">
</d:acl>';
$server->httpRequest->setBody($body);
$server->addPlugin($acl);
- $this->assertNull($acl->httpACL('test'));
+ $this->assertFalse($acl->httpACL($server->httpRequest, $server->httpResponse));
}
@@ -81,7 +73,7 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase {
);
$acl = new Plugin();
$server = new DAV\Server($tree);
- $server->httpRequest = new HTTP\Request();
+ $server->httpRequest = new HTTP\Request('ACL','/test');
$body = '<?xml version="1.0"?>
<d:acl xmlns:d="DAV:">
<d:ace>
@@ -92,7 +84,7 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase {
$server->httpRequest->setBody($body);
$server->addPlugin($acl);
- $acl->httpACL('test');
+ $acl->httpACL($server->httpRequest, $server->httpResponse);
}
@@ -109,7 +101,7 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase {
);
$acl = new Plugin();
$server = new DAV\Server($tree);
- $server->httpRequest = new HTTP\Request();
+ $server->httpRequest = new HTTP\Request('ACL','/test');
$body = '<?xml version="1.0"?>
<d:acl xmlns:d="DAV:">
<d:ace>
@@ -120,7 +112,7 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase {
$server->httpRequest->setBody($body);
$server->addPlugin($acl);
- $acl->httpACL('test');
+ $acl->httpACL($server->httpRequest, $server->httpResponse);
}
@@ -134,7 +126,7 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase {
);
$acl = new Plugin();
$server = new DAV\Server($tree);
- $server->httpRequest = new HTTP\Request();
+ $server->httpRequest = new HTTP\Request('ACL','/test');
$body = '<?xml version="1.0"?>
<d:acl xmlns:d="DAV:">
<d:ace>
@@ -145,7 +137,7 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase {
$server->httpRequest->setBody($body);
$server->addPlugin($acl);
- $acl->httpACL('test');
+ $acl->httpACL($server->httpRequest, $server->httpResponse);
}
@@ -159,18 +151,18 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase {
);
$acl = new Plugin();
$server = new DAV\Server($tree);
- $server->httpRequest = new HTTP\Request();
+ $server->httpRequest = new HTTP\Request('ACL','/test');
$body = '<?xml version="1.0"?>
<d:acl xmlns:d="DAV:">
<d:ace>
- <d:grant><d:privilege><d:read-acl /></d:privilege></d:grant>
+ <d:grant><d:privilege><d:all /></d:privilege></d:grant>
<d:principal><d:href>/principals/notfound</d:href></d:principal>
</d:ace>
</d:acl>';
$server->httpRequest->setBody($body);
$server->addPlugin($acl);
- $acl->httpACL('test');
+ $acl->httpACL($server->httpRequest, $server->httpResponse);
}
@@ -192,7 +184,7 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase {
);
$acl = new Plugin();
$server = new DAV\Server($tree);
- $server->httpRequest = new HTTP\Request();
+ $server->httpRequest = new HTTP\Request('ACL','/test');
$body = '<?xml version="1.0"?>
<d:acl xmlns:d="DAV:">
<d:ace>
@@ -203,7 +195,7 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase {
$server->httpRequest->setBody($body);
$server->addPlugin($acl);
- $acl->httpACL('test');
+ $acl->httpACL($server->httpRequest, $server->httpResponse);
}
@@ -225,7 +217,7 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase {
);
$acl = new Plugin();
$server = new DAV\Server($tree);
- $server->httpRequest = new HTTP\Request();
+ $server->httpRequest = new HTTP\Request('ACL','/test');
$body = '<?xml version="1.0"?>
<d:acl xmlns:d="DAV:">
<d:ace>
@@ -236,7 +228,7 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase {
$server->httpRequest->setBody($body);
$server->addPlugin($acl);
- $acl->httpACL('test');
+ $acl->httpACL($server->httpRequest, $server->httpResponse);
}
@@ -258,7 +250,7 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase {
);
$acl = new Plugin();
$server = new DAV\Server($tree);
- $server->httpRequest = new HTTP\Request();
+ $server->httpRequest = new HTTP\Request('ACL','/test');
$body = '<?xml version="1.0"?>
<d:acl xmlns:d="DAV:">
<d:ace>
@@ -269,11 +261,11 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase {
$server->httpRequest->setBody($body);
$server->addPlugin($acl);
- $acl->httpACL('test');
+ $acl->httpACL($server->httpRequest, $server->httpResponse);
}
- function testSuccessComplex () {
+ function testSuccessComplex() {
$oldACL = array(
array(
@@ -296,7 +288,7 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase {
);
$acl = new Plugin();
$server = new DAV\Server($tree);
- $server->httpRequest = new HTTP\Request();
+ $server->httpRequest = new HTTP\Request('ACL','/test');
$body = '<?xml version="1.0"?>
<d:acl xmlns:d="DAV:">
<d:ace>
@@ -312,7 +304,8 @@ class ACLMethodTest extends \PHPUnit_Framework_TestCase {
$server->httpRequest->setBody($body);
$server->addPlugin($acl);
- $this->assertFalse($acl->unknownMethod('ACL','test'));
+
+ $this->assertFalse($acl->httpAcl($server->httpRequest, $server->httpResponse));
$this->assertEquals(array(
array(
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/AllowAccessTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/AllowAccessTest.php
index 3a9b35b45..14a80003a 100644
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/AllowAccessTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAVACL/AllowAccessTest.php
@@ -27,112 +27,104 @@ class AllowAccessTest extends \PHPUnit_Framework_TestCase {
function testGet() {
- $this->assertTrue($this->server->broadcastEvent('beforeMethod',array('GET','testdir')));
+ $this->server->httpRequest->setMethod('GET');
+ $this->server->httpRequest->setUrl('/testdir');
+
+ $this->assertTrue($this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]));
}
function testGetDoesntExist() {
- $r = $this->server->broadcastEvent('beforeMethod',array('GET','foo'));
- $this->assertTrue($r);
+ $this->server->httpRequest->setMethod('GET');
+ $this->server->httpRequest->setUrl('/foo');
+
+ $this->assertTrue($this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]));
}
function testHEAD() {
- $this->assertTrue($this->server->broadcastEvent('beforeMethod',array('HEAD','testdir')));
+ $this->server->httpRequest->setMethod('HEAD');
+ $this->server->httpRequest->setUrl('/testdir');
+
+ $this->assertTrue($this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]));
}
function testOPTIONS() {
- $this->assertTrue($this->server->broadcastEvent('beforeMethod',array('OPTIONS','testdir')));
+ $this->server->httpRequest->setMethod('OPTIONS');
+ $this->server->httpRequest->setUrl('/testdir');
+
+ $this->assertTrue($this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]));
}
function testPUT() {
- $this->assertTrue($this->server->broadcastEvent('beforeMethod',array('PUT','testdir')));
+ $this->server->httpRequest->setMethod('PUT');
+ $this->server->httpRequest->setUrl('/testdir');
+
+ $this->assertTrue($this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]));
}
function testACL() {
- $this->assertTrue($this->server->broadcastEvent('beforeMethod',array('ACL','testdir')));
+ $this->server->httpRequest->setMethod('ACL');
+ $this->server->httpRequest->setUrl('/testdir');
+
+ $this->assertTrue($this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]));
}
function testPROPPATCH() {
- $this->assertTrue($this->server->broadcastEvent('beforeMethod',array('PROPPATCH','testdir')));
+ $this->server->httpRequest->setMethod('PROPPATCH');
+ $this->server->httpRequest->setUrl('/testdir');
+
+ $this->assertTrue($this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]));
}
function testCOPY() {
- $this->assertTrue($this->server->broadcastEvent('beforeMethod',array('COPY','testdir')));
+ $this->server->httpRequest->setMethod('COPY');
+ $this->server->httpRequest->setUrl('/testdir');
+
+ $this->assertTrue($this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]));
}
function testMOVE() {
- $this->assertTrue($this->server->broadcastEvent('beforeMethod',array('MOVE','testdir')));
+ $this->server->httpRequest->setMethod('MOVE');
+ $this->server->httpRequest->setUrl('/testdir');
+
+ $this->assertTrue($this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]));
}
function testLOCK() {
- $this->assertTrue($this->server->broadcastEvent('beforeMethod',array('LOCK','testdir')));
+ $this->server->httpRequest->setMethod('LOCK');
+ $this->server->httpRequest->setUrl('/testdir');
+
+ $this->assertTrue($this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]));
}
function testBeforeBind() {
- $this->assertTrue($this->server->broadcastEvent('beforeBind',array('testdir/file')));
+ $this->assertTrue($this->server->emit('beforeBind', ['testdir/file']));
}
function testBeforeUnbind() {
- $this->assertTrue($this->server->broadcastEvent('beforeUnbind',array('testdir')));
-
- }
-
- function testAfterGetProperties() {
-
- $properties = array(
- 'href' => 'foo',
- '200' => array(
- '{DAV:}displayname' => 'foo',
- '{DAV:}getcontentlength' => 500,
- ),
- '404' => array(
- '{DAV:}bar' => null,
- ),
- '403' => array(
- '{DAV:}owner' => null,
- ),
- );
-
- $expected = array(
- 'href' => 'foo',
- '200' => array(
- '{DAV:}displayname' => 'foo',
- '{DAV:}getcontentlength' => 500,
- ),
- '404' => array(
- '{DAV:}bar' => null,
- ),
- '403' => array(
- '{DAV:}owner' => null,
- ),
- );
-
- $r = $this->server->broadcastEvent('afterGetProperties',array('testdir',&$properties));
- $this->assertTrue($r);
-
- $this->assertEquals($expected, $properties);
+ $this->assertTrue($this->server->emit('beforeUnbind', ['testdir']));
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/BlockAccessTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/BlockAccessTest.php
index 345d2cc5d..be3e9dae9 100644
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/BlockAccessTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAVACL/BlockAccessTest.php
@@ -15,9 +15,9 @@ class BlockAccessTest extends \PHPUnit_Framework_TestCase {
function setUp() {
- $nodes = array(
+ $nodes = [
new DAV\SimpleCollection('testdir'),
- );
+ ];
$this->server = new DAV\Server($nodes);
$this->plugin = new Plugin();
@@ -31,13 +31,19 @@ class BlockAccessTest extends \PHPUnit_Framework_TestCase {
*/
function testGet() {
- $this->server->broadcastEvent('beforeMethod',array('GET','testdir'));
+ $this->server->httpRequest->setMethod('GET');
+ $this->server->httpRequest->setUrl('/testdir');
+
+ $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]);
}
function testGetDoesntExist() {
- $r = $this->server->broadcastEvent('beforeMethod',array('GET','foo'));
+ $this->server->httpRequest->setMethod('GET');
+ $this->server->httpRequest->setUrl('/foo');
+
+ $r = $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]);
$this->assertTrue($r);
}
@@ -47,7 +53,10 @@ class BlockAccessTest extends \PHPUnit_Framework_TestCase {
*/
function testHEAD() {
- $this->server->broadcastEvent('beforeMethod',array('HEAD','testdir'));
+ $this->server->httpRequest->setMethod('HEAD');
+ $this->server->httpRequest->setUrl('/testdir');
+
+ $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]);
}
@@ -56,7 +65,10 @@ class BlockAccessTest extends \PHPUnit_Framework_TestCase {
*/
function testOPTIONS() {
- $this->server->broadcastEvent('beforeMethod',array('OPTIONS','testdir'));
+ $this->server->httpRequest->setMethod('OPTIONS');
+ $this->server->httpRequest->setUrl('/testdir');
+
+ $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]);
}
@@ -65,7 +77,10 @@ class BlockAccessTest extends \PHPUnit_Framework_TestCase {
*/
function testPUT() {
- $this->server->broadcastEvent('beforeMethod',array('PUT','testdir'));
+ $this->server->httpRequest->setMethod('PUT');
+ $this->server->httpRequest->setUrl('/testdir');
+
+ $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]);
}
@@ -74,7 +89,10 @@ class BlockAccessTest extends \PHPUnit_Framework_TestCase {
*/
function testPROPPATCH() {
- $this->server->broadcastEvent('beforeMethod',array('PROPPATCH','testdir'));
+ $this->server->httpRequest->setMethod('PROPPATCH');
+ $this->server->httpRequest->setUrl('/testdir');
+
+ $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]);
}
@@ -83,7 +101,10 @@ class BlockAccessTest extends \PHPUnit_Framework_TestCase {
*/
function testCOPY() {
- $this->server->broadcastEvent('beforeMethod',array('COPY','testdir'));
+ $this->server->httpRequest->setMethod('COPY');
+ $this->server->httpRequest->setUrl('/testdir');
+
+ $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]);
}
@@ -92,7 +113,10 @@ class BlockAccessTest extends \PHPUnit_Framework_TestCase {
*/
function testMOVE() {
- $this->server->broadcastEvent('beforeMethod',array('MOVE','testdir'));
+ $this->server->httpRequest->setMethod('MOVE');
+ $this->server->httpRequest->setUrl('/testdir');
+
+ $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]);
}
@@ -101,7 +125,10 @@ class BlockAccessTest extends \PHPUnit_Framework_TestCase {
*/
function testACL() {
- $this->server->broadcastEvent('beforeMethod',array('ACL','testdir'));
+ $this->server->httpRequest->setMethod('ACL');
+ $this->server->httpRequest->setUrl('/testdir');
+
+ $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]);
}
@@ -110,7 +137,10 @@ class BlockAccessTest extends \PHPUnit_Framework_TestCase {
*/
function testLOCK() {
- $this->server->broadcastEvent('beforeMethod',array('LOCK','testdir'));
+ $this->server->httpRequest->setMethod('LOCK');
+ $this->server->httpRequest->setUrl('/testdir');
+
+ $this->server->emit('beforeMethod', [$this->server->httpRequest, $this->server->httpResponse]);
}
@@ -119,7 +149,7 @@ class BlockAccessTest extends \PHPUnit_Framework_TestCase {
*/
function testBeforeBind() {
- $this->server->broadcastEvent('beforeBind',array('testdir/file'));
+ $this->server->emit('beforeBind', ['testdir/file']);
}
@@ -128,62 +158,48 @@ class BlockAccessTest extends \PHPUnit_Framework_TestCase {
*/
function testBeforeUnbind() {
- $this->server->broadcastEvent('beforeUnbind',array('testdir'));
+ $this->server->emit('beforeUnbind', ['testdir']);
}
- function testBeforeGetProperties() {
+ function testPropFind() {
- $requestedProperties = array(
+ $propFind = new DAV\PropFind('testdir', [
'{DAV:}displayname',
'{DAV:}getcontentlength',
'{DAV:}bar',
'{DAV:}owner',
- );
- $returnedProperties = array();
+ ]);
- $arguments = array(
- 'testdir',
- new DAV\SimpleCollection('testdir'),
- &$requestedProperties,
- &$returnedProperties
- );
- $r = $this->server->broadcastEvent('beforeGetProperties',$arguments);
+ $r = $this->server->emit('propFind', [$propFind, new DAV\SimpleCollection('testdir')]);
$this->assertTrue($r);
- $expected = array(
- '403' => array(
+ $expected = [
+ 200 => [],
+ 404 => [],
+ 403 => [
'{DAV:}displayname' => null,
'{DAV:}getcontentlength' => null,
'{DAV:}bar' => null,
'{DAV:}owner' => null,
- ),
- );
+ ],
+ ];
- $this->assertEquals($expected, $returnedProperties);
- $this->assertEquals(array(), $requestedProperties);
+ $this->assertEquals($expected, $propFind->getResultForMultiStatus());
}
function testBeforeGetPropertiesNoListing() {
$this->plugin->hideNodesFromListings = true;
-
- $requestedProperties = array(
+ $propFind = new DAV\PropFind('testdir', [
'{DAV:}displayname',
'{DAV:}getcontentlength',
'{DAV:}bar',
'{DAV:}owner',
- );
- $returnedProperties = array();
+ ]);
- $arguments = array(
- 'testdir',
- new DAV\SimpleCollection('testdir'),
- &$requestedProperties,
- &$returnedProperties
- );
- $r = $this->server->broadcastEvent('beforeGetProperties',$arguments);
+ $r = $this->server->emit('propFind', [$propFind, new DAV\SimpleCollection('testdir')]);
$this->assertFalse($r);
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/ExpandPropertiesTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/ExpandPropertiesTest.php
index 324788d4a..5e99f2e73 100644
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/ExpandPropertiesTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAVACL/ExpandPropertiesTest.php
@@ -12,23 +12,24 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase {
function getServer() {
$tree = array(
- new MockPropertyNode('node1', array(
+ new DAV\Mock\PropertiesCollection('node1', [], array(
'{http://sabredav.org/ns}simple' => 'foo',
- '{http://sabredav.org/ns}href' => new DAV\Property\Href('node2'),
+ '{http://sabredav.org/ns}href' => new DAV\Xml\Property\Href('node2'),
'{DAV:}displayname' => 'Node 1',
)),
- new MockPropertyNode('node2', array(
+ new DAV\Mock\PropertiesCollection('node2', [], array(
'{http://sabredav.org/ns}simple' => 'simple',
- '{http://sabredav.org/ns}hreflist' => new DAV\Property\HrefList(array('node1','node3')),
+ '{http://sabredav.org/ns}hreflist' => new DAV\Xml\Property\Href(['node1','node3']),
'{DAV:}displayname' => 'Node 2',
)),
- new MockPropertyNode('node3', array(
+ new DAV\Mock\PropertiesCollection('node3', [], array(
'{http://sabredav.org/ns}simple' => 'simple',
'{DAV:}displayname' => 'Node 3',
)),
);
$fakeServer = new DAV\Server($tree);
+ $fakeServer->sapi = new HTTP\SapiMock();
$fakeServer->debugExceptions = true;
$fakeServer->httpResponse = new HTTP\ResponseMock();
$plugin = new Plugin();
@@ -58,7 +59,7 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase {
'REQUEST_URI' => '/node1',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody($xml);
$server = $this->getServer();
@@ -66,10 +67,11 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase {
$server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status', $server->httpResponse->status,'Incorrect status code received. Full body: ' . $server->httpResponse->body);
+ $this->assertEquals(207, $server->httpResponse->status,'Incorrect status code received. Full body: ' . $server->httpResponse->body);
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ), $server->httpResponse->headers);
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ), $server->httpResponse->getHeaders());
$check = array(
@@ -120,7 +122,7 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase {
'REQUEST_URI' => '/node1',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody($xml);
$server = $this->getServer();
@@ -128,10 +130,11 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase {
$server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status', $server->httpResponse->status, 'Incorrect response status received. Full response body: ' . $server->httpResponse->body);
+ $this->assertEquals(207, $server->httpResponse->status, 'Incorrect response status received. Full response body: ' . $server->httpResponse->body);
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ), $server->httpResponse->headers);
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ), $server->httpResponse->getHeaders());
$check = array(
@@ -160,7 +163,7 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase {
$count = 1;
if (!is_int($v1)) $count = $v2;
- $this->assertEquals($count,count($result), 'we expected ' . $count . ' appearances of ' . $xpath . ' . We found ' . count($result));
+ $this->assertEquals($count,count($result), 'we expected ' . $count . ' appearances of ' . $xpath . ' . We found ' . count($result) . ' Full response body: ' . $server->httpResponse->getBodyAsString());
}
@@ -184,7 +187,7 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase {
'REQUEST_URI' => '/node2',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody($xml);
$server = $this->getServer();
@@ -192,10 +195,11 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase {
$server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status', $server->httpResponse->status);
+ $this->assertEquals(207, $server->httpResponse->status);
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ), $server->httpResponse->headers);
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ), $server->httpResponse->getHeaders());
$check = array(
@@ -251,7 +255,7 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase {
'REQUEST_URI' => '/node2',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody($xml);
$server = $this->getServer();
@@ -259,10 +263,11 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase {
$server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status', $server->httpResponse->status);
+ $this->assertEquals(207, $server->httpResponse->status);
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ), $server->httpResponse->headers);
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ), $server->httpResponse->getHeaders());
$check = array(
@@ -303,56 +308,3 @@ class ExpandPropertiesTest extends \PHPUnit_Framework_TestCase {
}
}
-class MockPropertyNode implements DAV\INode, DAV\IProperties {
-
- function __construct($name, array $properties) {
-
- $this->name = $name;
- $this->properties = $properties;
-
- }
-
- function getName() {
-
- return $this->name;
-
- }
-
- function getProperties($requestedProperties) {
-
- $returnedProperties = array();
- foreach($requestedProperties as $requestedProperty) {
- if (isset($this->properties[$requestedProperty])) {
- $returnedProperties[$requestedProperty] =
- $this->properties[$requestedProperty];
- }
- }
- return $returnedProperties;
-
- }
-
- function delete() {
-
- throw new DAV\Exception('Not implemented');
-
- }
-
- function setName($name) {
-
- throw new DAV\Exception('Not implemented');
-
- }
-
- function getLastModified() {
-
- return null;
-
- }
-
- function updateProperties($properties) {
-
- throw new DAV\Exception('Not implemented');
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PluginAdminTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PluginAdminTest.php
index 23c4b6e85..fb7516a78 100644
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/PluginAdminTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PluginAdminTest.php
@@ -11,7 +11,9 @@ require_once 'Sabre/HTTP/ResponseMock.php';
class PluginAdminTest extends \PHPUnit_Framework_TestCase {
- function testNoAdminAccess() {
+ public $server;
+
+ function setUp() {
$principalBackend = new PrincipalBackend\Mock();
@@ -20,13 +22,18 @@ class PluginAdminTest extends \PHPUnit_Framework_TestCase {
new PrincipalCollection($principalBackend),
);
- $fakeServer = new DAV\Server($tree);
- $plugin = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock(),'realm');
- $fakeServer->addPlugin($plugin);
+ $this->server = new DAV\Server($tree);
+ $this->server->sapi = new HTTP\SapiMock();
+ $plugin = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock());
+ $this->server->addPlugin($plugin);
+ }
+
+ function testNoAdminAccess() {
+
$plugin = new Plugin();
- $fakeServer->addPlugin($plugin);
+ $this->server->addPlugin($plugin);
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'OPTIONS',
'HTTP_DEPTH' => 1,
'REQUEST_URI' => '/adminonly',
@@ -34,12 +41,12 @@ class PluginAdminTest extends \PHPUnit_Framework_TestCase {
$response = new HTTP\ResponseMock();
- $fakeServer->httpRequest = $request;
- $fakeServer->httpResponse = $response;
+ $this->server->httpRequest = $request;
+ $this->server->httpResponse = $response;
- $fakeServer->exec();
+ $this->server->exec();
- $this->assertEquals('HTTP/1.1 403 Forbidden', $response->status);
+ $this->assertEquals(403, $response->status);
}
@@ -48,23 +55,13 @@ class PluginAdminTest extends \PHPUnit_Framework_TestCase {
*/
function testAdminAccess() {
- $principalBackend = new PrincipalBackend\Mock();
-
- $tree = array(
- new MockACLNode('adminonly', array()),
- new PrincipalCollection($principalBackend),
- );
-
- $fakeServer = new DAV\Server($tree);
- $plugin = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock(),'realm');
- $fakeServer->addPlugin($plugin);
$plugin = new Plugin();
$plugin->adminPrincipals = array(
'principals/admin',
);
- $fakeServer->addPlugin($plugin);
+ $this->server->addPlugin($plugin);
- $request = new HTTP\Request(array(
+ $request = HTTP\Sapi::createFromServerArray(array(
'REQUEST_METHOD' => 'OPTIONS',
'HTTP_DEPTH' => 1,
'REQUEST_URI' => '/adminonly',
@@ -72,12 +69,12 @@ class PluginAdminTest extends \PHPUnit_Framework_TestCase {
$response = new HTTP\ResponseMock();
- $fakeServer->httpRequest = $request;
- $fakeServer->httpResponse = $response;
+ $this->server->httpRequest = $request;
+ $this->server->httpResponse = $response;
- $fakeServer->exec();
+ $this->server->exec();
- $this->assertEquals('HTTP/1.1 200 OK', $response->status);
+ $this->assertEquals(200, $response->status);
}
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PluginPropertiesTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PluginPropertiesTest.php
index 8c0626e50..e5b7e1a3f 100644
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/PluginPropertiesTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PluginPropertiesTest.php
@@ -5,42 +5,37 @@ namespace Sabre\DAVACL;
use Sabre\DAV;
use Sabre\HTTP;
-
class PluginPropertiesTest extends \PHPUnit_Framework_TestCase {
function testPrincipalCollectionSet() {
$plugin = new Plugin();
- $plugin->principalCollectionSet = array(
+ $plugin->principalCollectionSet = [
'principals1',
'principals2',
- );
+ ];
- $requestedProperties = array(
+ $requestedProperties = [
'{DAV:}principal-collection-set',
- );
-
- $returnedProperties = array(
- 200 => array(),
- 404 => array(),
- );
+ ];
- $server = new DAV\Server();
+ $server = new DAV\Server(new DAV\SimpleCollection('root'));
$server->addPlugin($plugin);
- $this->assertNull($plugin->beforeGetProperties('', new DAV\SimpleCollection('root'), $requestedProperties, $returnedProperties));
+ $result = $server->getPropertiesForPath('', $requestedProperties);
+ $result = $result[0];
- $this->assertEquals(1,count($returnedProperties[200]));
- $this->assertArrayHasKey('{DAV:}principal-collection-set',$returnedProperties[200]);
- $this->assertInstanceOf('Sabre\\DAV\\Property\\HrefList', $returnedProperties[200]['{DAV:}principal-collection-set']);
+ $this->assertEquals(1,count($result[200]));
+ $this->assertArrayHasKey('{DAV:}principal-collection-set',$result[200]);
+ $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $result[200]['{DAV:}principal-collection-set']);
- $expected = array(
+ $expected = [
'principals1/',
'principals2/',
- );
+ ];
- $this->assertEquals($expected, $returnedProperties[200]['{DAV:}principal-collection-set']->getHrefs());
+ $this->assertEquals($expected, $result[200]['{DAV:}principal-collection-set']->getHrefs());
}
@@ -48,50 +43,35 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase {
function testCurrentUserPrincipal() {
$fakeServer = new DAV\Server();
- $plugin = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock(),'realm');
+ $plugin = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock());
$fakeServer->addPlugin($plugin);
$plugin = new Plugin();
$fakeServer->addPlugin($plugin);
- $requestedProperties = array(
+ $requestedProperties = [
'{DAV:}current-user-principal',
- );
-
- $returnedProperties = array(
- 200 => array(),
- 404 => array(),
- );
+ ];
- $this->assertNull($plugin->beforeGetProperties('', new DAV\SimpleCollection('root'), $requestedProperties, $returnedProperties));
+ $result = $fakeServer->getPropertiesForPath('', $requestedProperties);
+ $result = $result[0];
- $this->assertEquals(1,count($returnedProperties[200]));
- $this->assertArrayHasKey('{DAV:}current-user-principal',$returnedProperties[200]);
- $this->assertInstanceOf('Sabre\DAVACL\Property\Principal', $returnedProperties[200]['{DAV:}current-user-principal']);
- $this->assertEquals(Property\Principal::UNAUTHENTICATED, $returnedProperties[200]['{DAV:}current-user-principal']->getType());
+ $this->assertEquals(1,count($result[200]));
+ $this->assertArrayHasKey('{DAV:}current-user-principal',$result[200]);
+ $this->assertInstanceOf('Sabre\DAVACL\Xml\Property\Principal', $result[200]['{DAV:}current-user-principal']);
+ $this->assertEquals(Xml\Property\Principal::UNAUTHENTICATED, $result[200]['{DAV:}current-user-principal']->getType());
// This will force the login
- $fakeServer->broadCastEvent('beforeMethod',array('GET',''));
-
-
- $requestedProperties = array(
- '{DAV:}current-user-principal',
- );
+ $fakeServer->emit('beforeMethod', [$fakeServer->httpRequest, $fakeServer->httpResponse]);
- $returnedProperties = array(
- 200 => array(),
- 404 => array(),
- );
+ $result = $fakeServer->getPropertiesForPath('', $requestedProperties);
+ $result = $result[0];
-
- $this->assertNull($plugin->beforeGetProperties('', new DAV\SimpleCollection('root'), $requestedProperties, $returnedProperties));
-
-
- $this->assertEquals(1,count($returnedProperties[200]));
- $this->assertArrayHasKey('{DAV:}current-user-principal',$returnedProperties[200]);
- $this->assertInstanceOf('Sabre\DAVACL\Property\Principal', $returnedProperties[200]['{DAV:}current-user-principal']);
- $this->assertEquals(Property\Principal::HREF, $returnedProperties[200]['{DAV:}current-user-principal']->getType());
- $this->assertEquals('principals/admin/', $returnedProperties[200]['{DAV:}current-user-principal']->getHref());
+ $this->assertEquals(1,count($result[200]));
+ $this->assertArrayHasKey('{DAV:}current-user-principal',$result[200]);
+ $this->assertInstanceOf('Sabre\DAVACL\Xml\Property\Principal', $result[200]['{DAV:}current-user-principal']);
+ $this->assertEquals(Xml\Property\Principal::HREF, $result[200]['{DAV:}current-user-principal']->getType());
+ $this->assertEquals('principals/admin/', $result[200]['{DAV:}current-user-principal']->getHref());
}
@@ -101,33 +81,23 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase {
$server = new DAV\Server();
$server->addPlugin($plugin);
- $requestedProperties = array(
+ $requestedProperties = [
'{DAV:}supported-privilege-set',
- );
+ ];
- $returnedProperties = array(
- 200 => array(),
- 404 => array(),
- );
+ $result = $server->getPropertiesForPath('', $requestedProperties);
+ $result = $result[0];
-
- $this->assertNull($plugin->beforeGetProperties('', new DAV\SimpleCollection('root'), $requestedProperties, $returnedProperties));
-
- $this->assertEquals(1,count($returnedProperties[200]));
- $this->assertArrayHasKey('{DAV:}supported-privilege-set',$returnedProperties[200]);
- $this->assertInstanceOf('Sabre\\DAVACL\\Property\\SupportedPrivilegeSet', $returnedProperties[200]['{DAV:}supported-privilege-set']);
+ $this->assertEquals(1,count($result[200]));
+ $this->assertArrayHasKey('{DAV:}supported-privilege-set',$result[200]);
+ $this->assertInstanceOf('Sabre\\DAVACL\\Xml\\Property\\SupportedPrivilegeSet', $result[200]['{DAV:}supported-privilege-set']);
$server = new DAV\Server();
- $prop = $returnedProperties[200]['{DAV:}supported-privilege-set'];
-
- $dom = new \DOMDocument('1.0', 'utf-8');
- $root = $dom->createElement('d:root');
- $root->setAttribute('xmlns:d','DAV:');
- $dom->appendChild($root);
- $prop->serialize($server, $root);
+ $prop = $result[200]['{DAV:}supported-privilege-set'];
+ $result = $server->xml->write('{DAV:}root', $prop);
- $xpaths = array(
+ $xpaths = [
'/d:root' => 1,
'/d:root/d:supported-privilege' => 1,
'/d:root/d:supported-privilege/d:privilege' => 1,
@@ -147,19 +117,19 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase {
'/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:bind' => 1,
'/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:unbind' => 1,
'/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:privilege/d:unlock' => 1,
- '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:abstract' => 8,
- );
+ '/d:root/d:supported-privilege/d:supported-privilege/d:supported-privilege/d:abstract' => 0,
+ ];
// reloading because php dom sucks
$dom2 = new \DOMDocument('1.0', 'utf-8');
- $dom2->loadXML($dom->saveXML());
+ $dom2->loadXML($result);
$dxpath = new \DOMXPath($dom2);
$dxpath->registerNamespace('d','DAV:');
foreach($xpaths as $xpath=>$count) {
- $this->assertEquals($count, $dxpath->query($xpath)->length, 'Looking for : ' . $xpath . ', we could only find ' . $dxpath->query($xpath)->length . ' elements, while we expected ' . $count);
+ $this->assertEquals($count, $dxpath->query($xpath)->length, 'Looking for : ' . $xpath . ', we could only find ' . $dxpath->query($xpath)->length . ' elements, while we expected ' . $count. ' Full XML: ' . $result);
}
@@ -169,42 +139,37 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase {
$plugin = new Plugin();
- $nodes = array(
- new MockACLNode('foo', array(
- array(
+ $nodes = [
+ new MockACLNode('foo', [
+ [
'principal' => 'principals/admin',
'privilege' => '{DAV:}read',
- )
- )),
- new DAV\SimpleCollection('principals', array(
+ ]
+ ]),
+ new DAV\SimpleCollection('principals', [
$principal = new MockPrincipal('admin','principals/admin'),
- )),
+ ]),
- );
+ ];
$server = new DAV\Server($nodes);
$server->addPlugin($plugin);
- $authPlugin = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock(),'realm');
+ $authPlugin = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock());
$server->addPlugin($authPlugin);
// Force login
- $authPlugin->beforeMethod('BLA','foo');
+ $authPlugin->beforeMethod(new HTTP\Request(), new HTTP\Response());
- $requestedProperties = array(
+ $requestedProperties = [
'{DAV:}acl',
- );
+ ];
- $returnedProperties = array(
- 200 => array(),
- 404 => array(),
- );
+ $result = $server->getPropertiesForPath('foo', $requestedProperties);
+ $result = $result[0];
-
- $this->assertNull($plugin->beforeGetProperties('foo', $nodes[0], $requestedProperties, $returnedProperties));
-
- $this->assertEquals(1,count($returnedProperties[200]),'The {DAV:}acl property did not return from the list. Full list: ' . print_r($returnedProperties,true));
- $this->assertArrayHasKey('{DAV:}acl',$returnedProperties[200]);
- $this->assertInstanceOf('Sabre\\DAVACL\\Property\\ACL', $returnedProperties[200]['{DAV:}acl']);
+ $this->assertEquals(1,count($result[200]),'The {DAV:}acl property did not return from the list. Full list: ' . print_r($result, true));
+ $this->assertArrayHasKey('{DAV:}acl',$result[200]);
+ $this->assertInstanceOf('Sabre\\DAVACL\\Xml\Property\\Acl', $result[200]['{DAV:}acl']);
}
@@ -212,196 +177,176 @@ class PluginPropertiesTest extends \PHPUnit_Framework_TestCase {
$plugin = new Plugin();
- $nodes = array(
- new MockACLNode('foo', array(
- array(
+ $nodes = [
+ new MockACLNode('foo', [
+ [
'principal' => 'principals/admin',
'privilege' => '{DAV:}read',
- )
- )),
- new DAV\SimpleCollection('principals', array(
+ ]
+ ]),
+ new DAV\SimpleCollection('principals', [
$principal = new MockPrincipal('admin','principals/admin'),
- )),
+ ]),
- );
+ ];
$server = new DAV\Server($nodes);
$server->addPlugin($plugin);
- $authPlugin = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock(),'realm');
+ $authPlugin = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock());
$server->addPlugin($authPlugin);
// Force login
- $authPlugin->beforeMethod('BLA','foo');
+ $authPlugin->beforeMethod(new HTTP\Request(), new HTTP\Response());
- $requestedProperties = array(
+ $requestedProperties = [
'{DAV:}acl-restrictions',
- );
-
- $returnedProperties = array(
- 200 => array(),
- 404 => array(),
- );
+ ];
+ $result = $server->getPropertiesForPath('foo', $requestedProperties);
+ $result = $result[0];
- $this->assertNull($plugin->beforeGetProperties('foo', $nodes[0], $requestedProperties, $returnedProperties));
-
- $this->assertEquals(1,count($returnedProperties[200]),'The {DAV:}acl-restrictions property did not return from the list. Full list: ' . print_r($returnedProperties,true));
- $this->assertArrayHasKey('{DAV:}acl-restrictions',$returnedProperties[200]);
- $this->assertInstanceOf('Sabre\\DAVACL\\Property\\ACLRestrictions', $returnedProperties[200]['{DAV:}acl-restrictions']);
+ $this->assertEquals(1,count($result[200]),'The {DAV:}acl-restrictions property did not return from the list. Full list: ' . print_r($result, true));
+ $this->assertArrayHasKey('{DAV:}acl-restrictions',$result[200]);
+ $this->assertInstanceOf('Sabre\\DAVACL\\Xml\\Property\\AclRestrictions', $result[200]['{DAV:}acl-restrictions']);
}
function testAlternateUriSet() {
- $tree = array(
- new DAV\SimpleCollection('principals', array(
+ $tree = [
+ new DAV\SimpleCollection('principals', [
$principal = new MockPrincipal('user','principals/user'),
- )),
- );
+ ])
+ ];
$fakeServer = new DAV\Server($tree);
- //$plugin = new DAV\Auth\Plugin(new DAV\Auth\MockBackend(),'realm');
+ //$plugin = new DAV\Auth\Plugin(new DAV\Auth\MockBackend())
//$fakeServer->addPlugin($plugin);
$plugin = new Plugin();
$fakeServer->addPlugin($plugin);
- $requestedProperties = array(
+ $requestedProperties = [
'{DAV:}alternate-URI-set',
- );
- $returnedProperties = array();
-
- $result = $plugin->beforeGetProperties('principals/user',$principal,$requestedProperties,$returnedProperties);
-
- $this->assertNull($result);
+ ];
+ $result = $fakeServer->getPropertiesForPath('principals/user', $requestedProperties);
+ $result = $result[0];
- $this->assertTrue(isset($returnedProperties[200]));
- $this->assertTrue(isset($returnedProperties[200]['{DAV:}alternate-URI-set']));
- $this->assertInstanceOf('Sabre\\DAV\\Property\\HrefList', $returnedProperties[200]['{DAV:}alternate-URI-set']);
+ $this->assertTrue(isset($result[200]));
+ $this->assertTrue(isset($result[200]['{DAV:}alternate-URI-set']));
+ $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $result[200]['{DAV:}alternate-URI-set']);
- $this->assertEquals(array(), $returnedProperties[200]['{DAV:}alternate-URI-set']->getHrefs());
+ $this->assertEquals([], $result[200]['{DAV:}alternate-URI-set']->getHrefs());
}
function testPrincipalURL() {
- $tree = array(
- new DAV\SimpleCollection('principals', array(
+ $tree = [
+ new DAV\SimpleCollection('principals', [
$principal = new MockPrincipal('user','principals/user'),
- )),
- );
+ ]),
+ ];
$fakeServer = new DAV\Server($tree);
- //$plugin = new DAV\Auth\Plugin(new DAV\Auth\MockBackend(),'realm');
+ //$plugin = new DAV\Auth\Plugin(new DAV\Auth\MockBackend());
//$fakeServer->addPlugin($plugin);
$plugin = new Plugin();
$fakeServer->addPlugin($plugin);
- $requestedProperties = array(
+ $requestedProperties = [
'{DAV:}principal-URL',
- );
- $returnedProperties = array();
+ ];
- $result = $plugin->beforeGetProperties('principals/user',$principal,$requestedProperties,$returnedProperties);
+ $result = $fakeServer->getPropertiesForPath('principals/user', $requestedProperties);
+ $result = $result[0];
- $this->assertNull($result);
+ $this->assertTrue(isset($result[200]));
+ $this->assertTrue(isset($result[200]['{DAV:}principal-URL']));
+ $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $result[200]['{DAV:}principal-URL']);
- $this->assertTrue(isset($returnedProperties[200]));
- $this->assertTrue(isset($returnedProperties[200]['{DAV:}principal-URL']));
- $this->assertInstanceOf('Sabre\\DAV\\Property\\Href', $returnedProperties[200]['{DAV:}principal-URL']);
-
- $this->assertEquals('principals/user/', $returnedProperties[200]['{DAV:}principal-URL']->getHref());
+ $this->assertEquals('principals/user/', $result[200]['{DAV:}principal-URL']->getHref());
}
function testGroupMemberSet() {
- $tree = array(
- new DAV\SimpleCollection('principals', array(
+ $tree = [
+ new DAV\SimpleCollection('principals', [
$principal = new MockPrincipal('user','principals/user'),
- )),
- );
+ ]),
+ ];
$fakeServer = new DAV\Server($tree);
- //$plugin = new DAV\Auth\Plugin(new DAV\Auth\MockBackend(),'realm');
+ //$plugin = new DAV\Auth\Plugin(new DAV\Auth\MockBackend());
//$fakeServer->addPlugin($plugin);
$plugin = new Plugin();
$fakeServer->addPlugin($plugin);
- $requestedProperties = array(
+ $requestedProperties = [
'{DAV:}group-member-set',
- );
- $returnedProperties = array();
-
- $result = $plugin->beforeGetProperties('principals/user',$principal,$requestedProperties,$returnedProperties);
+ ];
- $this->assertNull($result);
+ $result = $fakeServer->getPropertiesForPath('principals/user', $requestedProperties);
+ $result = $result[0];
- $this->assertTrue(isset($returnedProperties[200]));
- $this->assertTrue(isset($returnedProperties[200]['{DAV:}group-member-set']));
- $this->assertInstanceOf('Sabre\\DAV\\Property\\HrefList', $returnedProperties[200]['{DAV:}group-member-set']);
+ $this->assertTrue(isset($result[200]));
+ $this->assertTrue(isset($result[200]['{DAV:}group-member-set']));
+ $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $result[200]['{DAV:}group-member-set']);
- $this->assertEquals(array(), $returnedProperties[200]['{DAV:}group-member-set']->getHrefs());
+ $this->assertEquals([], $result[200]['{DAV:}group-member-set']->getHrefs());
}
function testGroupMemberShip() {
- $tree = array(
- new DAV\SimpleCollection('principals', array(
+ $tree = [
+ new DAV\SimpleCollection('principals', [
$principal = new MockPrincipal('user','principals/user'),
- )),
- );
+ ]),
+ ];
$fakeServer = new DAV\Server($tree);
- //$plugin = new DAV\Auth\Plugin(new DAV\Auth\MockBackend(),'realm');
- //$fakeServer->addPlugin($plugin);
$plugin = new Plugin();
$fakeServer->addPlugin($plugin);
- $requestedProperties = array(
+ $requestedProperties = [
'{DAV:}group-membership',
- );
- $returnedProperties = array();
+ ];
- $result = $plugin->beforeGetProperties('principals/user',$principal,$requestedProperties,$returnedProperties);
+ $result = $fakeServer->getPropertiesForPath('principals/user', $requestedProperties);
+ $result = $result[0];
- $this->assertNull($result);
+ $this->assertTrue(isset($result[200]));
+ $this->assertTrue(isset($result[200]['{DAV:}group-membership']));
+ $this->assertInstanceOf('Sabre\\DAV\\Xml\\Property\\Href', $result[200]['{DAV:}group-membership']);
- $this->assertTrue(isset($returnedProperties[200]));
- $this->assertTrue(isset($returnedProperties[200]['{DAV:}group-membership']));
- $this->assertInstanceOf('Sabre\\DAV\\Property\\HrefList', $returnedProperties[200]['{DAV:}group-membership']);
-
- $this->assertEquals(array(), $returnedProperties[200]['{DAV:}group-membership']->getHrefs());
+ $this->assertEquals([], $result[200]['{DAV:}group-membership']->getHrefs());
}
function testGetDisplayName() {
- $tree = array(
- new DAV\SimpleCollection('principals', array(
+ $tree = [
+ new DAV\SimpleCollection('principals', [
$principal = new MockPrincipal('user','principals/user'),
- )),
- );
+ ]),
+ ];
$fakeServer = new DAV\Server($tree);
- //$plugin = new DAV\Auth\Plugin(new DAV\Auth\MockBackend(),'realm');
- //$fakeServer->addPlugin($plugin);
$plugin = new Plugin();
$fakeServer->addPlugin($plugin);
- $requestedProperties = array(
+ $requestedProperties = [
'{DAV:}displayname',
- );
- $returnedProperties = array();
-
- $result = $plugin->beforeGetProperties('principals/user',$principal,$requestedProperties,$returnedProperties);
+ ];
- $this->assertNull($result);
+ $result = $fakeServer->getPropertiesForPath('principals/user', $requestedProperties);
+ $result = $result[0];
- $this->assertTrue(isset($returnedProperties[200]));
- $this->assertTrue(isset($returnedProperties[200]['{DAV:}displayname']));
+ $this->assertTrue(isset($result[200]));
+ $this->assertTrue(isset($result[200]['{DAV:}displayname']));
- $this->assertEquals('user', $returnedProperties[200]['{DAV:}displayname']);
+ $this->assertEquals('user', $result[200]['{DAV:}displayname']);
}
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PluginUpdatePropertiesTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PluginUpdatePropertiesTest.php
index 53568654f..64cedd142 100644
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/PluginUpdatePropertiesTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PluginUpdatePropertiesTest.php
@@ -10,7 +10,7 @@ require_once 'Sabre/DAVACL/MockPrincipal.php';
class PluginUpdatePropertiesTest extends \PHPUnit_Framework_TestCase {
- public function testUpdatePropertiesPassthrough() {
+ function testUpdatePropertiesPassthrough() {
$tree = array(
new DAV\SimpleCollection('foo'),
@@ -23,17 +23,14 @@ class PluginUpdatePropertiesTest extends \PHPUnit_Framework_TestCase {
));
$expected = array(
- 'href' => 'foo',
- '403' => array(
- '{DAV:}foo' => null,
- ),
+ '{DAV:}foo' => 403,
);
$this->assertEquals($expected, $result);
}
- public function testRemoveGroupMembers() {
+ function testRemoveGroupMembers() {
$tree = array(
new MockPrincipal('foo','foo'),
@@ -46,10 +43,7 @@ class PluginUpdatePropertiesTest extends \PHPUnit_Framework_TestCase {
));
$expected = array(
- 'href' => 'foo',
- '200' => array(
- '{DAV:}group-member-set' => null,
- ),
+ '{DAV:}group-member-set' => 204
);
$this->assertEquals($expected, $result);
@@ -57,34 +51,31 @@ class PluginUpdatePropertiesTest extends \PHPUnit_Framework_TestCase {
}
- public function testSetGroupMembers() {
+ function testSetGroupMembers() {
- $tree = array(
+ $tree = [
new MockPrincipal('foo','foo'),
- );
+ ];
$server = new DAV\Server($tree);
$server->addPlugin(new Plugin());
- $result = $server->updateProperties('foo', array(
- '{DAV:}group-member-set' => new DAV\Property\HrefList(array('/bar','/baz'), true),
- ));
+ $result = $server->updateProperties('foo', [
+ '{DAV:}group-member-set' => new DAV\Xml\Property\Href(['/bar','/baz'], true),
+ ]);
- $expected = array(
- 'href' => 'foo',
- '200' => array(
- '{DAV:}group-member-set' => null,
- ),
- );
+ $expected = [
+ '{DAV:}group-member-set' => 200
+ ];
$this->assertEquals($expected, $result);
- $this->assertEquals(array('bar','baz'),$tree[0]->getGroupMemberSet());
+ $this->assertEquals(['bar', 'baz'],$tree[0]->getGroupMemberSet());
}
/**
* @expectedException Sabre\DAV\Exception
*/
- public function testSetBadValue() {
+ function testSetBadValue() {
$tree = array(
new MockPrincipal('foo','foo'),
@@ -98,28 +89,21 @@ class PluginUpdatePropertiesTest extends \PHPUnit_Framework_TestCase {
}
- public function testSetBadNode() {
+ function testSetBadNode() {
- $tree = array(
+ $tree = [
new DAV\SimpleCollection('foo'),
- );
+ ];
$server = new DAV\Server($tree);
$server->addPlugin(new Plugin());
- $result = $server->updateProperties('foo', array(
- '{DAV:}group-member-set' => new DAV\Property\HrefList(array('/bar','/baz'),false),
- '{DAV:}bar' => 'baz',
- ));
+ $result = $server->updateProperties('foo', [
+ '{DAV:}group-member-set' => new DAV\Xml\Property\Href(['/bar','/baz'],false),
+ ]);
- $expected = array(
- 'href' => 'foo',
- '403' => array(
- '{DAV:}group-member-set' => null,
- ),
- '424' => array(
- '{DAV:}bar' => null,
- ),
- );
+ $expected = [
+ '{DAV:}group-member-set' => 403,
+ ];
$this->assertEquals($expected, $result);
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/AbstractPDOTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/AbstractPDOTest.php
index 3fe75ca0e..3814ebc0d 100644
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/AbstractPDOTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/AbstractPDOTest.php
@@ -128,10 +128,12 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
$pdo = $this->getPDO();
$backend = new PDO($pdo);
- $result = $backend->updatePrincipal('principals/user', array(
+ $propPatch = new DAV\PropPatch([
'{DAV:}displayname' => 'pietje',
- '{http://sabredav.org/ns}vcard-url' => 'blabla',
- ));
+ ]);
+
+ $backend->updatePrincipal('principals/user', $propPatch);
+ $result = $propPatch->commit();
$this->assertTrue($result);
@@ -139,7 +141,6 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
'id' => 1,
'uri' => 'principals/user',
'{DAV:}displayname' => 'pietje',
- '{http://sabredav.org/ns}vcard-url' => 'blabla',
'{http://sabredav.org/ns}email-address' => 'user@example.org',
), $backend->getPrincipalByPath('principals/user'));
@@ -150,21 +151,20 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
$pdo = $this->getPDO();
$backend = new PDO($pdo);
- $result = $backend->updatePrincipal('principals/user', array(
+ $propPatch = new DAV\PropPatch([
'{DAV:}displayname' => 'pietje',
- '{http://sabredav.org/ns}vcard-url' => 'blabla',
'{DAV:}unknown' => 'foo',
- ));
+ ]);
+
+ $backend->updatePrincipal('principals/user', $propPatch);
+ $result = $propPatch->commit();
+
+ $this->assertFalse($result);
$this->assertEquals(array(
- 424 => array(
- '{DAV:}displayname' => null,
- '{http://sabredav.org/ns}vcard-url' => null,
- ),
- 403 => array(
- '{DAV:}unknown' => null,
- ),
- ), $result);
+ '{DAV:}displayname' => 424,
+ '{DAV:}unknown' => 403
+ ), $propPatch->getResult());
$this->assertEquals(array(
'id' => '1',
@@ -175,4 +175,24 @@ abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
}
+ function testFindByUriUnknownScheme() {
+
+ $pdo = $this->getPDO();
+ $backend = new PDO($pdo);
+ $this->assertNull($backend->findByUri('http://foo', 'principals'));
+
+ }
+
+
+ function testFindByUri() {
+
+ $pdo = $this->getPDO();
+ $backend = new PDO($pdo);
+ $this->assertEquals(
+ 'principals/user',
+ $backend->findByUri('mailto:user@example.org', 'principals')
+ );
+
+ }
+
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php
index 354446e34..afb094a39 100644
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php
+++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/Mock.php
@@ -4,40 +4,46 @@ namespace Sabre\DAVACL\PrincipalBackend;
class Mock extends AbstractBackend {
- public $groupMembers = array();
+ public $groupMembers = [];
public $principals;
- function __construct() {
+ function __construct(array $principals = null) {
- $this->principals = array(
- array(
- 'uri' => 'principals/user1',
- '{DAV:}displayname' => 'User 1',
+ $this->principals = $principals;
+
+ if (is_null($principals)) {
+
+ $this->principals = [
+ [
+ 'uri' => 'principals/user1',
+ '{DAV:}displayname' => 'User 1',
'{http://sabredav.org/ns}email-address' => 'user1.sabredav@sabredav.org',
- '{http://sabredav.org/ns}vcard-url' => 'addressbooks/user1/book1/vcard1.vcf',
- ),
- array(
- 'uri' => 'principals/admin',
+ '{http://sabredav.org/ns}vcard-url' => 'addressbooks/user1/book1/vcard1.vcf',
+ ],
+ [
+ 'uri' => 'principals/admin',
'{DAV:}displayname' => 'Admin',
- ),
- array(
- 'uri' => 'principals/user2',
- '{DAV:}displayname' => 'User 2',
+ ],
+ [
+ 'uri' => 'principals/user2',
+ '{DAV:}displayname' => 'User 2',
'{http://sabredav.org/ns}email-address' => 'user2.sabredav@sabredav.org',
- ),
- );
+ ],
+ ];
+ }
}
function getPrincipalsByPrefix($prefix) {
- $prefix = trim($prefix,'/') . '/';
- $return = array();
+ $prefix = trim($prefix, '/');
+ if ($prefix) $prefix .= '/';
+ $return = [];
- foreach($this->principals as $principal) {
+ foreach ($this->principals as $principal) {
- if (strpos($principal['uri'], $prefix)!==0) continue;
+ if ($prefix && strpos($principal['uri'], $prefix) !== 0) continue;
$return[] = $principal;
@@ -55,26 +61,33 @@ class Mock extends AbstractBackend {
function getPrincipalByPath($path) {
- foreach($this->getPrincipalsByPrefix('principals') as $principal) {
+ foreach ($this->getPrincipalsByPrefix('principals') as $principal) {
if ($principal['uri'] === $path) return $principal;
}
}
- function searchPrincipals($prefixPath, array $searchProperties) {
+ function searchPrincipals($prefixPath, array $searchProperties, $test = 'allof') {
- $matches = array();
- foreach($this->getPrincipalsByPrefix($prefixPath) as $principal) {
+ $matches = [];
+ foreach ($this->getPrincipalsByPrefix($prefixPath) as $principal) {
- foreach($searchProperties as $key=>$value) {
+ foreach ($searchProperties as $key => $value) {
if (!isset($principal[$key])) {
continue 2;
}
- if (mb_stripos($principal[$key],$value, 0, 'UTF-8')===false) {
+ if (mb_stripos($principal[$key], $value, 0, 'UTF-8') === false) {
continue 2;
}
+ // We have a match for this searchProperty!
+ if ($test === 'allof') {
+ continue;
+ } else {
+ break;
+ }
+
}
$matches[] = $principal['uri'];
@@ -85,14 +98,14 @@ class Mock extends AbstractBackend {
function getGroupMemberSet($path) {
- return isset($this->groupMembers[$path]) ? $this->groupMembers[$path] : array();
+ return isset($this->groupMembers[$path]) ? $this->groupMembers[$path] : [];
}
function getGroupMembership($path) {
- $membership = array();
- foreach($this->groupMembers as $group=>$members) {
+ $membership = [];
+ foreach ($this->groupMembers as $group => $members) {
if (in_array($path, $members)) $membership[] = $group;
}
return $membership;
@@ -108,75 +121,46 @@ class Mock extends AbstractBackend {
/**
* Updates one ore more webdav properties on a principal.
*
- * The list of mutations is supplied as an array. Each key in the array is
- * a propertyname, such as {DAV:}displayname.
- *
- * Each value is the actual value to be updated. If a value is null, it
- * must be deleted.
- *
- * This method should be atomic. It must either completely succeed, or
- * completely fail. Success and failure can simply be returned as 'true' or
- * 'false'.
- *
- * It is also possible to return detailed failure information. In that case
- * an array such as this should be returned:
+ * The list of mutations is stored in a Sabre\DAV\PropPatch object.
+ * To do the actual updates, you must tell this object which properties
+ * you're going to process with the handle() method.
*
- * array(
- * 200 => array(
- * '{DAV:}prop1' => null,
- * ),
- * 201 => array(
- * '{DAV:}prop2' => null,
- * ),
- * 403 => array(
- * '{DAV:}prop3' => null,
- * ),
- * 424 => array(
- * '{DAV:}prop4' => null,
- * ),
- * );
+ * Calling the handle method is like telling the PropPatch object "I
+ * promise I can handle updating this property".
*
- * In this previous example prop1 was successfully updated or deleted, and
- * prop2 was succesfully created.
- *
- * prop3 failed to update due to '403 Forbidden' and because of this prop4
- * also could not be updated with '424 Failed dependency'.
- *
- * This last example was actually incorrect. While 200 and 201 could appear
- * in 1 response, if there's any error (403) the other properties should
- * always fail with 423 (failed dependency).
- *
- * But anyway, if you don't want to scratch your head over this, just
- * return true or false.
+ * Read the PropPatch documenation for more info and examples.
*
* @param string $path
- * @param array $mutations
- * @return array|bool
+ * @param \Sabre\DAV\PropPatch $propPatch
*/
- public function updatePrincipal($path, $mutations) {
+ function updatePrincipal($path, \Sabre\DAV\PropPatch $propPatch) {
$value = null;
- foreach($this->principals as $principalIndex=>$value) {
+ foreach ($this->principals as $principalIndex => $value) {
if ($value['uri'] === $path) {
$principal = $value;
break;
}
}
- if (!$principal) return false;
+ if (!$principal) return;
+
+ $propPatch->handleRemaining(function($mutations) use ($principal, $principalIndex) {
- foreach($mutations as $prop=>$value) {
+ foreach ($mutations as $prop => $value) {
+
+ if (is_null($value) && isset($principal[$prop])) {
+ unset($principal[$prop]);
+ } else {
+ $principal[$prop] = $value;
+ }
- if (is_null($value) && isset($principal[$prop])) {
- unset($principal[$prop]);
- } else {
- $principal[$prop] = $value;
}
- }
+ $this->principals[$principalIndex] = $principal;
- $this->principals[$principalIndex] = $principal;
+ return true;
- return true;
+ });
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/PDOMySQLTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/PDOMySQLTest.php
index 84ba062ca..83353c86c 100644
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/PDOMySQLTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/PDOMySQLTest.php
@@ -16,25 +16,30 @@ class PDOMySQLTest extends AbstractPDOTest {
$pdo = \Sabre\TestUtil::getMySQLDB();
if (!$pdo) $this->markTestSkipped('Could not connect to MySQL database');
$pdo->query("DROP TABLE IF EXISTS principals");
- $pdo->query("
+ $pdo->query(<<<SQL
create table principals (
- id integer unsigned not null primary key auto_increment,
- uri varchar(50),
- email varchar(80),
- displayname VARCHAR(80),
- vcardurl VARCHAR(80),
- unique(uri)
-);");
+ id integer unsigned not null primary key auto_increment,
+ uri varchar(50),
+ email varchar(80),
+ displayname VARCHAR(80),
+ vcardurl VARCHAR(80),
+ unique(uri)
+)
+SQL
+ );
$pdo->query("INSERT INTO principals (uri,email,displayname) VALUES ('principals/user','user@example.org','User')");
$pdo->query("INSERT INTO principals (uri,email,displayname) VALUES ('principals/group','group@example.org','Group')");
$pdo->query("DROP TABLE IF EXISTS groupmembers");
- $pdo->query("CREATE TABLE groupmembers (
- id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
- principal_id INTEGER UNSIGNED NOT NULL,
- member_id INTEGER UNSIGNED NOT NULL,
- UNIQUE(principal_id, member_id)
- );");
+ $pdo->query(<<<SQL
+CREATE TABLE groupmembers (
+ id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ principal_id INTEGER UNSIGNED NOT NULL,
+ member_id INTEGER UNSIGNED NOT NULL,
+ UNIQUE(principal_id, member_id)
+)
+SQL
+ );
$pdo->query("INSERT INTO groupmembers (principal_id,member_id) VALUES (2,1)");
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/PDOSqliteTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/PDOSqliteTest.php
index 192e188f9..f335ed51f 100644
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/PDOSqliteTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalBackend/PDOSqliteTest.php
@@ -22,16 +22,19 @@ class PDOSQLiteTest extends AbstractPDOTest {
if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
$pdo = new \PDO('sqlite:'.SABRE_TEMPDIR.'/pdobackend');
$pdo->setAttribute(\PDO::ATTR_ERRMODE,\PDO::ERRMODE_EXCEPTION);
- $pdo->query('CREATE TABLE principals (id INTEGER PRIMARY KEY ASC, uri TEXT, email VARCHAR(80), displayname VARCHAR(80), vcardurl VARCHAR(80))');
- $pdo->query('INSERT INTO principals VALUES (1, "principals/user","user@example.org","User",null)');
- $pdo->query('INSERT INTO principals VALUES (2, "principals/group","group@example.org","Group",null)');
-
- $pdo->query("CREATE TABLE groupmembers (
- id INTEGER PRIMARY KEY ASC,
- principal_id INT,
- member_id INT,
- UNIQUE(principal_id, member_id)
- );");
+ $pdo->query('CREATE TABLE principals (id INTEGER PRIMARY KEY ASC, uri TEXT, email VARCHAR(80), displayname VARCHAR(80))');
+ $pdo->query('INSERT INTO principals VALUES (1, "principals/user","user@example.org","User")');
+ $pdo->query('INSERT INTO principals VALUES (2, "principals/group","group@example.org","Group")');
+
+ $pdo->query(<<<SQL
+CREATE TABLE groupmembers (
+ id INTEGER PRIMARY KEY ASC,
+ principal_id INT,
+ member_id INT,
+ UNIQUE(principal_id, member_id)
+)
+SQL
+ );
$pdo->query("INSERT INTO groupmembers (principal_id,member_id) VALUES (2,1)");
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalCollectionTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalCollectionTest.php
index 10b0c04da..f51d2dcce 100644
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalCollectionTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalCollectionTest.php
@@ -49,4 +49,13 @@ class PrincipalCollectionTest extends \PHPUnit_Framework_TestCase {
}
+ public function testFindByUri() {
+
+ $backend = new PrincipalBackend\Mock();
+ $pc = new PrincipalCollection($backend);
+ $this->assertEquals('principals/user1', $pc->findByUri('mailto:user1.sabredav@sabredav.org'));
+ $this->assertNull($pc->findByUri('mailto:fake.user.sabredav@sabredav.org'));
+ $this->assertNull($pc->findByUri(''));
+ }
+
}
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalPropertySearchTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalPropertySearchTest.php
index 9c3be4f9a..8e4c86782 100644
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalPropertySearchTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalPropertySearchTest.php
@@ -17,10 +17,11 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase {
$principals = new PrincipalCollection($backend);
$dir->addChild($principals);
- $fakeServer = new DAV\Server(new DAV\ObjectTree($dir));
+ $fakeServer = new DAV\Server($dir);
+ $fakeServer->sapi = new HTTP\SapiMock();
$fakeServer->httpResponse = new HTTP\ResponseMock();
$fakeServer->debugExceptions = true;
- $plugin = new MockPlugin($backend,'realm');
+ $plugin = new MockPlugin();
$plugin->allowAccessToNodesWithoutACL = true;
$this->assertTrue($plugin instanceof Plugin);
@@ -53,7 +54,7 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase {
'REQUEST_URI' => '/principals',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody($xml);
$server = $this->getServer();
@@ -61,10 +62,11 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase {
$server->exec();
- $this->assertEquals('HTTP/1.1 400 Bad request', $server->httpResponse->status);
+ $this->assertEquals(400, $server->httpResponse->getStatus(), $server->httpResponse->getBodyAsString());
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ), $server->httpResponse->headers);
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ), $server->httpResponse->getHeaders());
}
@@ -91,7 +93,7 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase {
'REQUEST_URI' => '/principals',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody($xml);
$server = $this->getServer();
@@ -99,11 +101,12 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase {
$server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status', $server->httpResponse->status);
+ $this->assertEquals(207, $server->httpResponse->getStatus(), "Full body: " . $server->httpResponse->getBodyAsString());
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- 'Vary' => 'Brief,Prefer',
- ), $server->httpResponse->headers);
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ 'Vary' => ['Brief,Prefer'],
+ ), $server->httpResponse->getHeaders());
}
@@ -130,7 +133,7 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase {
'REQUEST_URI' => '/',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody($xml);
$server = $this->getServer();
@@ -138,11 +141,157 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase {
$server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status', $server->httpResponse->status, $server->httpResponse->body);
+ $this->assertEquals(207, $server->httpResponse->status, $server->httpResponse->body);
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- 'Vary' => 'Brief,Prefer',
- ), $server->httpResponse->headers);
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ 'Vary' => ['Brief,Prefer'],
+ ), $server->httpResponse->getHeaders());
+
+
+ $check = array(
+ '/d:multistatus',
+ '/d:multistatus/d:response' => 2,
+ '/d:multistatus/d:response/d:href' => 2,
+ '/d:multistatus/d:response/d:propstat' => 4,
+ '/d:multistatus/d:response/d:propstat/d:prop' => 4,
+ '/d:multistatus/d:response/d:propstat/d:prop/d:displayname' => 2,
+ '/d:multistatus/d:response/d:propstat/d:prop/d:getcontentlength' => 2,
+ '/d:multistatus/d:response/d:propstat/d:status' => 4,
+ );
+
+ $xml = simplexml_load_string($server->httpResponse->body);
+ $xml->registerXPathNamespace('d','DAV:');
+ foreach($check as $v1=>$v2) {
+
+ $xpath = is_int($v1)?$v2:$v1;
+
+ $result = $xml->xpath($xpath);
+
+ $count = 1;
+ if (!is_int($v1)) $count = $v2;
+
+ $this->assertEquals($count,count($result), 'we expected ' . $count . ' appearances of ' . $xpath . ' . We found ' . count($result) . '. Full response body: ' . $server->httpResponse->body);
+
+ }
+
+ }
+
+ function testAND() {
+
+ $xml = '<?xml version="1.0"?>
+<d:principal-property-search xmlns:d="DAV:">
+ <d:apply-to-principal-collection-set />
+ <d:property-search>
+ <d:prop>
+ <d:displayname />
+ </d:prop>
+ <d:match>user</d:match>
+ </d:property-search>
+ <d:property-search>
+ <d:prop>
+ <d:foo />
+ </d:prop>
+ <d:match>bar</d:match>
+ </d:property-search>
+ <d:prop>
+ <d:displayname />
+ <d:getcontentlength />
+ </d:prop>
+</d:principal-property-search>';
+
+ $serverVars = array(
+ 'REQUEST_METHOD' => 'REPORT',
+ 'HTTP_DEPTH' => '0',
+ 'REQUEST_URI' => '/',
+ );
+
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
+ $request->setBody($xml);
+
+ $server = $this->getServer();
+ $server->httpRequest = $request;
+
+ $server->exec();
+
+ $this->assertEquals(207, $server->httpResponse->status, $server->httpResponse->body);
+ $this->assertEquals(array(
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ 'Vary' => ['Brief,Prefer'],
+ ), $server->httpResponse->getHeaders());
+
+
+ $check = array(
+ '/d:multistatus',
+ '/d:multistatus/d:response' => 0,
+ '/d:multistatus/d:response/d:href' => 0,
+ '/d:multistatus/d:response/d:propstat' => 0,
+ '/d:multistatus/d:response/d:propstat/d:prop' => 0,
+ '/d:multistatus/d:response/d:propstat/d:prop/d:displayname' => 0,
+ '/d:multistatus/d:response/d:propstat/d:prop/d:getcontentlength' => 0,
+ '/d:multistatus/d:response/d:propstat/d:status' => 0,
+ );
+
+ $xml = simplexml_load_string($server->httpResponse->body);
+ $xml->registerXPathNamespace('d','DAV:');
+ foreach($check as $v1=>$v2) {
+
+ $xpath = is_int($v1)?$v2:$v1;
+
+ $result = $xml->xpath($xpath);
+
+ $count = 1;
+ if (!is_int($v1)) $count = $v2;
+
+ $this->assertEquals($count,count($result), 'we expected ' . $count . ' appearances of ' . $xpath . ' . We found ' . count($result) . '. Full response body: ' . $server->httpResponse->body);
+
+ }
+
+ }
+ function testOR() {
+
+ $xml = '<?xml version="1.0"?>
+<d:principal-property-search xmlns:d="DAV:" test="anyof">
+ <d:apply-to-principal-collection-set />
+ <d:property-search>
+ <d:prop>
+ <d:displayname />
+ </d:prop>
+ <d:match>user</d:match>
+ </d:property-search>
+ <d:property-search>
+ <d:prop>
+ <d:foo />
+ </d:prop>
+ <d:match>bar</d:match>
+ </d:property-search>
+ <d:prop>
+ <d:displayname />
+ <d:getcontentlength />
+ </d:prop>
+</d:principal-property-search>';
+
+ $serverVars = array(
+ 'REQUEST_METHOD' => 'REPORT',
+ 'HTTP_DEPTH' => '0',
+ 'REQUEST_URI' => '/',
+ );
+
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
+ $request->setBody($xml);
+
+ $server = $this->getServer();
+ $server->httpRequest = $request;
+
+ $server->exec();
+
+ $this->assertEquals(207, $server->httpResponse->status, $server->httpResponse->body);
+ $this->assertEquals(array(
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ 'Vary' => ['Brief,Prefer'],
+ ), $server->httpResponse->getHeaders());
$check = array(
@@ -194,7 +343,7 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase {
'REQUEST_URI' => '/',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody($xml);
$server = $this->getServer();
@@ -202,11 +351,12 @@ class PrincipalPropertySearchTest extends \PHPUnit_Framework_TestCase {
$server->exec();
- $this->assertEquals('HTTP/1.1 207 Multi-Status', $server->httpResponse->status, $server->httpResponse->body);
+ $this->assertEquals(207, $server->httpResponse->status, $server->httpResponse->body);
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- 'Vary' => 'Brief,Prefer',
- ), $server->httpResponse->headers);
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ 'Vary' => ['Brief,Prefer'],
+ ), $server->httpResponse->getHeaders());
$check = array(
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalSearchPropertySetTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalSearchPropertySetTest.php
index 412389e8b..952dc174a 100644
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalSearchPropertySetTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalSearchPropertySetTest.php
@@ -17,9 +17,10 @@ class PrincipalSearchPropertySetTest extends \PHPUnit_Framework_TestCase {
$principals = new PrincipalCollection($backend);
$dir->addChild($principals);
- $fakeServer = new DAV\Server(new DAV\ObjectTree($dir));
+ $fakeServer = new DAV\Server($dir);
+ $fakeServer->sapi = new HTTP\SapiMock();
$fakeServer->httpResponse = new HTTP\ResponseMock();
- $plugin = new Plugin($backend,'realm');
+ $plugin = new Plugin();
$this->assertTrue($plugin instanceof Plugin);
$fakeServer->addPlugin($plugin);
$this->assertEquals($plugin, $fakeServer->getPlugin('acl'));
@@ -39,7 +40,7 @@ class PrincipalSearchPropertySetTest extends \PHPUnit_Framework_TestCase {
'REQUEST_URI' => '/principals',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody($xml);
$server = $this->getServer();
@@ -47,10 +48,11 @@ class PrincipalSearchPropertySetTest extends \PHPUnit_Framework_TestCase {
$server->exec();
- $this->assertEquals('HTTP/1.1 400 Bad request', $server->httpResponse->status);
+ $this->assertEquals(400, $server->httpResponse->status);
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ), $server->httpResponse->headers);
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ), $server->httpResponse->getHeaders());
}
@@ -65,7 +67,7 @@ class PrincipalSearchPropertySetTest extends \PHPUnit_Framework_TestCase {
'REQUEST_URI' => '/principals',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody($xml);
$server = $this->getServer();
@@ -73,10 +75,11 @@ class PrincipalSearchPropertySetTest extends \PHPUnit_Framework_TestCase {
$server->exec();
- $this->assertEquals('HTTP/1.1 400 Bad request', $server->httpResponse->status, $server->httpResponse->body);
+ $this->assertEquals(400, $server->httpResponse->status, $server->httpResponse->body);
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ), $server->httpResponse->headers);
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ), $server->httpResponse->getHeaders());
}
@@ -91,7 +94,7 @@ class PrincipalSearchPropertySetTest extends \PHPUnit_Framework_TestCase {
'REQUEST_URI' => '/principals',
);
- $request = new HTTP\Request($serverVars);
+ $request = HTTP\Sapi::createFromServerArray($serverVars);
$request->setBody($xml);
$server = $this->getServer();
@@ -99,10 +102,11 @@ class PrincipalSearchPropertySetTest extends \PHPUnit_Framework_TestCase {
$server->exec();
- $this->assertEquals('HTTP/1.1 200 OK', $server->httpResponse->status, $server->httpResponse->body);
+ $this->assertEquals(200, $server->httpResponse->status, $server->httpResponse->body);
$this->assertEquals(array(
- 'Content-Type' => 'application/xml; charset=utf-8',
- ), $server->httpResponse->headers);
+ 'X-Sabre-Version' => [DAV\Version::VERSION],
+ 'Content-Type' => ['application/xml; charset=utf-8'],
+ ), $server->httpResponse->getHeaders());
$check = array(
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalTest.php
index 2d4371138..03fd9d64d 100644
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalTest.php
@@ -75,8 +75,12 @@ class PrincipalTest extends \PHPUnit_Framework_TestCase {
$principalBackend = new PrincipalBackend\Mock();
$principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
- $result = $principal->updateProperties(array('{DAV:}yourmom'=>'test'));
- $this->assertEquals(true,$result);
+
+ $propPatch = new DAV\PropPatch(array('{DAV:}yourmom' => 'test'));
+
+ $result = $principal->propPatch($propPatch);
+ $result = $propPatch->commit();
+ $this->assertTrue($result);
}
@@ -175,7 +179,7 @@ class PrincipalTest extends \PHPUnit_Framework_TestCase {
$this->assertEquals(array(
array(
'privilege' => '{DAV:}read',
- 'principal' => 'principals/admin',
+ 'principal' => '{DAV:}authenticated',
'protected' => true,
)
),$principal->getACL());
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/Property/ACLRestrictionsTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/Property/ACLRestrictionsTest.php
deleted file mode 100644
index 72a2f36a4..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/Property/ACLRestrictionsTest.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-namespace Sabre\DAVACL\Property;
-
-use Sabre\DAV;
-use Sabre\HTTP;
-
-class ACLRestrictionsTest extends \PHPUnit_Framework_TestCase {
-
- function testConstruct() {
-
- $prop = new AclRestrictions();
-
- }
-
- function testSerializeEmpty() {
-
- $dom = new \DOMDocument('1.0');
- $root = $dom->createElementNS('DAV:','d:root');
-
- $dom->appendChild($root);
-
- $acl = new AclRestrictions();
- $acl->serialize(new DAV\Server(), $root);
-
- $xml = $dom->saveXML();
- $expected = '<?xml version="1.0"?>
-<d:root xmlns:d="DAV:"><d:grant-only/><d:no-invert/></d:root>
-';
- $this->assertEquals($expected, $xml);
-
- }
-
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/Property/ACLTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/Property/ACLTest.php
deleted file mode 100644
index 7f2014df3..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/Property/ACLTest.php
+++ /dev/null
@@ -1,335 +0,0 @@
-<?php
-
-namespace Sabre\DAVACL\Property;
-
-use Sabre\DAV;
-use Sabre\HTTP;
-
-
-class ACLTest extends \PHPUnit_Framework_TestCase {
-
- function testConstruct() {
-
- $acl = new Acl(array());
-
- }
-
- function testSerializeEmpty() {
-
- $dom = new \DOMDocument('1.0');
- $root = $dom->createElementNS('DAV:','d:root');
-
- $dom->appendChild($root);
-
- $acl = new Acl(array());
- $acl->serialize(new DAV\Server(), $root);
-
- $xml = $dom->saveXML();
- $expected = '<?xml version="1.0"?>
-<d:root xmlns:d="DAV:"/>
-';
- $this->assertEquals($expected, $xml);
-
- }
-
- function testSerialize() {
-
- $dom = new \DOMDocument('1.0');
- $root = $dom->createElementNS('DAV:','d:root');
-
- $dom->appendChild($root);
-
- $privileges = array(
- array(
- 'principal' => 'principals/evert',
- 'privilege' => '{DAV:}write',
- 'uri' => 'articles',
- ),
- array(
- 'principal' => 'principals/foo',
- 'privilege' => '{DAV:}read',
- 'uri' => 'articles',
- 'protected' => true,
- ),
- );
-
- $acl = new Acl($privileges);
- $acl->serialize(new DAV\Server(), $root);
-
- $dom->formatOutput = true;
-
- $xml = $dom->saveXML();
- $expected = '<?xml version="1.0"?>
-<d:root xmlns:d="DAV:">
- <d:ace>
- <d:principal>
- <d:href>/principals/evert/</d:href>
- </d:principal>
- <d:grant>
- <d:privilege>
- <d:write/>
- </d:privilege>
- </d:grant>
- </d:ace>
- <d:ace>
- <d:principal>
- <d:href>/principals/foo/</d:href>
- </d:principal>
- <d:grant>
- <d:privilege>
- <d:read/>
- </d:privilege>
- </d:grant>
- <d:protected/>
- </d:ace>
-</d:root>
-';
- $this->assertEquals($expected, $xml);
-
- }
-
- function testSerializeSpecialPrincipals() {
-
- $dom = new \DOMDocument('1.0');
- $root = $dom->createElementNS('DAV:','d:root');
-
- $dom->appendChild($root);
-
- $privileges = array(
- array(
- 'principal' => '{DAV:}authenticated',
- 'privilege' => '{DAV:}write',
- 'uri' => 'articles',
- ),
- array(
- 'principal' => '{DAV:}unauthenticated',
- 'privilege' => '{DAV:}write',
- 'uri' => 'articles',
- ),
- array(
- 'principal' => '{DAV:}all',
- 'privilege' => '{DAV:}write',
- 'uri' => 'articles',
- ),
-
- );
-
- $acl = new Acl($privileges);
- $acl->serialize(new DAV\Server(), $root);
-
- $dom->formatOutput = true;
-
- $xml = $dom->saveXML();
- $expected = '<?xml version="1.0"?>
-<d:root xmlns:d="DAV:">
- <d:ace>
- <d:principal>
- <d:authenticated/>
- </d:principal>
- <d:grant>
- <d:privilege>
- <d:write/>
- </d:privilege>
- </d:grant>
- </d:ace>
- <d:ace>
- <d:principal>
- <d:unauthenticated/>
- </d:principal>
- <d:grant>
- <d:privilege>
- <d:write/>
- </d:privilege>
- </d:grant>
- </d:ace>
- <d:ace>
- <d:principal>
- <d:all/>
- </d:principal>
- <d:grant>
- <d:privilege>
- <d:write/>
- </d:privilege>
- </d:grant>
- </d:ace>
-</d:root>
-';
- $this->assertEquals($expected, $xml);
-
- }
-
- function testUnserialize() {
-
- $source = '<?xml version="1.0"?>
-<d:root xmlns:d="DAV:">
- <d:ace>
- <d:principal>
- <d:href>/principals/evert/</d:href>
- </d:principal>
- <d:grant>
- <d:privilege>
- <d:write/>
- </d:privilege>
- </d:grant>
- </d:ace>
- <d:ace>
- <d:principal>
- <d:href>/principals/foo/</d:href>
- </d:principal>
- <d:grant>
- <d:privilege>
- <d:read/>
- </d:privilege>
- </d:grant>
- <d:protected/>
- </d:ace>
-</d:root>
-';
-
- $dom = DAV\XMLUtil::loadDOMDocument($source);
- $result = Acl::unserialize($dom->firstChild);
-
- $this->assertInstanceOf('Sabre\\DAVACL\\Property\\ACL', $result);
-
- $expected = array(
- array(
- 'principal' => '/principals/evert/',
- 'protected' => false,
- 'privilege' => '{DAV:}write',
- ),
- array(
- 'principal' => '/principals/foo/',
- 'protected' => true,
- 'privilege' => '{DAV:}read',
- ),
- );
-
- $this->assertEquals($expected, $result->getPrivileges());
-
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\BadRequest
- */
- function testUnserializeNoPrincipal() {
-
- $source = '<?xml version="1.0"?>
-<d:root xmlns:d="DAV:">
- <d:ace>
- <d:grant>
- <d:privilege>
- <d:write/>
- </d:privilege>
- </d:grant>
- </d:ace>
-</d:root>
-';
-
- $dom = DAV\XMLUtil::loadDOMDocument($source);
- Acl::unserialize($dom->firstChild);
-
- }
-
- function testUnserializeOtherPrincipal() {
-
- $source = '<?xml version="1.0"?>
-<d:root xmlns:d="DAV:">
- <d:ace>
- <d:grant>
- <d:privilege>
- <d:write/>
- </d:privilege>
- </d:grant>
- <d:principal><d:authenticated /></d:principal>
- </d:ace>
- <d:ace>
- <d:grant>
- <d:privilege>
- <d:write/>
- </d:privilege>
- </d:grant>
- <d:principal><d:unauthenticated /></d:principal>
- </d:ace>
- <d:ace>
- <d:grant>
- <d:privilege>
- <d:write/>
- </d:privilege>
- </d:grant>
- <d:principal><d:all /></d:principal>
- </d:ace>
-</d:root>
-';
-
- $dom = DAV\XMLUtil::loadDOMDocument($source);
- $result = Acl::unserialize($dom->firstChild);
-
- $this->assertInstanceOf('Sabre\\DAVACL\\Property\\Acl', $result);
-
- $expected = array(
- array(
- 'principal' => '{DAV:}authenticated',
- 'protected' => false,
- 'privilege' => '{DAV:}write',
- ),
- array(
- 'principal' => '{DAV:}unauthenticated',
- 'protected' => false,
- 'privilege' => '{DAV:}write',
- ),
- array(
- 'principal' => '{DAV:}all',
- 'protected' => false,
- 'privilege' => '{DAV:}write',
- ),
- );
-
- $this->assertEquals($expected, $result->getPrivileges());
-
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\NotImplemented
- */
- function testUnserializeDeny() {
-
- $source = '<?xml version="1.0"?>
-<d:root xmlns:d="DAV:">
- <d:ace>
- <d:deny>
- <d:privilege>
- <d:write/>
- </d:privilege>
- </d:deny>
- <d:principal><d:href>/principals/evert</d:href></d:principal>
- </d:ace>
-</d:root>
-';
-
- $dom = DAV\XMLUtil::loadDOMDocument($source);
- Acl::unserialize($dom->firstChild);
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\BadRequest
- */
- function testUnserializeMissingPriv() {
-
- $source = '<?xml version="1.0"?>
-<d:root xmlns:d="DAV:">
- <d:ace>
- <d:grant>
- <d:privilege />
- </d:grant>
- <d:principal><d:href>/principals/evert</d:href></d:principal>
- </d:ace>
-</d:root>
-';
-
- $dom = DAV\XMLUtil::loadDOMDocument($source);
- Acl::unserialize($dom->firstChild);
-
- }
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/Property/CurrentUserPrivilegeSetTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/Property/CurrentUserPrivilegeSetTest.php
deleted file mode 100644
index e71addb65..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/Property/CurrentUserPrivilegeSetTest.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-namespace Sabre\DAVACL\Property;
-
-use Sabre\DAV;
-use Sabre\HTTP;
-
-
-class CurrentUserPrivilegeSetTest extends \PHPUnit_Framework_TestCase {
-
- function testSerialize() {
-
- $privileges = array(
- '{DAV:}read',
- '{DAV:}write',
- );
- $prop = new CurrentUserPrivilegeSet($privileges);
-
- $server = new DAV\Server();
- $dom = new \DOMDocument('1.0','utf-8');
- $root = $dom->createElementNS('DAV:','d:root');
- $dom->appendChild($root);
-
- $prop->serialize($server, $root);
-
- $xpaths = array(
- '/d:root' => 1,
- '/d:root/d:privilege' => 2,
- '/d:root/d:privilege/d:read' => 1,
- '/d:root/d:privilege/d:write' => 1,
- );
-
- // Reloading because PHP DOM sucks
- $dom2 = new \DOMDocument('1.0', 'utf-8');
- $dom2->loadXML($dom->saveXML());
-
- $dxpath = new \DOMXPath($dom2);
- $dxpath->registerNamespace('d','DAV:');
- foreach($xpaths as $xpath=>$count) {
-
- $this->assertEquals($count, $dxpath->query($xpath)->length, 'Looking for : ' . $xpath . ', we could only find ' . $dxpath->query($xpath)->length . ' elements, while we expected ' . $count);
-
- }
-
- }
-
- function testUnserialize() {
-
- $source = '<?xml version="1.0"?>
-<d:root xmlns:d="DAV:">
- <d:privilege>
- <d:write-properties />
- </d:privilege>
- <d:privilege>
- <d:read />
- </d:privilege>
-</d:root>
-';
-
- $dom = DAV\XMLUtil::loadDOMDocument($source);
- $result = CurrentUserPrivilegeSet::unserialize($dom->firstChild, array());
- $this->assertTrue($result->has('{DAV:}read'));
- $this->assertTrue($result->has('{DAV:}write-properties'));
- $this->assertFalse($result->has('{DAV:}bind'));
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/Property/PrincipalTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/Property/PrincipalTest.php
deleted file mode 100644
index be12c79ee..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/Property/PrincipalTest.php
+++ /dev/null
@@ -1,181 +0,0 @@
-<?php
-
-namespace Sabre\DAVACL\Property;
-
-use Sabre\DAV;
-use Sabre\HTTP;
-
-class PrincipalTest extends \PHPUnit_Framework_TestCase {
-
- function testSimple() {
-
- $principal = new Principal(Principal::UNAUTHENTICATED);
- $this->assertEquals(Principal::UNAUTHENTICATED, $principal->getType());
- $this->assertNull($principal->getHref());
-
- $principal = new Principal(Principal::AUTHENTICATED);
- $this->assertEquals(Principal::AUTHENTICATED, $principal->getType());
- $this->assertNull($principal->getHref());
-
- $principal = new Principal(Principal::HREF,'admin');
- $this->assertEquals(Principal::HREF, $principal->getType());
- $this->assertEquals('admin',$principal->getHref());
-
- }
-
- /**
- * @depends testSimple
- * @expectedException Sabre\DAV\Exception
- */
- function testNoHref() {
-
- $principal = new Principal(Principal::HREF);
-
- }
-
- /**
- * @depends testSimple
- */
- function testSerializeUnAuthenticated() {
-
- $prin = new Principal(Principal::UNAUTHENTICATED);
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:principal');
- $root->setAttribute('xmlns:d','DAV:');
-
- $doc->appendChild($root);
- $objectTree = new DAV\ObjectTree(new DAV\SimpleCollection('rootdir'));
- $server = new DAV\Server($objectTree);
-
- $prin->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:principal xmlns:d="DAV:">' .
-'<d:unauthenticated/>' .
-'</d:principal>
-', $xml);
-
- }
-
-
- /**
- * @depends testSerializeUnAuthenticated
- */
- function testSerializeAuthenticated() {
-
- $prin = new Principal(Principal::AUTHENTICATED);
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:principal');
- $root->setAttribute('xmlns:d','DAV:');
-
- $doc->appendChild($root);
- $objectTree = new DAV\ObjectTree(new DAV\SimpleCollection('rootdir'));
- $server = new DAV\Server($objectTree);
-
- $prin->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:principal xmlns:d="DAV:">' .
-'<d:authenticated/>' .
-'</d:principal>
-', $xml);
-
- }
-
-
- /**
- * @depends testSerializeUnAuthenticated
- */
- function testSerializeHref() {
-
- $prin = new Principal(Principal::HREF,'principals/admin');
-
- $doc = new \DOMDocument();
- $root = $doc->createElement('d:principal');
- $root->setAttribute('xmlns:d','DAV:');
-
- $doc->appendChild($root);
- $objectTree = new DAV\ObjectTree(new DAV\SimpleCollection('rootdir'));
- $server = new DAV\Server($objectTree);
-
- $prin->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:principal xmlns:d="DAV:">' .
-'<d:href>/principals/admin</d:href>' .
-'</d:principal>
-', $xml);
-
- }
-
- function testUnserializeHref() {
-
- $xml = '<?xml version="1.0"?>
-<d:principal xmlns:d="DAV:">' .
-'<d:href>/principals/admin</d:href>' .
-'</d:principal>';
-
- $dom = DAV\XMLUtil::loadDOMDocument($xml);
-
- $principal = Principal::unserialize($dom->firstChild);
- $this->assertEquals(Principal::HREF, $principal->getType());
- $this->assertEquals('/principals/admin', $principal->getHref());
-
- }
-
- function testUnserializeAuthenticated() {
-
- $xml = '<?xml version="1.0"?>
-<d:principal xmlns:d="DAV:">' .
-' <d:authenticated />' .
-'</d:principal>';
-
- $dom = DAV\XMLUtil::loadDOMDocument($xml);
-
- $principal = Principal::unserialize($dom->firstChild);
- $this->assertEquals(Principal::AUTHENTICATED, $principal->getType());
-
- }
-
- function testUnserializeUnauthenticated() {
-
- $xml = '<?xml version="1.0"?>
-<d:principal xmlns:d="DAV:">' .
-' <d:unauthenticated />' .
-'</d:principal>';
-
- $dom = DAV\XMLUtil::loadDOMDocument($xml);
-
- $principal = Principal::unserialize($dom->firstChild);
- $this->assertEquals(Principal::UNAUTHENTICATED, $principal->getType());
-
- }
-
- /**
- * @expectedException Sabre\DAV\Exception\BadRequest
- */
- function testUnserializeUnknown() {
-
- $xml = '<?xml version="1.0"?>
-<d:principal xmlns:d="DAV:">' .
-' <d:foo />' .
-'</d:principal>';
-
- $dom = DAV\XMLUtil::loadDOMDocument($xml);
-
- Principal::unserialize($dom->firstChild);
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/Property/SupportedPrivilegeSetTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/Property/SupportedPrivilegeSetTest.php
deleted file mode 100644
index 943316331..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/Property/SupportedPrivilegeSetTest.php
+++ /dev/null
@@ -1,106 +0,0 @@
-<?php
-
-namespace Sabre\DAVACL\Property;
-
-use Sabre\DAV;
-use Sabre\HTTP;
-
-
-
-class SupportedPrivilegeSetTest extends \PHPUnit_Framework_TestCase {
-
- function testSimple() {
-
- $prop = new SupportedPrivilegeSet(array(
- 'privilege' => '{DAV:}all',
- ));
-
- }
-
-
- /**
- * @depends testSimple
- */
- function testSerializeSimple() {
-
- $prop = new SupportedPrivilegeSet(array(
- 'privilege' => '{DAV:}all',
- ));
-
- $doc = new \DOMDocument();
- $root = $doc->createElementNS('DAV:', 'd:supported-privilege-set');
-
- $doc->appendChild($root);
-
- $server = new DAV\Server();
- $prop->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:supported-privilege-set xmlns:d="DAV:">' .
-'<d:supported-privilege>' .
-'<d:privilege>' .
-'<d:all/>' .
-'</d:privilege>' .
-'</d:supported-privilege>' .
-'</d:supported-privilege-set>
-', $xml);
-
- }
-
- /**
- * @depends testSimple
- */
- function testSerializeAggregate() {
-
- $prop = new SupportedPrivilegeSet(array(
- 'privilege' => '{DAV:}all',
- 'abstract' => true,
- 'aggregates' => array(
- array(
- 'privilege' => '{DAV:}read',
- ),
- array(
- 'privilege' => '{DAV:}write',
- 'description' => 'booh',
- ),
- ),
- ));
-
- $doc = new \DOMDocument();
- $root = $doc->createElementNS('DAV:', 'd:supported-privilege-set');
-
- $doc->appendChild($root);
-
- $server = new DAV\Server();
- $prop->serialize($server, $root);
-
- $xml = $doc->saveXML();
-
- $this->assertEquals(
-'<?xml version="1.0"?>
-<d:supported-privilege-set xmlns:d="DAV:">' .
-'<d:supported-privilege>' .
-'<d:privilege>' .
-'<d:all/>' .
-'</d:privilege>' .
-'<d:abstract/>' .
-'<d:supported-privilege>' .
-'<d:privilege>' .
-'<d:read/>' .
-'</d:privilege>' .
-'</d:supported-privilege>' .
-'<d:supported-privilege>' .
-'<d:privilege>' .
-'<d:write/>' .
-'</d:privilege>' .
-'<d:description>booh</d:description>' .
-'</d:supported-privilege>' .
-'</d:supported-privilege>' .
-'</d:supported-privilege-set>
-', $xml);
-
- }
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/SimplePluginTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/SimplePluginTest.php
index 04ed5c330..fb73cc16a 100644
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/SimplePluginTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAVACL/SimplePluginTest.php
@@ -30,6 +30,11 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase {
$this->assertEquals(array('ACL'), $aclPlugin->getMethods(''));
+
+ $this->assertEquals(
+ 'acl',
+ $aclPlugin->getPluginInfo()['name']
+ );
}
function testGetFlatPrivilegeSet() {
@@ -55,15 +60,15 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase {
),
'{DAV:}read-acl' => array(
'privilege' => '{DAV:}read-acl',
- 'abstract' => true,
+ 'abstract' => false,
'aggregates' => array(),
- 'concrete' => '{DAV:}read',
+ 'concrete' => '{DAV:}read-acl',
),
'{DAV:}read-current-user-privilege-set' => array(
'privilege' => '{DAV:}read-current-user-privilege-set',
- 'abstract' => true,
+ 'abstract' => false,
'aggregates' => array(),
- 'concrete' => '{DAV:}read',
+ 'concrete' => '{DAV:}read-current-user-privilege-set',
),
'{DAV:}write' => array(
'privilege' => '{DAV:}write',
@@ -80,39 +85,39 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase {
),
'{DAV:}write-acl' => array(
'privilege' => '{DAV:}write-acl',
- 'abstract' => true,
+ 'abstract' => false,
'aggregates' => array(),
- 'concrete' => '{DAV:}write',
+ 'concrete' => '{DAV:}write-acl',
),
'{DAV:}write-properties' => array(
'privilege' => '{DAV:}write-properties',
- 'abstract' => true,
+ 'abstract' => false,
'aggregates' => array(),
- 'concrete' => '{DAV:}write',
+ 'concrete' => '{DAV:}write-properties',
),
'{DAV:}write-content' => array(
'privilege' => '{DAV:}write-content',
- 'abstract' => true,
+ 'abstract' => false,
'aggregates' => array(),
- 'concrete' => '{DAV:}write',
+ 'concrete' => '{DAV:}write-content',
),
'{DAV:}unlock' => array(
'privilege' => '{DAV:}unlock',
- 'abstract' => true,
+ 'abstract' => false,
'aggregates' => array(),
- 'concrete' => '{DAV:}write',
+ 'concrete' => '{DAV:}unlock',
),
'{DAV:}bind' => array(
'privilege' => '{DAV:}bind',
- 'abstract' => true,
+ 'abstract' => false,
'aggregates' => array(),
- 'concrete' => '{DAV:}write',
+ 'concrete' => '{DAV:}bind',
),
'{DAV:}unbind' => array(
'privilege' => '{DAV:}unbind',
- 'abstract' => true,
+ 'abstract' => false,
'aggregates' => array(),
- 'concrete' => '{DAV:}write',
+ 'concrete' => '{DAV:}unbind',
),
);
@@ -148,11 +153,11 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase {
$server = new DAV\Server($tree);
$server->addPlugin($acl);
- $auth = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock(),'SabreDAV');
+ $auth = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock());
$server->addPlugin($auth);
//forcing login
- $auth->beforeMethod('GET','/');
+ $auth->beforeMethod(new HTTP\Request(), new HTTP\Response());
$this->assertEquals(array('principals/admin'),$acl->getCurrentUserPrincipals());
@@ -175,11 +180,11 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase {
$server = new DAV\Server($tree);
$server->addPlugin($acl);
- $auth = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock(),'SabreDAV');
+ $auth = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock());
$server->addPlugin($auth);
//forcing login
- $auth->beforeMethod('GET','/');
+ $auth->beforeMethod(new HTTP\Request(), new HTTP\Response());
$expected = array(
'principals/admin',
@@ -252,11 +257,11 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase {
$aclPlugin = new Plugin();
$server->addPlugin($aclPlugin);
- $auth = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock(),'SabreDAV');
+ $auth = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock());
$server->addPlugin($auth);
//forcing login
- $auth->beforeMethod('GET','/');
+ $auth->beforeMethod(new HTTP\Request(), new HTTP\Response());
$expected = array(
'{DAV:}write',
@@ -306,7 +311,7 @@ class SimplePluginTest extends \PHPUnit_Framework_TestCase {
$aclPlugin = new Plugin();
$server->addPlugin($aclPlugin);
- $auth = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock(),'SabreDAV');
+ $auth = new DAV\Auth\Plugin(new DAV\Auth\Backend\Mock());
$server->addPlugin($auth);
//forcing login
diff --git a/vendor/sabre/dav/tests/Sabre/DAVACL/VersionTest.php b/vendor/sabre/dav/tests/Sabre/DAVACL/VersionTest.php
deleted file mode 100644
index c432527dc..000000000
--- a/vendor/sabre/dav/tests/Sabre/DAVACL/VersionTest.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-namespace Sabre\DAVACL;
-
-class VersionTest extends \PHPUnit_Framework_TestCase {
-
- function testString() {
-
- $v = Version::VERSION;
- $this->assertEquals(-1, version_compare('1.0.0',$v));
-
- $s = Version::STABILITY;
- $this->assertTrue($s == 'alpha' || $s == 'beta' || $s =='stable');
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/DAVServerTest.php b/vendor/sabre/dav/tests/Sabre/DAVServerTest.php
index 207687d90..d329b5b05 100644
--- a/vendor/sabre/dav/tests/Sabre/DAVServerTest.php
+++ b/vendor/sabre/dav/tests/Sabre/DAVServerTest.php
@@ -2,17 +2,9 @@
namespace Sabre;
-require_once 'Sabre/HTTP/ResponseMock.php';
-
-require_once 'Sabre/DAV/Auth/Backend/Mock.php';
-require_once 'Sabre/DAV/Mock/File.php';
-require_once 'Sabre/DAV/Mock/Collection.php';
-
-require_once 'Sabre/DAVACL/PrincipalBackend/Mock.php';
-
-require_once 'Sabre/CalDAV/Backend/Mock.php';
-
-require_once 'Sabre/CardDAV/Backend/Mock.php';
+use Sabre\HTTP\Request;
+use Sabre\HTTP\Response;
+use Sabre\HTTP\Sapi;
/**
* This class may be used as a basis for other webdav-related unittests.
@@ -20,7 +12,7 @@ require_once 'Sabre/CardDAV/Backend/Mock.php';
* This class is supposed to provide a reasonably big framework to quickly get
* a testing environment running.
*
- * @copyright Copyright (C) 2007-2014 fruux GmbH (https://fruux.com/).
+ * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
* @author Evert Pot (http://evertpot.com/)
* @license http://sabre.io/license/ Modified BSD License
*/
@@ -30,22 +22,35 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase {
protected $setupCardDAV = false;
protected $setupACL = false;
protected $setupCalDAVSharing = false;
+ protected $setupCalDAVScheduling = false;
+ protected $setupCalDAVSubscriptions = false;
+ protected $setupCalDAVICSExport = false;
+ protected $setupLocks = false;
+ protected $setupFiles = false;
+ protected $setupPropertyStorage = false;
- protected $caldavCalendars = array();
- protected $caldavCalendarObjects = array();
+ /**
+ * An array with calendars. Every calendar should have
+ * - principaluri
+ * - uri
+ */
+ protected $caldavCalendars = [];
+ protected $caldavCalendarObjects = [];
- protected $carddavAddressBooks = array();
- protected $carddavCards = array();
+ protected $carddavAddressBooks = [];
+ protected $carddavCards = [];
/**
* @var Sabre\DAV\Server
*/
protected $server;
- protected $tree = array();
+ protected $tree = [];
protected $caldavBackend;
protected $carddavBackend;
protected $principalBackend;
+ protected $locksBackend;
+ protected $propertyStorageBackend;
/**
* @var Sabre\CalDAV\Plugin
@@ -68,11 +73,28 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase {
protected $caldavSharingPlugin;
/**
+ * CalDAV scheduling plugin
+ *
+ * @var CalDAV\Schedule\Plugin
+ */
+ protected $caldavSchedulePlugin;
+
+ /**
* @var Sabre\DAV\Auth\Plugin
*/
protected $authPlugin;
/**
+ * @var Sabre\DAV\Locks\Plugin
+ */
+ protected $locksPlugin;
+
+ /**
+ * @var Sabre\DAV\PropertyStorage\Plugin
+ */
+ protected $propertyStoragePlugin;
+
+ /**
* If this string is set, we will automatically log in the user with this
* name.
*/
@@ -84,6 +106,7 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase {
$this->setUpTree();
$this->server = new DAV\Server($this->tree);
+ $this->server->sapi = new HTTP\SapiMock();
$this->server->debugExceptions = true;
if ($this->setupCalDAV) {
@@ -94,6 +117,17 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase {
$this->caldavSharingPlugin = new CalDAV\SharingPlugin();
$this->server->addPlugin($this->caldavSharingPlugin);
}
+ if ($this->setupCalDAVScheduling) {
+ $this->caldavSchedulePlugin = new CalDAV\Schedule\Plugin();
+ $this->server->addPlugin($this->caldavSchedulePlugin);
+ }
+ if ($this->setupCalDAVSubscriptions) {
+ $this->server->addPlugin(new CalDAV\Subscriptions\Plugin());
+ }
+ if ($this->setupCalDAVICSExport) {
+ $this->caldavICSExportPlugin = new CalDAV\ICSExportPlugin();
+ $this->server->addPlugin($this->caldavICSExportPlugin);
+ }
if ($this->setupCardDAV) {
$this->carddavPlugin = new CardDAV\Plugin();
$this->server->addPlugin($this->carddavPlugin);
@@ -102,14 +136,26 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase {
$this->aclPlugin = new DAVACL\Plugin();
$this->server->addPlugin($this->aclPlugin);
}
+ if ($this->setupLocks) {
+ $this->locksPlugin = new DAV\Locks\Plugin(
+ $this->locksBackend
+ );
+ $this->server->addPlugin($this->locksPlugin);
+ }
+ if ($this->setupPropertyStorage) {
+ $this->propertyStoragePlugin = new DAV\PropertyStorage\Plugin(
+ $this->propertyStorageBackend
+ );
+ $this->server->addPlugin($this->propertyStoragePlugin);
+ }
if ($this->autoLogin) {
$authBackend = new DAV\Auth\Backend\Mock();
- $authBackend->defaultUser = $this->autoLogin;
- $this->authPlugin = new DAV\Auth\Plugin($authBackend, 'SabreDAV');
+ $authBackend->setPrincipal('principals/' . $this->autoLogin);
+ $this->authPlugin = new DAV\Auth\Plugin($authBackend);
$this->server->addPlugin($this->authPlugin);
// This will trigger the actual login procedure
- $this->authPlugin->beforeMethod('OPTIONS','/');
+ $this->authPlugin->beforeMethod(new Request(), new Response());
}
}
@@ -126,7 +172,7 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase {
function request($request) {
if (is_array($request)) {
- $request = new HTTP\Request($request);
+ $request = HTTP\Request::createFromServerArray($request);
}
$this->server->httpRequest = $request;
$this->server->httpResponse = new HTTP\ResponseMock();
@@ -136,10 +182,13 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase {
}
+ /**
+ * Override this to provide your own Tree for your test-case.
+ */
function setUpTree() {
if ($this->setupCalDAV) {
- $this->tree[] = new CalDAV\CalendarRootNode(
+ $this->tree[] = new CalDAV\CalendarRoot(
$this->principalBackend,
$this->caldavBackend
);
@@ -152,17 +201,32 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase {
}
if ($this->setupCardDAV || $this->setupCalDAV) {
- $this->tree[] = new DAVACL\PrincipalCollection(
+ $this->tree[] = new CalDAV\Principal\Collection(
$this->principalBackend
);
}
+ if ($this->setupFiles) {
+
+ $this->tree[] = new DAV\Mock\Collection('files');
+
+ }
}
function setUpBackends() {
+ if ($this->setupCalDAVSharing && is_null($this->caldavBackend)) {
+ $this->caldavBackend = new CalDAV\Backend\MockSharing($this->caldavCalendars, $this->caldavCalendarObjects);
+ }
+ if ($this->setupCalDAVSubscriptions && is_null($this->caldavBackend)) {
+ $this->caldavBackend = new CalDAV\Backend\MockSubscriptionSupport($this->caldavCalendars, $this->caldavCalendarObjects);
+ }
if ($this->setupCalDAV && is_null($this->caldavBackend)) {
- $this->caldavBackend = new CalDAV\Backend\Mock($this->caldavCalendars, $this->caldavCalendarObjects);
+ if ($this->setupCalDAVScheduling) {
+ $this->caldavBackend = new CalDAV\Backend\MockScheduling($this->caldavCalendars, $this->caldavCalendarObjects);
+ } else {
+ $this->caldavBackend = new CalDAV\Backend\Mock($this->caldavCalendars, $this->caldavCalendarObjects);
+ }
}
if ($this->setupCardDAV && is_null($this->carddavBackend)) {
$this->carddavBackend = new CardDAV\Backend\Mock($this->carddavAddressBooks, $this->carddavCards);
@@ -170,6 +234,12 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase {
if ($this->setupCardDAV || $this->setupCalDAV) {
$this->principalBackend = new DAVACL\PrincipalBackend\Mock();
}
+ if ($this->setupLocks) {
+ $this->locksBackend = new DAV\Locks\Backend\Mock();
+ }
+ if ($this->setupPropertyStorage) {
+ $this->propertyStorageBackend = new DAV\PropertyStorage\Backend\Mock();
+ }
}
@@ -177,7 +247,7 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase {
function assertHTTPStatus($expectedStatus, HTTP\Request $req) {
$resp = $this->request($req);
- $this->assertEquals($resp->getStatusMessage($expectedStatus), $resp->status,'Incorrect HTTP status received: ' . $resp->body);
+ $this->assertEquals((int)$expectedStatus, (int)$resp->status, 'Incorrect HTTP status received: ' . $resp->body);
}
diff --git a/vendor/sabre/dav/tests/Sabre/HTTP/AWSAuthTest.php b/vendor/sabre/dav/tests/Sabre/HTTP/AWSAuthTest.php
deleted file mode 100644
index 569ec2e7d..000000000
--- a/vendor/sabre/dav/tests/Sabre/HTTP/AWSAuthTest.php
+++ /dev/null
@@ -1,242 +0,0 @@
-<?php
-
-namespace Sabre\HTTP;
-
-require_once 'Sabre/HTTP/ResponseMock.php';
-
-class AWSAuthTest extends \PHPUnit_Framework_TestCase {
-
- /**
- * @var Sabre\HTTP\ResponseMock
- */
- private $response;
- /**
- * @var Sabre\HTTP\AWSAuth
- */
- private $auth;
-
- const REALM = 'SabreDAV unittest';
-
- public function setUp() {
-
- $this->response = new ResponseMock();
- $this->auth = new AWSAuth();
- $this->auth->setRealm(self::REALM);
- $this->auth->setHTTPResponse($this->response);
-
- }
-
- public function testNoHeader() {
-
- $request = new Request(array(
- 'REQUEST_METHOD' => 'GET',
- ));
-
- $this->auth->setHTTPRequest($request);
-
- $result = $this->auth->init();
-
- $this->assertFalse($result,'No AWS Authorization header was supplied, so we should have gotten false');
- $this->assertEquals(AWSAuth::ERR_NOAWSHEADER,$this->auth->errorCode);
-
- }
-
- public function testIncorrectContentMD5() {
-
- $accessKey = 'accessKey';
- $secretKey = 'secretKey';
-
- $request = new Request(array(
- 'REQUEST_METHOD' => 'GET',
- 'HTTP_AUTHORIZATION' => "AWS $accessKey:sig",
- 'HTTP_CONTENT_MD5' => 'garbage',
- 'REQUEST_URI' => '/',
- ));
-
- $this->auth->setHTTPRequest($request);
- $this->auth->init();
- $result = $this->auth->validate($secretKey);
-
- $this->assertFalse($result);
- $this->assertEquals(AWSAuth::ERR_MD5CHECKSUMWRONG,$this->auth->errorCode);
-
- }
-
- public function testNoDate() {
-
- $accessKey = 'accessKey';
- $secretKey = 'secretKey';
- $content = 'thisisthebody';
- $contentMD5 = base64_encode(md5($content,true));
-
-
- $request = new Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'HTTP_AUTHORIZATION' => "AWS $accessKey:sig",
- 'HTTP_CONTENT_MD5' => $contentMD5,
- ));
-
- $request->setBody($content);
-
- $this->auth->setHTTPRequest($request);
- $this->auth->init();
- $result = $this->auth->validate($secretKey);
-
- $this->assertFalse($result);
- $this->assertEquals(AWSAuth::ERR_INVALIDDATEFORMAT,$this->auth->errorCode);
-
- }
-
- public function testFutureDate() {
-
- $accessKey = 'accessKey';
- $secretKey = 'secretKey';
- $content = 'thisisthebody';
- $contentMD5 = base64_encode(md5($content,true));
-
- $date = new \DateTime('@' . (time() + (60*20)));
- $date->setTimeZone(new \DateTimeZone('GMT'));
- $date = $date->format('D, d M Y H:i:s \\G\\M\\T');
-
- $request = new Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'HTTP_AUTHORIZATION' => "AWS $accessKey:sig",
- 'HTTP_CONTENT_MD5' => $contentMD5,
- 'HTTP_DATE' => $date,
- ));
-
- $request->setBody($content);
-
- $this->auth->setHTTPRequest($request);
- $this->auth->init();
- $result = $this->auth->validate($secretKey);
-
- $this->assertFalse($result);
- $this->assertEquals(AWSAuth::ERR_REQUESTTIMESKEWED,$this->auth->errorCode);
-
- }
-
- public function testPastDate() {
-
- $accessKey = 'accessKey';
- $secretKey = 'secretKey';
- $content = 'thisisthebody';
- $contentMD5 = base64_encode(md5($content,true));
-
- $date = new \DateTime('@' . (time() - (60*20)));
- $date->setTimeZone(new \DateTimeZone('GMT'));
- $date = $date->format('D, d M Y H:i:s \\G\\M\\T');
-
- $request = new Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'HTTP_AUTHORIZATION' => "AWS $accessKey:sig",
- 'HTTP_CONTENT_MD5' => $contentMD5,
- 'HTTP_X_AMZ_DATE' => $date,
- ));
-
- $request->setBody($content);
-
- $this->auth->setHTTPRequest($request);
- $this->auth->init();
- $result = $this->auth->validate($secretKey);
-
- $this->assertFalse($result);
- $this->assertEquals(AWSAuth::ERR_REQUESTTIMESKEWED,$this->auth->errorCode);
-
- }
-
- public function testIncorrectSignature() {
-
- $accessKey = 'accessKey';
- $secretKey = 'secretKey';
- $content = 'thisisthebody';
-
- $contentMD5 = base64_encode(md5($content,true));
-
- $date = new \DateTime('now');
- $date->setTimeZone(new \DateTimeZone('GMT'));
- $date = $date->format('D, d M Y H:i:s \\G\\M\\T');
-
- $request = new Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'HTTP_AUTHORIZATION' => "AWS $accessKey:sig",
- 'HTTP_CONTENT_MD5' => $contentMD5,
- 'HTTP_X_AMZ_DATE' => $date,
- 'REQUEST_URI' => '/',
- ));
-
- $request->setBody($content);
-
- $this->auth->setHTTPRequest($request);
- $this->auth->init();
- $result = $this->auth->validate($secretKey);
-
- $this->assertFalse($result);
- $this->assertEquals(AWSAuth::ERR_INVALIDSIGNATURE,$this->auth->errorCode);
-
- }
-
- public function testValidRequest() {
-
- $accessKey = 'accessKey';
- $secretKey = 'secretKey';
- $content = 'thisisthebody';
- $contentMD5 = base64_encode(md5($content,true));
-
- $date = new \DateTime('now');
- $date->setTimeZone(new \DateTimeZone('GMT'));
- $date = $date->format('D, d M Y H:i:s \\G\\M\\T');
-
-
- $sig = base64_encode($this->hmacsha1($secretKey,
- "POST\n$contentMD5\n\n$date\nx-amz-date:$date\n/evert"
- ));
-
- $request = new Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'HTTP_AUTHORIZATION' => "AWS $accessKey:$sig",
- 'HTTP_CONTENT_MD5' => $contentMD5,
- 'HTTP_X_AMZ_DATE' => $date,
- 'REQUEST_URI' => '/evert',
- ));
-
- $request->setBody($content);
-
- $this->auth->setHTTPRequest($request);
- $this->auth->init();
- $result = $this->auth->validate($secretKey);
-
- $this->assertTrue($result,'Signature did not validate, got errorcode ' . $this->auth->errorCode);
- $this->assertEquals($accessKey,$this->auth->getAccessKey());
-
- }
-
- public function test401() {
-
- $this->auth->requireLogin();
- $test = preg_match('/^AWS$/',$this->response->headers['WWW-Authenticate'],$matches);
- $this->assertTrue($test==true,'The WWW-Authenticate response didn\'t match our pattern');
-
- }
-
- /**
- * Generates an HMAC-SHA1 signature
- *
- * @param string $key
- * @param string $message
- * @return string
- */
- private function hmacsha1($key, $message) {
-
- $blocksize=64;
- if (strlen($key)>$blocksize)
- $key=pack('H*', sha1($key));
- $key=str_pad($key,$blocksize,chr(0x00));
- $ipad=str_repeat(chr(0x36),$blocksize);
- $opad=str_repeat(chr(0x5c),$blocksize);
- $hmac = pack('H*',sha1(($key^$opad).pack('H*',sha1(($key^$ipad).$message))));
- return $hmac;
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/HTTP/BasicAuthTest.php b/vendor/sabre/dav/tests/Sabre/HTTP/BasicAuthTest.php
deleted file mode 100644
index 77c5c7179..000000000
--- a/vendor/sabre/dav/tests/Sabre/HTTP/BasicAuthTest.php
+++ /dev/null
@@ -1,132 +0,0 @@
-<?php
-
-namespace Sabre\HTTP;
-
-require_once 'Sabre/HTTP/ResponseMock.php';
-
-class BasicAuthTest extends \PHPUnit_Framework_TestCase {
-
- /**
- * @var Sabre\HTTP\ResponseMock
- */
- private $response;
- /**
- * @var Sabre\HTTP\BasicAuth
- */
- private $basicAuth;
-
- function setUp() {
-
- $this->response = new ResponseMock();
- $this->basicAuth = new BasicAuth();
- $this->basicAuth->setHTTPResponse($this->response);
-
- }
-
- function testGetUserPassApache() {
-
- $server = array(
- 'PHP_AUTH_USER' => 'admin',
- 'PHP_AUTH_PW' => '1234',
- );
-
- $request = new Request($server);
- $this->basicAuth->setHTTPRequest($request);
-
- $userPass = $this->basicAuth->getUserPass();
-
- $this->assertEquals(
- array('admin','1234'),
- $userPass,
- 'We did not get the username and password we expected'
- );
-
- }
-
- function testGetUserPassIIS() {
-
- $server = array(
- 'HTTP_AUTHORIZATION' => 'Basic ' . base64_encode('admin:1234'),
- );
-
- $request = new Request($server);
- $this->basicAuth->setHTTPRequest($request);
-
- $userPass = $this->basicAuth->getUserPass();
-
- $this->assertEquals(
- array('admin','1234'),
- $userPass,
- 'We did not get the username and password we expected'
- );
-
- }
-
- function testGetUserPassWithColon() {
-
- $server = array(
- 'HTTP_AUTHORIZATION' => 'Basic ' . base64_encode('admin:1234:5678'),
- );
-
- $request = new Request($server);
- $this->basicAuth->setHTTPRequest($request);
-
- $userPass = $this->basicAuth->getUserPass();
-
- $this->assertEquals(
- array('admin','1234:5678'),
- $userPass,
- 'We did not get the username and password we expected'
- );
-
- }
-
- function testGetUserPassApacheEdgeCase() {
-
- $server = array(
- 'REDIRECT_HTTP_AUTHORIZATION' => 'Basic ' . base64_encode('admin:1234'),
- );
-
- $request = new Request($server);
- $this->basicAuth->setHTTPRequest($request);
-
- $userPass = $this->basicAuth->getUserPass();
-
- $this->assertEquals(
- array('admin','1234'),
- $userPass,
- 'We did not get the username and password we expected'
- );
-
- }
-
- function testGetUserPassNothing() {
-
- $this->assertEquals(
- false,
- $this->basicAuth->getUserPass()
- );
-
- }
-
- function testRequireLogin() {
-
- $this->basicAuth->requireLogin();
- $this->assertEquals('SabreDAV',$this->basicAuth->getRealm());
- $this->assertEquals(
- 'HTTP/1.1 401 Unauthorized',
- $this->response->status,
- 'We expected a 401 status to be set'
- );
-
- $this->assertEquals(
- 'Basic realm="SabreDAV"',
- $this->response->headers['WWW-Authenticate'],
- 'The WWW-Autenticate header was not set!'
- );
-
-
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/HTTP/DigestAuthTest.php b/vendor/sabre/dav/tests/Sabre/HTTP/DigestAuthTest.php
deleted file mode 100644
index 576a00d4a..000000000
--- a/vendor/sabre/dav/tests/Sabre/HTTP/DigestAuthTest.php
+++ /dev/null
@@ -1,228 +0,0 @@
-<?php
-
-namespace Sabre\HTTP;
-
-require_once 'Sabre/HTTP/ResponseMock.php';
-
-class DigestAuthTest extends \PHPUnit_Framework_TestCase {
-
- /**
- * @var Sabre\HTTP\ResponseMock
- */
- private $response;
- /**
- * @var Sabre\HTTP\DigestAuth
- */
- private $auth;
-
- const REALM = 'SabreDAV unittest';
-
- public function setUp() {
-
- $this->response = new ResponseMock();
- $this->auth = new DigestAuth();
- $this->auth->setRealm(self::REALM);
- $this->auth->setHTTPResponse($this->response);
-
- }
-
- public function testDigest() {
-
- list($nonce,$opaque) = $this->getServerTokens();
-
- $username = 'admin';
- $password = 12345;
- $nc = '00002';
- $cnonce = uniqid();
-
- $digestHash = md5(
- md5($username . ':' . self::REALM . ':' . $password) . ':' .
- $nonce . ':' .
- $nc . ':' .
- $cnonce . ':' .
- 'auth:' .
- md5('GET' . ':' . '/')
- );
-
- $request = new Request(array(
- 'REQUEST_METHOD' => 'GET',
- 'PHP_AUTH_DIGEST' => 'username="'.$username.'", realm="' . self::REALM . '", nonce="' . $nonce . '", uri="/", response="' . $digestHash . '", opaque="' . $opaque . '", qop=auth,nc='.$nc.',cnonce="' . $cnonce . '"',
- ));
-
- $this->auth->setHTTPRequest($request);
- $this->auth->init();
-
- $this->assertEquals($username,$this->auth->getUserName());
- $this->assertEquals(self::REALM,$this->auth->getRealm());
- $this->assertTrue($this->auth->validateA1(md5($username . ':' . self::REALM . ':' . $password)),'Authentication is deemed invalid through validateA1');
- $this->assertTrue($this->auth->validatePassword($password),'Authentication is deemed invalid through validatePassword');
-
- }
-
- public function testDigestCGIFormat() {
-
- list($nonce,$opaque) = $this->getServerTokens();
-
- $username = 'admin';
- $password = 12345;
- $nc = '00002';
- $cnonce = uniqid();
-
- $digestHash = md5(
- md5($username . ':' . self::REALM . ':' . $password) . ':' .
- $nonce . ':' .
- $nc . ':' .
- $cnonce . ':' .
- 'auth:' .
- md5('GET' . ':' . '/')
- );
-
- $request = new Request(array(
- 'REQUEST_METHOD' => 'GET',
- 'HTTP_AUTHORIZATION' => 'Digest username="'.$username.'", realm="' . self::REALM . '", nonce="' . $nonce . '", uri="/", response="' . $digestHash . '", opaque="' . $opaque . '", qop=auth,nc='.$nc.',cnonce="' . $cnonce . '"',
- ));
-
- $this->auth->setHTTPRequest($request);
- $this->auth->init();
-
- $this->assertTrue($this->auth->validateA1(md5($username . ':' . self::REALM . ':' . $password)),'Authentication is deemed invalid through validateA1');
- $this->assertTrue($this->auth->validatePassword($password),'Authentication is deemed invalid through validatePassword');
-
- }
-
- public function testDigestApacheEdgeCase() {
-
- list($nonce,$opaque) = $this->getServerTokens();
-
- $username = 'admin';
- $password = 12345;
- $nc = '00002';
- $cnonce = uniqid();
-
- $digestHash = md5(
- md5($username . ':' . self::REALM . ':' . $password) . ':' .
- $nonce . ':' .
- $nc . ':' .
- $cnonce . ':' .
- 'auth:' .
- md5('GET' . ':' . '/')
- );
-
- $request = new Request(array(
- 'REQUEST_METHOD' => 'GET',
- 'REDIRECT_HTTP_AUTHORIZATION' => 'Digest username="'.$username.'", realm="' . self::REALM . '", nonce="' . $nonce . '", uri="/", response="' . $digestHash . '", opaque="' . $opaque . '", qop=auth,nc='.$nc.',cnonce="' . $cnonce . '"',
- ));
-
- $this->auth->setHTTPRequest($request);
- $this->auth->init();
-
- $this->assertTrue($this->auth->validateA1(md5($username . ':' . self::REALM . ':' . $password)),'Authentication is deemed invalid through validateA1');
- $this->assertTrue($this->auth->validatePassword($password),'Authentication is deemed invalid through validatePassword');
-
- }
-
- public function testInvalidDigest() {
-
- list($nonce,$opaque) = $this->getServerTokens();
-
- $username = 'admin';
- $password = 12345;
- $nc = '00002';
- $cnonce = uniqid();
-
- $digestHash = md5(
- md5($username . ':' . self::REALM . ':' . $password) . ':' .
- $nonce . ':' .
- $nc . ':' .
- $cnonce . ':' .
- 'auth:' .
- md5('GET' . ':' . '/')
- );
-
- $request = new Request(array(
- 'REQUEST_METHOD' => 'GET',
- 'PHP_AUTH_DIGEST' => 'username="'.$username.'", realm="' . self::REALM . '", nonce="' . $nonce . '", uri="/", response="' . $digestHash . '", opaque="' . $opaque . '", qop=auth,nc='.$nc.',cnonce="' . $cnonce . '"',
- ));
-
- $this->auth->setHTTPRequest($request);
- $this->auth->init();
-
- $this->assertFalse($this->auth->validateA1(md5($username . ':' . self::REALM . ':' . ($password . 'randomness'))),'Authentication is deemed invalid through validateA1');
-
- }
-
- public function testInvalidDigest2() {
-
- $request = new Request(array(
- 'REQUEST_METHOD' => 'GET',
- 'HTTP_AUTHORIZATION' => 'basic blablabla',
- ));
-
- $this->auth->setHTTPRequest($request);
- $this->auth->init();
-
- $this->assertFalse($this->auth->validateA1(md5('user:realm:password')));
-
- }
-
-
- public function testDigestAuthInt() {
-
- $this->auth->setQOP(DigestAuth::QOP_AUTHINT | DigestAuth::QOP_AUTH);
- list($nonce,$opaque) = $this->getServerTokens(DigestAuth::QOP_AUTHINT| DigestAuth::QOP_AUTH);
-
- $username = 'admin';
- $password = 12345;
- $nc = '00003';
- $cnonce = uniqid();
-
- $digestHash = md5(
- md5($username . ':' . self::REALM . ':' . $password) . ':' .
- $nonce . ':' .
- $nc . ':' .
- $cnonce . ':' .
- 'auth-int:' .
- md5('POST' . ':' . '/' . ':' . md5('body'))
- );
-
- $request = new Request(array(
- 'REQUEST_METHOD' => 'POST',
- 'PHP_AUTH_DIGEST' => 'username="'.$username.'", realm="' . self::REALM . '", nonce="' . $nonce . '", uri="/", response="' . $digestHash . '", opaque="' . $opaque . '", qop=auth-int,nc='.$nc.',cnonce="' . $cnonce . '"',
- ));
- $request->setBody('body');
-
- $this->auth->setHTTPRequest($request);
-
- $this->auth->init();
-
- $this->assertTrue($this->auth->validateA1(md5($username . ':' . self::REALM . ':' . $password)),'Authentication is deemed invalid through validateA1');
-
- }
-
- private function getServerTokens($qop = DigestAuth::QOP_AUTH) {
-
- $this->auth->requireLogin();
-
- switch($qop) {
- case DigestAuth::QOP_AUTH : $qopstr='auth'; break;
- case DigestAuth::QOP_AUTHINT : $qopstr='auth-int'; break;
- default : $qopstr='auth,auth-int'; break;
- }
-
- $test = preg_match('/Digest realm="'.self::REALM.'",qop="'.$qopstr.'",nonce="([0-9a-f]*)",opaque="([0-9a-f]*)"/',
- $this->response->headers['WWW-Authenticate'],$matches);
-
- $this->assertTrue($test==true,'The WWW-Authenticate response didn\'t match our pattern. We received: ' . $this->response->headers['WWW-Authenticate']);
-
- $nonce = $matches[1];
- $opaque = $matches[2];
-
- // Reset our environment
- $this->setUp();
- $this->auth->setQOP($qop);
-
- return array($nonce,$opaque);
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/HTTP/RequestTest.php b/vendor/sabre/dav/tests/Sabre/HTTP/RequestTest.php
deleted file mode 100644
index c52ce351d..000000000
--- a/vendor/sabre/dav/tests/Sabre/HTTP/RequestTest.php
+++ /dev/null
@@ -1,150 +0,0 @@
-<?php
-
-namespace Sabre\HTTP;
-
-/**
- * @covers Sabre\HTTP\Request
- */
-class RequestTest extends \PHPUnit_Framework_TestCase {
-
- /**
- * @var Sabre\HTTP\Request
- */
- private $request;
-
- function setUp() {
-
- $server = array(
- 'HTTP_HOST' => 'www.example.org',
- 'REQUEST_METHOD' => 'PUT',
- 'REQUEST_URI' => '/testuri/',
- 'CONTENT_TYPE' => 'text/xml',
- );
-
- $this->request = new Request($server);
-
- }
-
- function testGetHeader() {
-
- $this->assertEquals('www.example.org', $this->request->getHeader('Host'));
- $this->assertEquals('text/xml', $this->request->getHeader('Content-Type'));
-
- }
-
- function testGetNonExistantHeader() {
-
- $this->assertNull($this->request->getHeader('doesntexist'));
- $this->assertNull($this->request->getHeader('Content-Length'));
-
- }
-
- function testGetHeaders() {
-
- $expected = array(
- 'host' => 'www.example.org',
- 'content-type' => 'text/xml',
- );
-
- $this->assertEquals($expected, $this->request->getHeaders());
-
- }
-
- function testGetMethod() {
-
- $this->assertEquals('PUT', $this->request->getMethod(), 'It seems as if we didn\'t get a valid HTTP Request method back');
-
- }
-
- function testGetUri() {
-
- $this->assertEquals('/testuri/', $this->request->getUri(), 'We got an invalid uri back');
-
- }
-
- function testSetGetBody() {
-
- $h = fopen('php://memory','r+');
- fwrite($h,'testing');
- rewind($h);
- $this->request->setBody($h);
- $this->assertEquals('testing',$this->request->getBody(true),'We didn\'t get our testbody back');
-
- }
-
- function testSetGetBodyStream() {
-
- $h = fopen('php://memory','r+');
- fwrite($h,'testing');
- rewind($h);
- $this->request->setBody($h);
- $this->assertEquals('testing',stream_get_contents($this->request->getBody()),'We didn\'t get our testbody back');
-
- }
-
-
- function testDefaultInputStream() {
-
- $h = fopen('php://memory','r+');
- fwrite($h,'testing');
- rewind($h);
-
- $previousValue = Request::$defaultInputStream;
- Request::$defaultInputStream = $h;
-
- $this->assertEquals('testing',$this->request->getBody(true),'We didn\'t get our testbody back');
- Request::$defaultInputStream = $previousValue;
-
- }
-
- function testGetAbsoluteUri() {
-
- $s = array(
- 'HTTP_HOST' => 'sabredav.org',
- 'REQUEST_URI' => '/foo'
- );
-
- $r = new Request($s);
-
- $this->assertEquals('http://sabredav.org/foo', $r->getAbsoluteUri());
-
- $s = array(
- 'HTTP_HOST' => 'sabredav.org',
- 'REQUEST_URI' => '/foo',
- 'HTTPS' => 'on',
- );
-
- $r = new Request($s);
-
- $this->assertEquals('https://sabredav.org/foo', $r->getAbsoluteUri());
-
- }
-
- function testGetQueryString() {
-
- $s = array(
- 'QUERY_STRING' => 'bla',
- );
-
- $r = new Request($s);
- $this->assertEquals('bla', $r->getQueryString());
-
- $s = array();
-
- $r = new Request($s);
- $this->assertEquals('', $r->getQueryString());
-
- }
-
- function testGetPostVars() {
-
- $post = array(
- 'bla' => 'foo',
- );
- $r = new Request(array(),$post);
- $this->assertEquals($post, $r->getPostVars('bla'));
-
- }
-
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/HTTP/ResponseMock.php b/vendor/sabre/dav/tests/Sabre/HTTP/ResponseMock.php
index 16c034099..eb486bf5b 100644
--- a/vendor/sabre/dav/tests/Sabre/HTTP/ResponseMock.php
+++ b/vendor/sabre/dav/tests/Sabre/HTTP/ResponseMock.php
@@ -2,28 +2,21 @@
namespace Sabre\HTTP;
+/**
+ * HTTP Response Mock object
+ *
+ * This class exists to make the transition to sabre/http easier.
+ *
+ * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
+ * @author Evert Pot (http://evertpot.com/)
+ * @license http://sabre.io/license/ Modified BSD License
+ */
class ResponseMock extends Response {
- public $headers = array();
- public $status = '';
- public $body = '';
-
- function setHeader($name,$value,$overwrite = true) {
-
- $this->headers[$name] = $value;
-
- }
-
- function sendStatus($code) {
-
- $this->status = $this->getStatusMessage($code, $this->defaultHttpVersion);
-
- }
-
- function sendBody($body) {
-
- $this->body = $body;
-
- }
+ /**
+ * Making these public.
+ */
+ public $body;
+ public $status;
}
diff --git a/vendor/sabre/dav/tests/Sabre/HTTP/ResponseTest.php b/vendor/sabre/dav/tests/Sabre/HTTP/ResponseTest.php
deleted file mode 100644
index f5302c993..000000000
--- a/vendor/sabre/dav/tests/Sabre/HTTP/ResponseTest.php
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-
-namespace Sabre\HTTP;
-
-require_once 'Sabre/HTTP/ResponseMock.php';
-
-class ResponseTest extends \PHPUnit_Framework_TestCase {
-
- /**
- * @var Sabre\HTTP\ResponseMock
- */
- private $response;
-
- function setUp() {
-
- $this->response = new ResponseMock();
-
- }
-
- function testGetStatusMessage() {
-
- $msg = $this->response->getStatusMessage(200);
- $this->assertEquals('HTTP/1.1 200 OK',$msg);
-
- }
-
- function testSetHeader() {
-
- $this->response->setHeader('Content-Type','text/html');
- $this->assertEquals('text/html', $this->response->headers['Content-Type']);
-
-
- }
- function testSetHeaders() {
-
- $this->response->setHeaders(array('Content-Type'=>'text/html'));
- $this->assertEquals('text/html', $this->response->headers['Content-Type']);
-
-
- }
-
- function testSendStatus() {
-
- $this->response->sendStatus(404);
- $this->assertEquals('HTTP/1.1 404 Not Found', $this->response->status);
-
- }
-
- function testSendBody() {
-
- ob_start();
- $response = new Response();
- $response->sendBody('hello');
- $this->assertEquals('hello',ob_get_clean());
-
- }
-
- function testSendBodyStream() {
-
- ob_start();
- $stream = fopen('php://memory','r+');
- fwrite($stream,'hello');
- rewind($stream);
- $response = new Response();
- $response->sendBody($stream);
- $this->assertEquals('hello',ob_get_clean());
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/HTTP/UtilTest.php b/vendor/sabre/dav/tests/Sabre/HTTP/UtilTest.php
deleted file mode 100644
index 47a7b98bd..000000000
--- a/vendor/sabre/dav/tests/Sabre/HTTP/UtilTest.php
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-
-namespace Sabre\HTTP;
-
-class UtilTest extends \PHPUnit_Framework_TestCase {
-
- function testParseHTTPDate() {
-
- $times = array(
- 'Wed, 13 Oct 2010 10:26:00 GMT',
- 'Wednesday, 13-Oct-10 10:26:00 GMT',
- 'Wed Oct 13 10:26:00 2010',
- );
-
- $expected = 1286965560;
-
- foreach($times as $time) {
- $result = Util::parseHTTPDate($time);
- $this->assertEquals($expected, $result->format('U'));
- }
-
- $result = Util::parseHTTPDate('Wed Oct 6 10:26:00 2010');
- $this->assertEquals(1286360760, $result->format('U'));
-
- }
-
- function testParseHTTPDateFail() {
-
- $times = array(
- //random string
- 'NOW',
- // not-GMT timezone
- 'Wednesday, 13-Oct-10 10:26:00 UTC',
- // No space before the 6
- 'Wed Oct 6 10:26:00 2010',
- );
-
- foreach($times as $time) {
- $this->assertFalse(Util::parseHTTPDate($time), 'We used the string: ' . $time);
- }
-
- }
-
- function testTimezones() {
-
- $default = date_default_timezone_get();
- date_default_timezone_set('Europe/Amsterdam');
-
- $this->testParseHTTPDate();
-
- date_default_timezone_set($default);
-
- }
-
- function testToHTTPDate() {
-
- $dt = new \DateTime('2011-12-10 12:00:00 +0200');
-
- $this->assertEquals(
- 'Sat, 10 Dec 2011 10:00:00 GMT',
- Util::toHTTPDate($dt)
- );
-
- }
-
- function testStrtotimeFail() {
-
- // Strtotime may return -1 when the date cannot be parsed.
- // We are simulating this situation by testing a date that actually
- // results in -1. (because I have found no other way to break this
- // code)
-
- $time = 'Wed, 13 Oct 1960 10:26:00 GMT';
-
- $this->assertNull(Util::parseHTTPDate($time));
-
- }
-}
diff --git a/vendor/sabre/dav/tests/Sabre/HTTP/VersionTest.php b/vendor/sabre/dav/tests/Sabre/HTTP/VersionTest.php
deleted file mode 100644
index c7094b3bc..000000000
--- a/vendor/sabre/dav/tests/Sabre/HTTP/VersionTest.php
+++ /dev/null
@@ -1,17 +0,0 @@
-<?php
-
-namespace Sabre\HTTP;
-
-class VersionTest extends \PHPUnit_Framework_TestCase {
-
- function testString() {
-
- $v = Version::VERSION;
- $this->assertEquals(-1, version_compare('1.0.0',$v));
-
- $s = Version::STABILITY;
- $this->assertTrue($s == 'alpha' || $s == 'beta' || $s =='stable');
-
- }
-
-}
diff --git a/vendor/sabre/dav/tests/Sabre/TestUtil.php b/vendor/sabre/dav/tests/Sabre/TestUtil.php
index 5a9062498..20bce1ea0 100644
--- a/vendor/sabre/dav/tests/Sabre/TestUtil.php
+++ b/vendor/sabre/dav/tests/Sabre/TestUtil.php
@@ -47,5 +47,12 @@ class TestUtil {
}
+ static function getSQLiteDB() {
+
+ $pdo = new \PDO('sqlite:'.SABRE_TEMPDIR.'/pdobackend');
+ $pdo->setAttribute(\PDO::ATTR_ERRMODE,\PDO::ERRMODE_EXCEPTION);
+ return $pdo;
+
+ }
}
diff --git a/vendor/sabre/dav/tests/bootstrap.php b/vendor/sabre/dav/tests/bootstrap.php
index a6493ce6b..325ccd3c7 100644
--- a/vendor/sabre/dav/tests/bootstrap.php
+++ b/vendor/sabre/dav/tests/bootstrap.php
@@ -1,23 +1,36 @@
<?php
-define('SABRE_MYSQLDSN','mysql:host=127.0.0.1;dbname=sabredav');
-define('SABRE_MYSQLUSER','root');
-define('SABRE_MYSQLPASS','');
-
set_include_path(__DIR__ . '/../lib/' . PATH_SEPARATOR . __DIR__ . PATH_SEPARATOR . get_include_path());
-include __DIR__ . '/../vendor/autoload.php';
-include 'Sabre/TestUtil.php';
-include 'Sabre/DAVServerTest.php';
+$autoLoader = include __DIR__ . '/../vendor/autoload.php';
+
+// SabreDAV tests auto loading
+$autoLoader->add('Sabre\\', __DIR__);
+// VObject tests auto loading
+$autoLoader->addPsr4('Sabre\\VObject\\',__DIR__ . '/../vendor/sabre/vobject/tests/VObject');
+$autoLoader->addPsr4('Sabre\\Xml\\',__DIR__ . '/../vendor/sabre/xml/tests/Sabre/Xml');
date_default_timezone_set('UTC');
-define("SABRE_TEMPDIR",dirname(__FILE__) . '/temp/');
+$config = [
+ 'SABRE_TEMPDIR' => dirname(__FILE__) . '/temp/',
+ 'SABRE_HASSQLITE' => in_array('sqlite',PDO::getAvailableDrivers()),
+ 'SABRE_HASMYSQL' => in_array('mysql',PDO::getAvailableDrivers()),
+ 'SABRE_MYSQLDSN' => 'mysql:host=127.0.0.1;dbname=sabredav',
+ 'SABRE_MYSQLUSER' => 'root',
+ 'SABRE_MYSQLPASS' => '',
+];
+
+if (file_exists(__DIR__ . '/config.user.php')) {
+ include __DIR__ . '/config.user.php';
+ foreach($userConfig as $key=>$value) {
+ $config[$key] = $value;
+ }
+}
-// If sqlite is not available, this constant is used to skip the relevant
-// tests
-define('SABRE_HASSQLITE',in_array('sqlite',PDO::getAvailableDrivers()));
-define('SABRE_HASMYSQL', in_array('mysql',PDO::getAvailableDrivers()) && defined('SABRE_MYSQLDSN') && defined('SABRE_MYSQLUSER') && defined('SABRE_MYSQLPASS'));
+foreach($config as $key=>$value) {
+ if (!defined($key)) define($key, $value);
+}
if (!file_exists(SABRE_TEMPDIR)) mkdir(SABRE_TEMPDIR);
if (file_exists('.sabredav')) unlink('.sabredav');
diff --git a/vendor/sabre/dav/tests/phpunit.xml b/vendor/sabre/dav/tests/phpunit.xml
index e93933049..db475f12b 100644
--- a/vendor/sabre/dav/tests/phpunit.xml
+++ b/vendor/sabre/dav/tests/phpunit.xml
@@ -4,12 +4,35 @@
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
+ strict="true"
>
- <testsuite name="sabre-dav">
- <directory>Sabre/</directory>
+ <testsuite name="sabre-event">
+ <directory>../vendor/sabre/event/tests/</directory>
+ </testsuite>
+ <testsuite name="sabre-uri">
+ <directory>../vendor/sabre/uri/tests/</directory>
+ </testsuite>
+ <testsuite name="sabre-xml">
+ <directory>../vendor/sabre/xml/tests/Sabre/Xml/</directory>
+ </testsuite>
+ <testsuite name="sabre-http">
+ <directory>../vendor/sabre/http/tests/HTTP</directory>
</testsuite>
<testsuite name="sabre-vobject">
- <directory>../vendor/sabre/vobject/tests/Sabre/VObject</directory>
+ <directory>../vendor/sabre/vobject/tests/VObject</directory>
+ </testsuite>
+
+ <testsuite name="sabre-dav">
+ <directory>Sabre/DAV</directory>
+ </testsuite>
+ <testsuite name="sabre-davacl">
+ <directory>Sabre/DAVACL</directory>
+ </testsuite>
+ <testsuite name="sabre-caldav">
+ <directory>Sabre/CalDAV</directory>
+ </testsuite>
+ <testsuite name="sabre-carddav">
+ <directory>Sabre/CardDAV</directory>
</testsuite>
<filter>
@@ -17,11 +40,6 @@
<directory suffix=".php">../lib/</directory>
<exclude>
<file>../lib/Sabre/autoload.php</file>
- <file>../lib/Sabre/CalDAV/includes.php</file>
- <file>../lib/Sabre/CardDAV/includes.php</file>
- <file>../lib/Sabre/DAVACL/includes.php</file>
- <file>../lib/Sabre/HTTP/includes.php</file>
- <file>../lib/Sabre/DAV/includes.php</file>
<file>../lib/Sabre/VObject/includes.php</file>
</exclude>
</whitelist>