Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoeland Jago Douma <roeland@famdouma.nl>2018-01-26 14:47:59 +0300
committerRoeland Jago Douma <roeland@famdouma.nl>2018-01-26 14:49:11 +0300
commit119896a8d7be20aa0b7817d6629c3fb97d9c9516 (patch)
tree9486493bf09f8cc8693d4b145ca4e4a4e676b3ff /apps/provisioning_api
parentf3723434eeeafb5a8b01eef6353833b607dace05 (diff)
Fix tests
* Add factory for the federatedfilesharing app Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'apps/provisioning_api')
-rw-r--r--apps/provisioning_api/appinfo/routes.php2
-rw-r--r--apps/provisioning_api/composer/composer/autoload_classmap.php1
-rw-r--r--apps/provisioning_api/composer/composer/autoload_static.php1
-rw-r--r--apps/provisioning_api/lib/Controller/UsersController.php12
-rw-r--r--apps/provisioning_api/lib/FederatedFileSharingFactory.php33
-rw-r--r--apps/provisioning_api/tests/Controller/UsersControllerTest.php75
6 files changed, 117 insertions, 7 deletions
diff --git a/apps/provisioning_api/appinfo/routes.php b/apps/provisioning_api/appinfo/routes.php
index ea1a073f5e8..aa5a30199a7 100644
--- a/apps/provisioning_api/appinfo/routes.php
+++ b/apps/provisioning_api/appinfo/routes.php
@@ -44,7 +44,7 @@ return [
['root' => '/cloud', 'name' => 'Users#addUser', 'url' => '/users', 'verb' => 'POST'],
['root' => '/cloud', 'name' => 'Users#getUser', 'url' => '/users/{userId}', 'verb' => 'GET'],
['root' => '/cloud', 'name' => 'Users#getCurrentUser', 'url' => '/user', 'verb' => 'GET'],
- ['root' => '/cloud', 'name' => 'Users#getEditableField', 'url' => '/user/fields', 'verb' => 'GET'],
+ ['root' => '/cloud', 'name' => 'Users#getEditableFields', 'url' => '/user/fields', 'verb' => 'GET'],
['root' => '/cloud', 'name' => 'Users#editUser', 'url' => '/users/{userId}', 'verb' => 'PUT'],
['root' => '/cloud', 'name' => 'Users#deleteUser', 'url' => '/users/{userId}', 'verb' => 'DELETE'],
['root' => '/cloud', 'name' => 'Users#enableUser', 'url' => '/users/{userId}/enable', 'verb' => 'PUT'],
diff --git a/apps/provisioning_api/composer/composer/autoload_classmap.php b/apps/provisioning_api/composer/composer/autoload_classmap.php
index 1ae8ef27d03..028f6e5c1dd 100644
--- a/apps/provisioning_api/composer/composer/autoload_classmap.php
+++ b/apps/provisioning_api/composer/composer/autoload_classmap.php
@@ -11,6 +11,7 @@ return array(
'OCA\\Provisioning_API\\Controller\\AppsController' => $baseDir . '/../lib/Controller/AppsController.php',
'OCA\\Provisioning_API\\Controller\\GroupsController' => $baseDir . '/../lib/Controller/GroupsController.php',
'OCA\\Provisioning_API\\Controller\\UsersController' => $baseDir . '/../lib/Controller/UsersController.php',
+ 'OCA\\Provisioning_API\\FederatedFileSharingFactory' => $baseDir . '/../lib/FederatedFileSharingFactory.php',
'OCA\\Provisioning_API\\Middleware\\Exceptions\\NotSubAdminException' => $baseDir . '/../lib/Middleware/Exceptions/NotSubAdminException.php',
'OCA\\Provisioning_API\\Middleware\\ProvisioningApiMiddleware' => $baseDir . '/../lib/Middleware/ProvisioningApiMiddleware.php',
);
diff --git a/apps/provisioning_api/composer/composer/autoload_static.php b/apps/provisioning_api/composer/composer/autoload_static.php
index 950a851eae9..b4e6c8e83b0 100644
--- a/apps/provisioning_api/composer/composer/autoload_static.php
+++ b/apps/provisioning_api/composer/composer/autoload_static.php
@@ -26,6 +26,7 @@ class ComposerStaticInitProvisioning_API
'OCA\\Provisioning_API\\Controller\\AppsController' => __DIR__ . '/..' . '/../lib/Controller/AppsController.php',
'OCA\\Provisioning_API\\Controller\\GroupsController' => __DIR__ . '/..' . '/../lib/Controller/GroupsController.php',
'OCA\\Provisioning_API\\Controller\\UsersController' => __DIR__ . '/..' . '/../lib/Controller/UsersController.php',
+ 'OCA\\Provisioning_API\\FederatedFileSharingFactory' => __DIR__ . '/..' . '/../lib/FederatedFileSharingFactory.php',
'OCA\\Provisioning_API\\Middleware\\Exceptions\\NotSubAdminException' => __DIR__ . '/..' . '/../lib/Middleware/Exceptions/NotSubAdminException.php',
'OCA\\Provisioning_API\\Middleware\\ProvisioningApiMiddleware' => __DIR__ . '/..' . '/../lib/Middleware/ProvisioningApiMiddleware.php',
);
diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php
index ca38a1d49c6..99f1a0ddd57 100644
--- a/apps/provisioning_api/lib/Controller/UsersController.php
+++ b/apps/provisioning_api/lib/Controller/UsersController.php
@@ -33,6 +33,7 @@ namespace OCA\Provisioning_API\Controller;
use OC\Accounts\AccountManager;
use OC\Settings\Mailer\NewUserMailHelper;
use OC_Helper;
+use OCA\Provisioning_API\FederatedFileSharingFactory;
use OCP\App\IAppManager;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\OCS\OCSException;
@@ -68,6 +69,8 @@ class UsersController extends OCSController {
private $l10nFactory;
/** @var NewUserMailHelper */
private $newUserMailHelper;
+ /** @var FederatedFileSharingFactory */
+ private $federatedFileSharingFactory;
/**
* @param string $appName
@@ -81,6 +84,7 @@ class UsersController extends OCSController {
* @param ILogger $logger
* @param IFactory $l10nFactory
* @param NewUserMailHelper $newUserMailHelper
+ * @param FederatedFileSharingFactory $federatedFileSharingFactory
*/
public function __construct($appName,
IRequest $request,
@@ -92,7 +96,8 @@ class UsersController extends OCSController {
AccountManager $accountManager,
ILogger $logger,
IFactory $l10nFactory,
- NewUserMailHelper $newUserMailHelper) {
+ NewUserMailHelper $newUserMailHelper,
+ FederatedFileSharingFactory $federatedFileSharingFactory) {
parent::__construct($appName, $request);
$this->userManager = $userManager;
@@ -104,6 +109,7 @@ class UsersController extends OCSController {
$this->logger = $logger;
$this->l10nFactory = $l10nFactory;
$this->newUserMailHelper = $newUserMailHelper;
+ $this->federatedFileSharingFactory = $federatedFileSharingFactory;
}
/**
@@ -300,7 +306,7 @@ class UsersController extends OCSController {
* @NoAdminRequired
* @NoSubAdminRequired
*/
- public function getEditableField() {
+ public function getEditableFields() {
$permittedFields = [];
// Editing self (display, email)
@@ -310,7 +316,7 @@ class UsersController extends OCSController {
}
if ($this->appManager->isEnabledForUser('federatedfilesharing')) {
- $federatedFileSharing = new \OCA\FederatedFileSharing\AppInfo\Application();
+ $federatedFileSharing = $this->federatedFileSharingFactory->get();
$shareProvider = $federatedFileSharing->getFederatedShareProvider();
if ($shareProvider->isLookupServerUploadEnabled()) {
$permittedFields[] = AccountManager::PROPERTY_PHONE;
diff --git a/apps/provisioning_api/lib/FederatedFileSharingFactory.php b/apps/provisioning_api/lib/FederatedFileSharingFactory.php
new file mode 100644
index 00000000000..e856b2a9bed
--- /dev/null
+++ b/apps/provisioning_api/lib/FederatedFileSharingFactory.php
@@ -0,0 +1,33 @@
+<?php
+/**
+ * @copyright 2018, Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+declare(strict_types=1);
+
+namespace OCA\Provisioning_API;
+
+use OCA\FederatedFileSharing\AppInfo\Application;
+
+class FederatedFileSharingFactory {
+ public function get(): Application {
+ return new Application();
+ }
+}
diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php
index c2ad36c455c..a8a5e4a0591 100644
--- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php
+++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php
@@ -34,6 +34,9 @@ namespace OCA\Provisioning_API\Tests\Controller;
use Exception;
use OC\Accounts\AccountManager;
use OC\Group\Manager;
+use OCA\FederatedFileSharing\AppInfo\Application;
+use OCA\FederatedFileSharing\FederatedShareProvider;
+use OCA\Provisioning_API\FederatedFileSharingFactory;
use OCP\App\IAppManager;
use OCP\AppFramework\OCS\OCSException;
use OCP\Mail\IEMailTemplate;
@@ -80,6 +83,8 @@ class UsersControllerTest extends TestCase {
private $l10nFactory;
/** @var NewUserMailHelper|PHPUnit_Framework_MockObject_MockObject */
private $newUserMailHelper;
+ /** @var FederatedFileSharingFactory|\PHPUnit_Framework_MockObject_MockObject */
+ private $federatedFileSharingFactory;
protected function setUp() {
parent::setUp();
@@ -94,6 +99,7 @@ class UsersControllerTest extends TestCase {
$this->accountManager = $this->createMock(AccountManager::class);
$this->l10nFactory = $this->createMock(IFactory::class);
$this->newUserMailHelper = $this->createMock(NewUserMailHelper::class);
+ $this->federatedFileSharingFactory = $this->createMock(FederatedFileSharingFactory::class);
$this->api = $this->getMockBuilder(UsersController::class)
->setConstructorArgs([
@@ -107,7 +113,8 @@ class UsersControllerTest extends TestCase {
$this->accountManager,
$this->logger,
$this->l10nFactory,
- $this->newUserMailHelper
+ $this->newUserMailHelper,
+ $this->federatedFileSharingFactory
])
->setMethods(['fillStorageInfo'])
->getMock();
@@ -2877,7 +2884,8 @@ class UsersControllerTest extends TestCase {
$this->accountManager,
$this->logger,
$this->l10nFactory,
- $this->newUserMailHelper
+ $this->newUserMailHelper,
+ $this->federatedFileSharingFactory
])
->setMethods(['getUserData'])
->getMock();
@@ -2938,7 +2946,8 @@ class UsersControllerTest extends TestCase {
$this->accountManager,
$this->logger,
$this->l10nFactory,
- $this->newUserMailHelper
+ $this->newUserMailHelper,
+ $this->federatedFileSharingFactory
])
->setMethods(['getUserData'])
->getMock();
@@ -3318,4 +3327,64 @@ class UsersControllerTest extends TestCase {
$this->api->resendWelcomeMessage('UserToGet');
}
+
+
+ public function dataGetEditableFields() {
+ return [
+ [false, false, []],
+ [false, true, [
+ AccountManager::PROPERTY_PHONE,
+ AccountManager::PROPERTY_ADDRESS,
+ AccountManager::PROPERTY_WEBSITE,
+ AccountManager::PROPERTY_TWITTER,
+ ]],
+ [ true, false, [
+ AccountManager::PROPERTY_DISPLAYNAME,
+ AccountManager::PROPERTY_EMAIL,
+ ]],
+ [ true, true ,[
+ AccountManager::PROPERTY_DISPLAYNAME,
+ AccountManager::PROPERTY_EMAIL,
+ AccountManager::PROPERTY_PHONE,
+ AccountManager::PROPERTY_ADDRESS,
+ AccountManager::PROPERTY_WEBSITE,
+ AccountManager::PROPERTY_TWITTER,
+ ]]
+ ];
+ }
+
+ /**
+ * @dataProvider dataGetEditableFields
+ *
+ * @param bool $allowedToChangeDisplayName
+ * @param bool $federatedSharingEnabled
+ * @param array $expected
+ */
+ public function testGetEditableFields(bool $allowedToChangeDisplayName, bool $federatedSharingEnabled, array $expected) {
+ $this->config
+ ->method('getSystemValue')
+ ->with(
+ $this->equalTo('allow_user_to_change_display_name'),
+ $this->anything()
+ )->willReturn($allowedToChangeDisplayName);
+ $this->appManager
+ ->method('isEnabledForUser')
+ ->with($this->equalTo('federatedfilesharing'))
+ ->willReturn($federatedSharingEnabled);
+
+ $shareprovider = $this->createMock(FederatedShareProvider::class);
+ $shareprovider->method('isLookupServerUploadEnabled')->willReturn(true);
+
+ $federatedFileSharing = $this->createMock(Application::class);
+ $federatedFileSharing
+ ->method('getFederatedShareProvider')
+ ->willReturn($shareprovider);
+
+ $this->federatedFileSharingFactory
+ ->method('get')
+ ->willReturn($federatedFileSharing);
+
+ $expectedResp = new DataResponse($expected);
+ $this->assertEquals($expectedResp, $this->api->getEditableFields());
+ }
}