diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/lib/connector/sabre/requesttest/requesttest.php | 50 | ||||
-rw-r--r-- | tests/lib/testcase.php | 33 | ||||
-rw-r--r-- | tests/lib/traits/mountprovidertrait.php | 56 | ||||
-rw-r--r-- | tests/lib/traits/usertrait.php | 32 |
4 files changed, 127 insertions, 44 deletions
diff --git a/tests/lib/connector/sabre/requesttest/requesttest.php b/tests/lib/connector/sabre/requesttest/requesttest.php index c7739aefcd7..7f33dcf817b 100644 --- a/tests/lib/connector/sabre/requesttest/requesttest.php +++ b/tests/lib/connector/sabre/requesttest/requesttest.php @@ -11,22 +11,18 @@ namespace Test\Connector\Sabre\RequestTest; use OC\Connector\Sabre\Server; use OC\Connector\Sabre\ServerFactory; use OC\Files\Mount\MountPoint; +use OC\Files\Storage\StorageFactory; use OC\Files\Storage\Temporary; use OC\Files\View; use OCP\IUser; use Sabre\HTTP\Request; use Test\TestCase; +use Test\Traits\MountProviderTrait; +use Test\Traits\UserTrait; abstract class RequestTest extends TestCase { - /** - * @var \OC_User_Dummy - */ - protected $userBackend; - - /** - * @var \OCP\Files\Config\IMountProvider[] - */ - protected $mountProviders; + use UserTrait; + use MountProviderTrait; /** * @var \OC\Connector\Sabre\ServerFactory @@ -40,33 +36,8 @@ abstract class RequestTest extends TestCase { return $stream; } - /** - * @param $userId - * @param $storages - * @return \OCP\Files\Config\IMountProvider - */ - protected function getMountProvider($userId, $storages) { - $mounts = []; - foreach ($storages as $mountPoint => $storage) { - $mounts[] = new MountPoint($storage, $mountPoint); - } - $provider = $this->getMock('\OCP\Files\Config\IMountProvider'); - $provider->expects($this->any()) - ->method('getMountsForUser') - ->will($this->returnCallback(function (IUser $user) use ($userId, $mounts) { - if ($user->getUID() === $userId) { - return $mounts; - } else { - return []; - } - })); - return $provider; - } - protected function setUp() { parent::setUp(); - $this->userBackend = new \OC_User_Dummy(); - \OC::$server->getUserManager()->registerBackend($this->userBackend); $this->serverFactory = new ServerFactory( \OC::$server->getConfig(), @@ -78,16 +49,9 @@ abstract class RequestTest extends TestCase { ); } - protected function tearDown() { - parent::tearDown(); - \OC::$server->getUserManager()->removeBackend($this->userBackend); - } - protected function setupUser($name, $password) { - $this->userBackend->createUser($name, $password); - \OC::$server->getMountProviderCollection()->registerProvider($this->getMountProvider($name, [ - '/' . $name => new Temporary() - ])); + $this->createUser($name, $password); + $this->registerMount($name, '\OC\Files\Storage\Temporary', '/' . $name); $this->loginAsUser($name); return new View('/' . $name . '/files'); } diff --git a/tests/lib/testcase.php b/tests/lib/testcase.php index fd0b8d5f2de..854d5f4f65b 100644 --- a/tests/lib/testcase.php +++ b/tests/lib/testcase.php @@ -32,21 +32,52 @@ abstract class TestCase extends \PHPUnit_Framework_TestCase { */ private $commandBus; + protected function getTestTraits() { + $traits = []; + $class = $this; + do { + $traits = array_merge(class_uses($class), $traits); + } while ($class = get_parent_class($class)); + foreach ($traits as $trait => $same) { + $traits = array_merge(class_uses($trait), $traits); + } + $traits = array_unique($traits); + return array_filter($traits, function ($trait) { + return substr($trait, 0, 5) === 'Test\\'; + }); + } + protected function setUp() { // overwrite the command bus with one we can run ourselves $this->commandBus = new QueueBus(); \OC::$server->registerService('AsyncCommandBus', function () { return $this->commandBus; }); + + $traits = $this->getTestTraits(); + foreach ($traits as $trait) { + $methodName = 'setUp' . basename(str_replace('\\', '/', $trait)); + if (method_exists($this, $methodName)) { + call_user_func([$this, $methodName]); + } + } } protected function tearDown() { $hookExceptions = \OC_Hook::$thrownExceptions; \OC_Hook::$thrownExceptions = []; \OC::$server->getLockingProvider()->releaseAll(); - if(!empty($hookExceptions)) { + if (!empty($hookExceptions)) { throw $hookExceptions[0]; } + + $traits = $this->getTestTraits(); + foreach ($traits as $trait) { + $methodName = 'tearDown' . basename(str_replace('\\', '/', $trait)); + if (method_exists($this, $methodName)) { + call_user_func([$this, $methodName]); + } + } } /** diff --git a/tests/lib/traits/mountprovidertrait.php b/tests/lib/traits/mountprovidertrait.php new file mode 100644 index 00000000000..66eca1597c8 --- /dev/null +++ b/tests/lib/traits/mountprovidertrait.php @@ -0,0 +1,56 @@ +<?php +/** + * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Traits; + +use OC\Files\Mount\MountPoint; +use OC\Files\Storage\StorageFactory; +use OCP\IUser; + +/** + * Allow setting mounts for users + */ +trait MountProviderTrait { + /** + * @var \OCP\Files\Config\IMountProvider + */ + protected $mountProvider; + + /** + * @var \OC\Files\Storage\StorageFactory + */ + protected $storageFactory; + + protected $mounts = []; + + protected function registerMount($userId, $storage, $mountPoint, $arguments = null) { + if (!isset($this->mounts[$userId])) { + $this->mounts[$userId] = []; + } + $this->mounts[$userId][] = new MountPoint($storage, $mountPoint, $arguments, $this->storageFactory); + } + + protected function registerStorageWrapper($name, $wrapper) { + $this->storageFactory->addStorageWrapper($name, $wrapper); + } + + protected function setUpMountProviderTrait() { + $this->storageFactory = new StorageFactory(); + $this->mountProvider = $this->getMock('\OCP\Files\Config\IMountProvider'); + $this->mountProvider->expects($this->any()) + ->method('getMountsForUser') + ->will($this->returnCallback(function (IUser $user) { + if (isset($this->mounts[$user->getUID()])) { + return $this->mounts[$user->getUID()]; + } else { + return []; + } + })); + \OC::$server->getMountProviderCollection()->registerProvider($this->mountProvider); + } +} diff --git a/tests/lib/traits/usertrait.php b/tests/lib/traits/usertrait.php new file mode 100644 index 00000000000..401d8b8a832 --- /dev/null +++ b/tests/lib/traits/usertrait.php @@ -0,0 +1,32 @@ +<?php +/** + * Copyright (c) 2015 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Traits; + +/** + * Allow creating users in a temporary backend + */ +trait UserTrait { + /** + * @var \OC_User_Dummy|\OCP\UserInterface + */ + protected $userBackend; + + protected function createUser($name, $password) { + $this->userBackend->createUser($name, $password); + } + + protected function setUpUserTrait() { + $this->userBackend = new \OC_User_Dummy(); + \OC::$server->getUserManager()->registerBackend($this->userBackend); + } + + protected function tearDownUserTrait() { + \OC::$server->getUserManager()->removeBackend($this->userBackend); + } +} |