Unit tests for federated share expiration date
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
This commit is contained in:
parent
b0aaafe259
commit
2650da70ca
|
@ -145,7 +145,17 @@ class FederatedShareProviderTest extends \Test\TestCase {
|
|||
parent::tearDown();
|
||||
}
|
||||
|
||||
public function testCreate() {
|
||||
public function dataTestCreate() {
|
||||
return [
|
||||
[null, null],
|
||||
[new \DateTime('2020-03-01T01:02:03'), '2020-03-01 01:02:03'],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider dataTestCreate
|
||||
*/
|
||||
public function testCreate($expirationDate, $expectedDataDate) {
|
||||
$share = $this->shareManager->newShare();
|
||||
|
||||
/** @var File|MockObject $node */
|
||||
|
@ -158,6 +168,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
|
|||
->setShareOwner('shareOwner')
|
||||
->setPermissions(19)
|
||||
->setShareType(IShare::TYPE_REMOTE)
|
||||
->setExpirationDate($expirationDate)
|
||||
->setNode($node);
|
||||
|
||||
$this->tokenHandler->method('generateToken')->willReturn('token');
|
||||
|
@ -209,6 +220,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
|
|||
'permissions' => 19,
|
||||
'accepted' => 0,
|
||||
'token' => 'token',
|
||||
'expiration' => $expectedDataDate,
|
||||
];
|
||||
foreach (array_keys($expected) as $key) {
|
||||
$this->assertEquals($expected[$key], $data[$key], "Assert that value for key '$key' is the same");
|
||||
|
@ -223,6 +235,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
|
|||
$this->assertEquals(42, $share->getNodeId());
|
||||
$this->assertEquals(19, $share->getPermissions());
|
||||
$this->assertEquals('token', $share->getToken());
|
||||
$this->assertEquals($expirationDate, $share->getExpirationDate());
|
||||
}
|
||||
|
||||
public function testCreateCouldNotFindServer() {
|
||||
|
@ -442,10 +455,9 @@ class FederatedShareProviderTest extends \Test\TestCase {
|
|||
}
|
||||
|
||||
/**
|
||||
* @dataProvider datatTestUpdate
|
||||
*
|
||||
* @dataProvider dataTestUpdate
|
||||
*/
|
||||
public function testUpdate($owner, $sharedBy) {
|
||||
public function testUpdate($owner, $sharedBy, $expirationDate) {
|
||||
$this->provider = $this->getMockBuilder('OCA\FederatedFileSharing\FederatedShareProvider')
|
||||
->setConstructorArgs(
|
||||
[
|
||||
|
@ -478,6 +490,7 @@ class FederatedShareProviderTest extends \Test\TestCase {
|
|||
->setShareOwner($owner)
|
||||
->setPermissions(19)
|
||||
->setShareType(IShare::TYPE_REMOTE)
|
||||
->setExpirationDate(new \DateTime('2019-02-01T01:02:03'))
|
||||
->setNode($node);
|
||||
|
||||
$this->tokenHandler->method('generateToken')->willReturn('token');
|
||||
|
@ -512,17 +525,19 @@ class FederatedShareProviderTest extends \Test\TestCase {
|
|||
$share = $this->provider->create($share);
|
||||
|
||||
$share->setPermissions(1);
|
||||
$share->setExpirationDate($expirationDate);
|
||||
$this->provider->update($share);
|
||||
|
||||
$share = $this->provider->getShareById($share->getId());
|
||||
|
||||
$this->assertEquals(1, $share->getPermissions());
|
||||
$this->assertEquals($expirationDate, $share->getExpirationDate());
|
||||
}
|
||||
|
||||
public function datatTestUpdate() {
|
||||
public function dataTestUpdate() {
|
||||
return [
|
||||
['sharedBy', 'shareOwner'],
|
||||
['shareOwner', 'shareOwner']
|
||||
['sharedBy', 'shareOwner', new \DateTime('2020-03-01T01:02:03')],
|
||||
['shareOwner', 'shareOwner', null],
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
@ -285,4 +285,11 @@ class CapabilitiesTest extends \Test\TestCase {
|
|||
$this->assertArrayHasKey('federation', $result);
|
||||
$this->assertFalse($result['federation']['outgoing']);
|
||||
}
|
||||
|
||||
public function testFederatedSharingExpirationDate() {
|
||||
$result = $this->getResults([]);
|
||||
$this->assertArrayHasKey('federation', $result);
|
||||
$this->assertEquals(['enabled' => true], $result['federation']['expire_date']);
|
||||
$this->assertEquals(['enabled' => true], $result['federation']['expire_date_supported']);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -995,6 +995,7 @@ class ShareAPIControllerTest extends TestCase {
|
|||
->setSharedBy('initiator')
|
||||
->setShareOwner('currentUser')
|
||||
->setPermissions(\OCP\Constants::PERMISSION_READ)
|
||||
->setExpirationDate(new \DateTime('2000-01-01T01:02:03'))
|
||||
->setNode($file1)
|
||||
->setId(815);
|
||||
|
||||
|
@ -1009,6 +1010,7 @@ class ShareAPIControllerTest extends TestCase {
|
|||
->setSharedBy('initiator')
|
||||
->setShareOwner('currentUser')
|
||||
->setPermissions(\OCP\Constants::PERMISSION_READ)
|
||||
->setExpirationDate(new \DateTime('2000-01-02T01:02:03'))
|
||||
->setNode($file1)
|
||||
->setId(816);
|
||||
|
||||
|
@ -2173,6 +2175,146 @@ class ShareAPIControllerTest extends TestCase {
|
|||
$ocs->createShare('valid-path', \OCP\Constants::PERMISSION_ALL, IShare::TYPE_LINK, null, 'false', '', null, 'a1b2d3');
|
||||
}
|
||||
|
||||
public function testCreateShareRemote() {
|
||||
$share = $this->newShare();
|
||||
$this->shareManager->method('newShare')->willReturn($share);
|
||||
|
||||
/** @var \OCA\Files_Sharing\Controller\ShareAPIController $ocs */
|
||||
$ocs = $this->getMockBuilder(ShareAPIController::class)
|
||||
->setConstructorArgs([
|
||||
$this->appName,
|
||||
$this->request,
|
||||
$this->shareManager,
|
||||
$this->groupManager,
|
||||
$this->userManager,
|
||||
$this->rootFolder,
|
||||
$this->urlGenerator,
|
||||
$this->currentUser,
|
||||
$this->l,
|
||||
$this->config,
|
||||
$this->appManager,
|
||||
$this->serverContainer,
|
||||
$this->userStatusManager,
|
||||
$this->previewManager,
|
||||
])->setMethods(['formatShare'])
|
||||
->getMock();
|
||||
|
||||
$userFolder = $this->getMockBuilder(Folder::class)->getMock();
|
||||
$this->rootFolder->expects($this->once())
|
||||
->method('getUserFolder')
|
||||
->with('currentUser')
|
||||
->willReturn($userFolder);
|
||||
|
||||
$path = $this->getMockBuilder(File::class)->getMock();
|
||||
$storage = $this->createMock(Storage::class);
|
||||
$storage->method('instanceOfStorage')
|
||||
->with('OCA\Files_Sharing\External\Storage')
|
||||
->willReturn(false);
|
||||
$path->method('getStorage')->willReturn($storage);
|
||||
$userFolder->expects($this->once())
|
||||
->method('get')
|
||||
->with('valid-path')
|
||||
->willReturn($path);
|
||||
|
||||
$this->userManager->method('userExists')->with('validUser')->willReturn(true);
|
||||
|
||||
$path->expects($this->once())
|
||||
->method('lock')
|
||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
||||
|
||||
$this->shareManager->method('createShare')
|
||||
->with($this->callback(function (\OCP\Share\IShare $share) use ($path) {
|
||||
return $share->getNode() === $path &&
|
||||
$share->getPermissions() === (
|
||||
\OCP\Constants::PERMISSION_ALL &
|
||||
~\OCP\Constants::PERMISSION_DELETE &
|
||||
~\OCP\Constants::PERMISSION_CREATE
|
||||
) &&
|
||||
$share->getShareType() === IShare::TYPE_REMOTE &&
|
||||
$share->getSharedWith() === 'user@example.org' &&
|
||||
$share->getSharedBy() === 'currentUser';
|
||||
}))
|
||||
->willReturnArgument(0);
|
||||
|
||||
$this->shareManager->method('outgoingServer2ServerSharesAllowed')->willReturn(true);
|
||||
|
||||
$expected = new DataResponse([]);
|
||||
$result = $ocs->createShare('valid-path', \OCP\Constants::PERMISSION_ALL, IShare::TYPE_REMOTE, 'user@example.org');
|
||||
|
||||
$this->assertInstanceOf(get_class($expected), $result);
|
||||
$this->assertEquals($expected->getData(), $result->getData());
|
||||
}
|
||||
|
||||
public function testCreateShareRemoteGroup() {
|
||||
$share = $this->newShare();
|
||||
$this->shareManager->method('newShare')->willReturn($share);
|
||||
|
||||
/** @var \OCA\Files_Sharing\Controller\ShareAPIController $ocs */
|
||||
$ocs = $this->getMockBuilder(ShareAPIController::class)
|
||||
->setConstructorArgs([
|
||||
$this->appName,
|
||||
$this->request,
|
||||
$this->shareManager,
|
||||
$this->groupManager,
|
||||
$this->userManager,
|
||||
$this->rootFolder,
|
||||
$this->urlGenerator,
|
||||
$this->currentUser,
|
||||
$this->l,
|
||||
$this->config,
|
||||
$this->appManager,
|
||||
$this->serverContainer,
|
||||
$this->userStatusManager,
|
||||
$this->previewManager,
|
||||
])->setMethods(['formatShare'])
|
||||
->getMock();
|
||||
|
||||
$userFolder = $this->getMockBuilder(Folder::class)->getMock();
|
||||
$this->rootFolder->expects($this->once())
|
||||
->method('getUserFolder')
|
||||
->with('currentUser')
|
||||
->willReturn($userFolder);
|
||||
|
||||
$path = $this->getMockBuilder(File::class)->getMock();
|
||||
$storage = $this->createMock(Storage::class);
|
||||
$storage->method('instanceOfStorage')
|
||||
->with('OCA\Files_Sharing\External\Storage')
|
||||
->willReturn(false);
|
||||
$path->method('getStorage')->willReturn($storage);
|
||||
$userFolder->expects($this->once())
|
||||
->method('get')
|
||||
->with('valid-path')
|
||||
->willReturn($path);
|
||||
|
||||
$this->userManager->method('userExists')->with('validUser')->willReturn(true);
|
||||
|
||||
$path->expects($this->once())
|
||||
->method('lock')
|
||||
->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
|
||||
|
||||
$this->shareManager->method('createShare')
|
||||
->with($this->callback(function (\OCP\Share\IShare $share) use ($path) {
|
||||
return $share->getNode() === $path &&
|
||||
$share->getPermissions() === (
|
||||
\OCP\Constants::PERMISSION_ALL &
|
||||
~\OCP\Constants::PERMISSION_DELETE &
|
||||
~\OCP\Constants::PERMISSION_CREATE
|
||||
) &&
|
||||
$share->getShareType() === IShare::TYPE_REMOTE_GROUP &&
|
||||
$share->getSharedWith() === 'group@example.org' &&
|
||||
$share->getSharedBy() === 'currentUser';
|
||||
}))
|
||||
->willReturnArgument(0);
|
||||
|
||||
$this->shareManager->method('outgoingServer2ServerGroupSharesAllowed')->willReturn(true);
|
||||
|
||||
$expected = new DataResponse([]);
|
||||
$result = $ocs->createShare('valid-path', \OCP\Constants::PERMISSION_ALL, IShare::TYPE_REMOTE_GROUP, 'group@example.org');
|
||||
|
||||
$this->assertInstanceOf(get_class($expected), $result);
|
||||
$this->assertEquals($expected->getData(), $result->getData());
|
||||
}
|
||||
|
||||
public function testCreateShareRoom() {
|
||||
$ocs = $this->mockFormatShare();
|
||||
|
||||
|
@ -3841,6 +3983,7 @@ class ShareAPIControllerTest extends TestCase {
|
|||
->setPermissions(\OCP\Constants::PERMISSION_READ)
|
||||
->setNode($folder)
|
||||
->setShareTime(new \DateTime('2000-01-01T00:01:02'))
|
||||
->setExpirationDate(new \DateTime('2001-02-03T04:05:06'))
|
||||
->setTarget('myTarget')
|
||||
->setNote('personal note')
|
||||
->setId(42);
|
||||
|
@ -3854,7 +3997,54 @@ class ShareAPIControllerTest extends TestCase {
|
|||
'permissions' => 1,
|
||||
'stime' => 946684862,
|
||||
'parent' => null,
|
||||
'expiration' => null,
|
||||
'expiration' => '2001-02-03 00:00:00',
|
||||
'token' => null,
|
||||
'uid_file_owner' => 'owner',
|
||||
'displayname_file_owner' => 'owner',
|
||||
'note' => 'personal note',
|
||||
'label' => null,
|
||||
'path' => 'folder',
|
||||
'item_type' => 'folder',
|
||||
'storage_id' => 'storageId',
|
||||
'storage' => 100,
|
||||
'item_source' => 2,
|
||||
'file_source' => 2,
|
||||
'file_parent' => 1,
|
||||
'file_target' => 'myTarget',
|
||||
'share_with' => 'user@server.com',
|
||||
'share_with_displayname' => 'foobar',
|
||||
'mail_send' => 0,
|
||||
'mimetype' => 'myFolderMimeType',
|
||||
'has_preview' => false,
|
||||
'hide_download' => 0,
|
||||
'can_edit' => false,
|
||||
'can_delete' => false,
|
||||
], $share, [], false
|
||||
];
|
||||
|
||||
$share = \OC::$server->getShareManager()->newShare();
|
||||
$share->setShareType(IShare::TYPE_REMOTE_GROUP)
|
||||
->setSharedBy('initiator')
|
||||
->setSharedWith('user@server.com')
|
||||
->setShareOwner('owner')
|
||||
->setPermissions(\OCP\Constants::PERMISSION_READ)
|
||||
->setNode($folder)
|
||||
->setShareTime(new \DateTime('2000-01-01T00:01:02'))
|
||||
->setExpirationDate(new \DateTime('2001-02-03T04:05:06'))
|
||||
->setTarget('myTarget')
|
||||
->setNote('personal note')
|
||||
->setId(42);
|
||||
|
||||
$result[] = [
|
||||
[
|
||||
'id' => 42,
|
||||
'share_type' => IShare::TYPE_REMOTE_GROUP,
|
||||
'uid_owner' => 'initiator',
|
||||
'displayname_owner' => 'initiator',
|
||||
'permissions' => 1,
|
||||
'stime' => 946684862,
|
||||
'parent' => null,
|
||||
'expiration' => '2001-02-03 00:00:00',
|
||||
'token' => null,
|
||||
'uid_file_owner' => 'owner',
|
||||
'displayname_file_owner' => 'owner',
|
||||
|
|
Loading…
Reference in New Issue