diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php index 4a2eebf20b1552cbdcb58cc0deb2f72c697bdaed..f58cd9849f278510f89636c47e99a80237e463cf 100644 --- a/apps/files_external/lib/smb.php +++ b/apps/files_external/lib/smb.php @@ -78,7 +78,10 @@ class SMB extends Common { * @return string */ public function getId() { - return 'smb::' . $this->server->getUser() . '@' . $this->server->getHost() . '/' . $this->share->getName() . '/' . $this->root; + // FIXME: double slash to keep compatible with the old storage ids, + // failure to do so will lead to creation of a new storage id and + // loss of shares from the storage + return 'smb::' . $this->server->getUser() . '@' . $this->server->getHost() . '//' . $this->share->getName() . '/' . $this->root; } /** diff --git a/apps/files_external/tests/backends/smb.php b/apps/files_external/tests/backends/smb.php index 9e60a9e06e096ec48db4f6bbe69e3bdf26980611..0da86cb824f6c10ff13b4399ff8f2f09fbfd0e82 100644 --- a/apps/files_external/tests/backends/smb.php +++ b/apps/files_external/tests/backends/smb.php @@ -61,4 +61,16 @@ class SMB extends Storage { $this->assertTrue($result); $this->assertTrue($this->instance->is_dir('foo bar')); } + + public function testStorageId() { + $this->instance = new \OC\Files\Storage\SMB([ + 'host' => 'testhost', + 'user' => 'testuser', + 'password' => 'somepass', + 'share' => 'someshare', + 'root' => 'someroot', + ]); + $this->assertEquals('smb::testuser@testhost//someshare//someroot/', $this->instance->getId()); + $this->instance = null; + } }