You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
193 lines
5.9 KiB
193 lines
5.9 KiB
<?php
|
|
|
|
declare(strict_types=1);
|
|
/**
|
|
* @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com>
|
|
*
|
|
* @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/>.
|
|
*
|
|
*/
|
|
|
|
namespace OCA\Talk\Tests\php\Settings\Admin;
|
|
|
|
use OCA\Talk\Config;
|
|
use OCA\Talk\MatterbridgeManager;
|
|
use OCA\Talk\Service\CommandService;
|
|
use OCA\Talk\Settings\Admin\AdminSettings;
|
|
use OCP\AppFramework\Services\IAppConfig;
|
|
use OCP\AppFramework\Services\IInitialState;
|
|
use OCP\ICacheFactory;
|
|
use OCP\IConfig;
|
|
use OCP\IGroupManager;
|
|
use OCP\IL10N;
|
|
use OCP\IUserSession;
|
|
use OCP\L10N\IFactory;
|
|
use PHPUnit\Framework\Assert;
|
|
use PHPUnit\Framework\MockObject\MockObject;
|
|
use Test\TestCase;
|
|
|
|
class AdminSettingsTest extends TestCase {
|
|
protected Config&MockObject $talkConfig;
|
|
protected IConfig&MockObject $serverConfig;
|
|
protected IAppConfig&MockObject $appConfig;
|
|
protected CommandService&MockObject $commandService;
|
|
protected IInitialState&MockObject $initialState;
|
|
protected ICacheFactory&MockObject $cacheFactory;
|
|
protected IGroupManager&MockObject $groupManager;
|
|
protected MatterbridgeManager&MockObject $matterbridgeManager;
|
|
protected IUserSession&MockObject $userSession;
|
|
protected IL10N&MockObject $l10n;
|
|
protected IFactory&MockObject $l10nFactory;
|
|
protected ?AdminSettings $admin = null;
|
|
|
|
public function setUp(): void {
|
|
parent::setUp();
|
|
|
|
$this->talkConfig = $this->createMock(Config::class);
|
|
$this->serverConfig = $this->createMock(IConfig::class);
|
|
$this->appConfig = $this->createMock(IAppConfig::class);
|
|
$this->commandService = $this->createMock(CommandService::class);
|
|
$this->initialState = $this->createMock(IInitialState::class);
|
|
$this->cacheFactory = $this->createMock(ICacheFactory::class);
|
|
$this->groupManager = $this->createMock(IGroupManager::class);
|
|
$this->matterbridgeManager = $this->createMock(MatterbridgeManager::class);
|
|
$this->userSession = $this->createMock(IUserSession::class);
|
|
$this->l10n = $this->createMock(IL10N::class);
|
|
$this->l10nFactory = $this->createMock(IFactory::class);
|
|
|
|
$this->admin = $this->getAdminSettings();
|
|
}
|
|
|
|
/**
|
|
* @param string[] $methods
|
|
* @return AdminSettings|MockObject
|
|
*/
|
|
protected function getAdminSettings(array $methods = []): AdminSettings {
|
|
if (empty($methods)) {
|
|
return new AdminSettings(
|
|
$this->talkConfig,
|
|
$this->serverConfig,
|
|
$this->appConfig,
|
|
$this->commandService,
|
|
$this->initialState,
|
|
$this->cacheFactory,
|
|
$this->groupManager,
|
|
$this->matterbridgeManager,
|
|
$this->userSession,
|
|
$this->l10n,
|
|
$this->l10nFactory
|
|
);
|
|
}
|
|
|
|
return $this->getMockBuilder(AdminSettings::class)
|
|
->setConstructorArgs([
|
|
$this->talkConfig,
|
|
$this->serverConfig,
|
|
$this->appConfig,
|
|
$this->commandService,
|
|
$this->initialState,
|
|
$this->cacheFactory,
|
|
$this->groupManager,
|
|
$this->matterbridgeManager,
|
|
$this->userSession,
|
|
$this->l10n,
|
|
$this->l10nFactory,
|
|
])
|
|
->onlyMethods($methods)
|
|
->getMock();
|
|
}
|
|
|
|
public function testGetSection(): void {
|
|
$admin = $this->getAdminSettings();
|
|
$this->assertNotEmpty($admin->getSection());
|
|
}
|
|
|
|
public function testGetPriority(): void {
|
|
$admin = $this->getAdminSettings();
|
|
$this->assertEquals(0, $admin->getPriority());
|
|
}
|
|
|
|
public function testGetForm(): void {
|
|
$admin = $this->getAdminSettings([
|
|
'initGeneralSettings',
|
|
'initAllowedGroups',
|
|
'initCommands',
|
|
'initStunServers',
|
|
'initTurnServers',
|
|
'initSignalingServers',
|
|
'initRequestSignalingServerTrial',
|
|
]);
|
|
|
|
$admin->expects($this->once())
|
|
->method('initGeneralSettings');
|
|
$admin->expects($this->once())
|
|
->method('initAllowedGroups');
|
|
$admin->expects($this->once())
|
|
->method('initCommands');
|
|
$admin->expects($this->once())
|
|
->method('initStunServers');
|
|
$admin->expects($this->once())
|
|
->method('initTurnServers');
|
|
$admin->expects($this->once())
|
|
->method('initSignalingServers');
|
|
$admin->expects($this->once())
|
|
->method('initRequestSignalingServerTrial');
|
|
|
|
$form = $admin->getForm();
|
|
$this->assertSame('settings/admin-settings', $form->getTemplateName());
|
|
$this->assertSame('', $form->getRenderAs());
|
|
$this->assertCount(0, $form->getParams());
|
|
}
|
|
|
|
public function testInitStunServers(): void {
|
|
$this->talkConfig->expects($this->once())
|
|
->method('getStunServers')
|
|
->willReturn(['getStunServers']);
|
|
$this->serverConfig->expects($this->once())
|
|
->method('getSystemValueBool')
|
|
->with('has_internet_connection', true)
|
|
->willReturn(true);
|
|
|
|
$i = 0;
|
|
$expectedCalls = [
|
|
['stun_servers', ['getStunServers']],
|
|
['has_internet_connection', true],
|
|
];
|
|
$this->initialState->expects($this->exactly(2))
|
|
->method('provideInitialState')
|
|
->willReturnCallback(function () use ($expectedCalls, &$i) {
|
|
Assert::assertArrayHasKey($i, $expectedCalls);
|
|
Assert::assertSame($expectedCalls[$i], func_get_args());
|
|
$i++;
|
|
});
|
|
|
|
$admin = $this->getAdminSettings();
|
|
self::invokePrivate($admin, 'initStunServers');
|
|
}
|
|
|
|
public function testInitTurnServers(): void {
|
|
$this->talkConfig->expects($this->once())
|
|
->method('getTurnServers')
|
|
->willReturn(['getTurnServers']);
|
|
|
|
$this->initialState->expects($this->once())
|
|
->method('provideInitialState')
|
|
->with('turn_servers', ['getTurnServers']);
|
|
|
|
$admin = $this->getAdminSettings();
|
|
self::invokePrivate($admin, 'initTurnServers');
|
|
}
|
|
}
|