Skip to content
Snippets Groups Projects
Commit 3dbfbdaf authored by Robin Appelman's avatar Robin Appelman
Browse files

allow moving common test logic into traits

parent 67893ca8
No related branches found
No related tags found
No related merge requests found
......@@ -16,12 +16,10 @@ use OC\Files\View;
use OCP\IUser;
use Sabre\HTTP\Request;
use Test\TestCase;
use Test\Traits\UserTrait;
abstract class RequestTest extends TestCase {
/**
* @var \OC_User_Dummy
*/
protected $userBackend;
use UserTrait;
/**
* @var \OCP\Files\Config\IMountProvider[]
......@@ -65,8 +63,6 @@ abstract class RequestTest extends TestCase {
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,15 +74,10 @@ 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);
$this->createUser($name, $password);
\OC::$server->getMountProviderCollection()->registerProvider($this->getMountProvider($name, [
'/' . $name => new Temporary()
'/' . $name => '\OC\Files\Storage\Temporary'
]));
$this->loginAsUser($name);
return new View('/' . $name . '/files');
......
......@@ -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]);
}
}
}
/**
......
<?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);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment