Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/gallery.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Paroz <github@oparoz.com>2015-08-14 04:50:17 +0300
committerOlivier Paroz <github@oparoz.com>2015-08-14 04:50:17 +0300
commit2adbe85bb6f5d8baf2d63aa74ba60699c0edd768 (patch)
tree03390ae0d92b1c7101a61a57ab0a6fa13550c079 /tests/integration
parentb84508a0b687b91b623c6f81ea99e5fe40daa846 (diff)
1st test module: DataSetup
Diffstat (limited to 'tests/integration')
-rw-r--r--tests/integration/GalleryIntegrationTest.php221
-rw-r--r--tests/integration/environment/EnvironmentTest.php177
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);
}