diff options
author | Wave <wave72@users.noreply.github.com> | 2016-07-22 10:55:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-22 10:55:02 +0200 |
commit | 744ad84714fe0f7a3d90250a4ff02dc4327b9061 (patch) | |
tree | 595fb74ec9ea0bc7130d18bd7993d719a222d343 /vendor/sabre/dav/tests/Sabre/DAVServerTest.php | |
parent | c38c79d71c8ef70ef649f83e322f1984b75ee2dd (diff) | |
parent | 7d897a3f03bd57ed556433eb84a41963ba44e02e (diff) | |
download | volse-hubzilla-744ad84714fe0f7a3d90250a4ff02dc4327b9061.tar.gz volse-hubzilla-744ad84714fe0f7a3d90250a4ff02dc4327b9061.tar.bz2 volse-hubzilla-744ad84714fe0f7a3d90250a4ff02dc4327b9061.zip |
Merge pull request #6 from redmatrix/dev
Dev
Diffstat (limited to 'vendor/sabre/dav/tests/Sabre/DAVServerTest.php')
-rw-r--r-- | vendor/sabre/dav/tests/Sabre/DAVServerTest.php | 192 |
1 files changed, 157 insertions, 35 deletions
diff --git a/vendor/sabre/dav/tests/Sabre/DAVServerTest.php b/vendor/sabre/dav/tests/Sabre/DAVServerTest.php index 207687d90..35f240d23 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,36 @@ 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 $setupSharing = 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 +74,35 @@ 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; + + /** + * Sharing plugin. + * + * @var \Sabre\DAV\Sharing\Plugin + */ + protected $sharingPlugin; + + /* + * @var Sabre\DAV\PropertyStorage\Plugin + */ + protected $propertyStoragePlugin; + + /** * If this string is set, we will automatically log in the user with this * name. */ @@ -80,37 +110,69 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase { function setUp() { + $this->initializeEverything(); + + } + + function initializeEverything() { + $this->setUpBackends(); $this->setUpTree(); $this->server = new DAV\Server($this->tree); + $this->server->sapi = new HTTP\SapiMock(); $this->server->debugExceptions = true; if ($this->setupCalDAV) { $this->caldavPlugin = new CalDAV\Plugin(); $this->server->addPlugin($this->caldavPlugin); } + if ($this->setupCalDAVSharing || $this->setupSharing) { + $this->sharingPlugin = new DAV\Sharing\Plugin(); + $this->server->addPlugin($this->sharingPlugin); + } if ($this->setupCalDAVSharing) { $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); } + 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) { + $this->autoLogin($this->autoLogin); + } if ($this->setupACL) { $this->aclPlugin = new DAVACL\Plugin(); + if (!$this->autoLogin) { + $this->aclPlugin->allowUnauthenticatedAccess = false; + } + $this->aclPlugin->adminPrincipals = ['principals/admin']; $this->server->addPlugin($this->aclPlugin); } - if ($this->autoLogin) { - $authBackend = new DAV\Auth\Backend\Mock(); - $authBackend->defaultUser = $this->autoLogin; - $this->authPlugin = new DAV\Auth\Plugin($authBackend, 'SabreDAV'); - $this->server->addPlugin($this->authPlugin); - - // This will trigger the actual login procedure - $this->authPlugin->beforeMethod('OPTIONS','/'); - } } @@ -120,26 +182,61 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase { * You can either pass an instance of Sabre\HTTP\Request, or an array, * which will then be used as the _SERVER array. * + * If $expectedStatus is set, we'll compare it with the HTTP status of + * the returned response. If it doesn't match, we'll immediately fail + * the test. + * * @param array|\Sabre\HTTP\Request $request + * @param int $expectedStatus * @return \Sabre\HTTP\Response */ - function request($request) { + function request($request, $expectedStatus = null) { if (is_array($request)) { - $request = new HTTP\Request($request); + $request = HTTP\Request::createFromServerArray($request); } + $response = new HTTP\ResponseMock(); + $this->server->httpRequest = $request; - $this->server->httpResponse = new HTTP\ResponseMock(); + $this->server->httpResponse = $response; $this->server->exec(); + if ($expectedStatus) { + $responseBody = $expectedStatus !== $response->getStatus() ? $response->getBodyAsString() : ''; + $this->assertEquals($expectedStatus, $response->getStatus(), 'Incorrect HTTP status received for request. Response body: ' . $responseBody); + } return $this->server->httpResponse; } + /** + * This function takes a username and sets the server in a state where + * this user is logged in, and no longer requires an authentication check. + * + * @param string $userName + */ + function autoLogin($userName) { + $authBackend = new DAV\Auth\Backend\Mock(); + $authBackend->setPrincipal('principals/' . $userName); + $this->authPlugin = new DAV\Auth\Plugin($authBackend); + + // If the auth plugin already exists, we're removing its hooks: + if ($oldAuth = $this->server->getPlugin('auth')) { + $this->server->removeListener('beforeMethod', [$oldAuth, 'beforeMethod']); + } + $this->server->addPlugin($this->authPlugin); + + // This will trigger the actual login procedure + $this->authPlugin->beforeMethod(new Request(), new Response()); + } + + /** + * 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 ); @@ -151,33 +248,58 @@ abstract class DAVServerTest extends \PHPUnit_Framework_TestCase { ); } - if ($this->setupCardDAV || $this->setupCalDAV) { + if ($this->setupCalDAV) { + $this->tree[] = new CalDAV\Principal\Collection( + $this->principalBackend + ); + } elseif ($this->setupCardDAV || $this->setupACL) { $this->tree[] = new DAVACL\PrincipalCollection( $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); } - if ($this->setupCardDAV || $this->setupCalDAV) { + if ($this->setupCardDAV || $this->setupCalDAV || $this->setupACL) { $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(); + } } - function assertHTTPStatus($expectedStatus, HTTP\Request $req) { + 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); } |