/** * @dataProvider dataGetShare */ public function testGetShare(\OC\Share20\IShare $share, array $result) { $ocs = $this->getMockBuilder('OCA\\Files_Sharing\\API\\Share20OCS')->setConstructorArgs([$this->shareManager, $this->groupManager, $this->userManager, $this->request, $this->rootFolder, $this->urlGenerator, $this->currentUser])->setMethods(['canAccessShare'])->getMock(); $ocs->method('canAccessShare')->willReturn(true); $this->shareManager->expects($this->once())->method('getShareById')->with($share->getId())->willReturn($share); $userFolder = $this->getMock('OCP\\Files\\Folder'); $userFolder->method('getRelativePath')->will($this->returnArgument(0)); $this->rootFolder->method('getUserFolder')->with($share->getShareOwner()->getUID())->willReturn($userFolder); $this->urlGenerator->method('linkToRouteAbsolute')->willReturn('url'); $expected = new \OC_OCS_Result($result); $this->assertEquals($expected->getData(), $ocs->getShare($share->getId())->getData()); }
public function testCreateLinkShare() { $share = new \OC\Share20\Share(); $sharedBy = $this->getMock('OCP\\IUser'); $sharedBy->method('getUID')->willReturn('sharedBy'); $shareOwner = $this->getMock('OCP\\IUser'); $shareOwner->method('getUID')->WillReturn('shareOwner'); $this->userManager->method('get')->will($this->returnValueMap([['sharedBy', $sharedBy], ['shareOwner', $shareOwner]])); $path = $this->getMock('\\OCP\\Files\\Folder'); $path->method('getId')->willReturn(100); $path->method('getOwner')->willReturn($shareOwner); $ownerFolder = $this->getMock('OCP\\Files\\Folder'); $userFolder = $this->getMock('OCP\\Files\\Folder'); $this->rootFolder->method('getUserFolder')->will($this->returnValueMap([['sharedBy', $userFolder], ['shareOwner', $ownerFolder]])); $userFolder->method('getById')->with(100)->willReturn([$path]); $ownerFolder->method('getById')->with(100)->willReturn([$path]); $share->setShareType(\OCP\Share::SHARE_TYPE_LINK); $share->setSharedBy($sharedBy); $share->setShareOwner($shareOwner); $share->setPath($path); $share->setPermissions(1); $share->setPassword('password'); $share->setToken('token'); $expireDate = new \DateTime(); $share->setExpirationDate($expireDate); $share->setTarget('/target'); $share2 = $this->provider->create($share); $this->assertNotNull($share2->getId()); $this->assertSame('ocinternal:' . $share2->getId(), $share2->getFullId()); $this->assertSame(\OCP\Share::SHARE_TYPE_LINK, $share2->getShareType()); $this->assertSame($sharedBy, $share2->getSharedBy()); $this->assertSame($shareOwner, $share2->getShareOwner()); $this->assertSame(1, $share2->getPermissions()); $this->assertSame('/target', $share2->getTarget()); $this->assertLessThanOrEqual(time(), $share2->getSharetime()); $this->assertSame($path, $share2->getPath()); $this->assertSame('password', $share2->getPassword()); $this->assertSame('token', $share2->getToken()); $this->assertEquals($expireDate, $share2->getExpirationDate()); }
public function testGetShareByToken() { $qb = $this->dbConn->getQueryBuilder(); $qb->insert('share')->values(['share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_LINK), 'share_with' => $qb->expr()->literal('password'), 'uid_owner' => $qb->expr()->literal('shareOwner'), 'uid_initiator' => $qb->expr()->literal('sharedBy'), 'item_type' => $qb->expr()->literal('file'), 'file_source' => $qb->expr()->literal(42), 'file_target' => $qb->expr()->literal('myTarget'), 'permissions' => $qb->expr()->literal(13), 'token' => $qb->expr()->literal('secrettoken')]); $qb->execute(); $id = $qb->getLastInsertId(); $owner = $this->getMock('\\OCP\\IUser'); $owner->method('getUID')->willReturn('shareOwner'); $initiator = $this->getMock('\\OCP\\IUser'); $initiator->method('getUID')->willReturn('sharedBy'); $this->userManager->method('get')->will($this->returnValueMap([['sharedBy', $initiator], ['shareOwner', $owner]])); $file = $this->getMock('\\OCP\\Files\\File'); $this->rootFolder->method('getUserFolder')->with('shareOwner')->will($this->returnSelf()); $this->rootFolder->method('getById')->with(42)->willReturn([$file]); $share = $this->provider->getShareByToken('secrettoken'); $this->assertEquals($id, $share->getId()); $this->assertSame($owner, $share->getShareOwner()); $this->assertSame($initiator, $share->getSharedBy()); $this->assertSame('secrettoken', $share->getToken()); $this->assertSame('password', $share->getPassword()); $this->assertSame(null, $share->getSharedWith()); }
public function testGetChildren() { $qb = $this->dbConn->getQueryBuilder(); $qb->insert('share')->values(['share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_USER), 'share_with' => $qb->expr()->literal('sharedWith'), 'uid_owner' => $qb->expr()->literal('sharedBy'), 'item_type' => $qb->expr()->literal('file'), 'file_source' => $qb->expr()->literal(42), 'file_target' => $qb->expr()->literal('myTarget'), 'permissions' => $qb->expr()->literal(13)]); $qb->execute(); // Get the id $qb = $this->dbConn->getQueryBuilder(); $cursor = $qb->select('id')->from('share')->setMaxResults(1)->orderBy('id', 'DESC')->execute(); $id = $cursor->fetch(); $id = $id['id']; $cursor->closeCursor(); $qb = $this->dbConn->getQueryBuilder(); $qb->insert('share')->values(['share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_USER), 'share_with' => $qb->expr()->literal('user1'), 'uid_owner' => $qb->expr()->literal('user2'), 'item_type' => $qb->expr()->literal('file'), 'file_source' => $qb->expr()->literal(1), 'file_target' => $qb->expr()->literal('myTarget1'), 'permissions' => $qb->expr()->literal(2), 'parent' => $qb->expr()->literal($id)]); $qb->execute(); $qb = $this->dbConn->getQueryBuilder(); $qb->insert('share')->values(['share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_GROUP), 'share_with' => $qb->expr()->literal('group1'), 'uid_owner' => $qb->expr()->literal('user3'), 'item_type' => $qb->expr()->literal('folder'), 'file_source' => $qb->expr()->literal(3), 'file_target' => $qb->expr()->literal('myTarget2'), 'permissions' => $qb->expr()->literal(4), 'parent' => $qb->expr()->literal($id)]); $qb->execute(); $shareOwner = $this->getMock('OCP\\IUser'); $shareOwner->method('getUID')->willReturn('shareOwner'); $user1 = $this->getMock('OCP\\IUser'); $user2 = $this->getMock('OCP\\IUser'); $user2->method('getUID')->willReturn('user2'); $user3 = $this->getMock('OCP\\IUser'); $user3->method('getUID')->willReturn('user3'); $user2Path = $this->getMock('\\OCP\\Files\\File'); $user2Path->expects($this->once())->method('getOwner')->willReturn($shareOwner); $user2Folder = $this->getMock('\\OCP\\Files\\Folder'); $user2Folder->expects($this->once())->method('getById')->with(1)->willReturn([$user2Path]); $user3Path = $this->getMock('\\OCP\\Files\\Folder'); $user3Path->expects($this->once())->method('getOwner')->willReturn($shareOwner); $user3Folder = $this->getMock('\\OCP\\Files\\Folder'); $user3Folder->expects($this->once())->method('getById')->with(3)->willReturn([$user3Path]); $ownerPath = $this->getMock('\\OCP\\Files\\Folder'); $ownerFolder = $this->getMock('\\OCP\\Files\\Folder'); $ownerFolder->method('getById')->willReturn([$ownerPath]); $this->rootFolder->method('getUserFolder')->will($this->returnValueMap([['shareOwner', $ownerFolder], ['user2', $user2Folder], ['user3', $user3Folder]])); $this->userManager->method('get')->will($this->returnValueMap([['user1', $user1], ['user2', $user2], ['user3', $user3]])); $group1 = $this->getMock('OCP\\IGroup'); $this->groupManager->method('get')->will($this->returnValueMap([['group1', $group1]])); $share = $this->getMock('\\OC\\Share20\\IShare'); $share->method('getId')->willReturn($id); $children = $this->provider->getChildren($share); $this->assertCount(2, $children); //Child1 $this->assertEquals(\OCP\Share::SHARE_TYPE_USER, $children[0]->getShareType()); $this->assertEquals($user1, $children[0]->getSharedWith()); $this->assertEquals($user2, $children[0]->getSharedBy()); $this->assertEquals($shareOwner, $children[0]->getShareOwner()); $this->assertEquals($ownerPath, $children[0]->getPath()); $this->assertEquals(2, $children[0]->getPermissions()); $this->assertEquals(null, $children[0]->getToken()); $this->assertEquals(null, $children[0]->getExpirationDate()); $this->assertEquals('myTarget1', $children[0]->getTarget()); //Child2 $this->assertEquals(\OCP\Share::SHARE_TYPE_GROUP, $children[1]->getShareType()); $this->assertEquals($group1, $children[1]->getSharedWith()); $this->assertEquals($user3, $children[1]->getSharedBy()); $this->assertEquals($shareOwner, $children[1]->getShareOwner()); $this->assertEquals($ownerPath, $children[1]->getPath()); $this->assertEquals(4, $children[1]->getPermissions()); $this->assertEquals(null, $children[1]->getToken()); $this->assertEquals(null, $children[1]->getExpirationDate()); $this->assertEquals('myTarget2', $children[1]->getTarget()); }