Skip to content

Commit

Permalink
update unit tests
Browse files Browse the repository at this point in the history
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
  • Loading branch information
schiessle committed Apr 7, 2017
1 parent 676a4c7 commit 3323d01
Show file tree
Hide file tree
Showing 10 changed files with 55 additions and 98 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ class RequestHandlerControllerTest extends TestCase {

/** @var \OCA\FederatedFileSharing\AddressHandler|\PHPUnit_Framework_MockObject_MockObject */
private $addressHandler;

/** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
private $userManager;

Expand Down Expand Up @@ -107,7 +107,7 @@ protected function setUp() {
$this->userManager = $this->getMockBuilder('OCP\IUserManager')->getMock();

$this->cloudIdManager = new CloudIdManager();

$this->registerHttpHelper($httpHelperMock);

$this->s2s = new RequestHandlerController(
Expand Down Expand Up @@ -384,6 +384,7 @@ public function testGetShare($found, $correctId, $correctToken) {
'parent' => null,
'accepted' => '0',
'expiration' => null,
'password' => null,
'mail_send' => '0'
];

Expand Down
7 changes: 4 additions & 3 deletions apps/files_sharing/lib/Controller/ShareAPIController.php
Original file line number Diff line number Diff line change
Expand Up @@ -669,13 +669,14 @@ public function updateShare(
throw new OCSNotFoundException($this->l->t('Wrong share ID, share doesn\'t exist'));
}

if ($permissions === null && $password === null && $publicUpload === null && $expireDate === null) {
throw new OCSBadRequestException($this->l->t('Wrong or no update parameter given'));
}

/*
* expirationdate, password and publicUpload only make sense for link shares
*/
if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
if ($permissions === null && $password === null && $publicUpload === null && $expireDate === null) {
throw new OCSBadRequestException($this->l->t('Wrong or no update parameter given'));
}

$newPermissions = null;
if ($publicUpload === 'true') {
Expand Down
30 changes: 0 additions & 30 deletions apps/files_sharing/tests/ApiTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -936,36 +936,6 @@ function testUpdateShare() {
$this->shareManager->deleteShare($share2);
}

/**
* @medium
* @depends testCreateShareUserFile
*/
public function testUpdateShareInvalidPermissions() {
$node1 = $this->userFolder->get($this->filename);
$share1 = $this->shareManager->newShare();
$share1->setNode($node1)
->setSharedBy(self::TEST_FILES_SHARING_API_USER1)
->setSharedWith(self::TEST_FILES_SHARING_API_USER2)
->setShareType(\OCP\Share::SHARE_TYPE_USER)
->setPermissions(19);
$share1 = $this->shareManager->createShare($share1);

$ocs = $this->createOCS(self::TEST_FILES_SHARING_API_USER1);
try {
$ocs->updateShare($share1->getId());
$this->fail();
} catch (OCSBadRequestException $e) {

}
$ocs->cleanup();

//Permissions should not have changed!
$share1 = $this->shareManager->getShareById('ocinternal:' . $share1->getId());
$this->assertEquals(19, $share1->getPermissions());

$this->shareManager->deleteShare($share1);
}

/**
* @medium
*/
Expand Down
4 changes: 2 additions & 2 deletions apps/files_sharing/tests/MigrationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -429,11 +429,11 @@ public function testAddPasswordColumn() {

foreach ($allShares as $share) {
if ((int)$share['share_type'] === Share::SHARE_TYPE_LINK) {
$this->assertSame(null, $share['share_with']);
$this->assertNull( $share['share_with']);
$this->assertSame('shareWith', $share['password']);
} else {
$this->assertSame('shareWith', $share['share_with']);
$this->assertSame(null, $share['password']);
$this->assertNull($share['password']);
}
}
}
Expand Down
8 changes: 3 additions & 5 deletions apps/sharebymail/tests/ShareByMailProviderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
namespace OCA\ShareByMail\Tests;


use OC\HintException;
use OCA\ShareByMail\Settings\SettingsManager;
use OCA\ShareByMail\ShareByMailProvider;
use OCP\Files\IRootFolder;
Expand All @@ -33,9 +32,7 @@
use OCP\IURLGenerator;
use OCP\IUserManager;
use OCP\Mail\IMailer;
use OCP\Security\IHasher;
use OCP\Security\ISecureRandom;
use OCP\Share\Exceptions\ShareNotFound;
use OCP\Share\IManager;
use OCP\Share\IShare;
use Test\TestCase;
Expand Down Expand Up @@ -127,7 +124,8 @@ private function getInstance(array $mockedMethods = []) {
$this->logger,
$this->mailer,
$this->urlGenerator,
$this->activityManager
$this->activityManager,
$this->settingsManager
]
);

Expand Down Expand Up @@ -318,7 +316,7 @@ public function testUpdate() {
$this->share->expects($this->once())->method('getPermissions')->willReturn($permissions + 1);
$this->share->expects($this->once())->method('getShareOwner')->willReturn($uidOwner);
$this->share->expects($this->once())->method('getSharedBy')->willReturn($sharedBy);
$this->share->expects($this->once())->method('getId')->willReturn($id);
$this->share->expects($this->atLeastOnce())->method('getId')->willReturn($id);

$this->assertSame($this->share,
$instance->update($this->share)
Expand Down
7 changes: 3 additions & 4 deletions core/js/sharedialogshareelistview.js
Original file line number Diff line number Diff line change
Expand Up @@ -510,7 +510,7 @@
passwordField.attr('value', '');
passwordField.attr('placeholder', PASSWORD_PLACEHOLDER_MESSAGE);
} else {
var passwordField = '#passwordField-' + this.cid + '-' + shareId;
passwordField = '#passwordField-' + this.cid + '-' + shareId;
this.$(passwordField).focus();
}
},
Expand Down Expand Up @@ -623,10 +623,9 @@
var $li = $element.closest('li[data-share-id]');
var shareId = $li.data('share-id');

var permissions = OC.PERMISSION_CREATE | OC.PERMISSION_UPDATE | OC.PERMISSION_DELETE | OC.PERMISSION_READ;
if ($element.is(':checked')) {
var permissions = OC.PERMISSION_CREATE | OC.PERMISSION_UPDATE | OC.PERMISSION_DELETE;
} else {
var permissions = OC.PERMISSION_CREATE | OC.PERMISSION_UPDATE | OC.PERMISSION_DELETE | OC.PERMISSION_READ;
permissions = OC.PERMISSION_CREATE | OC.PERMISSION_UPDATE | OC.PERMISSION_DELETE;
}

/** disable checkboxes during save operation to avoid race conditions **/
Expand Down
2 changes: 1 addition & 1 deletion lib/private/Share20/DefaultShareProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ public function create(\OCP\Share\IShare $share) {

//If a password is set store it
if ($share->getPassword() !== null) {
$qb->setValue('share_with', $qb->createNamedParameter($share->getPassword()));
$qb->setValue('password', $qb->createNamedParameter($share->getPassword()));
}

//If an expiration date is set store it
Expand Down
71 changes: 28 additions & 43 deletions lib/private/Share20/Manager.php
Original file line number Diff line number Diff line change
Expand Up @@ -266,8 +266,8 @@ protected function generalCreateChecks(\OCP\Share\IShare $share) {

// Check that read permissions are always set
// Link shares are allowed to have no read permissions to allow upload to hidden folders
$noReadPermissionRequired = $share->getShareType() !== \OCP\Share::SHARE_TYPE_LINK
|| $share->getShareType() !== \OCP\Share::SHARE_TYPE_EMAIL;
$noReadPermissionRequired = $share->getShareType() === \OCP\Share::SHARE_TYPE_LINK
|| $share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL;
if (!$noReadPermissionRequired &&
($share->getPermissions() & \OCP\Constants::PERMISSION_READ) === 0) {
throw new \InvalidArgumentException('Shares need at least read permissions');
Expand Down Expand Up @@ -936,59 +936,49 @@ public function getSharesBy($userId, $shareType, $path = null, $reshares = false
* Work around so we don't return expired shares but still follow
* proper pagination.
*/
if ($shareType === \OCP\Share::SHARE_TYPE_LINK) {
$shares2 = [];

while(true) {
$added = 0;
foreach ($shares as $share) {
$shares2 = [];

$added++;
$shares2[] = $share;
while(true) {
$added = 0;
foreach ($shares as $share) {

if (count($shares2) === $limit) {
break;
}
try {
$this->checkExpireDate($share);
} catch (ShareNotFound $e) {
//Ignore since this basically means the share is deleted
continue;
}

if (count($shares2) === $limit) {
break;
}
$added++;
$shares2[] = $share;

// If there was no limit on the select we are done
if ($limit === -1) {
if (count($shares2) === $limit) {
break;
}
}

$offset += $added;

// Fetch again $limit shares
$shares = $provider->getSharesBy($userId, $shareType, $path, $reshares, $limit, $offset);
if (count($shares2) === $limit) {
break;
}

// No more shares means we are done
if (empty($shares)) {
break;
}
// If there was no limit on the select we are done
if ($limit === -1) {
break;
}

$shares = $shares2;
}
$offset += $added;

// Fetch again $limit shares
$shares = $provider->getSharesBy($userId, $shareType, $path, $reshares, $limit, $offset);

// remove all shares which are already expired
foreach ($shares as $key => $share) {
try {
$this->checkExpireDate($share);
} catch (ShareNotFound $e) {
unset($shares[$key]);
try {
$this->deleteShare($share);
} catch (NotFoundException $e) {
//Ignore since this basically means the share is deleted
}
// No more shares means we are done
if (empty($shares)) {
break;
}
}

$shares = $shares2;

return $shares;
}
Expand All @@ -1011,11 +1001,6 @@ public function getSharedWith($userId, $shareType, $node = null, $limit = 50, $o
$this->checkExpireDate($share);
} catch (ShareNotFound $e) {
unset($shares[$key]);
try {
$this->deleteShare($share);
} catch (NotFoundException $e) {
//Ignore since this basically means the share is deleted
}
}
}

Expand Down
2 changes: 1 addition & 1 deletion lib/public/Share/IShare.php
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ public function getPermissions();
/**
* Set the expiration date
*
* @param \DateTime $expireDate
* @param null|\DateTime $expireDate
* @return \OCP\Share\IShare The modified object
* @since 9.0.0
*/
Expand Down
17 changes: 10 additions & 7 deletions tests/lib/Share20/DefaultShareProviderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,7 @@ public function testGetShareByIdLinkShare() {
$qb->insert('share')
->values([
'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_LINK),
'share_with' => $qb->expr()->literal('sharedWith'),
'password' => $qb->expr()->literal('password'),
'uid_owner' => $qb->expr()->literal('shareOwner'),
'uid_initiator' => $qb->expr()->literal('sharedBy'),
'item_type' => $qb->expr()->literal('file'),
Expand Down Expand Up @@ -366,7 +366,8 @@ public function testGetShareByIdLinkShare() {

$this->assertEquals($id, $share->getId());
$this->assertEquals(\OCP\Share::SHARE_TYPE_LINK, $share->getShareType());
$this->assertEquals('sharedWith', $share->getPassword());
$this->assertNull($share->getSharedWith());
$this->assertEquals('password', $share->getPassword());
$this->assertEquals('sharedBy', $share->getSharedBy());
$this->assertEquals('shareOwner', $share->getShareOwner());
$this->assertEquals($ownerPath, $share->getNode());
Expand Down Expand Up @@ -752,7 +753,7 @@ public function testGetShareByToken() {
$qb->insert('share')
->values([
'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_LINK),
'share_with' => $qb->expr()->literal('password'),
'password' => $qb->expr()->literal('password'),
'uid_owner' => $qb->expr()->literal('shareOwner'),
'uid_initiator' => $qb->expr()->literal('sharedBy'),
'item_type' => $qb->expr()->literal('file'),
Expand Down Expand Up @@ -814,7 +815,7 @@ public function storageAndFileNameProvider() {
['home::shareOwner', 'files/test.txt', 'files/test2.txt'],
// regular file on external storage
['smb::whatever', 'files/test.txt', 'files/test2.txt'],
// regular file on external storage in trashbin-like folder,
// regular file on external storage in trashbin-like folder,
['smb::whatever', 'files_trashbin/files/test.txt', 'files_trashbin/files/test2.txt'],
];
}
Expand Down Expand Up @@ -2353,9 +2354,11 @@ public function testGetSharesInFolder() {
$rootFolder
);

$u1 = $userManager->createUser('testShare1', 'test');
$u2 = $userManager->createUser('testShare2', 'test');
$u3 = $userManager->createUser('testShare3', 'test');
$password = md5(time());

$u1 = $userManager->createUser('testShare1', $password);
$u2 = $userManager->createUser('testShare2', $password);
$u3 = $userManager->createUser('testShare3', $password);

$g1 = $groupManager->createGroup('group1');

Expand Down

0 comments on commit 3323d01

Please sign in to comment.