summaryrefslogtreecommitdiffstats
path: root/apps/files_external/tests
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2016-06-21 13:55:07 +0200
committerLukas Reschke <lukas@owncloud.com>2016-06-21 14:16:45 +0200
commit6affbdc6e7f57d52d63080d5fa0d7e332770831b (patch)
tree771dba148ded3d080d4611fcff066d78777f2e90 /apps/files_external/tests
parent097cba8b38331b578895cacb8cce9d2458a765cd (diff)
downloadnextcloud-server-6affbdc6e7f57d52d63080d5fa0d7e332770831b.tar.gz
nextcloud-server-6affbdc6e7f57d52d63080d5fa0d7e332770831b.zip
Add "Global Auth" option to external storage
This adds the "Global Auth" option to the external storage implementation, it is basically done by reverting c2c6caee93c491de9fa9a2e7c2eea036f4974e61 from https://github.com/owncloud/core/pull/22468. This was taken from owncloud/core which is AGPL licensed. Commited with "icewind@owncloud.com" to keep the license header signature in sync. ![2016-06-21_14-01-06](https://cloud.githubusercontent.com/assets/878997/16228662/9c243136-37b8-11e6-9700-c1076ddb3d17.png)
Diffstat (limited to 'apps/files_external/tests')
-rw-r--r--apps/files_external/tests/Auth/Password/GlobalAuth.php117
1 files changed, 117 insertions, 0 deletions
diff --git a/apps/files_external/tests/Auth/Password/GlobalAuth.php b/apps/files_external/tests/Auth/Password/GlobalAuth.php
new file mode 100644
index 00000000000..912bfd1574d
--- /dev/null
+++ b/apps/files_external/tests/Auth/Password/GlobalAuth.php
@@ -0,0 +1,117 @@
+<?php
+/**
+ * @author Robin Appelman <icewind@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\Files_External\Tests\Auth\Password;
+
+use OCA\Files_External\Lib\Auth\Password\GlobalAuth;
+use OCA\Files_external\Lib\StorageConfig;
+use Test\TestCase;
+
+class GlobalAuthTest extends TestCase {
+ /**
+ * @var \OCP\IL10N|\PHPUnit_Framework_MockObject_MockObject
+ */
+ private $l10n;
+
+ /**
+ * @var \OCP\Security\ICredentialsManager|\PHPUnit_Framework_MockObject_MockObject
+ */
+ private $credentialsManager;
+
+ /**
+ * @var GlobalAuth
+ */
+ private $instance;
+
+ protected function setUp() {
+ parent::setUp();
+ $this->l10n = $this->getMock('\OCP\IL10N');
+ $this->credentialsManager = $this->getMock('\OCP\Security\ICredentialsManager');
+ $this->instance = new GlobalAuth($this->l10n, $this->credentialsManager);
+ }
+
+ private function getStorageConfig($type, $config = []) {
+ /** @var \OCA\Files_External\Lib\StorageConfig|\PHPUnit_Framework_MockObject_MockObject $storageConfig */
+ $storageConfig = $this->getMock('\OCA\Files_External\Lib\StorageConfig');
+ $storageConfig->expects($this->any())
+ ->method('getType')
+ ->will($this->returnValue($type));
+ $storageConfig->expects($this->any())
+ ->method('getBackendOptions')
+ ->will($this->returnCallback(function () use (&$config) {
+ return $config;
+ }));
+ $storageConfig->expects($this->any())
+ ->method('getBackendOption')
+ ->will($this->returnCallback(function ($key) use (&$config) {
+ return $config[$key];
+ }));
+ $storageConfig->expects($this->any())
+ ->method('setBackendOption')
+ ->will($this->returnCallback(function ($key, $value) use (&$config) {
+ $config[$key] = $value;
+ }));
+
+ return $storageConfig;
+ }
+
+ public function testNoCredentials() {
+ $this->credentialsManager->expects($this->once())
+ ->method('retrieve')
+ ->will($this->returnValue(null));
+
+ $storage = $this->getStorageConfig(StorageConfig::MOUNT_TYPE_ADMIN);
+
+ $this->instance->manipulateStorageConfig($storage);
+ $this->assertEquals([], $storage->getBackendOptions());
+ }
+
+ public function testSavedCredentials() {
+ $this->credentialsManager->expects($this->once())
+ ->method('retrieve')
+ ->will($this->returnValue([
+ 'user' => 'a',
+ 'password' => 'b'
+ ]));
+
+ $storage = $this->getStorageConfig(StorageConfig::MOUNT_TYPE_ADMIN);
+
+ $this->instance->manipulateStorageConfig($storage);
+ $this->assertEquals([
+ 'user' => 'a',
+ 'password' => 'b'
+ ], $storage->getBackendOptions());
+ }
+
+ /**
+ * @expectedException \OCA\Files_External\Lib\InsufficientDataForMeaningfulAnswerException
+ */
+ public function testNoCredentialsPersonal() {
+ $this->credentialsManager->expects($this->never())
+ ->method('retrieve');
+
+ $storage = $this->getStorageConfig(StorageConfig::MOUNT_TYPE_PERSONAl);
+
+ $this->instance->manipulateStorageConfig($storage);
+ $this->assertEquals([], $storage->getBackendOptions());
+ }
+
+}