summaryrefslogtreecommitdiffstats
path: root/apps/files_external
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_external')
-rw-r--r--apps/files_external/service/dbconfigservice.php28
-rw-r--r--apps/files_external/service/storagesservice.php8
-rw-r--r--apps/files_external/tests/service/dbconfigservicetest.php28
-rw-r--r--apps/files_external/tests/service/storagesservicetest.php29
4 files changed, 93 insertions, 0 deletions
diff --git a/apps/files_external/service/dbconfigservice.php b/apps/files_external/service/dbconfigservice.php
index 76f7052c4ed..810a57963f8 100644
--- a/apps/files_external/service/dbconfigservice.php
+++ b/apps/files_external/service/dbconfigservice.php
@@ -214,6 +214,34 @@ class DBConfigService {
/**
* @param int $mountId
+ * @param string $newMountPoint
+ */
+ public function setMountPoint($mountId, $newMountPoint) {
+ $builder = $this->connection->getQueryBuilder();
+
+ $query = $builder->update('external_mounts')
+ ->set('mount_point', $builder->createNamedParameter($newMountPoint))
+ ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, \PDO::PARAM_INT)));
+
+ $query->execute();
+ }
+
+ /**
+ * @param int $mountId
+ * @param string $newAuthBackend
+ */
+ public function setAuthBackend($mountId, $newAuthBackend) {
+ $builder = $this->connection->getQueryBuilder();
+
+ $query = $builder->update('external_mounts')
+ ->set('auth_backend', $builder->createNamedParameter($newAuthBackend))
+ ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, \PDO::PARAM_INT)));
+
+ $query->execute();
+ }
+
+ /**
+ * @param int $mountId
* @param string $key
* @param string $value
*/
diff --git a/apps/files_external/service/storagesservice.php b/apps/files_external/service/storagesservice.php
index 97f79c13324..dd28c415cea 100644
--- a/apps/files_external/service/storagesservice.php
+++ b/apps/files_external/service/storagesservice.php
@@ -392,6 +392,14 @@ abstract class StoragesService {
$this->dbConfig->setOption($id, $key, $value);
}
+ if ($updatedStorage->getMountPoint() !== $oldStorage->getMountPoint()) {
+ $this->dbConfig->setMountPoint($id, $updatedStorage->getMountPoint());
+ }
+
+ if ($updatedStorage->getAuthMechanism()->getIdentifier() !== $oldStorage->getAuthMechanism()->getIdentifier()) {
+ $this->dbConfig->setAuthBackend($id, $updatedStorage->getAuthMechanism()->getIdentifier());
+ }
+
$this->triggerChangeHooks($oldStorage, $updatedStorage);
return $this->getStorage($id);
diff --git a/apps/files_external/tests/service/dbconfigservicetest.php b/apps/files_external/tests/service/dbconfigservicetest.php
index d5b4ff1585d..bfb564c6663 100644
--- a/apps/files_external/tests/service/dbconfigservicetest.php
+++ b/apps/files_external/tests/service/dbconfigservicetest.php
@@ -230,4 +230,32 @@ class DBConfigServiceTest extends TestCase {
$this->assertEquals($id1, $mounts[0]['mount_id']);
$this->assertEquals([['type' => DBConfigService::APPLICABLE_TYPE_GLOBAL, 'value' => null, 'mount_id' => $id1]], $mounts[0]['applicable']);
}
+
+ public function testSetMountPoint() {
+ $id1 = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN);
+ $id2 = $this->addMount('/foo', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN);
+
+ $this->dbConfig->setMountPoint($id1, '/asd');
+
+ $mount = $this->dbConfig->getMountById($id1);
+ $this->assertEquals('/asd', $mount['mount_point']);
+
+ // remains unchanged
+ $mount = $this->dbConfig->getMountById($id2);
+ $this->assertEquals('/foo', $mount['mount_point']);
+ }
+
+ public function testSetAuthBackend() {
+ $id1 = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN);
+ $id2 = $this->addMount('/foo', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN);
+
+ $this->dbConfig->setAuthBackend($id1, 'none');
+
+ $mount = $this->dbConfig->getMountById($id1);
+ $this->assertEquals('none', $mount['auth_backend']);
+
+ // remains unchanged
+ $mount = $this->dbConfig->getMountById($id2);
+ $this->assertEquals('bar', $mount['auth_backend']);
+ }
}
diff --git a/apps/files_external/tests/service/storagesservicetest.php b/apps/files_external/tests/service/storagesservicetest.php
index 7847bd45d4a..d5430982899 100644
--- a/apps/files_external/tests/service/storagesservicetest.php
+++ b/apps/files_external/tests/service/storagesservicetest.php
@@ -465,4 +465,33 @@ abstract class StoragesServiceTest extends \Test\TestCase {
$params[Filesystem::signal_param_users]
);
}
+
+ public function testUpdateStorageMountPoint() {
+ $backend = $this->backendService->getBackend('identifier:\OCA\Files_External\Lib\Backend\SMB');
+ $authMechanism = $this->backendService->getAuthMechanism('identifier:\Auth\Mechanism');
+
+ $storage = new StorageConfig();
+ $storage->setMountPoint('mountpoint');
+ $storage->setBackend($backend);
+ $storage->setAuthMechanism($authMechanism);
+ $storage->setBackendOptions(['password' => 'testPassword']);
+
+ $savedStorage = $this->service->addStorage($storage);
+
+ $newAuthMechanism = $this->backendService->getAuthMechanism('identifier:\Other\Auth\Mechanism');
+
+ $updatedStorage = new StorageConfig($savedStorage->getId());
+ $updatedStorage->setMountPoint('mountpoint2');
+ $updatedStorage->setBackend($backend);
+ $updatedStorage->setAuthMechanism($newAuthMechanism);
+ $updatedStorage->setBackendOptions(['password' => 'password2']);
+
+ $this->service->updateStorage($updatedStorage);
+
+ $savedStorage = $this->service->getStorage($updatedStorage->getId());
+
+ $this->assertEquals('/mountpoint2', $savedStorage->getMountPoint());
+ $this->assertEquals($newAuthMechanism, $savedStorage->getAuthMechanism());
+ $this->assertEquals('password2', $savedStorage->getBackendOption('password'));
+ }
}