diff options
Diffstat (limited to 'tests/lib/GlobalScale/ConfigTest.php')
-rw-r--r-- | tests/lib/GlobalScale/ConfigTest.php | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/tests/lib/GlobalScale/ConfigTest.php b/tests/lib/GlobalScale/ConfigTest.php new file mode 100644 index 00000000000..447b5886ce3 --- /dev/null +++ b/tests/lib/GlobalScale/ConfigTest.php @@ -0,0 +1,76 @@ +<?php + +/** + * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace Test\GlobalScale; + +use OC\GlobalScale\Config; +use OCP\IConfig; +use Test\TestCase; + +class ConfigTest extends TestCase { + /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */ + private $config; + + protected function setUp(): void { + parent::setUp(); + + $this->config = $this->createMock(IConfig::class); + } + + /** + * @param array $mockMethods + * @return Config|\PHPUnit\Framework\MockObject\MockObject + */ + public function getInstance($mockMethods = []) { + if (!empty($mockMethods)) { + return $this->getMockBuilder(Config::class) + ->setConstructorArgs([$this->config]) + ->onlyMethods($mockMethods) + ->getMock(); + } + + return new Config($this->config); + } + + public function testIsGlobalScaleEnabled(): void { + $gsConfig = $this->getInstance(); + $this->config->expects($this->once())->method('getSystemValueBool') + ->with('gs.enabled', false)->willReturn(true); + + $result = $gsConfig->isGlobalScaleEnabled(); + + $this->assertTrue($result); + } + + + /** + * + * @param bool $gsEnabled + * @param string $gsFederation + * @param bool $expected + */ + #[\PHPUnit\Framework\Attributes\DataProvider('dataTestOnlyInternalFederation')] + public function testOnlyInternalFederation($gsEnabled, $gsFederation, $expected): void { + $gsConfig = $this->getInstance(['isGlobalScaleEnabled']); + + $gsConfig->expects($this->any())->method('isGlobalScaleEnabled')->willReturn($gsEnabled); + + $this->config->expects($this->any())->method('getSystemValueString') + ->with('gs.federation', 'internal')->willReturn($gsFederation); + + $this->assertSame($expected, $gsConfig->onlyInternalFederation()); + } + + public static function dataTestOnlyInternalFederation(): array { + return [ + [true, 'global', false], + [true, 'internal', true], + [false, 'global', false], + [false, 'internal', false] + ]; + } +} |