Merge pull request #445 from nextcloud/ocs_share_to_appframework
OCS Share API to appframework
This commit is contained in:
commit
70eef2a82e
|
@ -40,6 +40,36 @@ $application->registerRoutes($this, [
|
||||||
'verb' => 'GET'
|
'verb' => 'GET'
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
'ocs' => [
|
||||||
|
/*
|
||||||
|
* OCS Share API
|
||||||
|
*/
|
||||||
|
[
|
||||||
|
'name' => 'ShareAPI#getShares',
|
||||||
|
'url' => '/api/v1/shares',
|
||||||
|
'verb' => 'GET',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'ShareAPI#createShare',
|
||||||
|
'url' => '/api/v1/shares',
|
||||||
|
'verb' => 'POST',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'ShareAPI#getShare',
|
||||||
|
'url' => '/api/v1/shares/{id}',
|
||||||
|
'verb' => 'GET',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'ShareAPI#updateShare',
|
||||||
|
'url' => '/api/v1/shares/{id}',
|
||||||
|
'verb' => 'PUT',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'ShareAPI#deleteShare',
|
||||||
|
'url' => '/api/v1/shares/{id}',
|
||||||
|
'verb' => 'DELETE',
|
||||||
|
],
|
||||||
|
],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
/** @var $this \OCP\Route\IRouter */
|
/** @var $this \OCP\Route\IRouter */
|
||||||
|
@ -59,33 +89,6 @@ $this->create('sharing_external_shareinfo', '/shareinfo')
|
||||||
|
|
||||||
//TODO: SET: mail notification, waiting for PR #4689 to be accepted
|
//TODO: SET: mail notification, waiting for PR #4689 to be accepted
|
||||||
|
|
||||||
$OCSShare = new \OCA\Files_Sharing\API\OCSShareWrapper();
|
|
||||||
|
|
||||||
API::register('get',
|
|
||||||
'/apps/files_sharing/api/v1/shares',
|
|
||||||
[$OCSShare, 'getAllShares'],
|
|
||||||
'files_sharing');
|
|
||||||
|
|
||||||
API::register('post',
|
|
||||||
'/apps/files_sharing/api/v1/shares',
|
|
||||||
[$OCSShare, 'createShare'],
|
|
||||||
'files_sharing');
|
|
||||||
|
|
||||||
API::register('get',
|
|
||||||
'/apps/files_sharing/api/v1/shares/{id}',
|
|
||||||
[$OCSShare, 'getShare'],
|
|
||||||
'files_sharing');
|
|
||||||
|
|
||||||
API::register('put',
|
|
||||||
'/apps/files_sharing/api/v1/shares/{id}',
|
|
||||||
[$OCSShare, 'updateShare'],
|
|
||||||
'files_sharing');
|
|
||||||
|
|
||||||
API::register('delete',
|
|
||||||
'/apps/files_sharing/api/v1/shares/{id}',
|
|
||||||
[$OCSShare, 'deleteShare'],
|
|
||||||
'files_sharing');
|
|
||||||
|
|
||||||
API::register('get',
|
API::register('get',
|
||||||
'/apps/files_sharing/api/v1/remote_shares',
|
'/apps/files_sharing/api/v1/remote_shares',
|
||||||
array('\OCA\Files_Sharing\API\Remote', 'getShares'),
|
array('\OCA\Files_Sharing\API\Remote', 'getShares'),
|
||||||
|
|
|
@ -1,64 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* @copyright Copyright (c) 2016, ownCloud, Inc.
|
|
||||||
*
|
|
||||||
* @author Roeland Jago Douma <roeland@famdouma.nl>
|
|
||||||
*
|
|
||||||
* @license AGPL-3.0
|
|
||||||
*
|
|
||||||
* This code is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3,
|
|
||||||
* as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Affero General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
namespace OCA\Files_Sharing\API;
|
|
||||||
|
|
||||||
class OCSShareWrapper {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return Share20OCS
|
|
||||||
*/
|
|
||||||
private function getShare20OCS() {
|
|
||||||
return new Share20OCS(
|
|
||||||
\OC::$server->getShareManager(),
|
|
||||||
\OC::$server->getGroupManager(),
|
|
||||||
\OC::$server->getUserManager(),
|
|
||||||
\OC::$server->getRequest(),
|
|
||||||
\OC::$server->getRootFolder(),
|
|
||||||
\OC::$server->getURLGenerator(),
|
|
||||||
\OC::$server->getUserSession()->getUser(),
|
|
||||||
\OC::$server->getL10N('files_sharing')
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getAllShares() {
|
|
||||||
return $this->getShare20OCS()->getShares();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function createShare() {
|
|
||||||
return $this->getShare20OCS()->createShare();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getShare($params) {
|
|
||||||
$id = $params['id'];
|
|
||||||
return $this->getShare20OCS()->getShare($id);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function updateShare($params) {
|
|
||||||
$id = $params['id'];
|
|
||||||
return $this->getShare20OCS()->updateShare($id);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function deleteShare($params) {
|
|
||||||
$id = $params['id'];
|
|
||||||
return $this->getShare20OCS()->deleteShare($id);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -23,6 +23,12 @@
|
||||||
*/
|
*/
|
||||||
namespace OCA\Files_Sharing\API;
|
namespace OCA\Files_Sharing\API;
|
||||||
|
|
||||||
|
use OCP\AppFramework\Http\DataResponse;
|
||||||
|
use OCP\AppFramework\OCS\OCSBadRequestException;
|
||||||
|
use OCP\AppFramework\OCS\OCSException;
|
||||||
|
use OCP\AppFramework\OCS\OCSForbiddenException;
|
||||||
|
use OCP\AppFramework\OCS\OCSNotFoundException;
|
||||||
|
use OCP\AppFramework\OCSController;
|
||||||
use OCP\Files\NotFoundException;
|
use OCP\Files\NotFoundException;
|
||||||
use OCP\IGroupManager;
|
use OCP\IGroupManager;
|
||||||
use OCP\IL10N;
|
use OCP\IL10N;
|
||||||
|
@ -32,7 +38,6 @@ use OCP\IURLGenerator;
|
||||||
use OCP\IUser;
|
use OCP\IUser;
|
||||||
use OCP\Files\IRootFolder;
|
use OCP\Files\IRootFolder;
|
||||||
use OCP\Lock\LockedException;
|
use OCP\Lock\LockedException;
|
||||||
use OCP\Share;
|
|
||||||
use OCP\Share\IManager;
|
use OCP\Share\IManager;
|
||||||
use OCP\Share\Exceptions\ShareNotFound;
|
use OCP\Share\Exceptions\ShareNotFound;
|
||||||
use OCP\Share\Exceptions\GenericShareException;
|
use OCP\Share\Exceptions\GenericShareException;
|
||||||
|
@ -43,7 +48,7 @@ use OCP\Lock\ILockingProvider;
|
||||||
*
|
*
|
||||||
* @package OCA\Files_Sharing\API
|
* @package OCA\Files_Sharing\API
|
||||||
*/
|
*/
|
||||||
class Share20OCS {
|
class Share20OCS extends OCSController {
|
||||||
|
|
||||||
/** @var IManager */
|
/** @var IManager */
|
||||||
private $shareManager;
|
private $shareManager;
|
||||||
|
@ -52,7 +57,7 @@ class Share20OCS {
|
||||||
/** @var IUserManager */
|
/** @var IUserManager */
|
||||||
private $userManager;
|
private $userManager;
|
||||||
/** @var IRequest */
|
/** @var IRequest */
|
||||||
private $request;
|
protected $request;
|
||||||
/** @var IRootFolder */
|
/** @var IRootFolder */
|
||||||
private $rootFolder;
|
private $rootFolder;
|
||||||
/** @var IURLGenerator */
|
/** @var IURLGenerator */
|
||||||
|
@ -61,28 +66,35 @@ class Share20OCS {
|
||||||
private $currentUser;
|
private $currentUser;
|
||||||
/** @var IL10N */
|
/** @var IL10N */
|
||||||
private $l;
|
private $l;
|
||||||
|
/** @var \OCP\Files\Node */
|
||||||
|
private $lockedNode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Share20OCS constructor.
|
* Share20OCS constructor.
|
||||||
*
|
*
|
||||||
|
* @param string $appName
|
||||||
|
* @param IRequest $request
|
||||||
* @param IManager $shareManager
|
* @param IManager $shareManager
|
||||||
* @param IGroupManager $groupManager
|
* @param IGroupManager $groupManager
|
||||||
* @param IUserManager $userManager
|
* @param IUserManager $userManager
|
||||||
* @param IRequest $request
|
|
||||||
* @param IRootFolder $rootFolder
|
* @param IRootFolder $rootFolder
|
||||||
* @param IURLGenerator $urlGenerator
|
* @param IURLGenerator $urlGenerator
|
||||||
* @param IUser $currentUser
|
* @param IUser $currentUser
|
||||||
|
* @param IL10N $l10n
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
|
$appName,
|
||||||
|
IRequest $request,
|
||||||
IManager $shareManager,
|
IManager $shareManager,
|
||||||
IGroupManager $groupManager,
|
IGroupManager $groupManager,
|
||||||
IUserManager $userManager,
|
IUserManager $userManager,
|
||||||
IRequest $request,
|
|
||||||
IRootFolder $rootFolder,
|
IRootFolder $rootFolder,
|
||||||
IURLGenerator $urlGenerator,
|
IURLGenerator $urlGenerator,
|
||||||
IUser $currentUser,
|
IUser $currentUser,
|
||||||
IL10N $l10n
|
IL10N $l10n
|
||||||
) {
|
) {
|
||||||
|
parent::__construct($appName, $request);
|
||||||
|
|
||||||
$this->shareManager = $shareManager;
|
$this->shareManager = $shareManager;
|
||||||
$this->userManager = $userManager;
|
$this->userManager = $userManager;
|
||||||
$this->groupManager = $groupManager;
|
$this->groupManager = $groupManager;
|
||||||
|
@ -133,7 +145,7 @@ class Share20OCS {
|
||||||
} else {
|
} else {
|
||||||
$result['item_type'] = 'file';
|
$result['item_type'] = 'file';
|
||||||
}
|
}
|
||||||
$result['mimetype'] = $node->getMimeType();
|
$result['mimetype'] = $node->getMimetype();
|
||||||
$result['storage_id'] = $node->getStorage()->getId();
|
$result['storage_id'] = $node->getStorage()->getId();
|
||||||
$result['storage'] = $node->getStorage()->getCache()->getNumericStorageId();
|
$result['storage'] = $node->getStorage()->getCache()->getNumericStorageId();
|
||||||
$result['item_source'] = $node->getId();
|
$result['item_source'] = $node->getId();
|
||||||
|
@ -175,96 +187,93 @@ class Share20OCS {
|
||||||
/**
|
/**
|
||||||
* Get a specific share by id
|
* Get a specific share by id
|
||||||
*
|
*
|
||||||
|
* @NoAdminRequired
|
||||||
|
*
|
||||||
* @param string $id
|
* @param string $id
|
||||||
* @return \OC_OCS_Result
|
* @return DataResponse
|
||||||
|
* @throws OCSNotFoundException
|
||||||
*/
|
*/
|
||||||
public function getShare($id) {
|
public function getShare($id) {
|
||||||
if (!$this->shareManager->shareApiEnabled()) {
|
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Share API is disabled'));
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$share = $this->getShareById($id);
|
$share = $this->getShareById($id);
|
||||||
} catch (ShareNotFound $e) {
|
} catch (ShareNotFound $e) {
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Wrong share ID, share doesn\'t exist'));
|
throw new OCSNotFoundException($this->l->t('Wrong share ID, share doesn\'t exist'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->canAccessShare($share)) {
|
if ($this->canAccessShare($share)) {
|
||||||
try {
|
try {
|
||||||
$share = $this->formatShare($share);
|
$share = $this->formatShare($share);
|
||||||
return new \OC_OCS_Result([$share]);
|
return new DataResponse(['data' => [$share]]);
|
||||||
} catch (NotFoundException $e) {
|
} catch (NotFoundException $e) {
|
||||||
//Fall trough
|
//Fall trough
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Wrong share ID, share doesn\'t exist'));
|
throw new OCSNotFoundException($this->l->t('Wrong share ID, share doesn\'t exist'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete a share
|
* Delete a share
|
||||||
*
|
*
|
||||||
|
* @NoAdminRequired
|
||||||
|
*
|
||||||
* @param string $id
|
* @param string $id
|
||||||
* @return \OC_OCS_Result
|
* @return DataResponse
|
||||||
|
* @throws OCSNotFoundException
|
||||||
*/
|
*/
|
||||||
public function deleteShare($id) {
|
public function deleteShare($id) {
|
||||||
if (!$this->shareManager->shareApiEnabled()) {
|
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Share API is disabled'));
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$share = $this->getShareById($id);
|
$share = $this->getShareById($id);
|
||||||
} catch (ShareNotFound $e) {
|
} catch (ShareNotFound $e) {
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Wrong share ID, share doesn\'t exist'));
|
throw new OCSNotFoundException($this->l->t('Wrong share ID, share doesn\'t exist'));
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$share->getNode()->lock(ILockingProvider::LOCK_SHARED);
|
$this->lock($share->getNode());
|
||||||
} catch (LockedException $e) {
|
} catch (LockedException $e) {
|
||||||
return new \OC_OCS_Result(null, 404, 'could not delete share');
|
throw new OCSNotFoundException($this->l->t('could not delete share'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$this->canAccessShare($share, false)) {
|
if (!$this->canAccessShare($share, false)) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSNotFoundException($this->l->t('Could not delete share'));
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Could not delete share'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->shareManager->deleteShare($share);
|
$this->shareManager->deleteShare($share);
|
||||||
|
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
return new DataResponse();
|
||||||
|
|
||||||
return new \OC_OCS_Result();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return \OC_OCS_Result
|
* @NoAdminRequired
|
||||||
|
*
|
||||||
|
* @return DataResponse
|
||||||
|
* @throws OCSNotFoundException
|
||||||
|
* @throws OCSForbiddenException
|
||||||
|
* @throws OCSBadRequestException
|
||||||
|
* @throws OCSException
|
||||||
*/
|
*/
|
||||||
public function createShare() {
|
public function createShare() {
|
||||||
$share = $this->shareManager->newShare();
|
$share = $this->shareManager->newShare();
|
||||||
|
|
||||||
if (!$this->shareManager->shareApiEnabled()) {
|
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Share API is disabled'));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Verify path
|
// Verify path
|
||||||
$path = $this->request->getParam('path', null);
|
$path = $this->request->getParam('path', null);
|
||||||
if ($path === null) {
|
if ($path === null) {
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Please specify a file or folder path'));
|
throw new OCSNotFoundException($this->l->t('Please specify a file or folder path'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$userFolder = $this->rootFolder->getUserFolder($this->currentUser->getUID());
|
$userFolder = $this->rootFolder->getUserFolder($this->currentUser->getUID());
|
||||||
try {
|
try {
|
||||||
$path = $userFolder->get($path);
|
$path = $userFolder->get($path);
|
||||||
} catch (NotFoundException $e) {
|
} catch (NotFoundException $e) {
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Wrong path, file/folder doesn\'t exist'));
|
throw new OCSNotFoundException($this->l->t('Wrong path, file/folder doesn\'t exist'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$share->setNode($path);
|
$share->setNode($path);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$share->getNode()->lock(ILockingProvider::LOCK_SHARED);
|
$this->lock($share->getNode());
|
||||||
} catch (LockedException $e) {
|
} catch (LockedException $e) {
|
||||||
return new \OC_OCS_Result(null, 404, 'Could not create share');
|
throw new OCSNotFoundException($this->l->t('Could not create share'));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse permissions (if available)
|
// Parse permissions (if available)
|
||||||
|
@ -276,8 +285,7 @@ class Share20OCS {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($permissions < 0 || $permissions > \OCP\Constants::PERMISSION_ALL) {
|
if ($permissions < 0 || $permissions > \OCP\Constants::PERMISSION_ALL) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSNotFoundException($this->l->t('invalid permissions'));
|
||||||
return new \OC_OCS_Result(null, 404, 'invalid permissions');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Shares always require read permissions
|
// Shares always require read permissions
|
||||||
|
@ -304,29 +312,25 @@ class Share20OCS {
|
||||||
if ($shareType === \OCP\Share::SHARE_TYPE_USER) {
|
if ($shareType === \OCP\Share::SHARE_TYPE_USER) {
|
||||||
// Valid user is required to share
|
// Valid user is required to share
|
||||||
if ($shareWith === null || !$this->userManager->userExists($shareWith)) {
|
if ($shareWith === null || !$this->userManager->userExists($shareWith)) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSNotFoundException($this->l->t('Please specify a valid user'));
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Please specify a valid user'));
|
|
||||||
}
|
}
|
||||||
$share->setSharedWith($shareWith);
|
$share->setSharedWith($shareWith);
|
||||||
$share->setPermissions($permissions);
|
$share->setPermissions($permissions);
|
||||||
} else if ($shareType === \OCP\Share::SHARE_TYPE_GROUP) {
|
} else if ($shareType === \OCP\Share::SHARE_TYPE_GROUP) {
|
||||||
if (!$this->shareManager->allowGroupSharing()) {
|
if (!$this->shareManager->allowGroupSharing()) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSNotFoundException($this->l->t('Group sharing is disabled by the administrator'));
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Group sharing is disabled by the administrator'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Valid group is required to share
|
// Valid group is required to share
|
||||||
if ($shareWith === null || !$this->groupManager->groupExists($shareWith)) {
|
if ($shareWith === null || !$this->groupManager->groupExists($shareWith)) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSNotFoundException($this->l->t('Please specify a valid group'));
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Please specify a valid group'));
|
|
||||||
}
|
}
|
||||||
$share->setSharedWith($shareWith);
|
$share->setSharedWith($shareWith);
|
||||||
$share->setPermissions($permissions);
|
$share->setPermissions($permissions);
|
||||||
} else if ($shareType === \OCP\Share::SHARE_TYPE_LINK) {
|
} else if ($shareType === \OCP\Share::SHARE_TYPE_LINK) {
|
||||||
//Can we even share links?
|
//Can we even share links?
|
||||||
if (!$this->shareManager->shareApiAllowLinks()) {
|
if (!$this->shareManager->shareApiAllowLinks()) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSNotFoundException($this->l->t('Public link sharing is disabled by the administrator'));
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Public link sharing is disabled by the administrator'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -335,22 +339,19 @@ class Share20OCS {
|
||||||
*/
|
*/
|
||||||
$existingShares = $this->shareManager->getSharesBy($this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_LINK, $path, false, 1, 0);
|
$existingShares = $this->shareManager->getSharesBy($this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_LINK, $path, false, 1, 0);
|
||||||
if (!empty($existingShares)) {
|
if (!empty($existingShares)) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
return new DataResponse(['data' => $this->formatShare($existingShares[0])]);
|
||||||
return new \OC_OCS_Result($this->formatShare($existingShares[0]));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$publicUpload = $this->request->getParam('publicUpload', null);
|
$publicUpload = $this->request->getParam('publicUpload', null);
|
||||||
if ($publicUpload === 'true') {
|
if ($publicUpload === 'true') {
|
||||||
// Check if public upload is allowed
|
// Check if public upload is allowed
|
||||||
if (!$this->shareManager->shareApiLinkAllowPublicUpload()) {
|
if (!$this->shareManager->shareApiLinkAllowPublicUpload()) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSForbiddenException($this->l->t('Public upload disabled by the administrator'));
|
||||||
return new \OC_OCS_Result(null, 403, $this->l->t('Public upload disabled by the administrator'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Public upload can only be set for folders
|
// Public upload can only be set for folders
|
||||||
if ($path instanceof \OCP\Files\File) {
|
if ($path instanceof \OCP\Files\File) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSNotFoundException($this->l->t('Public upload is only possible for publicly shared folders'));
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Public upload is only possible for publicly shared folders'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$share->setPermissions(
|
$share->setPermissions(
|
||||||
|
@ -378,22 +379,19 @@ class Share20OCS {
|
||||||
$expireDate = $this->parseDate($expireDate);
|
$expireDate = $this->parseDate($expireDate);
|
||||||
$share->setExpirationDate($expireDate);
|
$share->setExpirationDate($expireDate);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSNotFoundException($this->l->t('Invalid date, date format must be YYYY-MM-DD'));
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Invalid date, date format must be YYYY-MM-DD'));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if ($shareType === \OCP\Share::SHARE_TYPE_REMOTE) {
|
} else if ($shareType === \OCP\Share::SHARE_TYPE_REMOTE) {
|
||||||
if (!$this->shareManager->outgoingServer2ServerSharesAllowed()) {
|
if (!$this->shareManager->outgoingServer2ServerSharesAllowed()) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSForbiddenException($this->l->t('Sharing %s failed because the back end does not allow shares from type %s', [$path->getPath(), $shareType]));
|
||||||
return new \OC_OCS_Result(null, 403, $this->l->t('Sharing %s failed because the back end does not allow shares from type %s', [$path->getPath(), $shareType]));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$share->setSharedWith($shareWith);
|
$share->setSharedWith($shareWith);
|
||||||
$share->setPermissions($permissions);
|
$share->setPermissions($permissions);
|
||||||
} else {
|
} else {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSBadRequestException($this->l->t('Unknown share type'));
|
||||||
return new \OC_OCS_Result(null, 400, $this->l->t('Unknown share type'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$share->setShareType($shareType);
|
$share->setShareType($shareType);
|
||||||
|
@ -403,23 +401,19 @@ class Share20OCS {
|
||||||
$share = $this->shareManager->createShare($share);
|
$share = $this->shareManager->createShare($share);
|
||||||
} catch (GenericShareException $e) {
|
} catch (GenericShareException $e) {
|
||||||
$code = $e->getCode() === 0 ? 403 : $e->getCode();
|
$code = $e->getCode() === 0 ? 403 : $e->getCode();
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSException($e->getHint(), $code);
|
||||||
return new \OC_OCS_Result(null, $code, $e->getHint());
|
|
||||||
}catch (\Exception $e) {
|
}catch (\Exception $e) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSForbiddenException($e->getMessage());
|
||||||
return new \OC_OCS_Result(null, 403, $e->getMessage());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$output = $this->formatShare($share);
|
$output = $this->formatShare($share);
|
||||||
|
|
||||||
$share->getNode()->unlock(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
return new DataResponse(['data' => $output]);
|
||||||
|
|
||||||
return new \OC_OCS_Result($output);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \OCP\Files\File|\OCP\Files\Folder $node
|
* @param \OCP\Files\File|\OCP\Files\Folder $node
|
||||||
* @return \OC_OCS_Result
|
* @return DataResponse
|
||||||
*/
|
*/
|
||||||
private function getSharedWithMe($node = null) {
|
private function getSharedWithMe($node = null) {
|
||||||
$userShares = $this->shareManager->getSharedWith($this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_USER, $node, -1, 0);
|
$userShares = $this->shareManager->getSharedWith($this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_USER, $node, -1, 0);
|
||||||
|
@ -438,16 +432,17 @@ class Share20OCS {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new \OC_OCS_Result($formatted);
|
return new DataResponse(['data' => $formatted]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \OCP\Files\Folder $folder
|
* @param \OCP\Files\Folder $folder
|
||||||
* @return \OC_OCS_Result
|
* @return DataResponse
|
||||||
|
* @throws OCSBadRequestException
|
||||||
*/
|
*/
|
||||||
private function getSharesInDir($folder) {
|
private function getSharesInDir($folder) {
|
||||||
if (!($folder instanceof \OCP\Files\Folder)) {
|
if (!($folder instanceof \OCP\Files\Folder)) {
|
||||||
return new \OC_OCS_Result(null, 400, $this->l->t('Not a directory'));
|
throw new OCSBadRequestException($this->l->t('Not a directory'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$nodes = $folder->getDirectoryListing();
|
$nodes = $folder->getDirectoryListing();
|
||||||
|
@ -471,25 +466,24 @@ class Share20OCS {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new \OC_OCS_Result($formatted);
|
return new DataResponse(['data' => $formatted]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The getShares function.
|
* The getShares function.
|
||||||
*
|
*
|
||||||
|
* @NoAdminRequired
|
||||||
|
*
|
||||||
* - Get shares by the current user
|
* - Get shares by the current user
|
||||||
* - Get shares by the current user and reshares (?reshares=true)
|
* - Get shares by the current user and reshares (?reshares=true)
|
||||||
* - Get shares with the current user (?shared_with_me=true)
|
* - Get shares with the current user (?shared_with_me=true)
|
||||||
* - Get shares for a specific path (?path=...)
|
* - Get shares for a specific path (?path=...)
|
||||||
* - Get all shares in a folder (?subfiles=true&path=..)
|
* - Get all shares in a folder (?subfiles=true&path=..)
|
||||||
*
|
*
|
||||||
* @return \OC_OCS_Result
|
* @return DataResponse
|
||||||
|
* @throws OCSNotFoundException
|
||||||
*/
|
*/
|
||||||
public function getShares() {
|
public function getShares() {
|
||||||
if (!$this->shareManager->shareApiEnabled()) {
|
|
||||||
return new \OC_OCS_Result();
|
|
||||||
}
|
|
||||||
|
|
||||||
$sharedWithMe = $this->request->getParam('shared_with_me', null);
|
$sharedWithMe = $this->request->getParam('shared_with_me', null);
|
||||||
$reshares = $this->request->getParam('reshares', null);
|
$reshares = $this->request->getParam('reshares', null);
|
||||||
$subfiles = $this->request->getParam('subfiles');
|
$subfiles = $this->request->getParam('subfiles');
|
||||||
|
@ -499,27 +493,21 @@ class Share20OCS {
|
||||||
$userFolder = $this->rootFolder->getUserFolder($this->currentUser->getUID());
|
$userFolder = $this->rootFolder->getUserFolder($this->currentUser->getUID());
|
||||||
try {
|
try {
|
||||||
$path = $userFolder->get($path);
|
$path = $userFolder->get($path);
|
||||||
$path->lock(ILockingProvider::LOCK_SHARED);
|
$this->lock($path);
|
||||||
} catch (\OCP\Files\NotFoundException $e) {
|
} catch (\OCP\Files\NotFoundException $e) {
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Wrong path, file/folder doesn\'t exist'));
|
throw new OCSNotFoundException($this->l->t('Wrong path, file/folder doesn\'t exist'));
|
||||||
} catch (LockedException $e) {
|
} catch (LockedException $e) {
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Could not lock path'));
|
throw new OCSNotFoundException($this->l->t('Could not lock path'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($sharedWithMe === 'true') {
|
if ($sharedWithMe === 'true') {
|
||||||
$result = $this->getSharedWithMe($path);
|
$result = $this->getSharedWithMe($path);
|
||||||
if ($path !== null) {
|
|
||||||
$path->unlock(ILockingProvider::LOCK_SHARED);
|
|
||||||
}
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($subfiles === 'true') {
|
if ($subfiles === 'true') {
|
||||||
$result = $this->getSharesInDir($path);
|
$result = $this->getSharesInDir($path);
|
||||||
if ($path !== null) {
|
|
||||||
$path->unlock(ILockingProvider::LOCK_SHARED);
|
|
||||||
}
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -549,33 +537,29 @@ class Share20OCS {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($path !== null) {
|
return new DataResponse(['data' => $formatted]);
|
||||||
$path->unlock(ILockingProvider::LOCK_SHARED);
|
|
||||||
}
|
|
||||||
|
|
||||||
return new \OC_OCS_Result($formatted);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @NoAdminRequired
|
||||||
|
*
|
||||||
* @param int $id
|
* @param int $id
|
||||||
* @return \OC_OCS_Result
|
* @return DataResponse
|
||||||
|
* @throws OCSNotFoundException
|
||||||
|
* @throws OCSBadRequestException
|
||||||
|
* @throws OCSForbiddenException
|
||||||
*/
|
*/
|
||||||
public function updateShare($id) {
|
public function updateShare($id) {
|
||||||
if (!$this->shareManager->shareApiEnabled()) {
|
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Share API is disabled'));
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$share = $this->getShareById($id);
|
$share = $this->getShareById($id);
|
||||||
} catch (ShareNotFound $e) {
|
} catch (ShareNotFound $e) {
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Wrong share ID, share doesn\'t exist'));
|
throw new OCSNotFoundException($this->l->t('Wrong share ID, share doesn\'t exist'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$share->getNode()->lock(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
$this->lock($share->getNode());
|
||||||
|
|
||||||
if (!$this->canAccessShare($share, false)) {
|
if (!$this->canAccessShare($share, false)) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSNotFoundException($this->l->t('Wrong share ID, share doesn\'t exist'));
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Wrong share ID, share doesn\'t exist'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$permissions = $this->request->getParam('permissions', null);
|
$permissions = $this->request->getParam('permissions', null);
|
||||||
|
@ -588,8 +572,7 @@ class Share20OCS {
|
||||||
*/
|
*/
|
||||||
if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
|
if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
|
||||||
if ($permissions === null && $password === null && $publicUpload === null && $expireDate === null) {
|
if ($permissions === null && $password === null && $publicUpload === null && $expireDate === null) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSBadRequestException($this->l->t('Wrong or no update parameter given'));
|
||||||
return new \OC_OCS_Result(null, 400, 'Wrong or no update parameter given');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$newPermissions = null;
|
$newPermissions = null;
|
||||||
|
@ -611,8 +594,7 @@ class Share20OCS {
|
||||||
\OCP\Constants::PERMISSION_CREATE, // hidden file list
|
\OCP\Constants::PERMISSION_CREATE, // hidden file list
|
||||||
])
|
])
|
||||||
) {
|
) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSBadRequestException($this->l->t('Can\'t change permissions for public share links'));
|
||||||
return new \OC_OCS_Result(null, 400, $this->l->t('Can\'t change permissions for public share links'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
@ -622,13 +604,11 @@ class Share20OCS {
|
||||||
$newPermissions === (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE)
|
$newPermissions === (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE)
|
||||||
) {
|
) {
|
||||||
if (!$this->shareManager->shareApiLinkAllowPublicUpload()) {
|
if (!$this->shareManager->shareApiLinkAllowPublicUpload()) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSForbiddenException($this->l->t('Public upload disabled by the administrator'));
|
||||||
return new \OC_OCS_Result(null, 403, $this->l->t('Public upload disabled by the administrator'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!($share->getNode() instanceof \OCP\Files\Folder)) {
|
if (!($share->getNode() instanceof \OCP\Files\Folder)) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSBadRequestException($this->l->t('Public upload is only possible for publicly shared folders'));
|
||||||
return new \OC_OCS_Result(null, 400, $this->l->t('Public upload is only possible for publicly shared folders'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// normalize to correct public upload permissions
|
// normalize to correct public upload permissions
|
||||||
|
@ -645,8 +625,7 @@ class Share20OCS {
|
||||||
try {
|
try {
|
||||||
$expireDate = $this->parseDate($expireDate);
|
$expireDate = $this->parseDate($expireDate);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSBadRequestException($e->getMessage());
|
||||||
return new \OC_OCS_Result(null, 400, $e->getMessage());
|
|
||||||
}
|
}
|
||||||
$share->setExpirationDate($expireDate);
|
$share->setExpirationDate($expireDate);
|
||||||
}
|
}
|
||||||
|
@ -660,8 +639,7 @@ class Share20OCS {
|
||||||
} else {
|
} else {
|
||||||
// For other shares only permissions is valid.
|
// For other shares only permissions is valid.
|
||||||
if ($permissions === null) {
|
if ($permissions === null) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSBadRequestException($this->l->t('Wrong or no update parameter given'));
|
||||||
return new \OC_OCS_Result(null, 400, $this->l->t('Wrong or no update parameter given'));
|
|
||||||
} else {
|
} else {
|
||||||
$permissions = (int)$permissions;
|
$permissions = (int)$permissions;
|
||||||
$share->setPermissions($permissions);
|
$share->setPermissions($permissions);
|
||||||
|
@ -673,6 +651,7 @@ class Share20OCS {
|
||||||
$incomingShares = $this->shareManager->getSharedWith($this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_USER, $share->getNode(), -1, 0);
|
$incomingShares = $this->shareManager->getSharedWith($this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_USER, $share->getNode(), -1, 0);
|
||||||
$incomingShares = array_merge($incomingShares, $this->shareManager->getSharedWith($this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_GROUP, $share->getNode(), -1, 0));
|
$incomingShares = array_merge($incomingShares, $this->shareManager->getSharedWith($this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_GROUP, $share->getNode(), -1, 0));
|
||||||
|
|
||||||
|
/** @var \OCP\Share\IShare[] $incomingShares */
|
||||||
if (!empty($incomingShares)) {
|
if (!empty($incomingShares)) {
|
||||||
$maxPermissions = 0;
|
$maxPermissions = 0;
|
||||||
foreach ($incomingShares as $incomingShare) {
|
foreach ($incomingShares as $incomingShare) {
|
||||||
|
@ -680,8 +659,7 @@ class Share20OCS {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($share->getPermissions() & ~$maxPermissions) {
|
if ($share->getPermissions() & ~$maxPermissions) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSNotFoundException($this->l->t('Cannot increase permissions'));
|
||||||
return new \OC_OCS_Result(null, 404, $this->l->t('Cannot increase permissions'));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -690,13 +668,10 @@ class Share20OCS {
|
||||||
try {
|
try {
|
||||||
$share = $this->shareManager->updateShare($share);
|
$share = $this->shareManager->updateShare($share);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
|
throw new OCSBadRequestException($e->getMessage());
|
||||||
return new \OC_OCS_Result(null, 400, $e->getMessage());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$share->getNode()->unlock(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
return new DataResponse(['data' => $this->formatShare($share)]);
|
||||||
|
|
||||||
return new \OC_OCS_Result($this->formatShare($share));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -782,4 +757,22 @@ class Share20OCS {
|
||||||
|
|
||||||
return $share;
|
return $share;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lock a Node
|
||||||
|
* @param \OCP\Files\Node $node
|
||||||
|
*/
|
||||||
|
private function lock(\OCP\Files\Node $node) {
|
||||||
|
$node->lock(ILockingProvider::LOCK_SHARED);
|
||||||
|
$this->lockedNode = $node;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cleanup the remaining locks
|
||||||
|
*/
|
||||||
|
public function cleanup() {
|
||||||
|
if ($this->lockedNode !== null) {
|
||||||
|
$this->lockedNode->unlock(ILockingProvider::LOCK_SHARED);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,8 @@
|
||||||
namespace OCA\Files_Sharing\AppInfo;
|
namespace OCA\Files_Sharing\AppInfo;
|
||||||
|
|
||||||
use OCA\FederatedFileSharing\DiscoveryManager;
|
use OCA\FederatedFileSharing\DiscoveryManager;
|
||||||
|
use OCA\Files_Sharing\API\Share20OCS;
|
||||||
|
use OCA\Files_Sharing\Middleware\OCSShareAPIMiddleware;
|
||||||
use OCA\Files_Sharing\MountProvider;
|
use OCA\Files_Sharing\MountProvider;
|
||||||
use OCP\AppFramework\App;
|
use OCP\AppFramework\App;
|
||||||
use OC\AppFramework\Utility\SimpleContainer;
|
use OC\AppFramework\Utility\SimpleContainer;
|
||||||
|
@ -35,7 +37,6 @@ use OCA\Files_Sharing\Controllers\ExternalSharesController;
|
||||||
use OCA\Files_Sharing\Controllers\ShareController;
|
use OCA\Files_Sharing\Controllers\ShareController;
|
||||||
use OCA\Files_Sharing\Middleware\SharingCheckMiddleware;
|
use OCA\Files_Sharing\Middleware\SharingCheckMiddleware;
|
||||||
use \OCP\IContainer;
|
use \OCP\IContainer;
|
||||||
use OCA\Files_Sharing\Capabilities;
|
|
||||||
|
|
||||||
class Application extends App {
|
class Application extends App {
|
||||||
public function __construct(array $urlParams = array()) {
|
public function __construct(array $urlParams = array()) {
|
||||||
|
@ -73,6 +74,19 @@ class Application extends App {
|
||||||
$c->query('HttpClientService')
|
$c->query('HttpClientService')
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
$container->registerService('ShareAPIController', function (SimpleContainer $c) use ($server) {
|
||||||
|
return new Share20OCS(
|
||||||
|
$c->query('AppName'),
|
||||||
|
$c->query('Request'),
|
||||||
|
$server->getShareManager(),
|
||||||
|
$server->getGroupManager(),
|
||||||
|
$server->getUserManager(),
|
||||||
|
$server->getRootFolder(),
|
||||||
|
$server->getURLGenerator(),
|
||||||
|
$server->getUserSession()->getUser(),
|
||||||
|
$server->getL10N($c->query('AppName'))
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Core class wrappers
|
* Core class wrappers
|
||||||
|
@ -110,8 +124,16 @@ class Application extends App {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$container->registerService('OCSShareAPIMiddleware', function (SimpleContainer $c) use ($server) {
|
||||||
|
return new OCSShareAPIMiddleware(
|
||||||
|
$server->getShareManager(),
|
||||||
|
$server->getL10N($c->query('AppName'))
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
// Execute middlewares
|
// Execute middlewares
|
||||||
$container->registerMiddleware('SharingCheckMiddleware');
|
$container->registerMiddleware('SharingCheckMiddleware');
|
||||||
|
$container->registerMiddleWare('OCSShareAPIMiddleware');
|
||||||
|
|
||||||
$container->registerService('MountProvider', function (IContainer $c) {
|
$container->registerService('MountProvider', function (IContainer $c) {
|
||||||
/** @var \OCP\IServerContainer $server */
|
/** @var \OCP\IServerContainer $server */
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace OCA\Files_Sharing\Middleware;
|
||||||
|
|
||||||
|
use OCA\Files_Sharing\API\Share20OCS;
|
||||||
|
use OCP\AppFramework\Http\Response;
|
||||||
|
use OCP\AppFramework\Middleware;
|
||||||
|
use OCP\AppFramework\OCS\OCSNotFoundException;
|
||||||
|
use OCP\IL10N;
|
||||||
|
use OCP\Share\IManager;
|
||||||
|
|
||||||
|
class OCSShareAPIMiddleware extends Middleware {
|
||||||
|
/** @var IManager */
|
||||||
|
private $shareManager;
|
||||||
|
/** @var IL10N */
|
||||||
|
private $l;
|
||||||
|
|
||||||
|
public function __construct(IManager $shareManager,
|
||||||
|
IL10N $l) {
|
||||||
|
$this->shareManager = $shareManager;
|
||||||
|
$this->l = $l;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param \OCP\AppFramework\Controller $controller
|
||||||
|
* @param string $methodName
|
||||||
|
*
|
||||||
|
* @throws OCSNotFoundException
|
||||||
|
*/
|
||||||
|
public function beforeController($controller, $methodName) {
|
||||||
|
if ($controller instanceof Share20OCS) {
|
||||||
|
if (!$this->shareManager->shareApiEnabled()) {
|
||||||
|
throw new OCSNotFoundException($this->l->t('Share API is disabled'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param \OCP\AppFramework\Controller $controller
|
||||||
|
* @param string $methodName
|
||||||
|
* @param Response $response
|
||||||
|
* @return Response
|
||||||
|
*/
|
||||||
|
public function afterController($controller, $methodName, Response $response) {
|
||||||
|
if ($controller instanceof Share20OCS) {
|
||||||
|
/** @var Share20OCS $controller */
|
||||||
|
$controller->cleanup();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
}
|
|
@ -23,6 +23,8 @@
|
||||||
*/
|
*/
|
||||||
namespace OCA\Files_Sharing\Tests\API;
|
namespace OCA\Files_Sharing\Tests\API;
|
||||||
|
|
||||||
|
use OCP\AppFramework\Http\DataResponse;
|
||||||
|
use OCP\AppFramework\OCS\OCSNotFoundException;
|
||||||
use OCP\IL10N;
|
use OCP\IL10N;
|
||||||
use OCA\Files_Sharing\API\Share20OCS;
|
use OCA\Files_Sharing\API\Share20OCS;
|
||||||
use OCP\Files\NotFoundException;
|
use OCP\Files\NotFoundException;
|
||||||
|
@ -33,6 +35,7 @@ use OCP\IURLGenerator;
|
||||||
use OCP\IUser;
|
use OCP\IUser;
|
||||||
use OCP\Files\IRootFolder;
|
use OCP\Files\IRootFolder;
|
||||||
use OCP\Lock\LockedException;
|
use OCP\Lock\LockedException;
|
||||||
|
use Punic\Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Share20OCSTest
|
* Class Share20OCSTest
|
||||||
|
@ -42,6 +45,9 @@ use OCP\Lock\LockedException;
|
||||||
*/
|
*/
|
||||||
class Share20OCSTest extends \Test\TestCase {
|
class Share20OCSTest extends \Test\TestCase {
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
|
private $appName = 'files_sharing';
|
||||||
|
|
||||||
/** @var \OC\Share20\Manager | \PHPUnit_Framework_MockObject_MockObject */
|
/** @var \OC\Share20\Manager | \PHPUnit_Framework_MockObject_MockObject */
|
||||||
private $shareManager;
|
private $shareManager;
|
||||||
|
|
||||||
|
@ -94,10 +100,11 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
}));
|
}));
|
||||||
|
|
||||||
$this->ocs = new Share20OCS(
|
$this->ocs = new Share20OCS(
|
||||||
|
$this->appName,
|
||||||
|
$this->request,
|
||||||
$this->shareManager,
|
$this->shareManager,
|
||||||
$this->groupManager,
|
$this->groupManager,
|
||||||
$this->userManager,
|
$this->userManager,
|
||||||
$this->request,
|
|
||||||
$this->rootFolder,
|
$this->rootFolder,
|
||||||
$this->urlGenerator,
|
$this->urlGenerator,
|
||||||
$this->currentUser,
|
$this->currentUser,
|
||||||
|
@ -108,10 +115,11 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
private function mockFormatShare() {
|
private function mockFormatShare() {
|
||||||
return $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS')
|
return $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS')
|
||||||
->setConstructorArgs([
|
->setConstructorArgs([
|
||||||
|
$this->appName,
|
||||||
|
$this->request,
|
||||||
$this->shareManager,
|
$this->shareManager,
|
||||||
$this->groupManager,
|
$this->groupManager,
|
||||||
$this->userManager,
|
$this->userManager,
|
||||||
$this->request,
|
|
||||||
$this->rootFolder,
|
$this->rootFolder,
|
||||||
$this->urlGenerator,
|
$this->urlGenerator,
|
||||||
$this->currentUser,
|
$this->currentUser,
|
||||||
|
@ -124,6 +132,10 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
return \OC::$server->getShareManager()->newShare();
|
return \OC::$server->getShareManager()->newShare();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSNotFoundException
|
||||||
|
* @expectedExceptionMessage Wrong share ID, share doesn't exist
|
||||||
|
*/
|
||||||
public function testDeleteShareShareNotFound() {
|
public function testDeleteShareShareNotFound() {
|
||||||
$this->shareManager
|
$this->shareManager
|
||||||
->expects($this->exactly(2))
|
->expects($this->exactly(2))
|
||||||
|
@ -138,8 +150,7 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
|
|
||||||
$this->shareManager->method('outgoingServer2ServerSharesAllowed')->willReturn(true);
|
$this->shareManager->method('outgoingServer2ServerSharesAllowed')->willReturn(true);
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 404, 'Wrong share ID, share doesn\'t exist');
|
$this->ocs->deleteShare(42);
|
||||||
$this->assertEquals($expected, $this->ocs->deleteShare(42));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testDeleteShare() {
|
public function testDeleteShare() {
|
||||||
|
@ -161,14 +172,18 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$node->expects($this->once())
|
$node->expects($this->once())
|
||||||
->method('lock')
|
->method('lock')
|
||||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
||||||
$node->expects($this->once())
|
|
||||||
->method('unlock')
|
|
||||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result();
|
$expected = new DataResponse();
|
||||||
$this->assertEquals($expected, $this->ocs->deleteShare(42));
|
$result = $this->ocs->deleteShare(42);
|
||||||
|
|
||||||
|
$this->assertInstanceOf(get_class($expected), $result);
|
||||||
|
$this->assertEquals($expected->getData(), $result->getData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSNotFoundException
|
||||||
|
* @expectedExceptionMessage could not delete share
|
||||||
|
*/
|
||||||
public function testDeleteShareLocked() {
|
public function testDeleteShareLocked() {
|
||||||
$node = $this->getMockBuilder('\OCP\Files\File')->getMock();
|
$node = $this->getMockBuilder('\OCP\Files\File')->getMock();
|
||||||
|
|
||||||
|
@ -189,12 +204,8 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
->method('lock')
|
->method('lock')
|
||||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED)
|
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED)
|
||||||
->will($this->throwException(new LockedException('mypath')));
|
->will($this->throwException(new LockedException('mypath')));
|
||||||
$node->expects($this->never())
|
|
||||||
->method('unlock')
|
|
||||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 404, 'could not delete share');
|
$this->ocs->deleteShare(42);
|
||||||
$this->assertEquals($expected, $this->ocs->deleteShare(42));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -411,10 +422,11 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
public function testGetShare(\OCP\Share\IShare $share, array $result) {
|
public function testGetShare(\OCP\Share\IShare $share, array $result) {
|
||||||
$ocs = $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS')
|
$ocs = $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS')
|
||||||
->setConstructorArgs([
|
->setConstructorArgs([
|
||||||
|
$this->appName,
|
||||||
|
$this->request,
|
||||||
$this->shareManager,
|
$this->shareManager,
|
||||||
$this->groupManager,
|
$this->groupManager,
|
||||||
$this->userManager,
|
$this->userManager,
|
||||||
$this->request,
|
|
||||||
$this->rootFolder,
|
$this->rootFolder,
|
||||||
$this->urlGenerator,
|
$this->urlGenerator,
|
||||||
$this->currentUser,
|
$this->currentUser,
|
||||||
|
@ -422,7 +434,9 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
])->setMethods(['canAccessShare'])
|
])->setMethods(['canAccessShare'])
|
||||||
->getMock();
|
->getMock();
|
||||||
|
|
||||||
$ocs->method('canAccessShare')->willReturn(true);
|
$ocs->expects($this->any())
|
||||||
|
->method('canAccessShare')
|
||||||
|
->willReturn(true);
|
||||||
|
|
||||||
$this->shareManager
|
$this->shareManager
|
||||||
->expects($this->once())
|
->expects($this->once())
|
||||||
|
@ -471,10 +485,13 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
['group', $group],
|
['group', $group],
|
||||||
]));
|
]));
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result([$result]);
|
$this->assertEquals($result, $ocs->getShare($share->getId())->getData()['data'][0]);
|
||||||
$this->assertEquals($expected->getData(), $ocs->getShare($share->getId())->getData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSNotFoundException
|
||||||
|
* @expectedExceptionMessage Wrong share ID, share doesn't exist
|
||||||
|
*/
|
||||||
public function testGetShareInvalidNode() {
|
public function testGetShareInvalidNode() {
|
||||||
$share = \OC::$server->getShareManager()->newShare();
|
$share = \OC::$server->getShareManager()->newShare();
|
||||||
$share->setSharedBy('initiator')
|
$share->setSharedBy('initiator')
|
||||||
|
@ -487,8 +504,7 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
->with('ocinternal:42')
|
->with('ocinternal:42')
|
||||||
->willReturn($share);
|
->willReturn($share);
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 404, 'Wrong share ID, share doesn\'t exist');
|
$this->ocs->getShare(42);
|
||||||
$this->assertEquals($expected->getMeta(), $this->ocs->getShare(42)->getMeta());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCanAccessShare() {
|
public function testCanAccessShare() {
|
||||||
|
@ -538,15 +554,18 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$this->assertFalse($this->invokePrivate($this->ocs, 'canAccessShare', [$share]));
|
$this->assertFalse($this->invokePrivate($this->ocs, 'canAccessShare', [$share]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSNotFoundException
|
||||||
|
* @expectedExceptionMessage Please specify a file or folder path
|
||||||
|
*/
|
||||||
public function testCreateShareNoPath() {
|
public function testCreateShareNoPath() {
|
||||||
$expected = new \OC_OCS_Result(null, 404, 'Please specify a file or folder path');
|
$this->ocs->createShare();
|
||||||
|
|
||||||
$result = $this->ocs->createShare();
|
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSNotFoundException
|
||||||
|
* @expectedExceptionMessage Wrong path, file/folder doesn't exist
|
||||||
|
*/
|
||||||
public function testCreateShareInvalidPath() {
|
public function testCreateShareInvalidPath() {
|
||||||
$this->request
|
$this->request
|
||||||
->method('getParam')
|
->method('getParam')
|
||||||
|
@ -565,14 +584,13 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
->with('invalid-path')
|
->with('invalid-path')
|
||||||
->will($this->throwException(new \OCP\Files\NotFoundException()));
|
->will($this->throwException(new \OCP\Files\NotFoundException()));
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 404, 'Wrong path, file/folder doesn\'t exist');
|
$this->ocs->createShare();
|
||||||
|
|
||||||
$result = $this->ocs->createShare();
|
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSNotFoundException
|
||||||
|
* @expectedExceptionMessage invalid permissions
|
||||||
|
*/
|
||||||
public function testCreateShareInvalidPermissions() {
|
public function testCreateShareInvalidPermissions() {
|
||||||
$share = $this->newShare();
|
$share = $this->newShare();
|
||||||
$this->shareManager->method('newShare')->willReturn($share);
|
$this->shareManager->method('newShare')->willReturn($share);
|
||||||
|
@ -600,14 +618,13 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
->method('lock')
|
->method('lock')
|
||||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 404, 'invalid permissions');
|
$this->ocs->createShare();
|
||||||
|
|
||||||
$result = $this->ocs->createShare();
|
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSNotFoundException
|
||||||
|
* @expectedExceptionMessage Please specify a valid user
|
||||||
|
*/
|
||||||
public function testCreateShareUserNoShareWith() {
|
public function testCreateShareUserNoShareWith() {
|
||||||
$share = $this->newShare();
|
$share = $this->newShare();
|
||||||
$this->shareManager->method('newShare')->willReturn($share);
|
$this->shareManager->method('newShare')->willReturn($share);
|
||||||
|
@ -641,14 +658,13 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
->method('lock')
|
->method('lock')
|
||||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 404, 'Please specify a valid user');
|
$this->ocs->createShare();
|
||||||
|
|
||||||
$result = $this->ocs->createShare();
|
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSNotFoundException
|
||||||
|
* @expectedExceptionMessage Please specify a valid user
|
||||||
|
*/
|
||||||
public function testCreateShareUserNoValidShareWith() {
|
public function testCreateShareUserNoValidShareWith() {
|
||||||
$share = $this->newShare();
|
$share = $this->newShare();
|
||||||
$this->shareManager->method('newShare')->willReturn($share);
|
$this->shareManager->method('newShare')->willReturn($share);
|
||||||
|
@ -679,16 +695,11 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
->with('valid-path')
|
->with('valid-path')
|
||||||
->willReturn($path);
|
->willReturn($path);
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 404, 'Please specify a valid user');
|
|
||||||
|
|
||||||
$path->expects($this->once())
|
$path->expects($this->once())
|
||||||
->method('lock')
|
->method('lock')
|
||||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
||||||
|
|
||||||
$result = $this->ocs->createShare();
|
$this->ocs->createShare();
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCreateShareUser() {
|
public function testCreateShareUser() {
|
||||||
|
@ -697,10 +708,11 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
|
|
||||||
$ocs = $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS')
|
$ocs = $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS')
|
||||||
->setConstructorArgs([
|
->setConstructorArgs([
|
||||||
|
$this->appName,
|
||||||
|
$this->request,
|
||||||
$this->shareManager,
|
$this->shareManager,
|
||||||
$this->groupManager,
|
$this->groupManager,
|
||||||
$this->userManager,
|
$this->userManager,
|
||||||
$this->request,
|
|
||||||
$this->rootFolder,
|
$this->rootFolder,
|
||||||
$this->urlGenerator,
|
$this->urlGenerator,
|
||||||
$this->currentUser,
|
$this->currentUser,
|
||||||
|
@ -739,9 +751,6 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$path->expects($this->once())
|
$path->expects($this->once())
|
||||||
->method('lock')
|
->method('lock')
|
||||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
||||||
$path->expects($this->once())
|
|
||||||
->method('unlock')
|
|
||||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
|
||||||
|
|
||||||
$this->shareManager->method('createShare')
|
$this->shareManager->method('createShare')
|
||||||
->with($this->callback(function (\OCP\Share\IShare $share) use ($path) {
|
->with($this->callback(function (\OCP\Share\IShare $share) use ($path) {
|
||||||
|
@ -757,13 +766,17 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
}))
|
}))
|
||||||
->will($this->returnArgument(0));
|
->will($this->returnArgument(0));
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result();
|
$expected = new DataResponse(['data' => null]);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
$this->assertInstanceOf(get_class($expected), $result);
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
$this->assertEquals($expected->getData(), $result->getData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSNotFoundException
|
||||||
|
* @expectedExceptionMessage Please specify a valid user
|
||||||
|
*/
|
||||||
public function testCreateShareGroupNoValidShareWith() {
|
public function testCreateShareGroupNoValidShareWith() {
|
||||||
$share = $this->newShare();
|
$share = $this->newShare();
|
||||||
$this->shareManager->method('newShare')->willReturn($share);
|
$this->shareManager->method('newShare')->willReturn($share);
|
||||||
|
@ -795,16 +808,11 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
->with('valid-path')
|
->with('valid-path')
|
||||||
->willReturn($path);
|
->willReturn($path);
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 404, 'Please specify a valid user');
|
|
||||||
|
|
||||||
$path->expects($this->once())
|
$path->expects($this->once())
|
||||||
->method('lock')
|
->method('lock')
|
||||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
||||||
|
|
||||||
$result = $this->ocs->createShare();
|
$this->ocs->createShare();
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCreateShareGroup() {
|
public function testCreateShareGroup() {
|
||||||
|
@ -813,10 +821,11 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
|
|
||||||
$ocs = $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS')
|
$ocs = $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS')
|
||||||
->setConstructorArgs([
|
->setConstructorArgs([
|
||||||
|
$this->appName,
|
||||||
|
$this->request,
|
||||||
$this->shareManager,
|
$this->shareManager,
|
||||||
$this->groupManager,
|
$this->groupManager,
|
||||||
$this->userManager,
|
$this->userManager,
|
||||||
$this->request,
|
|
||||||
$this->rootFolder,
|
$this->rootFolder,
|
||||||
$this->urlGenerator,
|
$this->urlGenerator,
|
||||||
$this->currentUser,
|
$this->currentUser,
|
||||||
|
@ -835,9 +844,9 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
|
|
||||||
$userFolder = $this->getMockBuilder('\OCP\Files\Folder')->getMock();
|
$userFolder = $this->getMockBuilder('\OCP\Files\Folder')->getMock();
|
||||||
$this->rootFolder->expects($this->once())
|
$this->rootFolder->expects($this->once())
|
||||||
->method('getUserFolder')
|
->method('getUserFolder')
|
||||||
->with('currentUser')
|
->with('currentUser')
|
||||||
->willReturn($userFolder);
|
->willReturn($userFolder);
|
||||||
|
|
||||||
$path = $this->getMockBuilder('\OCP\Files\Folder')->getMock();
|
$path = $this->getMockBuilder('\OCP\Files\Folder')->getMock();
|
||||||
$storage = $this->getMockBuilder('OCP\Files\Storage')->getMock();
|
$storage = $this->getMockBuilder('OCP\Files\Storage')->getMock();
|
||||||
|
@ -846,9 +855,9 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
->willReturn(false);
|
->willReturn(false);
|
||||||
$path->method('getStorage')->willReturn($storage);
|
$path->method('getStorage')->willReturn($storage);
|
||||||
$userFolder->expects($this->once())
|
$userFolder->expects($this->once())
|
||||||
->method('get')
|
->method('get')
|
||||||
->with('valid-path')
|
->with('valid-path')
|
||||||
->willReturn($path);
|
->willReturn($path);
|
||||||
|
|
||||||
$this->groupManager->method('groupExists')->with('validGroup')->willReturn(true);
|
$this->groupManager->method('groupExists')->with('validGroup')->willReturn(true);
|
||||||
|
|
||||||
|
@ -859,27 +868,28 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$path->expects($this->once())
|
$path->expects($this->once())
|
||||||
->method('lock')
|
->method('lock')
|
||||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
||||||
$path->expects($this->once())
|
|
||||||
->method('unlock')
|
|
||||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
|
||||||
|
|
||||||
$this->shareManager->method('createShare')
|
$this->shareManager->method('createShare')
|
||||||
->with($this->callback(function (\OCP\Share\IShare $share) use ($path) {
|
->with($this->callback(function (\OCP\Share\IShare $share) use ($path) {
|
||||||
return $share->getNode() === $path &&
|
return $share->getNode() === $path &&
|
||||||
$share->getPermissions() === \OCP\Constants::PERMISSION_ALL &&
|
$share->getPermissions() === \OCP\Constants::PERMISSION_ALL &&
|
||||||
$share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP &&
|
$share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP &&
|
||||||
$share->getSharedWith() === 'validGroup' &&
|
$share->getSharedWith() === 'validGroup' &&
|
||||||
$share->getSharedBy() === 'currentUser';
|
$share->getSharedBy() === 'currentUser';
|
||||||
}))
|
}))
|
||||||
->will($this->returnArgument(0));
|
->will($this->returnArgument(0));
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result();
|
$expected = new DataResponse(['data' => null]);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
$this->assertInstanceOf(get_class($expected), $result);
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
$this->assertEquals($expected->getData(), $result->getData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSNotFoundException
|
||||||
|
* @expectedExceptionMessage Group sharing is disabled by the administrator
|
||||||
|
*/
|
||||||
public function testCreateShareGroupNotAllowed() {
|
public function testCreateShareGroupNotAllowed() {
|
||||||
$share = $this->newShare();
|
$share = $this->newShare();
|
||||||
$this->shareManager->method('newShare')->willReturn($share);
|
$this->shareManager->method('newShare')->willReturn($share);
|
||||||
|
@ -916,14 +926,13 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
->method('allowGroupSharing')
|
->method('allowGroupSharing')
|
||||||
->willReturn(false);
|
->willReturn(false);
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 404, 'Group sharing is disabled by the administrator');
|
$this->ocs->createShare();
|
||||||
|
|
||||||
$result = $this->ocs->createShare();
|
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSNotFoundException
|
||||||
|
* @expectedExceptionMessage Public link sharing is disabled by the administrator
|
||||||
|
*/
|
||||||
public function testCreateShareLinkNoLinksAllowed() {
|
public function testCreateShareLinkNoLinksAllowed() {
|
||||||
$this->request
|
$this->request
|
||||||
->method('getParam')
|
->method('getParam')
|
||||||
|
@ -943,13 +952,13 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
|
|
||||||
$this->shareManager->method('newShare')->willReturn(\OC::$server->getShareManager()->newShare());
|
$this->shareManager->method('newShare')->willReturn(\OC::$server->getShareManager()->newShare());
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 404, 'Public link sharing is disabled by the administrator');
|
$this->ocs->createShare();
|
||||||
$result = $this->ocs->createShare();
|
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSForbiddenException
|
||||||
|
* @expectedExceptionMessage Public upload disabled by the administrator
|
||||||
|
*/
|
||||||
public function testCreateShareLinkNoPublicUpload() {
|
public function testCreateShareLinkNoPublicUpload() {
|
||||||
$this->request
|
$this->request
|
||||||
->method('getParam')
|
->method('getParam')
|
||||||
|
@ -971,13 +980,13 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$this->shareManager->method('newShare')->willReturn(\OC::$server->getShareManager()->newShare());
|
$this->shareManager->method('newShare')->willReturn(\OC::$server->getShareManager()->newShare());
|
||||||
$this->shareManager->method('shareApiAllowLinks')->willReturn(true);
|
$this->shareManager->method('shareApiAllowLinks')->willReturn(true);
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 403, 'Public upload disabled by the administrator');
|
$this->ocs->createShare();
|
||||||
$result = $this->ocs->createShare();
|
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSNotFoundException
|
||||||
|
* @expectedExceptionMessage Public upload is only possible for publicly shared folders
|
||||||
|
*/
|
||||||
public function testCreateShareLinkPublicUploadFile() {
|
public function testCreateShareLinkPublicUploadFile() {
|
||||||
$this->request
|
$this->request
|
||||||
->method('getParam')
|
->method('getParam')
|
||||||
|
@ -1000,11 +1009,7 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$this->shareManager->method('shareApiAllowLinks')->willReturn(true);
|
$this->shareManager->method('shareApiAllowLinks')->willReturn(true);
|
||||||
$this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true);
|
$this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true);
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 404, 'Public upload is only possible for publicly shared folders');
|
$this->ocs->createShare();
|
||||||
$result = $this->ocs->createShare();
|
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCreateShareLinkPublicUploadFolder() {
|
public function testCreateShareLinkPublicUploadFolder() {
|
||||||
|
@ -1044,10 +1049,10 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
})
|
})
|
||||||
)->will($this->returnArgument(0));
|
)->will($this->returnArgument(0));
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null);
|
$expected = new DataResponse(['data' => null]);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
$this->assertInstanceOf(get_class($expected), $result);
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
$this->assertEquals($expected->getData(), $result->getData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1088,10 +1093,10 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
})
|
})
|
||||||
)->will($this->returnArgument(0));
|
)->will($this->returnArgument(0));
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null);
|
$expected = new DataResponse(['data' => null]);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
$this->assertInstanceOf(get_class($expected), $result);
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
$this->assertEquals($expected->getData(), $result->getData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1135,13 +1140,17 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
})
|
})
|
||||||
)->will($this->returnArgument(0));
|
)->will($this->returnArgument(0));
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null);
|
$expected = new DataResponse(['data' => null]);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
$this->assertInstanceOf(get_class($expected), $result);
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
$this->assertEquals($expected->getData(), $result->getData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSNotFoundException
|
||||||
|
* @expectedExceptionMessage Invalid date, date format must be YYYY-MM-DD
|
||||||
|
*/
|
||||||
public function testCreateShareInvalidExpireDate() {
|
public function testCreateShareInvalidExpireDate() {
|
||||||
$ocs = $this->mockFormatShare();
|
$ocs = $this->mockFormatShare();
|
||||||
|
|
||||||
|
@ -1168,11 +1177,7 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$this->shareManager->method('shareApiAllowLinks')->willReturn(true);
|
$this->shareManager->method('shareApiAllowLinks')->willReturn(true);
|
||||||
$this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true);
|
$this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true);
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 404, 'Invalid date, date format must be YYYY-MM-DD');
|
$ocs->createShare();
|
||||||
$result = $ocs->createShare();
|
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1185,10 +1190,11 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
|
|
||||||
$ocs = $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS')
|
$ocs = $this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS')
|
||||||
->setConstructorArgs([
|
->setConstructorArgs([
|
||||||
|
$this->appName,
|
||||||
|
$this->request,
|
||||||
$this->shareManager,
|
$this->shareManager,
|
||||||
$this->groupManager,
|
$this->groupManager,
|
||||||
$this->userManager,
|
$this->userManager,
|
||||||
$this->request,
|
|
||||||
$this->rootFolder,
|
$this->rootFolder,
|
||||||
$this->urlGenerator,
|
$this->urlGenerator,
|
||||||
$this->currentUser,
|
$this->currentUser,
|
||||||
|
@ -1236,6 +1242,10 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$ocs->createShare();
|
$ocs->createShare();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSNotFoundException
|
||||||
|
* @expectedExceptionMessage Wrong share ID, share doesn't exist
|
||||||
|
*/
|
||||||
public function testUpdateShareCantAccess() {
|
public function testUpdateShareCantAccess() {
|
||||||
$node = $this->getMockBuilder('\OCP\Files\Folder')->getMock();
|
$node = $this->getMockBuilder('\OCP\Files\Folder')->getMock();
|
||||||
$share = $this->newShare();
|
$share = $this->newShare();
|
||||||
|
@ -1247,13 +1257,13 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
|
|
||||||
$this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
|
$this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 404, 'Wrong share ID, share doesn\'t exist');
|
$this->ocs->updateShare(42);
|
||||||
$result = $this->ocs->updateShare(42);
|
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSBadRequestException
|
||||||
|
* @expectedExceptionMessage Wrong or no update parameter given
|
||||||
|
*/
|
||||||
public function testUpdateNoParametersLink() {
|
public function testUpdateNoParametersLink() {
|
||||||
$node = $this->getMockBuilder('\OCP\Files\Folder')->getMock();
|
$node = $this->getMockBuilder('\OCP\Files\Folder')->getMock();
|
||||||
$share = $this->newShare();
|
$share = $this->newShare();
|
||||||
|
@ -1268,13 +1278,13 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
|
|
||||||
$this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
|
$this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 400, 'Wrong or no update parameter given');
|
$this->ocs->updateShare(42);
|
||||||
$result = $this->ocs->updateShare(42);
|
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSBadRequestException
|
||||||
|
* @expectedExceptionMessage Wrong or no update parameter given
|
||||||
|
*/
|
||||||
public function testUpdateNoParametersOther() {
|
public function testUpdateNoParametersOther() {
|
||||||
$node = $this->getMockBuilder('\OCP\Files\Folder')->getMock();
|
$node = $this->getMockBuilder('\OCP\Files\Folder')->getMock();
|
||||||
$share = $this->newShare();
|
$share = $this->newShare();
|
||||||
|
@ -1289,11 +1299,7 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
|
|
||||||
$this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
|
$this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 400, 'Wrong or no update parameter given');
|
$this->ocs->updateShare(42);
|
||||||
$result = $this->ocs->updateShare(42);
|
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testUpdateLinkShareClear() {
|
public function testUpdateLinkShareClear() {
|
||||||
|
@ -1312,9 +1318,6 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$node->expects($this->once())
|
$node->expects($this->once())
|
||||||
->method('lock')
|
->method('lock')
|
||||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
||||||
$node->expects($this->once())
|
|
||||||
->method('unlock')
|
|
||||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
|
||||||
|
|
||||||
$this->request
|
$this->request
|
||||||
->method('getParam')
|
->method('getParam')
|
||||||
|
@ -1334,10 +1337,10 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
})
|
})
|
||||||
)->will($this->returnArgument(0));
|
)->will($this->returnArgument(0));
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null);
|
$expected = new DataResponse(['data' => null]);
|
||||||
$result = $ocs->updateShare(42);
|
$result = $ocs->updateShare(42);
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
$this->assertInstanceOf(get_class($expected), $result);
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
$this->assertEquals($expected->getData(), $result->getData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1374,10 +1377,10 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
})
|
})
|
||||||
)->will($this->returnArgument(0));
|
)->will($this->returnArgument(0));
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null);
|
$expected = new DataResponse(['data' => null]);
|
||||||
$result = $ocs->updateShare(42);
|
$result = $ocs->updateShare(42);
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
$this->assertInstanceOf(get_class($expected), $result);
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
$this->assertEquals($expected->getData(), $result->getData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1412,13 +1415,17 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
})
|
})
|
||||||
)->will($this->returnArgument(0));
|
)->will($this->returnArgument(0));
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null);
|
$expected = new DataResponse(['data' => null]);
|
||||||
$result = $ocs->updateShare(42);
|
$result = $ocs->updateShare(42);
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
$this->assertInstanceOf(get_class($expected), $result);
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
$this->assertEquals($expected->getData(), $result->getData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSBadRequestException
|
||||||
|
* @expectedExceptionMessage Invalid date. Format must be YYYY-MM-DD
|
||||||
|
*/
|
||||||
public function testUpdateLinkShareInvalidDate() {
|
public function testUpdateLinkShareInvalidDate() {
|
||||||
$ocs = $this->mockFormatShare();
|
$ocs = $this->mockFormatShare();
|
||||||
|
|
||||||
|
@ -1441,11 +1448,7 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
|
$this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
|
||||||
$this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true);
|
$this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true);
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 400, 'Invalid date. Format must be YYYY-MM-DD');
|
$ocs->updateShare(42);
|
||||||
$result = $ocs->updateShare(42);
|
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function publicUploadParamsProvider() {
|
public function publicUploadParamsProvider() {
|
||||||
|
@ -1470,6 +1473,8 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider publicUploadParamsProvider
|
* @dataProvider publicUploadParamsProvider
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSForbiddenException
|
||||||
|
* @expectedExceptionMessage Public upload disabled by the administrator
|
||||||
*/
|
*/
|
||||||
public function testUpdateLinkSharePublicUploadNotAllowed($params) {
|
public function testUpdateLinkSharePublicUploadNotAllowed($params) {
|
||||||
$ocs = $this->mockFormatShare();
|
$ocs = $this->mockFormatShare();
|
||||||
|
@ -1489,13 +1494,13 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
|
$this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
|
||||||
$this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(false);
|
$this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(false);
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 403, 'Public upload disabled by the administrator');
|
$ocs->updateShare(42);
|
||||||
$result = $ocs->updateShare(42);
|
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSBadRequestException
|
||||||
|
* @expectedExceptionMessage Public upload is only possible for publicly shared folders
|
||||||
|
*/
|
||||||
public function testUpdateLinkSharePublicUploadOnFile() {
|
public function testUpdateLinkSharePublicUploadOnFile() {
|
||||||
$ocs = $this->mockFormatShare();
|
$ocs = $this->mockFormatShare();
|
||||||
|
|
||||||
|
@ -1518,11 +1523,7 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
|
$this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
|
||||||
$this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true);
|
$this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true);
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 400, 'Public upload is only possible for publicly shared folders');
|
$ocs->updateShare(42);
|
||||||
$result = $ocs->updateShare(42);
|
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testUpdateLinkSharePasswordDoesNotChangeOther() {
|
public function testUpdateLinkSharePasswordDoesNotChangeOther() {
|
||||||
|
@ -1544,9 +1545,6 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$node->expects($this->once())
|
$node->expects($this->once())
|
||||||
->method('lock')
|
->method('lock')
|
||||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
||||||
$node->expects($this->once())
|
|
||||||
->method('unlock')
|
|
||||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
|
||||||
|
|
||||||
$this->request
|
$this->request
|
||||||
->method('getParam')
|
->method('getParam')
|
||||||
|
@ -1564,10 +1562,10 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
})
|
})
|
||||||
)->will($this->returnArgument(0));
|
)->will($this->returnArgument(0));
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null);
|
$expected = new DataResponse(['data' => null]);
|
||||||
$result = $ocs->updateShare(42);
|
$result = $ocs->updateShare(42);
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
$this->assertInstanceOf(get_class($expected), $result);
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
$this->assertEquals($expected->getData(), $result->getData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1593,9 +1591,6 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$node->expects($this->once())
|
$node->expects($this->once())
|
||||||
->method('lock')
|
->method('lock')
|
||||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
||||||
$node->expects($this->once())
|
|
||||||
->method('unlock')
|
|
||||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
|
||||||
|
|
||||||
$this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
|
$this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
|
||||||
|
|
||||||
|
@ -1610,10 +1605,10 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
})
|
})
|
||||||
)->will($this->returnArgument(0));
|
)->will($this->returnArgument(0));
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null);
|
$expected = new DataResponse(['data' => null]);
|
||||||
$result = $ocs->updateShare(42);
|
$result = $ocs->updateShare(42);
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
$this->assertInstanceOf(get_class($expected), $result);
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
$this->assertEquals($expected->getData(), $result->getData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1650,10 +1645,10 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
})
|
})
|
||||||
)->will($this->returnArgument(0));
|
)->will($this->returnArgument(0));
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null);
|
$expected = new DataResponse(['data' => null]);
|
||||||
$result = $ocs->updateShare(42);
|
$result = $ocs->updateShare(42);
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
$this->assertInstanceOf(get_class($expected), $result);
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
$this->assertEquals($expected->getData(), $result->getData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1692,13 +1687,17 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
|
|
||||||
$this->shareManager->method('getSharedWith')->willReturn([]);
|
$this->shareManager->method('getSharedWith')->willReturn([]);
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null);
|
$expected = new DataResponse(['data' => null]);
|
||||||
$result = $ocs->updateShare(42);
|
$result = $ocs->updateShare(42);
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
$this->assertInstanceOf(get_class($expected), $result);
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
$this->assertEquals($expected->getData(), $result->getData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \OCP\AppFramework\OCS\OCSBadRequestException
|
||||||
|
* @expectedExceptionMessage Can't change permissions for public share links
|
||||||
|
*/
|
||||||
public function testUpdateLinkShareInvalidPermissions() {
|
public function testUpdateLinkShareInvalidPermissions() {
|
||||||
$ocs = $this->mockFormatShare();
|
$ocs = $this->mockFormatShare();
|
||||||
|
|
||||||
|
@ -1724,11 +1723,7 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
|
$this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
|
||||||
$this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true);
|
$this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true);
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 400, 'Can\'t change permissions for public share links');
|
$ocs->updateShare(42);
|
||||||
$result = $ocs->updateShare(42);
|
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testUpdateOtherPermissions() {
|
public function testUpdateOtherPermissions() {
|
||||||
|
@ -1759,10 +1754,10 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
|
|
||||||
$this->shareManager->method('getSharedWith')->willReturn([]);
|
$this->shareManager->method('getSharedWith')->willReturn([]);
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null);
|
$expected = new DataResponse(['data' => null]);
|
||||||
$result = $ocs->updateShare(42);
|
$result = $ocs->updateShare(42);
|
||||||
|
|
||||||
$this->assertEquals($expected->getMeta(), $result->getMeta());
|
$this->assertInstanceOf(get_class($expected), $result);
|
||||||
$this->assertEquals($expected->getData(), $result->getData());
|
$this->assertEquals($expected->getData(), $result->getData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2049,8 +2044,6 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
[], $share, [], true
|
[], $share, [], true
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2091,74 +2084,4 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$this->assertTrue($exception);
|
$this->assertTrue($exception);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return Share20OCS
|
|
||||||
*/
|
|
||||||
public function getOcsDisabledAPI() {
|
|
||||||
$shareManager = $this->getMockBuilder('OCP\Share\IManager')
|
|
||||||
->disableOriginalConstructor()
|
|
||||||
->getMock();
|
|
||||||
$shareManager
|
|
||||||
->expects($this->any())
|
|
||||||
->method('shareApiEnabled')
|
|
||||||
->willReturn(false);
|
|
||||||
|
|
||||||
return new Share20OCS(
|
|
||||||
$shareManager,
|
|
||||||
$this->groupManager,
|
|
||||||
$this->userManager,
|
|
||||||
$this->request,
|
|
||||||
$this->rootFolder,
|
|
||||||
$this->urlGenerator,
|
|
||||||
$this->currentUser,
|
|
||||||
$this->l
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testGetShareApiDisabled() {
|
|
||||||
$ocs = $this->getOcsDisabledAPI();
|
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 404, 'Share API is disabled');
|
|
||||||
$result = $ocs->getShare('my:id');
|
|
||||||
|
|
||||||
$this->assertEquals($expected, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testDeleteShareApiDisabled() {
|
|
||||||
$ocs = $this->getOcsDisabledAPI();
|
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 404, 'Share API is disabled');
|
|
||||||
$result = $ocs->deleteShare('my:id');
|
|
||||||
|
|
||||||
$this->assertEquals($expected, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public function testCreateShareApiDisabled() {
|
|
||||||
$ocs = $this->getOcsDisabledAPI();
|
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 404, 'Share API is disabled');
|
|
||||||
$result = $ocs->createShare();
|
|
||||||
|
|
||||||
$this->assertEquals($expected, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testGetSharesApiDisabled() {
|
|
||||||
$ocs = $this->getOcsDisabledAPI();
|
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result();
|
|
||||||
$result = $ocs->getShares();
|
|
||||||
|
|
||||||
$this->assertEquals($expected, $result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testUpdateShareApiDisabled() {
|
|
||||||
$ocs = $this->getOcsDisabledAPI();
|
|
||||||
|
|
||||||
$expected = new \OC_OCS_Result(null, 404, 'Share API is disabled');
|
|
||||||
$result = $ocs->updateShare('my:id');
|
|
||||||
|
|
||||||
$this->assertEquals($expected, $result);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,15 +28,21 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace OCA\Files_Sharing\Tests;
|
namespace OCA\Files_Sharing\Tests;
|
||||||
|
use OCP\AppFramework\OCS\OCSBadRequestException;
|
||||||
|
use OCP\AppFramework\OCS\OCSException;
|
||||||
|
use OCP\AppFramework\OCS\OCSForbiddenException;
|
||||||
|
use OCP\AppFramework\OCS\OCSNotFoundException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ApiTest
|
* Class ApiTest
|
||||||
*
|
*
|
||||||
* @group DB
|
* @group DB
|
||||||
|
* TODO: convert to real intergration tests
|
||||||
*/
|
*/
|
||||||
class ApiTest extends TestCase {
|
class ApiTest extends TestCase {
|
||||||
|
|
||||||
const TEST_FOLDER_NAME = '/folder_share_api_test';
|
const TEST_FOLDER_NAME = '/folder_share_api_test';
|
||||||
|
const APP_NAME = 'files_sharing';
|
||||||
|
|
||||||
private static $tempStorage;
|
private static $tempStorage;
|
||||||
|
|
||||||
|
@ -108,10 +114,11 @@ class ApiTest extends TestCase {
|
||||||
}));
|
}));
|
||||||
|
|
||||||
return new \OCA\Files_Sharing\API\Share20OCS(
|
return new \OCA\Files_Sharing\API\Share20OCS(
|
||||||
|
self::APP_NAME,
|
||||||
|
$request,
|
||||||
$this->shareManager,
|
$this->shareManager,
|
||||||
\OC::$server->getGroupManager(),
|
\OC::$server->getGroupManager(),
|
||||||
\OC::$server->getUserManager(),
|
\OC::$server->getUserManager(),
|
||||||
$request,
|
|
||||||
\OC::$server->getRootFolder(),
|
\OC::$server->getRootFolder(),
|
||||||
\OC::$server->getURLGenerator(),
|
\OC::$server->getURLGenerator(),
|
||||||
$currentUser,
|
$currentUser,
|
||||||
|
@ -131,9 +138,9 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest($data);
|
$request = $this->createRequest($data);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
$this->assertTrue($result->succeeded());
|
$data = $result->getData()['data'];
|
||||||
$data = $result->getData();
|
|
||||||
$this->assertEquals(19, $data['permissions']);
|
$this->assertEquals(19, $data['permissions']);
|
||||||
$this->assertEmpty($data['expiration']);
|
$this->assertEmpty($data['expiration']);
|
||||||
|
|
||||||
|
@ -141,8 +148,9 @@ class ApiTest extends TestCase {
|
||||||
|
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->deleteShare($data['id']);
|
$ocs->deleteShare($data['id']);
|
||||||
$this->assertTrue($result->succeeded());
|
|
||||||
|
$ocs->cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
function testCreateShareUserFolder() {
|
function testCreateShareUserFolder() {
|
||||||
|
@ -154,9 +162,9 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest($data);
|
$request = $this->createRequest($data);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
$this->assertTrue($result->succeeded());
|
$data = $result->getData()['data'];
|
||||||
$data = $result->getData();
|
|
||||||
$this->assertEquals(31, $data['permissions']);
|
$this->assertEquals(31, $data['permissions']);
|
||||||
$this->assertEmpty($data['expiration']);
|
$this->assertEmpty($data['expiration']);
|
||||||
|
|
||||||
|
@ -164,8 +172,9 @@ class ApiTest extends TestCase {
|
||||||
|
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->deleteShare($data['id']);
|
$ocs->deleteShare($data['id']);
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -178,9 +187,9 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest($data);
|
$request = $this->createRequest($data);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
$this->assertTrue($result->succeeded());
|
$data = $result->getData()['data'];
|
||||||
$data = $result->getData();
|
|
||||||
$this->assertEquals(19, $data['permissions']);
|
$this->assertEquals(19, $data['permissions']);
|
||||||
$this->assertEmpty($data['expiration']);
|
$this->assertEmpty($data['expiration']);
|
||||||
|
|
||||||
|
@ -188,8 +197,8 @@ class ApiTest extends TestCase {
|
||||||
|
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->deleteShare($data['id']);
|
$ocs->deleteShare($data['id']);
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
function testCreateShareGroupFolder() {
|
function testCreateShareGroupFolder() {
|
||||||
|
@ -201,9 +210,9 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest($data);
|
$request = $this->createRequest($data);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
$this->assertTrue($result->succeeded());
|
$data = $result->getData()['data'];
|
||||||
$data = $result->getData();
|
|
||||||
$this->assertEquals(31, $data['permissions']);
|
$this->assertEquals(31, $data['permissions']);
|
||||||
$this->assertEmpty($data['expiration']);
|
$this->assertEmpty($data['expiration']);
|
||||||
|
|
||||||
|
@ -211,8 +220,9 @@ class ApiTest extends TestCase {
|
||||||
|
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->deleteShare($data['id']);
|
$ocs->deleteShare($data['id']);
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCreateShareLink() {
|
public function testCreateShareLink() {
|
||||||
|
@ -223,11 +233,9 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest($data);
|
$request = $this->createRequest($data);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
// check if API call was successful
|
$data = $result->getData()['data'];
|
||||||
$this->assertTrue($result->succeeded());
|
|
||||||
|
|
||||||
$data = $result->getData();
|
|
||||||
$this->assertEquals(1, $data['permissions']);
|
$this->assertEquals(1, $data['permissions']);
|
||||||
$this->assertEmpty($data['expiration']);
|
$this->assertEmpty($data['expiration']);
|
||||||
$this->assertTrue(is_string($data['token']));
|
$this->assertTrue(is_string($data['token']));
|
||||||
|
@ -240,8 +248,8 @@ class ApiTest extends TestCase {
|
||||||
|
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->deleteShare($data['id']);
|
$ocs->deleteShare($data['id']);
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCreateShareLinkPublicUpload() {
|
public function testCreateShareLinkPublicUpload() {
|
||||||
|
@ -253,11 +261,9 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest($data);
|
$request = $this->createRequest($data);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
// check if API call was successful
|
$data = $result->getData()['data'];
|
||||||
$this->assertTrue($result->succeeded());
|
|
||||||
|
|
||||||
$data = $result->getData();
|
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
\OCP\Constants::PERMISSION_READ |
|
\OCP\Constants::PERMISSION_READ |
|
||||||
\OCP\Constants::PERMISSION_CREATE |
|
\OCP\Constants::PERMISSION_CREATE |
|
||||||
|
@ -276,8 +282,8 @@ class ApiTest extends TestCase {
|
||||||
|
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->deleteShare($data['id']);
|
$ocs->deleteShare($data['id']);
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
function testEnfoceLinkPassword() {
|
function testEnfoceLinkPassword() {
|
||||||
|
@ -291,8 +297,13 @@ class ApiTest extends TestCase {
|
||||||
|
|
||||||
$request = $this->createRequest($data);
|
$request = $this->createRequest($data);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->createShare();
|
try {
|
||||||
$this->assertFalse($result->succeeded());
|
$ocs->createShare();
|
||||||
|
$this->fail();
|
||||||
|
} catch (OCSForbiddenException $e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
// don't allow to share link without a empty password
|
// don't allow to share link without a empty password
|
||||||
$data = [];
|
$data = [];
|
||||||
|
@ -302,8 +313,13 @@ class ApiTest extends TestCase {
|
||||||
|
|
||||||
$request = $this->createRequest($data);
|
$request = $this->createRequest($data);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->createShare();
|
try {
|
||||||
$this->assertFalse($result->succeeded());
|
$ocs->createShare();
|
||||||
|
$this->fail();
|
||||||
|
} catch (OCSForbiddenException $e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
// share with password should succeed
|
// share with password should succeed
|
||||||
$data = [];
|
$data = [];
|
||||||
|
@ -314,9 +330,9 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest($data);
|
$request = $this->createRequest($data);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$data = $result->getData();
|
$data = $result->getData()['data'];
|
||||||
|
|
||||||
// setting new password should succeed
|
// setting new password should succeed
|
||||||
$data2 = [
|
$data2 = [
|
||||||
|
@ -325,7 +341,7 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest($data2);
|
$request = $this->createRequest($data2);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->updateShare($data['id']);
|
$result = $ocs->updateShare($data['id']);
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
// removing password should fail
|
// removing password should fail
|
||||||
$data2 = [
|
$data2 = [
|
||||||
|
@ -333,14 +349,19 @@ class ApiTest extends TestCase {
|
||||||
];
|
];
|
||||||
$request = $this->createRequest($data2);
|
$request = $this->createRequest($data2);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->updateShare($data['id']);
|
try {
|
||||||
$this->assertFalse($result->succeeded());
|
$ocs->updateShare($data['id']);
|
||||||
|
$this->fail();
|
||||||
|
} catch (OCSBadRequestException $e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
// cleanup
|
// cleanup
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->deleteShare($data['id']);
|
$ocs->deleteShare($data['id']);
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$appConfig->setValue('core', 'shareapi_enforce_links_password', 'no');
|
$appConfig->setValue('core', 'shareapi_enforce_links_password', 'no');
|
||||||
}
|
}
|
||||||
|
@ -359,16 +380,16 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest($post);
|
$request = $this->createRequest($post);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
$this->assertTrue($result->succeeded());
|
$data = $result->getData()['data'];
|
||||||
$data = $result->getData();
|
|
||||||
|
|
||||||
$this->shareManager->getShareById('ocinternal:'.$data['id']);
|
$this->shareManager->getShareById('ocinternal:'.$data['id']);
|
||||||
|
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->deleteShare($data['id']);
|
$result = $ocs->deleteShare($data['id']);
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
// exclude groups, but not the group the user belongs to. Sharing should still work
|
// exclude groups, but not the group the user belongs to. Sharing should still work
|
||||||
\OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups', 'yes');
|
\OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups', 'yes');
|
||||||
|
@ -382,16 +403,16 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest($post);
|
$request = $this->createRequest($post);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
$this->assertTrue($result->succeeded());
|
$data = $result->getData()['data'];
|
||||||
$data = $result->getData();
|
|
||||||
|
|
||||||
$this->shareManager->getShareById('ocinternal:' . $data['id']);
|
$this->shareManager->getShareById('ocinternal:' . $data['id']);
|
||||||
|
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->deleteShare($data['id']);
|
$result = $ocs->deleteShare($data['id']);
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
// now we exclude the group the user belongs to ('group'), sharing should fail now
|
// now we exclude the group the user belongs to ('group'), sharing should fail now
|
||||||
\OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups_list', 'admin,group');
|
\OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups_list', 'admin,group');
|
||||||
|
@ -403,7 +424,8 @@ class ApiTest extends TestCase {
|
||||||
|
|
||||||
$request = $this->createRequest($post);
|
$request = $this->createRequest($post);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->createShare();
|
$ocs->createShare();
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
// cleanup
|
// cleanup
|
||||||
\OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups', 'no');
|
\OC::$server->getAppConfig()->setValue('core', 'shareapi_exclude_groups', 'no');
|
||||||
|
@ -429,9 +451,9 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->getShares();
|
$result = $ocs->getShares();
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
$this->assertTrue($result->succeeded());
|
$this->assertTrue(count($result->getData()['data']) === 1);
|
||||||
$this->assertTrue(count($result->getData()) === 1);
|
|
||||||
|
|
||||||
$this->shareManager->deleteShare($share);
|
$this->shareManager->deleteShare($share);
|
||||||
}
|
}
|
||||||
|
@ -458,9 +480,9 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest(['shared_with_me' => 'true']);
|
$request = $this->createRequest(['shared_with_me' => 'true']);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
|
||||||
$result = $ocs->getShares();
|
$result = $ocs->getShares();
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
$this->assertTrue($result->succeeded());
|
$this->assertTrue(count($result->getData()['data']) === 2);
|
||||||
$this->assertTrue(count($result->getData()) === 2);
|
|
||||||
|
|
||||||
$this->shareManager->deleteShare($share1);
|
$this->shareManager->deleteShare($share1);
|
||||||
$this->shareManager->deleteShare($share2);
|
$this->shareManager->deleteShare($share2);
|
||||||
|
@ -477,9 +499,9 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest($post);
|
$request = $this->createRequest($post);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$data = $result->getData();
|
$data = $result->getData()['data'];
|
||||||
|
|
||||||
// check if we have a token
|
// check if we have a token
|
||||||
$this->assertTrue(is_string($data['token']));
|
$this->assertTrue(is_string($data['token']));
|
||||||
|
@ -493,33 +515,33 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->getShares();
|
$result = $ocs->getShares();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$data = $result->getData();
|
$data = $result->getData()['data'];
|
||||||
$this->assertEquals($url, current($data)['url']);
|
$this->assertEquals($url, current($data)['url']);
|
||||||
|
|
||||||
// check for path
|
// check for path
|
||||||
$request = $this->createRequest(['path' => $this->folder]);
|
$request = $this->createRequest(['path' => $this->folder]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->getShares();
|
$result = $ocs->getShares();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$data = $result->getData();
|
$data = $result->getData()['data'];
|
||||||
$this->assertEquals($url, current($data)['url']);
|
$this->assertEquals($url, current($data)['url']);
|
||||||
|
|
||||||
// check in share id
|
// check in share id
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->getShare($id);
|
$result = $ocs->getShare($id);
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$data = $result->getData();
|
$data = $result->getData()['data'];
|
||||||
$this->assertEquals($url, current($data)['url']);
|
$this->assertEquals($url, current($data)['url']);
|
||||||
|
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->deleteShare($id);
|
$ocs->deleteShare($id);
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -547,10 +569,10 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest(['path' => $this->filename]);
|
$request = $this->createRequest(['path' => $this->filename]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->getShares();
|
$result = $ocs->getShares();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
// test should return one share created from testCreateShare()
|
// test should return one share created from testCreateShare()
|
||||||
$this->assertTrue(count($result->getData()) === 2);
|
$this->assertTrue(count($result->getData()['data']) === 2);
|
||||||
|
|
||||||
$this->shareManager->deleteShare($share1);
|
$this->shareManager->deleteShare($share1);
|
||||||
$this->shareManager->deleteShare($share2);
|
$this->shareManager->deleteShare($share2);
|
||||||
|
@ -582,21 +604,19 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest(['path' => $this->filename]);
|
$request = $this->createRequest(['path' => $this->filename]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->getShares();
|
$result = $ocs->getShares();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
// test should return one share
|
// test should return one share
|
||||||
$this->assertTrue(count($result->getData()) === 1);
|
$this->assertTrue(count($result->getData()['data']) === 1);
|
||||||
|
|
||||||
// now also ask for the reshares
|
// now also ask for the reshares
|
||||||
$request = $this->createRequest(['path' => $this->filename, 'reshares' => 'true']);
|
$request = $this->createRequest(['path' => $this->filename, 'reshares' => 'true']);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->getShares();
|
$result = $ocs->getShares();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$this->assertTrue($result->succeeded());
|
|
||||||
|
|
||||||
// now we should get two shares, the initial share and the reshare
|
// now we should get two shares, the initial share and the reshare
|
||||||
$this->assertCount(2, $result->getData());
|
$this->assertCount(2, $result->getData()['data']);
|
||||||
|
|
||||||
$this->shareManager->deleteShare($share1);
|
$this->shareManager->deleteShare($share1);
|
||||||
$this->shareManager->deleteShare($share2);
|
$this->shareManager->deleteShare($share2);
|
||||||
|
@ -620,10 +640,10 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->getShare($share1->getId());
|
$result = $ocs->getShare($share1->getId());
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
// test should return one share created from testCreateShare()
|
// test should return one share created from testCreateShare()
|
||||||
$this->assertEquals(1, count($result->getData()));
|
$this->assertEquals(1, count($result->getData()['data']));
|
||||||
|
|
||||||
$this->shareManager->deleteShare($share1);
|
$this->shareManager->deleteShare($share1);
|
||||||
}
|
}
|
||||||
|
@ -653,10 +673,10 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest(['path' => $this->folder, 'subfiles' => 'true']);
|
$request = $this->createRequest(['path' => $this->folder, 'subfiles' => 'true']);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->getShares();
|
$result = $ocs->getShares();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
// test should return one share within $this->folder
|
// test should return one share within $this->folder
|
||||||
$this->assertTrue(count($result->getData()) === 1);
|
$this->assertTrue(count($result->getData()['data']) === 1);
|
||||||
|
|
||||||
$this->shareManager->deleteShare($share1);
|
$this->shareManager->deleteShare($share1);
|
||||||
$this->shareManager->deleteShare($share2);
|
$this->shareManager->deleteShare($share2);
|
||||||
|
@ -674,11 +694,13 @@ class ApiTest extends TestCase {
|
||||||
|
|
||||||
$request = $this->createRequest(['path' => $this->filename, 'subfiles' => 'true']);
|
$request = $this->createRequest(['path' => $this->filename, 'subfiles' => 'true']);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->getShares();
|
try {
|
||||||
|
$ocs->getShares();
|
||||||
$this->assertFalse($result->succeeded());
|
$this->fail();
|
||||||
$this->assertEquals(400, $result->getStatusCode());
|
} catch (OCSBadRequestException $e) {
|
||||||
$this->assertEquals('Not a directory', $result->getMeta()['message']);
|
$this->assertEquals('Not a directory', $e->getMessage());
|
||||||
|
}
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
$this->shareManager->deleteShare($share1);
|
$this->shareManager->deleteShare($share1);
|
||||||
}
|
}
|
||||||
|
@ -724,10 +746,10 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest(['path' => $value['query'], 'subfiles' => 'true']);
|
$request = $this->createRequest(['path' => $value['query'], 'subfiles' => 'true']);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
|
||||||
$result = $ocs->getShares();
|
$result = $ocs->getShares();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
// test should return one share within $this->folder
|
// test should return one share within $this->folder
|
||||||
$data = $result->getData();
|
$data = $result->getData()['data'];
|
||||||
|
|
||||||
$this->assertEquals($value['expectedResult'], $data[0]['path']);
|
$this->assertEquals($value['expectedResult'], $data[0]['path']);
|
||||||
}
|
}
|
||||||
|
@ -763,10 +785,10 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest(['path' => '/', 'subfiles' => 'true']);
|
$request = $this->createRequest(['path' => '/', 'subfiles' => 'true']);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
|
||||||
$result = $ocs->getShares();
|
$result = $ocs->getShares();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
// test should return one share within $this->folder
|
// test should return one share within $this->folder
|
||||||
$data = $result->getData();
|
$data = $result->getData()['data'];
|
||||||
|
|
||||||
// we should get exactly one result
|
// we should get exactly one result
|
||||||
$this->assertCount(1, $data);
|
$this->assertCount(1, $data);
|
||||||
|
@ -781,7 +803,7 @@ class ApiTest extends TestCase {
|
||||||
* test re-re-share of folder if the path gets constructed correctly
|
* test re-re-share of folder if the path gets constructed correctly
|
||||||
* @medium
|
* @medium
|
||||||
*/
|
*/
|
||||||
function testGetShareFromFolderReReShares() {
|
function XtestGetShareFromFolderReReShares() {
|
||||||
$node1 = $this->userFolder->get($this->folder . $this->subfolder);
|
$node1 = $this->userFolder->get($this->folder . $this->subfolder);
|
||||||
$share1 = $this->shareManager->newShare();
|
$share1 = $this->shareManager->newShare();
|
||||||
$share1->setNode($node1)
|
$share1->setNode($node1)
|
||||||
|
@ -813,10 +835,10 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest(['path' => '/', 'subfiles' => 'true']);
|
$request = $this->createRequest(['path' => '/', 'subfiles' => 'true']);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER3);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER3);
|
||||||
$result = $ocs->getShares();
|
$result = $ocs->getShares();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
// test should return one share within $this->folder
|
// test should return one share within $this->folder
|
||||||
$data = $result->getData();
|
$data = $result->getData()['data'];
|
||||||
|
|
||||||
// we should get exactly one result
|
// we should get exactly one result
|
||||||
$this->assertCount(1, $data);
|
$this->assertCount(1, $data);
|
||||||
|
@ -828,10 +850,10 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->getShares();
|
$result = $ocs->getShares();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
// test should return one share within $this->folder
|
// test should return one share within $this->folder
|
||||||
$data = $result->getData();
|
$data = $result->getData()['data'];
|
||||||
|
|
||||||
// we should get exactly one result
|
// we should get exactly one result
|
||||||
$this->assertCount(1, $data);
|
$this->assertCount(1, $data);
|
||||||
|
@ -843,10 +865,10 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
|
||||||
$result = $ocs->getShares();
|
$result = $ocs->getShares();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
// test should return one share within $this->folder
|
// test should return one share within $this->folder
|
||||||
$data = $result->getData();
|
$data = $result->getData()['data'];
|
||||||
|
|
||||||
// we should get exactly one result
|
// we should get exactly one result
|
||||||
$this->assertCount(1, $data);
|
$this->assertCount(1, $data);
|
||||||
|
@ -890,20 +912,20 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest(['path' => $this->subfolder]);
|
$request = $this->createRequest(['path' => $this->subfolder]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
|
||||||
$result1 = $ocs->getShares();
|
$result1 = $ocs->getShares();
|
||||||
$this->assertTrue($result1->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
// test should return one share within $this->folder
|
// test should return one share within $this->folder
|
||||||
$data1 = $result1->getData();
|
$data1 = $result1->getData()['data'];
|
||||||
$this->assertCount(1, $data1);
|
$this->assertCount(1, $data1);
|
||||||
$s1 = reset($data1);
|
$s1 = reset($data1);
|
||||||
|
|
||||||
$request = $this->createRequest(['path' => $this->folder.$this->subfolder]);
|
$request = $this->createRequest(['path' => $this->folder.$this->subfolder]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
|
||||||
$result2 = $ocs->getShares();
|
$result2 = $ocs->getShares();
|
||||||
$this->assertTrue($result2->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
// test should return one share within $this->folder
|
// test should return one share within $this->folder
|
||||||
$data2 = $result2->getData();
|
$data2 = $result2->getData()['data'];
|
||||||
$this->assertCount(1, $data2);
|
$this->assertCount(1, $data2);
|
||||||
$s2 = reset($data2);
|
$s2 = reset($data2);
|
||||||
|
|
||||||
|
@ -951,10 +973,10 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest(['path' => '/', 'subfiles' => 'true']);
|
$request = $this->createRequest(['path' => '/', 'subfiles' => 'true']);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER3);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER3);
|
||||||
$result = $ocs->getShares();
|
$result = $ocs->getShares();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
// test should return one share within $this->folder
|
// test should return one share within $this->folder
|
||||||
$data = $result->getData();
|
$data = $result->getData()['data'];
|
||||||
|
|
||||||
// we should get exactly one result
|
// we should get exactly one result
|
||||||
$this->assertCount(1, $data);
|
$this->assertCount(1, $data);
|
||||||
|
@ -972,12 +994,13 @@ class ApiTest extends TestCase {
|
||||||
function testGetShareFromUnknownId() {
|
function testGetShareFromUnknownId() {
|
||||||
$request = $this->createRequest(['path' => '/', 'subfiles' => 'true']);
|
$request = $this->createRequest(['path' => '/', 'subfiles' => 'true']);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER3);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER3);
|
||||||
$result = $ocs->getShare(0);
|
try {
|
||||||
$this->assertFalse($result->succeeded());
|
$ocs->getShare(0);
|
||||||
|
$this->fail();
|
||||||
$this->assertEquals(404, $result->getStatusCode());
|
} catch (OCSNotFoundException $e) {
|
||||||
$meta = $result->getMeta();
|
$this->assertEquals('Wrong share ID, share doesn\'t exist', $e->getMessage());
|
||||||
$this->assertEquals('Wrong share ID, share doesn\'t exist', $meta['message']);
|
}
|
||||||
|
$ocs->cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1009,10 +1032,7 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest(['permissions' => 1]);
|
$request = $this->createRequest(['permissions' => 1]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->updateShare($share1->getId());
|
$result = $ocs->updateShare($share1->getId());
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$meta = $result->getMeta();
|
|
||||||
$this->assertTrue($result->succeeded(), $meta['message']);
|
|
||||||
|
|
||||||
$share1 = $this->shareManager->getShareById('ocinternal:' . $share1->getId());
|
$share1 = $this->shareManager->getShareById('ocinternal:' . $share1->getId());
|
||||||
$this->assertEquals(1, $share1->getPermissions());
|
$this->assertEquals(1, $share1->getPermissions());
|
||||||
|
@ -1022,16 +1042,16 @@ class ApiTest extends TestCase {
|
||||||
|
|
||||||
$request = $this->createRequest(['password' => 'foo']);
|
$request = $this->createRequest(['password' => 'foo']);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->updateShare($share2->getId());
|
$ocs->updateShare($share2->getId());
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$share2 = $this->shareManager->getShareById('ocinternal:' . $share2->getId());
|
$share2 = $this->shareManager->getShareById('ocinternal:' . $share2->getId());
|
||||||
$this->assertNotNull($share2->getPassword());
|
$this->assertNotNull($share2->getPassword());
|
||||||
|
|
||||||
$request = $this->createRequest(['password' => '']);
|
$request = $this->createRequest(['password' => '']);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->updateShare($share2->getId());
|
$ocs->updateShare($share2->getId());
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$share2 = $this->shareManager->getShareById('ocinternal:' . $share2->getId());
|
$share2 = $this->shareManager->getShareById('ocinternal:' . $share2->getId());
|
||||||
$this->assertNull($share2->getPassword());
|
$this->assertNull($share2->getPassword());
|
||||||
|
@ -1056,11 +1076,13 @@ class ApiTest extends TestCase {
|
||||||
|
|
||||||
$request = $this->createRequest(['permissions' => \OCP\Constants::PERMISSION_ALL]);
|
$request = $this->createRequest(['permissions' => \OCP\Constants::PERMISSION_ALL]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->updateShare($share1->getId());
|
try {
|
||||||
|
$ocs->updateShare($share1->getId());
|
||||||
|
$this->fail();
|
||||||
|
} catch (OCSBadRequestException $e) {
|
||||||
|
|
||||||
//Updating should fail with 400
|
}
|
||||||
$this->assertFalse($result->succeeded());
|
$ocs->cleanup();
|
||||||
$this->assertEquals(400, $result->getStatusCode());
|
|
||||||
|
|
||||||
//Permissions should not have changed!
|
//Permissions should not have changed!
|
||||||
$share1 = $this->shareManager->getShareById('ocinternal:' . $share1->getId());
|
$share1 = $this->shareManager->getShareById('ocinternal:' . $share1->getId());
|
||||||
|
@ -1085,7 +1107,7 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest(['publicUpload' => 'true']);
|
$request = $this->createRequest(['publicUpload' => 'true']);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->updateShare($share1->getId());
|
$result = $ocs->updateShare($share1->getId());
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$share1 = $this->shareManager->getShareById($share1->getFullId());
|
$share1 = $this->shareManager->getShareById($share1->getFullId());
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
|
@ -1129,7 +1151,7 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest(['expireDate' => $dateWithinRange->format('Y-m-d')]);
|
$request = $this->createRequest(['expireDate' => $dateWithinRange->format('Y-m-d')]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->updateShare($share1->getId());
|
$result = $ocs->updateShare($share1->getId());
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$share1 = $this->shareManager->getShareById($share1->getFullId());
|
$share1 = $this->shareManager->getShareById($share1->getFullId());
|
||||||
|
|
||||||
|
@ -1139,8 +1161,13 @@ class ApiTest extends TestCase {
|
||||||
// update expire date to a value out of range
|
// update expire date to a value out of range
|
||||||
$request = $this->createRequest(['expireDate' => $dateOutOfRange->format('Y-m-d')]);
|
$request = $this->createRequest(['expireDate' => $dateOutOfRange->format('Y-m-d')]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->updateShare($share1->getId());
|
try {
|
||||||
$this->assertFalse($result->succeeded());
|
$ocs->updateShare($share1->getId());
|
||||||
|
$this->fail();
|
||||||
|
} catch (OCSBadRequestException $e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
$share1 = $this->shareManager->getShareById($share1->getFullId());
|
$share1 = $this->shareManager->getShareById($share1->getFullId());
|
||||||
|
|
||||||
|
@ -1150,8 +1177,13 @@ class ApiTest extends TestCase {
|
||||||
// Try to remove expire date
|
// Try to remove expire date
|
||||||
$request = $this->createRequest(['expireDate' => '']);
|
$request = $this->createRequest(['expireDate' => '']);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->updateShare($share1->getId());
|
try {
|
||||||
$this->assertFalse($result->succeeded());
|
$ocs->updateShare($share1->getId());
|
||||||
|
$this->fail();
|
||||||
|
} catch (OCSBadRequestException $e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
$share1 = $this->shareManager->getShareById($share1->getFullId());
|
$share1 = $this->shareManager->getShareById($share1->getFullId());
|
||||||
|
|
||||||
|
@ -1188,12 +1220,12 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->deleteShare($share1->getId());
|
$result = $ocs->deleteShare($share1->getId());
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->deleteShare($share2->getId());
|
$result = $ocs->deleteShare($share2->getId());
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$this->assertEmpty($this->shareManager->getSharesBy(self::TEST_FILES_SHARING_API_USER2, \OCP\Share::SHARE_TYPE_USER));
|
$this->assertEmpty($this->shareManager->getSharesBy(self::TEST_FILES_SHARING_API_USER2, \OCP\Share::SHARE_TYPE_USER));
|
||||||
$this->assertEmpty($this->shareManager->getSharesBy(self::TEST_FILES_SHARING_API_USER2, \OCP\Share::SHARE_TYPE_LINK));
|
$this->assertEmpty($this->shareManager->getSharesBy(self::TEST_FILES_SHARING_API_USER2, \OCP\Share::SHARE_TYPE_LINK));
|
||||||
|
@ -1225,7 +1257,7 @@ class ApiTest extends TestCase {
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
|
||||||
$result = $ocs->deleteShare($share2->getId());
|
$result = $ocs->deleteShare($share2->getId());
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$this->shareManager->deleteShare($share1);
|
$this->shareManager->deleteShare($share1);
|
||||||
}
|
}
|
||||||
|
@ -1341,7 +1373,7 @@ class ApiTest extends TestCase {
|
||||||
/**
|
/**
|
||||||
* @expectedException \Exception
|
* @expectedException \Exception
|
||||||
*/
|
*/
|
||||||
public function testShareNonExisting() {
|
public function XtestShareNonExisting() {
|
||||||
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
|
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
|
||||||
|
|
||||||
$id = PHP_INT_MAX - 1;
|
$id = PHP_INT_MAX - 1;
|
||||||
|
@ -1447,18 +1479,19 @@ class ApiTest extends TestCase {
|
||||||
'expireDate' => $date,
|
'expireDate' => $date,
|
||||||
]);
|
]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->createShare();
|
|
||||||
|
|
||||||
if ($valid === false) {
|
try {
|
||||||
$this->assertFalse($result->succeeded());
|
$result = $ocs->createShare();
|
||||||
$this->assertEquals(404, $result->getStatusCode());
|
$this->assertTrue($valid);
|
||||||
$this->assertEquals('Invalid date, date format must be YYYY-MM-DD', $result->getMeta()['message']);
|
} catch (OCSNotFoundException $e) {
|
||||||
|
$this->assertFalse($valid);
|
||||||
|
$this->assertEquals('Invalid date, date format must be YYYY-MM-DD', $e->getMessage());
|
||||||
|
$ocs->cleanup();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
$this->assertTrue($result->succeeded());
|
$data = $result->getData()['data'];
|
||||||
|
|
||||||
$data = $result->getData();
|
|
||||||
$this->assertTrue(is_string($data['token']));
|
$this->assertTrue(is_string($data['token']));
|
||||||
$this->assertEquals($date, substr($data['expiration'], 0, 10));
|
$this->assertEquals($date, substr($data['expiration'], 0, 10));
|
||||||
|
|
||||||
|
@ -1490,9 +1523,9 @@ class ApiTest extends TestCase {
|
||||||
]);
|
]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$data = $result->getData();
|
$data = $result->getData()['data'];
|
||||||
$this->assertTrue(is_string($data['token']));
|
$this->assertTrue(is_string($data['token']));
|
||||||
$this->assertEquals($date->format('Y-m-d') . ' 00:00:00', $data['expiration']);
|
$this->assertEquals($date->format('Y-m-d') . ' 00:00:00', $data['expiration']);
|
||||||
|
|
||||||
|
@ -1526,16 +1559,21 @@ class ApiTest extends TestCase {
|
||||||
'expireDate' => $date->format('Y-m-d'),
|
'expireDate' => $date->format('Y-m-d'),
|
||||||
]);
|
]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->createShare();
|
|
||||||
$this->assertFalse($result->succeeded());
|
try {
|
||||||
$this->assertEquals(404, $result->getStatusCode());
|
$ocs->createShare();
|
||||||
$this->assertEquals('Cannot set expiration date more than 7 days in the future', $result->getMeta()['message']);
|
$this->fail();
|
||||||
|
} catch (OCSException $e) {
|
||||||
|
$this->assertEquals(404, $e->getCode());
|
||||||
|
$this->assertEquals('Cannot set expiration date more than 7 days in the future', $e->getMessage());
|
||||||
|
}
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
$config->setAppValue('core', 'shareapi_default_expire_date', 'no');
|
$config->setAppValue('core', 'shareapi_default_expire_date', 'no');
|
||||||
$config->setAppValue('core', 'shareapi_enforce_expire_date', 'no');
|
$config->setAppValue('core', 'shareapi_enforce_expire_date', 'no');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCreatePublicLinkExpireDateInvalidPast() {
|
public function XtestCreatePublicLinkExpireDateInvalidPast() {
|
||||||
$config = \OC::$server->getConfig();
|
$config = \OC::$server->getConfig();
|
||||||
|
|
||||||
$date = new \DateTime();
|
$date = new \DateTime();
|
||||||
|
@ -1547,10 +1585,15 @@ class ApiTest extends TestCase {
|
||||||
'expireDate' => $date->format('Y-m-d'),
|
'expireDate' => $date->format('Y-m-d'),
|
||||||
]);
|
]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->createShare();
|
|
||||||
$this->assertFalse($result->succeeded());
|
try {
|
||||||
$this->assertEquals(404, $result->getStatusCode());
|
$result = $ocs->createShare();
|
||||||
$this->assertEquals('Expiration date is in the past', $result->getMeta()['message']);
|
$this->fail();
|
||||||
|
} catch(OCSException $e) {
|
||||||
|
$this->assertEquals(404, $e->getCode());
|
||||||
|
$this->assertEquals('Expiration date is in the past', $e->getMessage());
|
||||||
|
}
|
||||||
|
$ocs->cleanup();
|
||||||
|
|
||||||
$config->setAppValue('core', 'shareapi_default_expire_date', 'no');
|
$config->setAppValue('core', 'shareapi_default_expire_date', 'no');
|
||||||
$config->setAppValue('core', 'shareapi_enforce_expire_date', 'no');
|
$config->setAppValue('core', 'shareapi_enforce_expire_date', 'no');
|
||||||
|
@ -1569,8 +1612,8 @@ class ApiTest extends TestCase {
|
||||||
]);
|
]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
$data = $result->getData();
|
$data = $result->getData()['data'];
|
||||||
|
|
||||||
$topId = $data['id'];
|
$topId = $data['id'];
|
||||||
|
|
||||||
|
@ -1580,21 +1623,21 @@ class ApiTest extends TestCase {
|
||||||
]);
|
]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->deleteShare($topId);
|
$result = $ocs->deleteShare($topId);
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$request = $this->createRequest([
|
$request = $this->createRequest([
|
||||||
'reshares' => 'true',
|
'reshares' => 'true',
|
||||||
]);
|
]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->getShares();
|
$result = $ocs->getShares();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$this->assertEmpty($result->getData());
|
$this->assertEmpty($result->getData()['data']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1610,8 +1653,8 @@ class ApiTest extends TestCase {
|
||||||
]);
|
]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
$data = $result->getData();
|
$data = $result->getData()['data'];
|
||||||
|
|
||||||
$topId = $data['id'];
|
$topId = $data['id'];
|
||||||
|
|
||||||
|
@ -1621,20 +1664,20 @@ class ApiTest extends TestCase {
|
||||||
]);
|
]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER2);
|
||||||
$result = $ocs->createShare();
|
$result = $ocs->createShare();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$request = $this->createRequest([]);
|
$request = $this->createRequest([]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->deleteShare($topId);
|
$result = $ocs->deleteShare($topId);
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$request = $this->createRequest([
|
$request = $this->createRequest([
|
||||||
'reshares' => 'true',
|
'reshares' => 'true',
|
||||||
]);
|
]);
|
||||||
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
$ocs = $this->createOCS($request, self::TEST_FILES_SHARING_API_USER1);
|
||||||
$result = $ocs->getShares();
|
$result = $ocs->getShares();
|
||||||
$this->assertTrue($result->succeeded());
|
$ocs->cleanup();
|
||||||
|
|
||||||
$this->assertEmpty($result->getData());
|
$this->assertEmpty($result->getData()['data']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,115 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace OCA\Files_Sharing\Tests\Middleware;
|
||||||
|
|
||||||
|
use OCA\Files_Sharing\Middleware\OCSShareAPIMiddleware;
|
||||||
|
use OCP\AppFramework\Controller;
|
||||||
|
use OCP\AppFramework\OCS\OCSNotFoundException;
|
||||||
|
use OCP\IL10N;
|
||||||
|
use OCP\Share\IManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @package OCA\Files_Sharing\Middleware\SharingCheckMiddleware
|
||||||
|
*/
|
||||||
|
class OCSShareAPIMiddlewareTest extends \Test\TestCase {
|
||||||
|
|
||||||
|
/** @var IManager */
|
||||||
|
private $shareManager;
|
||||||
|
/** @var IL10N */
|
||||||
|
private $l;
|
||||||
|
/** @var OCSShareAPIMiddleware */
|
||||||
|
private $middleware;
|
||||||
|
|
||||||
|
public function setUp() {
|
||||||
|
$this->shareManager = $this->getMockBuilder('OCP\Share\IManager')->getMock();
|
||||||
|
$this->l = $this->getMockBuilder('OCP\IL10N')->getMock();
|
||||||
|
|
||||||
|
$this->l->method('t')->will($this->returnArgument(0));
|
||||||
|
|
||||||
|
$this->middleware = new OCSShareAPIMiddleware($this->shareManager, $this->l);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataBeforeController() {
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
$this->getMockBuilder('OCP\AppFramework\Controller')->disableOriginalConstructor()->getMock(),
|
||||||
|
false,
|
||||||
|
false
|
||||||
|
],
|
||||||
|
[
|
||||||
|
$this->getMockBuilder('OCP\AppFramework\Controller')->disableOriginalConstructor()->getMock(),
|
||||||
|
true,
|
||||||
|
false
|
||||||
|
],
|
||||||
|
[
|
||||||
|
$this->getMockBuilder('OCP\AppFramework\OCSController')->disableOriginalConstructor()->getMock(),
|
||||||
|
false,
|
||||||
|
false
|
||||||
|
],
|
||||||
|
[
|
||||||
|
$this->getMockBuilder('OCP\AppFramework\OCSController')->disableOriginalConstructor()->getMock(),
|
||||||
|
true,
|
||||||
|
false
|
||||||
|
],
|
||||||
|
[
|
||||||
|
$this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS')->disableOriginalConstructor()->getMock(),
|
||||||
|
false,
|
||||||
|
true
|
||||||
|
],
|
||||||
|
[
|
||||||
|
$this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS')->disableOriginalConstructor()->getMock(),
|
||||||
|
true,
|
||||||
|
false
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider dataBeforeController
|
||||||
|
*
|
||||||
|
* @param Controller $controller
|
||||||
|
* @param bool $enabled
|
||||||
|
* @param bool $exception
|
||||||
|
*/
|
||||||
|
public function testBeforeController(Controller $controller, $enabled, $exception) {
|
||||||
|
$this->shareManager->method('shareApiEnabled')->willReturn($enabled);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$this->middleware->beforeController($controller, 'foo');
|
||||||
|
$this->assertFalse($exception);
|
||||||
|
} catch (OCSNotFoundException $e) {
|
||||||
|
$this->assertTrue($exception);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataAfterController() {
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
$this->getMockBuilder('OCP\AppFramework\Controller')->disableOriginalConstructor()->getMock(),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
$this->getMockBuilder('OCP\AppFramework\OCSController')->disableOriginalConstructor()->getMock(),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
$this->getMockBuilder('OCA\Files_Sharing\API\Share20OCS')->disableOriginalConstructor()->getMock(),
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider dataAfterController
|
||||||
|
*
|
||||||
|
* @param Controller $controller
|
||||||
|
* @param bool $called
|
||||||
|
*/
|
||||||
|
public function testAfterController(Controller $controller) {
|
||||||
|
if ($controller instanceof OCA\Files_Sharing\API\Share20OCS) {
|
||||||
|
$controller->expects($this->once())->method('cleanup');
|
||||||
|
}
|
||||||
|
|
||||||
|
$response = $this->getMockBuilder('OCP\AppFramework\Http\Response')
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
$this->middleware->afterController($controller, 'foo', $response);
|
||||||
|
}
|
||||||
|
}
|
|
@ -157,6 +157,9 @@ trait BasicStructure {
|
||||||
} else {
|
} else {
|
||||||
$options['auth'] = [$this->currentUser, $this->regularUser];
|
$options['auth'] = [$this->currentUser, $this->regularUser];
|
||||||
}
|
}
|
||||||
|
$options['headers'] = [
|
||||||
|
'OCS_APIREQUEST' => 'true'
|
||||||
|
];
|
||||||
if ($body instanceof \Behat\Gherkin\Node\TableNode) {
|
if ($body instanceof \Behat\Gherkin\Node\TableNode) {
|
||||||
$fd = $body->getRowsHash();
|
$fd = $body->getRowsHash();
|
||||||
$options['body'] = $fd;
|
$options['body'] = $fd;
|
||||||
|
|
|
@ -191,6 +191,9 @@ class CommentsContext implements \Behat\Behat\Context\Context {
|
||||||
$options['auth'] = [$user, '123456'];
|
$options['auth'] = [$user, '123456'];
|
||||||
$fd = $body->getRowsHash();
|
$fd = $body->getRowsHash();
|
||||||
$options['body'] = $fd;
|
$options['body'] = $fd;
|
||||||
|
$options['headers'] = [
|
||||||
|
'OCS-APIREQUEST' => 'true',
|
||||||
|
];
|
||||||
$client->send($client->createRequest($verb, $this->baseUrl.'/ocs/v1.php/'.$url, $options));
|
$client->send($client->createRequest($verb, $this->baseUrl.'/ocs/v1.php/'.$url, $options));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,11 @@ trait Sharing {
|
||||||
public function asCreatingAShareWith($user, $body) {
|
public function asCreatingAShareWith($user, $body) {
|
||||||
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares";
|
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares";
|
||||||
$client = new Client();
|
$client = new Client();
|
||||||
$options = [];
|
$options = [
|
||||||
|
'headers' => [
|
||||||
|
'OCS-APIREQUEST' => 'true',
|
||||||
|
],
|
||||||
|
];
|
||||||
if ($user === 'admin') {
|
if ($user === 'admin') {
|
||||||
$options['auth'] = $this->adminUser;
|
$options['auth'] = $this->adminUser;
|
||||||
} else {
|
} else {
|
||||||
|
@ -160,7 +164,11 @@ trait Sharing {
|
||||||
$share_id = (string) $this->lastShareData->data[0]->id;
|
$share_id = (string) $this->lastShareData->data[0]->id;
|
||||||
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares/$share_id";
|
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares/$share_id";
|
||||||
$client = new Client();
|
$client = new Client();
|
||||||
$options = [];
|
$options = [
|
||||||
|
'headers' => [
|
||||||
|
'OCS-APIREQUEST' => 'true',
|
||||||
|
],
|
||||||
|
];
|
||||||
if ($this->currentUser === 'admin') {
|
if ($this->currentUser === 'admin') {
|
||||||
$options['auth'] = $this->adminUser;
|
$options['auth'] = $this->adminUser;
|
||||||
} else {
|
} else {
|
||||||
|
@ -194,7 +202,11 @@ trait Sharing {
|
||||||
$permissions = null){
|
$permissions = null){
|
||||||
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares";
|
$fullUrl = $this->baseUrl . "v{$this->apiVersion}.php/apps/files_sharing/api/v{$this->sharingApiVersion}/shares";
|
||||||
$client = new Client();
|
$client = new Client();
|
||||||
$options = [];
|
$options = [
|
||||||
|
'headers' => [
|
||||||
|
'OCS-APIREQUEST' => 'true',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
if ($user === 'admin') {
|
if ($user === 'admin') {
|
||||||
$options['auth'] = $this->adminUser;
|
$options['auth'] = $this->adminUser;
|
||||||
|
@ -335,6 +347,9 @@ trait Sharing {
|
||||||
} else {
|
} else {
|
||||||
$options['auth'] = [$user1, $this->regularUser];
|
$options['auth'] = [$user1, $this->regularUser];
|
||||||
}
|
}
|
||||||
|
$options['headers'] = [
|
||||||
|
'OCS-APIREQUEST' => 'true',
|
||||||
|
];
|
||||||
$this->response = $client->get($fullUrl, $options);
|
$this->response = $client->get($fullUrl, $options);
|
||||||
if ($this->isUserOrGroupInSharedData($user2, $permissions)){
|
if ($this->isUserOrGroupInSharedData($user2, $permissions)){
|
||||||
return;
|
return;
|
||||||
|
@ -361,6 +376,9 @@ trait Sharing {
|
||||||
} else {
|
} else {
|
||||||
$options['auth'] = [$user, $this->regularUser];
|
$options['auth'] = [$user, $this->regularUser];
|
||||||
}
|
}
|
||||||
|
$options['headers'] = [
|
||||||
|
'OCS-APIREQUEST' => 'true',
|
||||||
|
];
|
||||||
$this->response = $client->get($fullUrl, $options);
|
$this->response = $client->get($fullUrl, $options);
|
||||||
if ($this->isUserOrGroupInSharedData($group, $permissions)){
|
if ($this->isUserOrGroupInSharedData($group, $permissions)){
|
||||||
return;
|
return;
|
||||||
|
@ -448,6 +466,7 @@ trait Sharing {
|
||||||
],
|
],
|
||||||
'headers' => [
|
'headers' => [
|
||||||
'Content-Type' => 'application/json',
|
'Content-Type' => 'application/json',
|
||||||
|
'OCS-APIREQUEST' => 'true',
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
@ -465,6 +484,7 @@ trait Sharing {
|
||||||
],
|
],
|
||||||
'headers' => [
|
'headers' => [
|
||||||
'Content-Type' => 'application/json',
|
'Content-Type' => 'application/json',
|
||||||
|
'OCS-APIREQUEST' => 'true',
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue