Browse Source

Fix tests

* Add factory for the federatedfilesharing app

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
tags/v14.0.0beta1
Roeland Jago Douma 6 years ago
parent
commit
119896a8d7
No account linked to committer's email address

+ 1
- 1
apps/provisioning_api/appinfo/routes.php View File

@@ -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'],

+ 1
- 0
apps/provisioning_api/composer/composer/autoload_classmap.php View File

@@ -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',
);

+ 1
- 0
apps/provisioning_api/composer/composer/autoload_static.php View File

@@ -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',
);

+ 9
- 3
apps/provisioning_api/lib/Controller/UsersController.php View File

@@ -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;

+ 33
- 0
apps/provisioning_api/lib/FederatedFileSharingFactory.php View File

@@ -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();
}
}

+ 72
- 3
apps/provisioning_api/tests/Controller/UsersControllerTest.php View File

@@ -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());
}
}

Loading…
Cancel
Save