diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2015-12-07 10:20:43 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2015-12-07 10:20:43 +0100 |
commit | 0c3d97921fef6f0c831b1ba8da98933a8e9c87ae (patch) | |
tree | a841ef181879be7d07b5e6876a9b5e202bdee6c8 | |
parent | e1f2965e54a838cb3ec69c4682d7bfe95cee9173 (diff) | |
parent | 19b2fe6a3ab4d9ded3c6974ac109d5d5b02251bb (diff) | |
download | nextcloud-server-0c3d97921fef6f0c831b1ba8da98933a8e9c87ae.tar.gz nextcloud-server-0c3d97921fef6f0c831b1ba8da98933a8e9c87ae.zip |
Merge pull request #20904 from owncloud/view-mime-filter
Fix mimetype filter in getDirectoryContent
-rw-r--r-- | lib/private/files/view.php | 8 | ||||
-rw-r--r-- | tests/lib/files/view.php | 35 |
2 files changed, 37 insertions, 6 deletions
diff --git a/lib/private/files/view.php b/lib/private/files/view.php index 7854790d0e5..6abefff4198 100644 --- a/lib/private/files/view.php +++ b/lib/private/files/view.php @@ -1427,13 +1427,9 @@ class View { if ($mimetype_filter) { $files = array_filter($files, function (FileInfo $file) use ($mimetype_filter) { if (strpos($mimetype_filter, '/')) { - if ($file->getMimetype() === $mimetype_filter) { - $result[] = $file; - } + return $file->getMimetype() === $mimetype_filter; } else { - if ($file->getMimePart() === $mimetype_filter) { - $result[] = $file; - } + return $file->getMimePart() === $mimetype_filter; } }); } diff --git a/tests/lib/files/view.php b/tests/lib/files/view.php index 186cf28d7c3..1fc4b9ab684 100644 --- a/tests/lib/files/view.php +++ b/tests/lib/files/view.php @@ -2389,4 +2389,39 @@ class View extends \Test\TestCase { $view = new \OC\Files\View('/' . $this->user . '/files'); $this->assertEquals('foo', $view->rmdir('mount')); } + + public function mimeFilterProvider() { + return [ + [null, ['test1.txt', 'test2.txt', 'test3.md', 'test4.png']], + ['text/plain', ['test1.txt', 'test2.txt']], + ['text/markdown', ['test3.md']], + ['text', ['test1.txt', 'test2.txt', 'test3.md']], + ]; + } + + /** + * @param string $filter + * @param string[] $expected + * @dataProvider mimeFilterProvider + */ + public function testGetDirectoryContentMimeFilter($filter, $expected) { + $storage1 = new Temporary(); + $root = $this->getUniqueID('/'); + \OC\Files\Filesystem::mount($storage1, array(), $root . '/'); + $view = new \OC\Files\View($root); + + $view->file_put_contents('test1.txt', 'asd'); + $view->file_put_contents('test2.txt', 'asd'); + $view->file_put_contents('test3.md', 'asd'); + $view->file_put_contents('test4.png', ''); + + $content = $view->getDirectoryContent('', $filter); + + $files = array_map(function(FileInfo $info) { + return $info->getName(); + }, $content); + sort($files); + + $this->assertEquals($expected, $files); + } } |