From 623a0e463755f9f429f1505a939f86492571f5ce Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Tue, 9 Feb 2016 10:36:44 +0100 Subject: [PATCH] Example hook check --- .../lib/controllers/sharecontroller.php | 16 ++++++------- .../tests/controller/sharecontroller.php | 24 +++++++++++++++---- lib/private/share20/share.php | 1 + 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/apps/files_sharing/lib/controllers/sharecontroller.php b/apps/files_sharing/lib/controllers/sharecontroller.php index b30509405a..dae61a3537 100644 --- a/apps/files_sharing/lib/controllers/sharecontroller.php +++ b/apps/files_sharing/lib/controllers/sharecontroller.php @@ -30,7 +30,6 @@ namespace OCA\Files_Sharing\Controllers; use OC; -use OC\Files\Filesystem; use OC_Files; use OC_Util; use OCP; @@ -71,7 +70,7 @@ class ShareController extends Controller { protected $logger; /** @var OCP\Activity\IManager */ protected $activityManager; - /** @var OC\Share20\Manager */ + /** @var OCP\Share\IManager */ protected $shareManager; /** @var ISession */ protected $session; @@ -88,7 +87,7 @@ class ShareController extends Controller { * @param IUserManager $userManager * @param ILogger $logger * @param OCP\Activity\IManager $activityManager - * @param \OC\Share20\Manager $shareManager + * @param \OCP\Share\IManager $shareManager * @param ISession $session * @param IPreview $previewManager * @param IRootFolder $rootFolder @@ -100,7 +99,7 @@ class ShareController extends Controller { IUserManager $userManager, ILogger $logger, \OCP\Activity\IManager $activityManager, - \OC\Share20\Manager $shareManager, + \OCP\Share\IManager $shareManager, ISession $session, IPreview $previewManager, IRootFolder $rootFolder) { @@ -193,11 +192,10 @@ class ShareController extends Controller { /** * throws hooks when a share is attempted to be accessed * - * @param \OC\Share20\Share|string $share the Share instance if available, + * @param \OCP\Share\IShare|string $share the Share instance if available, * otherwise token * @param int $errorCode * @param string $errorMessage - * @throws NotFoundException * @throws OC\HintException * @throws OC\ServerNotAvailableException */ @@ -205,12 +203,12 @@ class ShareController extends Controller { $itemType = $itemSource = $uidOwner = ''; $token = $share; $exception = null; - if($share instanceof \OC\Share20\Share) { + if($share instanceof \OCP\Share\IShare) { try { $token = $share->getToken(); $uidOwner = $share->getSharedBy(); - $itemType = $share->getNode() instanceof \OCP\Files\File ? 'file' : 'folder'; - $itemSource = $share->getNode()->getId(); + $itemType = $share->getNodeType(); + $itemSource = $share->getNodeId(); } catch (\Exception $e) { // we log what we know and pass on the exception afterwards $exception = $e; diff --git a/apps/files_sharing/tests/controller/sharecontroller.php b/apps/files_sharing/tests/controller/sharecontroller.php index 58524d8f03..11dc082390 100644 --- a/apps/files_sharing/tests/controller/sharecontroller.php +++ b/apps/files_sharing/tests/controller/sharecontroller.php @@ -218,12 +218,12 @@ class ShareControllerTest extends \Test\TestCase { } public function testAuthenticateInvalidPassword() { - $node = $this->getMock('\OCP\Files\File'); - $node->method('getId')->willReturn(100); - $share = \OC::$server->getShareManager()->newShare(); - $share->setId(42) - ->setNode($node); + $share->setNodeId(100) + ->setNodeType('file') + ->setToken('token') + ->setSharedBy('initiator') + ->setId(42); $this->shareManager ->expects($this->once()) @@ -241,6 +241,20 @@ class ShareControllerTest extends \Test\TestCase { ->expects($this->never()) ->method('set'); + $hookListner = $this->getMockBuilder('Dummy')->setMethods(['access'])->getMock(); + \OCP\Util::connectHook('OCP\Share', 'share_link_access', $hookListner, 'access'); + + $hookListner->expects($this->once()) + ->method('access') + ->with($this->callback(function(array $data) { + return $data['itemType'] === 'file' && + $data['itemSource'] === 100 && + $data['uidOwner'] === 'initiator' && + $data['token'] === 'token' && + $data['errorCode'] === 403 && + $data['errorMessage'] === 'Wrong password'; + })); + $response = $this->shareController->authenticate('token', 'invalidpassword'); $expectedResponse = new TemplateResponse($this->appName, 'authenticate', array('wrongpw' => true), 'guest'); $this->assertEquals($expectedResponse, $response); diff --git a/lib/private/share20/share.php b/lib/private/share20/share.php index cd30f24c42..e84d52b63a 100644 --- a/lib/private/share20/share.php +++ b/lib/private/share20/share.php @@ -163,6 +163,7 @@ class Share implements \OCP\Share\IShare { } $this->nodeType = $type; + return $this; } /**