165 lines
3.8 KiB
PHP
165 lines
3.8 KiB
PHP
<?php
|
|
/**
|
|
* Nextcloud - Gallery
|
|
*
|
|
*
|
|
* This file is licensed under the Affero General Public License version 3 or
|
|
* later. See the COPYING file.
|
|
*
|
|
* @author Olivier Paroz <galleryapps@oparoz.com>
|
|
*
|
|
* @copyright Olivier Paroz 2017
|
|
*/
|
|
|
|
namespace OCA\Gallery\Tests\Integration;
|
|
|
|
use Helper\CoreTestCase;
|
|
|
|
use OC\Share20\Manager;
|
|
|
|
use OCP\Share;
|
|
use OCP\Files\Node;
|
|
use OCP\Files\Folder;
|
|
use OCP\Files\File;
|
|
use OCP\IServerContainer;
|
|
|
|
use OCP\AppFramework\IAppContainer;
|
|
|
|
use OCA\Gallery\AppInfo\Application as Gallery;
|
|
use OCA\Gallery\Environment\Environment;
|
|
|
|
|
|
/**
|
|
* Class GalleryIntegrationTest
|
|
*
|
|
* @package OCA\Gallery\Tests\Integration
|
|
*/
|
|
abstract class GalleryIntegrationTest extends \Codeception\TestCase\Test {
|
|
|
|
/** @var CoreTestCase */
|
|
private $coreTestCase;
|
|
/** @var IAppContainer */
|
|
protected $container;
|
|
/** @var IServerContainer */
|
|
protected $server;
|
|
/** @var Manager */
|
|
protected $shareManager;
|
|
/** @var Folder|null */
|
|
protected $userFolder;
|
|
/** @var string */
|
|
protected $userId;
|
|
/** @var string */
|
|
protected $sharerUserId;
|
|
/** @var string */
|
|
public $sharedFolderToken;
|
|
/** @var string */
|
|
public $sharedFileToken;
|
|
/** @var string */
|
|
public $passwordForFolderShare;
|
|
/** @var Folder */
|
|
protected $sharedFolder;
|
|
/** @var string */
|
|
protected $sharedFolderName;
|
|
/** @var File */
|
|
protected $sharedFile;
|
|
/** @var string */
|
|
protected $sharedFileName;
|
|
/** @var Environment */
|
|
protected $environment;
|
|
|
|
/**
|
|
* Injects objects we need
|
|
*
|
|
* @param CoreTestCase $coreTestCase
|
|
*/
|
|
protected function _inject(CoreTestCase $coreTestCase) {
|
|
$this->coreTestCase = $coreTestCase;
|
|
}
|
|
|
|
/**
|
|
* Runs before each test (public method)
|
|
*
|
|
* It's important to recreate the app for every test, as if the user had just logged in
|
|
*
|
|
* @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 _before() {
|
|
$this->coreTestCase->setUp();
|
|
|
|
$app = new Gallery();
|
|
$this->container = $app->getContainer();
|
|
$this->server = $this->container->getServer();
|
|
$this->shareManager = $this->server->getShareManager();
|
|
|
|
$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->passwordForFolderShare = $setupData->passwordForFolderShare;
|
|
}
|
|
|
|
protected function _after() {
|
|
$this->coreTestCase->logoutUser();
|
|
$this->coreTestCase->tearDown();
|
|
}
|
|
|
|
/**
|
|
* Creates an environment for a logged in user
|
|
*
|
|
* @return Environment
|
|
*/
|
|
protected function setUserBasedEnv() {
|
|
$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 Environment
|
|
*/
|
|
protected function setTokenBasedEnv($token) {
|
|
$share = $this->shareManager->getShareByToken($token);
|
|
$environment = $this->instantiateEnvironment();
|
|
$environment->setTokenBasedEnv($share);
|
|
|
|
return $environment;
|
|
}
|
|
|
|
/**
|
|
* Instantiates the environment
|
|
*
|
|
* @return Environment
|
|
*/
|
|
private function instantiateEnvironment() {
|
|
$this->container->registerService(
|
|
'UserId', function ($c) {
|
|
return $this->userId;
|
|
}
|
|
);
|
|
|
|
$this->container->registerService(
|
|
'userFolder', function ($c) {
|
|
return $this->userFolder;
|
|
}
|
|
);
|
|
|
|
return $this->container->query(
|
|
'OCA\Gallery\Environment\Environment'
|
|
);
|
|
}
|
|
|
|
}
|