Directly get from the server container

* Updated unit tests
This commit is contained in:
Roeland Jago Douma 2016-01-20 10:14:03 +01:00
parent 67f5216160
commit 18421e7e68
3 changed files with 75 additions and 65 deletions

View File

@ -48,14 +48,14 @@ class Application extends App {
$c->query('AppName'), $c->query('AppName'),
$c->query('Request'), $c->query('Request'),
$server->getConfig(), $server->getConfig(),
$c->query('URLGenerator'), $server->getURLGenerator(),
$c->query('UserManager'), $server->getUserManager(),
$server->getLogger(), $server->getLogger(),
$server->getActivityManager(), $server->getActivityManager(),
$c->query('ShareManager'), $server->getShareManager(),
$c->query('Session'), $server->getSession(),
$server->getPreviewManager(), $server->getPreviewManager(),
$c->query('RootFolder') $server->getRootFolder()
); );
}); });
$container->registerService('ExternalSharesController', function (SimpleContainer $c) { $container->registerService('ExternalSharesController', function (SimpleContainer $c) {
@ -70,24 +70,6 @@ class Application extends App {
/** /**
* Core class wrappers * Core class wrappers
*/ */
$container->registerService('RootFolder', function(SimpleContainer $c) use ($server) {
return $server->getRootFolder();
});
$container->registerService('Session', function(SimpleContainer $c) use ($server) {
return $server->getSession();
});
$container->registerService('ShareManager', function(SimpleContainer $c) use ($server) {
return $server->getShareManager();
});
$container->registerService('UserSession', function (SimpleContainer $c) use ($server) {
return $server->getUserSession();
});
$container->registerService('URLGenerator', function (SimpleContainer $c) use ($server) {
return $server->getUrlGenerator();
});
$container->registerService('UserManager', function (SimpleContainer $c) use ($server) {
return $server->getUserManager();
});
$container->registerService('HttpClientService', function (SimpleContainer $c) use ($server) { $container->registerService('HttpClientService', function (SimpleContainer $c) use ($server) {
return $server->getHTTPClientService(); return $server->getHTTPClientService();
}); });

View File

@ -91,6 +91,7 @@ class ShareController extends Controller {
* @param \OC\Share20\Manager $shareManager * @param \OC\Share20\Manager $shareManager
* @param ISession $session * @param ISession $session
* @param IPreview $previewManager * @param IPreview $previewManager
* @param IRootFolder $rootFolder
*/ */
public function __construct($appName, public function __construct($appName,
IRequest $request, IRequest $request,

View File

@ -31,15 +31,11 @@ namespace OCA\Files_Sharing\Controllers;
use OC\Files\Filesystem; use OC\Files\Filesystem;
use OC\Share20\Exception\ShareNotFound; use OC\Share20\Exception\ShareNotFound;
use OCA\Files_Sharing\AppInfo\Application;
use OCP\AppFramework\Http\NotFoundResponse; use OCP\AppFramework\Http\NotFoundResponse;
use OCP\AppFramework\IAppContainer;
use OCP\AppFramework\Http\RedirectResponse; use OCP\AppFramework\Http\RedirectResponse;
use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Http\TemplateResponse;
use OCP\ISession; use OCP\ISession;
use OCP\Security\ISecureRandom; use OCP\Security\ISecureRandom;
use OC\Files\View;
use OCP\Share;
use OCP\IURLGenerator; use OCP\IURLGenerator;
/** /**
@ -49,38 +45,49 @@ use OCP\IURLGenerator;
*/ */
class ShareControllerTest extends \Test\TestCase { class ShareControllerTest extends \Test\TestCase {
/** @var IAppContainer */
private $container;
/** @var string */ /** @var string */
private $user; private $user;
/** @var string */ /** @var string */
private $token;
/** @var string */
private $oldUser; private $oldUser;
/** @var string */
private $appName = 'files_sharing';
/** @var ShareController */ /** @var ShareController */
private $shareController; private $shareController;
/** @var IURLGenerator */ /** @var IURLGenerator | \PHPUnit_Framework_MockObject_MockObject */
private $urlGenerator; private $urlGenerator;
/** @var ISession | \PHPUnit_Framework_MockObject_MockObject */ /** @var ISession | \PHPUnit_Framework_MockObject_MockObject */
private $session; private $session;
/** @var \OCP\IPreview | \PHPUnit_Framework_MockObject_MockObject */
private $previewManager;
/** @var \OCP\IConfig | \PHPUnit_Framework_MockObject_MockObject */
private $config;
/** @var \OC\Share20\Manager | \PHPUnit_Framework_MockObject_MockObject */ /** @var \OC\Share20\Manager | \PHPUnit_Framework_MockObject_MockObject */
private $shareManager; private $shareManager;
protected function setUp() { protected function setUp() {
$app = new Application(); $this->appName = 'files_sharing';
$this->container = $app->getContainer();
$this->container['Config'] = $this->getMock('\OCP\IConfig'); $this->shareManager = $this->getMockBuilder('\OC\Share20\Manager')->disableOriginalConstructor()->getMock();
$this->container['AppName'] = 'files_sharing'; $this->urlGenerator = $this->getMock('\OCP\IURLGenerator');
$this->container['URLGenerator'] = $this->getMock('\OCP\IURLGenerator'); $this->session = $this->getMock('\OCP\ISession');
$this->container['UserManager'] = $this->getMock('\OCP\IUserManager'); $this->previewManager = $this->getMock('\OCP\IPreview');
$this->container['ShareManager'] = $this->getMockBuilder('\OC\Share20\Manager') $this->config = $this->getMock('\OCP\IConfig');
->disableOriginalConstructor()->getMock();
$this->container['Session'] = $this->getMock('\OCP\ISession'); $this->shareController = new \OCA\Files_Sharing\Controllers\ShareController(
$this->appName,
$this->getMock('\OCP\IRequest'),
$this->config,
$this->urlGenerator,
$this->getMock('\OCP\IUserManager'),
$this->getMock('\OCP\ILogger'),
$this->getMock('\OCP\Activity\IManager'),
$this->shareManager,
$this->session,
$this->previewManager,
$this->getMock('\OCP\Files\IRootFolder')
);
$this->session = $this->container['Session'];
$this->shareManager = $this->container['ShareManager'];
$this->urlGenerator = $this->container['URLGenerator'];
$this->shareController = $this->container['ShareController'];
// Store current user // Store current user
$this->oldUser = \OC_User::getUser(); $this->oldUser = \OC_User::getUser();
@ -91,17 +98,6 @@ class ShareControllerTest extends \Test\TestCase {
\OC::$server->getUserManager()->createUser($this->user, $this->user); \OC::$server->getUserManager()->createUser($this->user, $this->user);
\OC_Util::tearDownFS(); \OC_Util::tearDownFS();
$this->loginAsUser($this->user); $this->loginAsUser($this->user);
// Create a dummy shared file
$view = new View('/'. $this->user . '/files');
$view->file_put_contents('file1.txt', 'I am such an awesome shared file!');
$this->token = \OCP\Share::shareItem(
Filesystem::getFileInfo('file1.txt')->getType(),
Filesystem::getFileInfo('file1.txt')->getId(),
\OCP\Share::SHARE_TYPE_LINK,
'IAmPasswordProtected!',
1
);
} }
protected function tearDown() { protected function tearDown() {
@ -129,7 +125,7 @@ class ShareControllerTest extends \Test\TestCase {
->willReturn($share); ->willReturn($share);
$response = $this->shareController->showAuthenticate('token'); $response = $this->shareController->showAuthenticate('token');
$expectedResponse = new TemplateResponse($this->container['AppName'], 'authenticate', [], 'guest'); $expectedResponse = new TemplateResponse($this->appName, 'authenticate', [], 'guest');
$this->assertEquals($expectedResponse, $response); $this->assertEquals($expectedResponse, $response);
} }
@ -147,7 +143,7 @@ class ShareControllerTest extends \Test\TestCase {
$this->session->method('get')->with('public_link_authenticated')->willReturn('2'); $this->session->method('get')->with('public_link_authenticated')->willReturn('2');
$response = $this->shareController->showAuthenticate('token'); $response = $this->shareController->showAuthenticate('token');
$expectedResponse = new TemplateResponse($this->container['AppName'], 'authenticate', [], 'guest'); $expectedResponse = new TemplateResponse($this->appName, 'authenticate', [], 'guest');
$this->assertEquals($expectedResponse, $response); $this->assertEquals($expectedResponse, $response);
} }
@ -164,8 +160,13 @@ class ShareControllerTest extends \Test\TestCase {
$this->session->method('exists')->with('public_link_authenticated')->willReturn(true); $this->session->method('exists')->with('public_link_authenticated')->willReturn(true);
$this->session->method('get')->with('public_link_authenticated')->willReturn('1'); $this->session->method('get')->with('public_link_authenticated')->willReturn('1');
$this->urlGenerator->expects($this->once())
->method('linkToRoute')
->with('files_sharing.sharecontroller.showShare', ['token' => 'token'])
->willReturn('redirect');
$response = $this->shareController->showAuthenticate('token'); $response = $this->shareController->showAuthenticate('token');
$expectedResponse = new RedirectResponse($this->urlGenerator->linkToRoute('files_sharing.sharecontroller.showShare', array('token' => 'token'))); $expectedResponse = new RedirectResponse('redirect');
$this->assertEquals($expectedResponse, $response); $this->assertEquals($expectedResponse, $response);
} }
@ -202,8 +203,13 @@ class ShareControllerTest extends \Test\TestCase {
->method('set') ->method('set')
->with('public_link_authenticated', '42'); ->with('public_link_authenticated', '42');
$this->urlGenerator->expects($this->once())
->method('linkToRoute')
->with('files_sharing.sharecontroller.showShare', ['token'=>'token'])
->willReturn('redirect');
$response = $this->shareController->authenticate('token', 'validpassword'); $response = $this->shareController->authenticate('token', 'validpassword');
$expectedResponse = new RedirectResponse($this->urlGenerator->linkToRoute('files_sharing.sharecontroller.showShare', array('token' => 'token'))); $expectedResponse = new RedirectResponse('redirect');
$this->assertEquals($expectedResponse, $response); $this->assertEquals($expectedResponse, $response);
} }
@ -228,7 +234,7 @@ class ShareControllerTest extends \Test\TestCase {
->method('set'); ->method('set');
$response = $this->shareController->authenticate('token', 'invalidpassword'); $response = $this->shareController->authenticate('token', 'invalidpassword');
$expectedResponse = new TemplateResponse($this->container['AppName'], 'authenticate', array('wrongpw' => true), 'guest'); $expectedResponse = new TemplateResponse($this->appName, 'authenticate', array('wrongpw' => true), 'guest');
$this->assertEquals($expectedResponse, $response); $this->assertEquals($expectedResponse, $response);
} }
@ -255,9 +261,14 @@ class ShareControllerTest extends \Test\TestCase {
->with('validtoken') ->with('validtoken')
->willReturn($share); ->willReturn($share);
$this->urlGenerator->expects($this->once())
->method('linkToRoute')
->with('files_sharing.sharecontroller.authenticate', ['token' => 'validtoken'])
->willReturn('redirect');
// Test without a not existing token // Test without a not existing token
$response = $this->shareController->showShare('validtoken'); $response = $this->shareController->showShare('validtoken');
$expectedResponse = new RedirectResponse($this->urlGenerator->linkToRoute('files_sharing.sharecontroller.authenticate', array('token' => 'validtoken'))); $expectedResponse = new RedirectResponse('redirect');
$this->assertEquals($expectedResponse, $response); $this->assertEquals($expectedResponse, $response);
} }
@ -282,6 +293,18 @@ class ShareControllerTest extends \Test\TestCase {
$this->session->method('exists')->with('public_link_authenticated')->willReturn(true); $this->session->method('exists')->with('public_link_authenticated')->willReturn(true);
$this->session->method('get')->with('public_link_authenticated')->willReturn('42'); $this->session->method('get')->with('public_link_authenticated')->willReturn('42');
$this->previewManager->method('isMimeSupported')->with('text/plain')->willReturn(true);
$this->config->method('getSystemValue')
->willReturnMap(
[
['max_filesize_animated_gifs_public_sharing', 10, 10],
['enable_previews', true, true],
]
);
$shareTmpl['maxSizeAnimateGif'] = $this->config->getSystemValue('max_filesize_animated_gifs_public_sharing', 10);
$shareTmpl['previewEnabled'] = $this->config->getSystemValue('enable_previews', true);
$this->shareManager $this->shareManager
->expects($this->once()) ->expects($this->once())
->method('getShareByToken') ->method('getShareByToken')
@ -310,7 +333,7 @@ class ShareControllerTest extends \Test\TestCase {
$csp = new \OCP\AppFramework\Http\ContentSecurityPolicy(); $csp = new \OCP\AppFramework\Http\ContentSecurityPolicy();
$csp->addAllowedFrameDomain('\'self\''); $csp->addAllowedFrameDomain('\'self\'');
$expectedResponse = new TemplateResponse($this->container['AppName'], 'public', $sharedTmplParams, 'base'); $expectedResponse = new TemplateResponse($this->appName, 'public', $sharedTmplParams, 'base');
$expectedResponse->setContentSecurityPolicy($csp); $expectedResponse->setContentSecurityPolicy($csp);
$this->assertEquals($expectedResponse, $response); $this->assertEquals($expectedResponse, $response);
@ -326,10 +349,14 @@ class ShareControllerTest extends \Test\TestCase {
->with('validtoken') ->with('validtoken')
->willReturn($share); ->willReturn($share);
$this->urlGenerator->expects($this->once())
->method('linkToRoute')
->with('files_sharing.sharecontroller.authenticate', ['token' => 'validtoken'])
->willReturn('redirect');
// Test with a password protected share and no authentication // Test with a password protected share and no authentication
$response = $this->shareController->downloadShare('validtoken'); $response = $this->shareController->downloadShare('validtoken');
$expectedResponse = new RedirectResponse($this->urlGenerator->linkToRoute('files_sharing.sharecontroller.authenticate', $expectedResponse = new RedirectResponse('redirect');
['token' => 'validtoken']));
$this->assertEquals($expectedResponse, $response); $this->assertEquals($expectedResponse, $response);
} }