diff options
author | Vincent Petry <pvince81@owncloud.com> | 2013-11-14 16:52:00 +0100 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2013-11-19 15:05:11 +0100 |
commit | 8ab40f195984e76ec1fe8e89c8f0081f6bb7a418 (patch) | |
tree | ea9c02b008cc4e558e25965d76c98b93b9095286 /apps/files_external | |
parent | a7962faa5621c5a52e4fab3a94eab0b5b975e742 (diff) | |
download | nextcloud-server-8ab40f195984e76ec1fe8e89c8f0081f6bb7a418.tar.gz nextcloud-server-8ab40f195984e76ec1fe8e89c8f0081f6bb7a418.zip |
Removing trailing dot in path that samba doesn't seem to like
Fixes #5778
Added unit test for getId() and constructUrl()
Diffstat (limited to 'apps/files_external')
-rw-r--r-- | apps/files_external/lib/smb.php | 7 | ||||
-rw-r--r-- | apps/files_external/tests/smbfunctions.php | 41 |
2 files changed, 47 insertions, 1 deletions
diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php index ecd4dae0484..c464fa9107a 100644 --- a/apps/files_external/lib/smb.php +++ b/apps/files_external/lib/smb.php @@ -47,8 +47,13 @@ class SMB extends \OC\Files\Storage\StreamWrapper{ public function constructUrl($path) { if (substr($path, -1)=='/') { - $path=substr($path, 0, -1); + $path = substr($path, 0, -1); } + if (substr($path, 0, 1)=='/') { + $path = substr($path, 1); + } + // remove trailing dots which some versions of samba don't seem to like + $path = rtrim($path, '.'); $path = urlencode($path); $user = urlencode($this->user); $pass = urlencode($this->password); diff --git a/apps/files_external/tests/smbfunctions.php b/apps/files_external/tests/smbfunctions.php new file mode 100644 index 00000000000..749906d0136 --- /dev/null +++ b/apps/files_external/tests/smbfunctions.php @@ -0,0 +1,41 @@ +<?php +/** + * Copyright (c) 2013 Vincent Petry <pvince81@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Files\Storage; + +class SMBFunctions extends \PHPUnit_Framework_TestCase { + + public function setUp() { + $id = uniqid(); + // dummy config + $this->config = array( + 'run'=>false, + 'user'=>'test', + 'password'=>'testpassword', + 'host'=>'smbhost', + 'share'=>'/sharename', + 'root'=>'/rootdir/', + ); + + $this->instance = new \OC\Files\Storage\SMB($this->config); + } + + public function tearDown() { + } + + public function testGetId() { + $this->assertEquals('smb::test@smbhost//sharename//rootdir/', $this->instance->getId()); + } + + public function testConstructUrl() { + $this->assertEquals("smb://test:testpassword@smbhost/sharename/rootdir/abc", $this->instance->constructUrl('/abc')); + $this->assertEquals("smb://test:testpassword@smbhost/sharename/rootdir/abc", $this->instance->constructUrl('/abc/')); + $this->assertEquals("smb://test:testpassword@smbhost/sharename/rootdir/abc%2F", $this->instance->constructUrl('/abc/.')); + $this->assertEquals("smb://test:testpassword@smbhost/sharename/rootdir/abc%2Fdef", $this->instance->constructUrl('/abc/def')); + } +} |