use OC\Share20\ShareHelper;
use OCP\Files\Node;
+use OCP\Files\NotFoundException;
use OCP\Share\IManager;
use Test\TestCase;
$this->assertSame($expected, $helper->getPathsForAccessList($node));
}
+ public function dataGetPathsForUsers() {
+ return [
+ [[], [23 => 'TwentyThree', 42 => 'FortyTwo'], []],
+ [
+ [
+ 'test1' => ['node_id' => 16, 'node_path' => '/foo'],
+ 'test2' => ['node_id' => 23, 'node_path' => '/bar'],
+ 'test3' => ['node_id' => 42, 'node_path' => '/cat'],
+ 'test4' => ['node_id' => 48, 'node_path' => '/dog'],
+ ],
+ [16 => 'SixTeen', 23 => 'TwentyThree', 42 => 'FortyTwo'],
+ [
+ 'test1' => '/foo/TwentyThree/FortyTwo',
+ 'test2' => '/bar/FortyTwo',
+ 'test3' => '/cat',
+ ],
+ ],
+ ];
+ }
+
+ /**
+ * @dataProvider dataGetPathsForUsers
+ *
+ * @param array $users
+ * @param array $nodes
+ * @param array $expected
+ */
+ public function testGetPathsForUsers(array $users, array $nodes, array $expected) {
+ $lastNode = null;
+ foreach ($nodes as $nodeId => $nodeName) {
+ /** @var Node|\PHPUnit_Framework_MockObject_MockObject $node */
+ $node = $this->createMock(Node::class);
+ $node->expects($this->any())
+ ->method('getId')
+ ->willReturn($nodeId);
+ $node->expects($this->any())
+ ->method('getName')
+ ->willReturn($nodeName);
+ if ($lastNode === null) {
+ $node->expects($this->any())
+ ->method('getParent')
+ ->willThrowException(new NotFoundException());
+ } else {
+ $node->expects($this->any())
+ ->method('getParent')
+ ->willReturn($lastNode);
+ }
+ $lastNode = $node;
+ }
+
+ $this->assertEquals($expected, self::invokePrivate($this->helper, 'getPathsForUsers', [$lastNode, $users]));
+ }
+
+ public function dataGetPathsForRemotes() {
+ return [
+ [[], [23 => 'TwentyThree', 42 => 'FortyTwo'], []],
+ [
+ [
+ 'test1' => ['node_id' => 16, 'token' => 't1'],
+ 'test2' => ['node_id' => 23, 'token' => 't2'],
+ 'test3' => ['node_id' => 42, 'token' => 't3'],
+ 'test4' => ['node_id' => 48, 'token' => 't4'],
+ ],
+ [
+ 16 => '/admin/files/SixTeen',
+ 23 => '/admin/files/SixTeen/TwentyThree',
+ 42 => '/admin/files/SixTeen/TwentyThree/FortyTwo',
+ ],
+ [
+ 'test1' => ['token' => 't1', 'node_path' => '/SixTeen'],
+ 'test2' => ['token' => 't2', 'node_path' => '/SixTeen/TwentyThree'],
+ 'test3' => ['token' => 't3', 'node_path' => '/SixTeen/TwentyThree/FortyTwo'],
+ ],
+ ],
+ ];
+ }
+
+ /**
+ * @dataProvider dataGetPathsForRemotes
+ *
+ * @param array $remotes
+ * @param array $nodes
+ * @param array $expected
+ */
+ public function testGetPathsForRemotes(array $remotes, array $nodes, array $expected) {
+ $lastNode = null;
+ foreach ($nodes as $nodeId => $nodePath) {
+ /** @var Node|\PHPUnit_Framework_MockObject_MockObject $node */
+ $node = $this->createMock(Node::class);
+ $node->expects($this->any())
+ ->method('getId')
+ ->willReturn($nodeId);
+ $node->expects($this->any())
+ ->method('getPath')
+ ->willReturn($nodePath);
+ if ($lastNode === null) {
+ $node->expects($this->any())
+ ->method('getParent')
+ ->willThrowException(new NotFoundException());
+ } else {
+ $node->expects($this->any())
+ ->method('getParent')
+ ->willReturn($lastNode);
+ }
+ $lastNode = $node;
+ }
+
+ $this->assertEquals($expected, self::invokePrivate($this->helper, 'getPathsForRemotes', [$lastNode, $remotes]));
+ }
+
public function dataGetMountedPath() {
return [
['/admin/files/foobar', '/foobar'],