diff options
author | Olivier Paroz <github@oparoz.com> | 2015-08-14 04:50:17 +0300 |
---|---|---|
committer | Olivier Paroz <github@oparoz.com> | 2015-08-14 04:50:17 +0300 |
commit | 2adbe85bb6f5d8baf2d63aa74ba60699c0edd768 (patch) | |
tree | 03390ae0d92b1c7101a61a57ab0a6fa13550c079 /tests/integration | |
parent | b84508a0b687b91b623c6f81ea99e5fe40daa846 (diff) |
1st test module: DataSetup
Diffstat (limited to 'tests/integration')
-rw-r--r-- | tests/integration/GalleryIntegrationTest.php | 221 | ||||
-rw-r--r-- | tests/integration/environment/EnvironmentTest.php | 177 |
2 files changed, 143 insertions, 255 deletions
diff --git a/tests/integration/GalleryIntegrationTest.php b/tests/integration/GalleryIntegrationTest.php index 334001a0..c203b40a 100644 --- a/tests/integration/GalleryIntegrationTest.php +++ b/tests/integration/GalleryIntegrationTest.php @@ -12,15 +12,17 @@ namespace OCA\Gallery\Tests\Integration; +use \Helper\CoreTestCase; + use OCP\Share; -use OCP\Files\IRootFolder; +use OCP\Files\Node; use OCP\Files\Folder; use OCP\Files\File; use OCP\IServerContainer; use OCP\AppFramework\IAppContainer; -use OCA\Gallery\AppInfo\Application; +use OCA\Gallery\AppInfo\Application as Gallery; use OCA\Gallery\Environment\Environment; @@ -29,166 +31,113 @@ use OCA\Gallery\Environment\Environment; * * @package OCA\Gallery\Tests\Integration */ -abstract class GalleryIntegrationTest extends \Test\TestCase { +abstract class GalleryIntegrationTest extends \Codeception\TestCase\Test { - /** @var string */ - protected $appName = 'gallery'; + /** @var CoreTestCase */ + private $coreTestCase; /** @var IAppContainer */ protected $container; /** @var IServerContainer */ protected $server; + /** @var Folder|null */ + protected $userFolder; /** @var string */ - protected $userId = 'test'; + protected $userId; /** @var string */ - protected $userPassword = '1234'; + protected $sharerUserId; /** @var string */ - protected $sharerUserId = 'sharer'; + public $sharedFolderToken; /** @var string */ - protected $sharerPassword = '5678'; - /** @var IRootFolder */ - protected $rootFolder; - /** @var Folder|null */ - protected $userFolder; + public $sharedFileToken; + /** @var string */ + public $passwordForShares; + /** @var Folder */ + protected $sharedFolder; + /** @var string */ + protected $sharedFolderName; + /** @var File */ + protected $sharedFile; + /** @var string */ + protected $sharedFileName; /** @var Environment */ protected $environment; - - protected function setUp() { - parent::setUp(); - - $app = new Application(); - $this->container = $app->getContainer(); - $this->server = $this->container->getServer(); - $this->rootFolder = $this->server->getRootFolder(); - - /** - * Logging hooks are missing at the moment, so we need to disable encryption - * - * @link https://github.com/owncloud/core/issues/18085#issuecomment-128093797 - */ - $this->server->getConfig() - ->setAppValue('core', 'encryption_enabled', 'no'); - - // This is because the filesystem is not properly cleaned up sometimes - $this->server->getAppManager() - ->disableApp('files_trashbin'); - - } - - public function tearDown() { - $this->logout(); - - parent::tearDown(); + /** + * Injects objects we need + * + * @param CoreTestCase $coreTestCase + */ + protected function _inject(CoreTestCase $coreTestCase) { + $this->coreTestCase = $coreTestCase; } /** - * Sets up a logged in user - * - * We're using \OC::$server so that we can create a user BEFORE launching the app if need be + * Runs before each test (public method) * - * @param $user - * @param $password + * It's important to recreate the app for every test, as if the user had just logged in * - * @throws \Exception - * @throws \OC\User\LoginException + * @fixme Or just create the app once for each type of env and run all tests. For that to work, + * I think I would need to switch to Cepts */ - protected function setupUser($user, $password) { - $userManager = \OC::$server->getUserManager(); - - if ($userManager->userExists($user)) { - $userManager->get($user) - ->delete(); - } + protected function _before() { + $this->coreTestCase->setUp(); - $userManager->createUser($user, $password); + $app = new Gallery(); + $this->container = $app->getContainer(); + $this->server = $this->container->getServer(); - $this->loginAsUser($user); + $setupData = $this->getModule('\Helper\DataSetup'); + $this->userId = $setupData->userId; + $this->sharerUserId = $setupData->sharerUserId; + $this->sharedFolder = $setupData->sharedFolder; + $this->sharedFolderName = $this->sharedFolder->getName(); + $this->sharedFile = $setupData->sharedFile; + $this->sharedFileName = $this->sharedFile->getName(); + $this->sharedFolderToken = $setupData->sharedFolderToken; + $this->sharedFileToken = $setupData->sharedFileToken; + $this->passwordForShares = $setupData->passwordForShares; } - /** - * @param $userId - * - * @return Folder - */ - protected function setUserFolder($userId) { - $userFolder = $this->rootFolder->newFolder('/' . $userId); - $userFolder->newFolder('/files'); - - return $userFolder; + protected function _after() { + $this->coreTestCase->logoutUser(); + $this->coreTestCase->tearDown(); } /** - * @return mixed + * Creates an environment for a logged in user + * + * @return Environment */ protected function setUserBasedEnv() { - $this->setupUser($this->userId, $this->userPassword); - $this->createEnv($this->userId, $this->userPassword); - $environment = $this->instantiateEnvironment($this->userId); - + $this->coreTestCase->loginAsUser($this->userId); + $this->userFolder = $this->server->getUserFolder($this->userId); + $environment = $this->instantiateEnvironment(); $environment->setStandardEnv(); return $environment; } /** + * Creates an environment based on a token + * * @param string $token * - * @return mixed + * @return Environment */ protected function setTokenBasedEnv($token) { - $environment = $this->instantiateEnvironment(null); $linkItem = Share::getShareByToken($token, false); - + $environment = $this->instantiateEnvironment(); $environment->setTokenBasedEnv($linkItem); return $environment; } /** - * Creates a token for a file + * Instantiates the environment * - * @return array<bool|string|File> + * @return Environment */ - protected function prepareFileToken() { - $sharedFolder = $this->createEnv($this->sharerUserId, $this->sharerPassword); - - /** @type File $sharedFile */ - $sharedFile = $sharedFolder->get('file1'); - $sharedFile->putContent('foobar'); - - $fileInfo = $sharedFile->getFileInfo(); - - $token = $this->getToken('file', $fileInfo['fileid']); - - $this->logout(); - - return [$token, $sharedFile]; - } - - /** - * Creates a token for a folder - * - * @return array<bool|string|Folder> - */ - protected function prepareFolderToken() { - $sharedFolder = $this->createEnv($this->sharerUserId, $this->sharerPassword); - $fileInfo = $sharedFolder->getFileInfo(); - - $token = $this->getToken('folder', $fileInfo['fileid']); - - $this->logout(); - - return [$token, $sharedFolder]; - } - - /** - * @param $userId - * - * @return mixed - */ - private function instantiateEnvironment($userId) { - $this->userFolder = $this->server->getUserFolder($userId); - + private function instantiateEnvironment() { $this->container->registerService( 'UserId', function ($c) { return $this->userId; @@ -206,44 +155,4 @@ abstract class GalleryIntegrationTest extends \Test\TestCase { ); } - /** - * Creates a small folder/file hierarchy and returns the top folder - * - * @param string $userId - * @param string $userPassword - * - * @return Folder - */ - private function createEnv($userId, $userPassword) { - $this->setupUser($userId, $userPassword); - $userFolder = $this->server->getUserFolder($userId); - $user = $this->server->getUserManager() - ->get($userId); - $user->setDisplayName('UberTester (' . $userId . ')'); - - $folder1 = $userFolder->newFolder('folder1'); - $folder1->newFile('file1'); - $subFolder = $folder1->newFolder('folder1.1'); - $subFolder->newFile('file1.1'); - - return $folder1; - } - - /** - * @param $nodeType - * @param $nodeId - * - * @return bool|string - */ - private function getToken($nodeType, $nodeId) { - // We need to make sure sharing via link is enabled - $this->server->getConfig() - ->setAppValue('core', 'shareapi_allow_links', 'yes'); - - return Share::shareItem( - $nodeType, $nodeId, \OCP\Share::SHARE_TYPE_LINK, 'sh@red p@ssw0rd', - \OCP\Constants::PERMISSION_ALL - ); - } - } diff --git a/tests/integration/environment/EnvironmentTest.php b/tests/integration/environment/EnvironmentTest.php index ed19a1b3..9fab61eb 100644 --- a/tests/integration/environment/EnvironmentTest.php +++ b/tests/integration/environment/EnvironmentTest.php @@ -24,63 +24,45 @@ use OCA\Gallery\Tests\Integration\GalleryIntegrationTest; */ class EnvironmentTest extends GalleryIntegrationTest { - /*public function setUp() { - // Create user first - //$this->setupUser($this->userId, $this->userPassword); - - parent::setUp(); - }*/ - /** * Tests is setting up the environment using a normal user works */ public function testSetStandardEnv() { - $this->environment = $this->setUserBasedEnv(); + $this->setUserBasedEnv(); } /** - * Tests is setting up the environment using a token works + * Tests if setting up the environment using a token works */ public function testSetTokenBasedEnv() { - list($token) = $this->prepareFolderToken(); - $this->environment = $this->setTokenBasedEnv($token); + $this->setTokenBasedEnv($this->sharedFolderToken); } public function testGetResourceFromIdAsALoggedInUser() { - $this->environment = $this->setUserBasedEnv(); + $environment = $this->setUserBasedEnv(); - $testFolder = $this->userFolder->newFolder('deleteMe'); - $testFolderId = $testFolder->getId(); + $this->sharedFolderId = $this->sharedFolder->getId(); + $result = $environment->getResourceFromId($this->sharedFolderId); - $result = $this->environment->getResourceFromId($testFolderId); - $this->assertEquals($testFolder->getId(), $result->getId()); - - $testFolder->delete(); + $this->assertEquals($this->sharedFolder->getId(), $result->getId()); } public function testGetResourceFromIdAsATokenUser() { - list($token) = $this->prepareFolderToken(); - $this->environment = $this->setTokenBasedEnv($token); - - $sharedFolder = $this->rootFolder->get($this->sharerUserId . '/files/folder1'); - $sharedFolderId = $sharedFolder->getId(); + $environment = $this->setTokenBasedEnv($this->sharedFolderToken); - $result = $this->environment->getResourceFromId($sharedFolderId); - $this->assertEquals($sharedFolder->getId(), $result->getId()); + $this->sharedFolderId = $this->sharedFolder->getId(); + $result = $environment->getResourceFromId($this->sharedFolderId); - $sharedFolder->delete(); + $this->assertEquals($this->sharedFolder->getId(), $result->getId()); } public function testGetSharedNodeAsATokenUser() { - list($token) = $this->prepareFolderToken(); - $this->environment = $this->setTokenBasedEnv($token); + $environment = $this->setTokenBasedEnv($this->sharedFolderToken); - $sharedFolder = $this->rootFolder->get($this->sharerUserId . '/files/folder1'); - $sharedFolderId = $sharedFolder->getId(); + $this->sharedFolderId = $this->sharedFolder->getId(); + $result = $environment->getSharedNode(); - $result = $this->environment->getSharedNode(); - - $this->assertEquals($sharedFolderId, $result->getId()); + $this->assertEquals($this->sharedFolderId, $result->getId()); } /** @@ -89,163 +71,160 @@ class EnvironmentTest extends GalleryIntegrationTest { * @expects EnvironmentException */ public function testGetSharedNodeAsATokenUserWhenGivenFileToken() { - list($token) = $this->prepareFileToken(); - $this->environment = $this->setTokenBasedEnv($token); + $environment = $this->setTokenBasedEnv($this->sharedFileToken); - $this->environment->getSharedNode(); + $environment->getSharedNode(); } public function testGetVirtualRootFolderAsALoggedInUser() { - $this->environment = $this->setUserBasedEnv(); + /** @type Environment $environment */ + $environment = $this->setUserBasedEnv(); - $result = $this->environment->getVirtualRootFolder(); - /*$userFolderId = $this->server->getUserFolder($this->userId) - ->getId();*/ $userFolderId = $this->userFolder->getId(); + $result = $environment->getVirtualRootFolder(); $this->assertEquals($userFolderId, $result->getId()); } public function testGetVirtualRootFolderAsATokenUser() { - list($token) = $this->prepareFolderToken(); - $this->environment = $this->setTokenBasedEnv($token); + $environment = $this->setTokenBasedEnv($this->sharedFolderToken); - $result = $this->environment->getVirtualRootFolder(); - $userFolderId = $this->server->getUserFolder($this->sharerUserId); - $sharedFolder = $userFolderId->get('folder1') - ->getId(); + $result = $environment->getVirtualRootFolder(); - $this->assertEquals($sharedFolder, $result->getId()); + $this->assertEquals($this->sharedFolder->getId(), $result->getId()); } public function testGetUserIdAsALoggedInUser() { - $this->environment = $this->setUserBasedEnv(); + $environment = $this->setUserBasedEnv(); - $result = $this->environment->getUserId(); + $result = $environment->getUserId(); $this->assertEquals($this->userId, $result); } public function testGetUserIdAsATokenUser() { - list($token) = $this->prepareFolderToken(); - $this->environment = $this->setTokenBasedEnv($token); + $environment = $this->setTokenBasedEnv($this->sharedFolderToken); - $result = $this->environment->getUserId(); + $result = $environment->getUserId(); $this->assertEquals($this->sharerUserId, $result); } public function testGetSharedFolderNameAsATokenUser() { - list($token, $sharedFolder) = $this->prepareFolderToken(); - $this->environment = $this->setTokenBasedEnv($token); + $environment = $this->setTokenBasedEnv($this->sharedFolderToken); - $result = $this->environment->getSharedFolderName(); - $this->assertEquals($sharedFolder->getName(), $result); + $result = $environment->getSharedFolderName(); + $this->assertEquals($this->sharedFolder->getName(), $result); } public function testGetSharePasswordAsATokenUser() { - /** @type Node $sharedFolder */ - list($token) = $this->prepareFolderToken(); - $this->environment = $this->setTokenBasedEnv($token); + $environment = $this->setTokenBasedEnv($this->sharedFolderToken); - $result = $this->environment->getSharePassword(); + $result = $environment->getSharePassword(); // The password is defined in the bootstrap $this->assertTrue( $this->server->getHasher() - ->verify('sh@red p@ssw0rd', $result) + ->verify($this->passwordForShares, $result) ); } + /** + * You can pick any folder from $dataSetup->fileHierarchy + */ public function testGetPathFromVirtualRootAsALoggedInUser() { - $this->environment = $this->setUserBasedEnv(); + $environment = $this->setUserBasedEnv(); $result = - $this->environment->getPathFromVirtualRoot( - $this->userFolder->get('folder1/folder1.1/file1.1') + $environment->getPathFromVirtualRoot( + $this->userFolder->get($this->sharedFolderName . '/folder1.1/testimage.gif') ); - $this->assertEquals('folder1/folder1.1/file1.1', $result); + $this->assertEquals($this->sharedFolderName . '/folder1.1/testimage.gif', $result); } public function testGetPathFromVirtualRootAsATokenUser() { - /** @type Folder $sharedFolder */ - list($token, $sharedFolder) = $this->prepareFolderToken(); - $this->environment = $this->setTokenBasedEnv($token); + $environment = $this->setTokenBasedEnv($this->sharedFolderToken); $result = - $this->environment->getPathFromVirtualRoot($sharedFolder->get('folder1.1/file1.1')); + $environment->getPathFromVirtualRoot( + $this->sharedFolder->get('folder1.1/testimage.gif') + ); - $this->assertEquals('folder1.1/file1.1', $result); + $this->assertEquals('folder1.1/testimage.gif', $result); } public function testGetPathFromUserFolderAsALoggedInUser() { - $this->environment = $this->setUserBasedEnv(); + $environment = $this->setUserBasedEnv(); $result = - $this->environment->getPathFromUserFolder( - $this->userFolder->get('folder1/folder1.1/file1.1') + $environment->getPathFromUserFolder( + $this->userFolder->get($this->sharedFolderName . '/folder1.1/testimage.gif') ); - $this->assertEquals('folder1/folder1.1/file1.1', $result); + $this->assertEquals($this->sharedFolderName . '/folder1.1/testimage.gif', $result); } public function testGetPathFromUserFolderAsATokenUser() { - /** @type Folder $sharedFolder */ - list($token, $sharedFolder) = $this->prepareFolderToken(); - $this->environment = $this->setTokenBasedEnv($token); + $environment = $this->setTokenBasedEnv($this->sharedFolderToken); $result = - $this->environment->getPathFromUserFolder($sharedFolder->get('folder1.1/file1.1')); + $environment->getPathFromUserFolder( + $this->sharedFolder->get('folder1.1/testimage.gif') + ); - $this->assertEquals('folder1/folder1.1/file1.1', $result); + $this->assertEquals($this->sharedFolderName . '/folder1.1/testimage.gif', $result); } public function testGetDisplayNameAsATokenUser() { - list($token) = $this->prepareFolderToken(); - $this->environment = $this->setTokenBasedEnv($token); + $environment = $this->setTokenBasedEnv($this->sharedFolderToken); - $result = $this->environment->getDisplayName(); + $result = $environment->getDisplayName(); - $this->assertEquals('UberTester (' . $this->sharerUserId . ')', $result); + $this->assertEquals('Gallery Tester (' . $this->sharerUserId . ')', $result); } public function testGetNodeFromVirtualRootAsALoggedInUser() { - $this->environment = $this->setUserBasedEnv(); - $result = $this->environment->getNodeFromVirtualRoot('folder1/folder1.1/file1.1'); + $environment = $this->setUserBasedEnv(); + $result = + $environment->getNodeFromVirtualRoot( + $this->sharedFolderName . '/folder1.1/testimage.gif' + ); - $file = $this->userFolder->get('folder1/folder1.1/file1.1'); + $file = $this->userFolder->get($this->sharedFolderName . '/folder1.1/testimage.gif'); $this->assertEquals($file, $result); } public function testGetNodeFromVirtualRootAsATokenUser() { - /** @type Folder $sharedFolder */ - list($token, $sharedFolder) = $this->prepareFolderToken(); - $this->environment = $this->setTokenBasedEnv($token); + $environment = $this->setTokenBasedEnv($this->sharedFolderToken); - $result = $this->environment->getNodeFromVirtualRoot('folder1.1/file1.1'); + $result = $environment->getNodeFromVirtualRoot('folder1.1/testimage.gif'); - $file = $sharedFolder->get('folder1.1/file1.1'); + $file = $this->sharedFolder->get('folder1.1/testimage.gif'); $this->assertEquals($file, $result); } public function testGetNodeFromUserFolderAsALoggedInUser() { - $this->environment = $this->setUserBasedEnv(); - $result = $this->environment->getNodeFromUserFolder('folder1/folder1.1/file1.1'); + $environment = $this->setUserBasedEnv(); + $result = + $environment->getNodeFromUserFolder( + $this->sharedFolderName . '/folder1.1/testimage.gif' + ); - $file = $this->userFolder->get('folder1/folder1.1/file1.1'); + $file = $this->userFolder->get($this->sharedFolderName . '/folder1.1/testimage.gif'); $this->assertEquals($file, $result); } public function testGetNodeFromUserFolderAsATokenUser() { - /** @type Folder $sharedFolder */ - list($token, $sharedFolder) = $this->prepareFolderToken(); - $this->environment = $this->setTokenBasedEnv($token); + $environment = $this->setTokenBasedEnv($this->sharedFolderToken); - $result = $this->environment->getNodeFromUserFolder('folder1/folder1.1/file1.1'); + $result = + $environment->getNodeFromUserFolder( + $this->sharedFolderName . '/folder1.1/testimage.gif' + ); - $file = $sharedFolder->get('folder1.1/file1.1'); + $file = $this->sharedFolder->get('folder1.1/testimage.gif'); $this->assertEquals($file, $result); } |