Merge pull request #16629 from owncloud/files-renametoreservedname

Check target name on rename with web UI
This commit is contained in:
Vincent Petry 2015-06-01 11:07:08 +02:00
commit 5a38964218
2 changed files with 16 additions and 24 deletions

View File

@ -74,6 +74,17 @@ class App {
'data' => NULL 'data' => NULL
); );
try {
// check if the new name is conform to file name restrictions
$this->view->verifyPath($dir, $newname);
} catch (\OCP\Files\InvalidPathException $ex) {
$result['data'] = array(
'message' => $this->l10n->t($ex->getMessage()),
'code' => 'invalidname',
);
return $result;
}
$normalizedOldPath = \OC\Files\Filesystem::normalizePath($dir . '/' . $oldname); $normalizedOldPath = \OC\Files\Filesystem::normalizePath($dir . '/' . $oldname);
$normalizedNewPath = \OC\Files\Filesystem::normalizePath($dir . '/' . $newname); $normalizedNewPath = \OC\Files\Filesystem::normalizePath($dir . '/' . $newname);

View File

@ -222,36 +222,17 @@ class Test_OC_Files_App_Rename extends \Test\TestCase {
} }
/** /**
* Test move to a folder that doesn't exist any more * Test move to invalid name
*/ */
function testRenameToNonExistingFolder() { function testRenameToInvalidName() {
$dir = '/'; $dir = '/';
$oldname = 'oldname'; $oldname = 'oldname';
$newname = '/unexist/newname'; $newname = 'abc\\';
$this->viewMock->expects($this->any())
->method('file_exists')
->with($this->anything())
->will($this->returnValueMap(array(
array('/oldname', true),
array('/unexist', false)
)));
$this->viewMock->expects($this->any())
->method('getFileInfo')
->will($this->returnValue(array(
'fileid' => 123,
'type' => 'dir',
'mimetype' => 'httpd/unix-directory',
'size' => 18,
'etag' => 'abcdef',
'directory' => '/unexist',
'name' => 'new_name',
)));
$result = $this->files->rename($dir, $oldname, $newname); $result = $this->files->rename($dir, $oldname, $newname);
$this->assertFalse($result['success']); $this->assertFalse($result['success']);
$this->assertEquals('targetnotfound', $result['data']['code']); $this->assertEquals('File name contains at least one invalid character', $result['data']['message']);
$this->assertEquals('invalidname', $result['data']['code']);
} }
} }