diff options
author | Robin Appelman <icewind@owncloud.com> | 2016-06-21 13:55:07 +0200 |
---|---|---|
committer | Lukas Reschke <lukas@owncloud.com> | 2016-06-21 14:16:45 +0200 |
commit | 6affbdc6e7f57d52d63080d5fa0d7e332770831b (patch) | |
tree | 771dba148ded3d080d4611fcff066d78777f2e90 /apps/files_external/tests | |
parent | 097cba8b38331b578895cacb8cce9d2458a765cd (diff) | |
download | nextcloud-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.php | 117 |
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()); + } + +} |