Example hook check

This commit is contained in:
Roeland Jago Douma 2016-02-09 10:36:44 +01:00
parent 38cbfed476
commit 623a0e4637
3 changed files with 27 additions and 14 deletions

View File

@ -30,7 +30,6 @@
namespace OCA\Files_Sharing\Controllers; namespace OCA\Files_Sharing\Controllers;
use OC; use OC;
use OC\Files\Filesystem;
use OC_Files; use OC_Files;
use OC_Util; use OC_Util;
use OCP; use OCP;
@ -71,7 +70,7 @@ class ShareController extends Controller {
protected $logger; protected $logger;
/** @var OCP\Activity\IManager */ /** @var OCP\Activity\IManager */
protected $activityManager; protected $activityManager;
/** @var OC\Share20\Manager */ /** @var OCP\Share\IManager */
protected $shareManager; protected $shareManager;
/** @var ISession */ /** @var ISession */
protected $session; protected $session;
@ -88,7 +87,7 @@ class ShareController extends Controller {
* @param IUserManager $userManager * @param IUserManager $userManager
* @param ILogger $logger * @param ILogger $logger
* @param OCP\Activity\IManager $activityManager * @param OCP\Activity\IManager $activityManager
* @param \OC\Share20\Manager $shareManager * @param \OCP\Share\IManager $shareManager
* @param ISession $session * @param ISession $session
* @param IPreview $previewManager * @param IPreview $previewManager
* @param IRootFolder $rootFolder * @param IRootFolder $rootFolder
@ -100,7 +99,7 @@ class ShareController extends Controller {
IUserManager $userManager, IUserManager $userManager,
ILogger $logger, ILogger $logger,
\OCP\Activity\IManager $activityManager, \OCP\Activity\IManager $activityManager,
\OC\Share20\Manager $shareManager, \OCP\Share\IManager $shareManager,
ISession $session, ISession $session,
IPreview $previewManager, IPreview $previewManager,
IRootFolder $rootFolder) { IRootFolder $rootFolder) {
@ -193,11 +192,10 @@ class ShareController extends Controller {
/** /**
* throws hooks when a share is attempted to be accessed * 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 * otherwise token
* @param int $errorCode * @param int $errorCode
* @param string $errorMessage * @param string $errorMessage
* @throws NotFoundException
* @throws OC\HintException * @throws OC\HintException
* @throws OC\ServerNotAvailableException * @throws OC\ServerNotAvailableException
*/ */
@ -205,12 +203,12 @@ class ShareController extends Controller {
$itemType = $itemSource = $uidOwner = ''; $itemType = $itemSource = $uidOwner = '';
$token = $share; $token = $share;
$exception = null; $exception = null;
if($share instanceof \OC\Share20\Share) { if($share instanceof \OCP\Share\IShare) {
try { try {
$token = $share->getToken(); $token = $share->getToken();
$uidOwner = $share->getSharedBy(); $uidOwner = $share->getSharedBy();
$itemType = $share->getNode() instanceof \OCP\Files\File ? 'file' : 'folder'; $itemType = $share->getNodeType();
$itemSource = $share->getNode()->getId(); $itemSource = $share->getNodeId();
} catch (\Exception $e) { } catch (\Exception $e) {
// we log what we know and pass on the exception afterwards // we log what we know and pass on the exception afterwards
$exception = $e; $exception = $e;

View File

@ -218,12 +218,12 @@ class ShareControllerTest extends \Test\TestCase {
} }
public function testAuthenticateInvalidPassword() { public function testAuthenticateInvalidPassword() {
$node = $this->getMock('\OCP\Files\File');
$node->method('getId')->willReturn(100);
$share = \OC::$server->getShareManager()->newShare(); $share = \OC::$server->getShareManager()->newShare();
$share->setId(42) $share->setNodeId(100)
->setNode($node); ->setNodeType('file')
->setToken('token')
->setSharedBy('initiator')
->setId(42);
$this->shareManager $this->shareManager
->expects($this->once()) ->expects($this->once())
@ -241,6 +241,20 @@ class ShareControllerTest extends \Test\TestCase {
->expects($this->never()) ->expects($this->never())
->method('set'); ->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'); $response = $this->shareController->authenticate('token', 'invalidpassword');
$expectedResponse = new TemplateResponse($this->appName, 'authenticate', array('wrongpw' => true), 'guest'); $expectedResponse = new TemplateResponse($this->appName, 'authenticate', array('wrongpw' => true), 'guest');
$this->assertEquals($expectedResponse, $response); $this->assertEquals($expectedResponse, $response);

View File

@ -163,6 +163,7 @@ class Share implements \OCP\Share\IShare {
} }
$this->nodeType = $type; $this->nodeType = $type;
return $this;
} }
/** /**