Browse Source

allow moving common test logic into traits

tags/v8.2beta1
Robin Appelman 9 years ago
parent
commit
3dbfbdaf54

+ 4
- 13
tests/lib/connector/sabre/requesttest/requesttest.php View File

@@ -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
- 1
tests/lib/testcase.php View File

@@ -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]);
}
}
}

/**

+ 32
- 0
tests/lib/traits/usertrait.php View File

@@ -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);
}
}

Loading…
Cancel
Save