use Dice\Dice;
use Friendica\App\Arguments;
use Friendica\App\Router;
+use Friendica\Core\Config\Factory\Config;
+use Friendica\Core\Config\Util\ConfigFileManager;
use Friendica\Core\Config\ValueObject\Cache;
-use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\Core\Session\Capability\IHandleSessions;
use Friendica\Core\Session\Type\Memory;
use Friendica\Database\Database;
use Friendica\Database\DBStructure;
use Friendica\DI;
use Friendica\Test\Util\Database\StaticDatabase;
+use Friendica\Test\Util\VFSTrait;
/**
* Parent class for test cases requiring fixtures
*/
abstract class FixtureTest extends DatabaseTest
{
+ use VFSTrait;
+
/** @var Dice */
protected $dice;
*/
protected function setUp(): void
{
+ $this->setUpVfsDir();
+
parent::setUp();
$server = $_SERVER;
$this->dice = (new Dice())
->addRules(include __DIR__ . '/../static/dependencies.config.php')
+ ->addRule(ConfigFileManager::class, [
+ 'instanceOf' => Config::class,
+ 'call' => [['createConfigFileLoader', [$this->root->url(), $server,],
+ Dice::CHAIN_CALL]]])
->addRule(Database::class, ['instanceOf' => StaticDatabase::class, 'shared' => true])
->addRule(IHandleSessions::class, ['instanceOf' => Memory::class, 'shared' => true, 'call' => null])
->addRule(Arguments::class, [
]);
DI::init($this->dice);
- /** @var IManageConfigValues $config */
$configCache = $this->dice->create(Cache::class);
$configCache->set('database', 'disable_pdo', true);
$this->setConfigFile('defaults.config.php', true);
$this->setConfigFile('settings.config.php', true);
$this->setConfigFile('local.config.php');
+ $this->setDataFile('node.config.php');
+ }
+
+ protected function setDataFile(string $filename)
+ {
+ $file = dirname(__DIR__) . DIRECTORY_SEPARATOR .
+ 'datasets' . DIRECTORY_SEPARATOR .
+ 'config' . DIRECTORY_SEPARATOR .
+ $filename;
+
+ if (file_exists($file)) {
+ vfsStream::newFile($filename)
+ ->at($this->root->getChild('config'))
+ ->setContent(file_get_contents($file));
+ }
}
/**
'mail',
'post-delivery-data',
// Base test config to avoid notice messages
- 'config' => [
- [
- 'cat' => 'system',
- 'k' => 'url',
- 'v' => 'http://localhost',
- ],
- [
- 'cat' => 'config',
- 'k' => 'hostname',
- 'v' => 'localhost',
- ],
- [
- 'cat' => 'system',
- 'k' => 'worker_dont_fork',
- 'v' => '1',
- ],
- [
- 'cat' => 'system',
- 'k' => 'curl_timeout',
- 'v' => '1',
- ],
- [
- 'cat' => 'system',
- 'k' => 'xrd_timeout',
- 'v' => '1',
- ],
- ],
'user' => [
[
'uid' => 42,
--- /dev/null
+<?php
+
+return [
+ 'config' => [
+ 'hostname' => 'localhost',
+ ],
+ 'system' => [
+ 'url' => 'http://localhost',
+ "worker_dont_fork" => 1,
+ "curl_timeout"=> 1,
+ "xrd_timeout"=> 1,
+ ],
+];
use Friendica\Database\Database;
use Friendica\Test\Util\VFSTrait;
use Friendica\Util\BasePath;
-use Friendica\Core\Config\Util\ConfigFileLoader;
+use Friendica\Core\Config\Util\ConfigFileManager;
use Friendica\Util\Profiler;
use PHPUnit\Framework\TestCase;
use Psr\Log\LoggerInterface;
*/
public function testConfigFileLoader()
{
- /** @var ConfigFileLoader $configFileLoader */
- $configFileLoader = $this->dice->create(ConfigFileLoader::class);
+ /** @var ConfigFileManager $configFileManager */
+ $configFileManager = $this->dice->create(ConfigFileManager::class);
- self::assertInstanceOf(ConfigFileLoader::class, $configFileLoader);
+ self::assertInstanceOf(ConfigFileManager::class, $configFileManager);
$configCache = new Cache();
- $configFileLoader->setupCache($configCache);
+ $configFileManager->setupCache($configCache);
self::assertNotEmpty($configCache->getAll());
self::assertArrayHasKey('database', $configCache->getAll());
namespace Friendica\Test\src\Core\Config\Cache;
-use Friendica\Core\Config\Cache;
+use Friendica\Core\Config\ValueObject\Cache;
use Friendica\Test\MockedTest;
use ParagonIE\HiddenString\HiddenString;
use stdClass;
];
}
- private function assertConfigValues($data, \Friendica\Core\Config\ValueObject\Cache $configCache)
+ private function assertConfigValues($data, Cache $configCache)
{
foreach ($data as $cat => $values) {
foreach ($values as $key => $value) {
*/
public function testLoadConfigArray($data)
{
- $configCache = new \Friendica\Core\Config\ValueObject\Cache();
+ $configCache = new Cache();
$configCache->load($data);
self::assertConfigValues($data, $configCache);
]
];
- $configCache = new \Friendica\Core\Config\ValueObject\Cache();
- $configCache->load($data, \Friendica\Core\Config\ValueObject\Cache::SOURCE_DB);
+ $configCache = new Cache();
+ $configCache->load($data, Cache::SOURCE_DATA);
// doesn't override - Low Priority due Config file
- $configCache->load($override, \Friendica\Core\Config\ValueObject\Cache::SOURCE_FILE);
+ $configCache->load($override, Cache::SOURCE_FILE);
self::assertConfigValues($data, $configCache);
// override the value - High Prio due Server Env
- $configCache->load($override, \Friendica\Core\Config\ValueObject\Cache::SOURCE_ENV);
+ $configCache->load($override, Cache::SOURCE_ENV);
self::assertEquals($override['system']['test'], $configCache->get('system', 'test'));
self::assertEquals($override['system']['boolTrue'], $configCache->get('system', 'boolTrue'));
// Don't overwrite server ENV variables - even in load mode
- $configCache->load($data, \Friendica\Core\Config\ValueObject\Cache::SOURCE_DB);
+ $configCache->load($data, Cache::SOURCE_DATA);
self::assertEquals($override['system']['test'], $configCache->get('system', 'test'));
self::assertEquals($override['system']['boolTrue'], $configCache->get('system', 'boolTrue'));
// Overwrite ENV variables with ENV variables
- $configCache->load($data, \Friendica\Core\Config\ValueObject\Cache::SOURCE_ENV);
+ $configCache->load($data, Cache::SOURCE_ENV);
self::assertConfigValues($data, $configCache);
self::assertNotEquals($override['system']['test'], $configCache->get('system', 'test'));
*/
public function testLoadConfigArrayWrong()
{
- $configCache = new \Friendica\Core\Config\ValueObject\Cache();
+ $configCache = new Cache();
// empty dataset
$configCache->load([]);
*/
public function testGetAll($data)
{
- $configCache = new \Friendica\Core\Config\ValueObject\Cache();
+ $configCache = new Cache();
$configCache->load($data);
$all = $configCache->getAll();
*/
public function testSetGet($data)
{
- $configCache = new \Friendica\Core\Config\ValueObject\Cache();
+ $configCache = new Cache();
foreach ($data as $cat => $values) {
foreach ($values as $key => $value) {
*/
public function testGetEmpty()
{
- $configCache = new \Friendica\Core\Config\ValueObject\Cache();
+ $configCache = new Cache();
self::assertNull($configCache->get('something', 'value'));
}
*/
public function testGetCat()
{
- $configCache = new \Friendica\Core\Config\ValueObject\Cache([
+ $configCache = new Cache([
'system' => [
'key1' => 'value1',
'key2' => 'value2',
*/
public function testDelete($data)
{
- $configCache = new \Friendica\Core\Config\ValueObject\Cache($data);
+ $configCache = new Cache($data);
foreach ($data as $cat => $values) {
foreach ($values as $key => $value) {
*/
public function testKeyDiffWithResult($data)
{
- $configCache = new \Friendica\Core\Config\ValueObject\Cache($data);
+ $configCache = new Cache($data);
$diffConfig = [
'fakeCat' => [
*/
public function testKeyDiffWithoutResult($data)
{
- $configCache = new \Friendica\Core\Config\ValueObject\Cache($data);
+ $configCache = new Cache($data);
$diffConfig = $configCache->getAll();
*/
public function testPasswordHide()
{
- $configCache = new \Friendica\Core\Config\ValueObject\Cache([
+ $configCache = new Cache([
'database' => [
'password' => 'supersecure',
'username' => 'notsecured',
*/
public function testPasswordShow()
{
- $configCache = new \Friendica\Core\Config\ValueObject\Cache([
+ $configCache = new Cache([
'database' => [
'password' => 'supersecure',
'username' => 'notsecured',
*/
public function testEmptyPassword()
{
- $configCache = new \Friendica\Core\Config\ValueObject\Cache([
+ $configCache = new Cache([
'database' => [
'password' => '',
'username' => '',
public function testWrongTypePassword()
{
- $configCache = new \Friendica\Core\Config\ValueObject\Cache([
+ $configCache = new Cache([
'database' => [
'password' => new stdClass(),
'username' => '',
self::assertNotEmpty($configCache->get('database', 'password'));
self::assertEmpty($configCache->get('database', 'username'));
- $configCache = new \Friendica\Core\Config\ValueObject\Cache([
+ $configCache = new Cache([
'database' => [
'password' => 23,
'username' => '',
public function testSetOverrides($data)
{
- $configCache = new \Friendica\Core\Config\ValueObject\Cache();
- $configCache->load($data, \Friendica\Core\Config\ValueObject\Cache::SOURCE_DB);
+ $configCache = new Cache();
+ $configCache->load($data, Cache::SOURCE_DATA);
// test with wrong override
- self::assertFalse($configCache->set('system', 'test', '1234567', \Friendica\Core\Config\ValueObject\Cache::SOURCE_FILE));
+ self::assertFalse($configCache->set('system', 'test', '1234567', Cache::SOURCE_FILE));
self::assertEquals($data['system']['test'], $configCache->get('system', 'test'));
// test with override (equal)
- self::assertTrue($configCache->set('system', 'test', '8910', \Friendica\Core\Config\ValueObject\Cache::SOURCE_DB));
+ self::assertTrue($configCache->set('system', 'test', '8910', Cache::SOURCE_DATA));
self::assertEquals('8910', $configCache->get('system', 'test'));
// test with override (over)
- self::assertTrue($configCache->set('system', 'test', '111213', \Friendica\Core\Config\ValueObject\Cache::SOURCE_ENV));
+ self::assertTrue($configCache->set('system', 'test', '111213', Cache::SOURCE_ENV));
self::assertEquals('111213', $configCache->get('system', 'test'));
}
+
+ /**
+ * @dataProvider dataTests
+ *
+ * @return void
+ */
+ public function testSetData($data)
+ {
+ $configCache = new Cache();
+ $configCache->load($data, Cache::SOURCE_FILE);
+
+ $configCache->set('system', 'test_2','with_data', Cache::SOURCE_DATA);
+
+ $this->assertEquals(['system' => ['test_2' => 'with_data']], $configCache->getDataBySource(Cache::SOURCE_DATA));
+ $this->assertEquals($data, $configCache->getDataBySource(Cache::SOURCE_FILE));
+ }
}
use Friendica\Core\Config\Factory\Config;
use Friendica\Test\MockedTest;
use Friendica\Test\Util\VFSTrait;
-use Friendica\Core\Config\Util\ConfigFileLoader;
+use Friendica\Core\Config\Util\ConfigFileManager;
use org\bovigo\vfs\vfsStream;
class ConfigFileLoaderTest extends MockedTest
{
$this->delConfigFile('local.config.php');
- $configFileLoader = new ConfigFileLoader(
+ $configFileLoader = new ConfigFileManager(
$this->root->url(),
$this->root->url() . DIRECTORY_SEPARATOR . Config::CONFIG_DIR,
$this->root->url() . DIRECTORY_SEPARATOR . Config::STATIC_DIR
->at($this->root->getChild('config'))
->setContent('<?php return true;');
- $configFileLoader = new ConfigFileLoader(
+ $configFileLoader = new ConfigFileManager(
$this->root->url(),
$this->root->url() . DIRECTORY_SEPARATOR . Config::CONFIG_DIR,
$this->root->url() . DIRECTORY_SEPARATOR . Config::STATIC_DIR
->at($this->root->getChild('config'))
->setContent(file_get_contents($file));
- $configFileLoader = new ConfigFileLoader(
+ $configFileLoader = new ConfigFileManager(
$this->root->url(),
$this->root->url() . DIRECTORY_SEPARATOR . Config::CONFIG_DIR,
$this->root->url() . DIRECTORY_SEPARATOR . Config::STATIC_DIR
->at($this->root->getChild('config'))
->setContent(file_get_contents($file));
- $configFileLoader = new ConfigFileLoader(
+ $configFileLoader = new ConfigFileManager(
$this->root->url(),
$this->root->url() . DIRECTORY_SEPARATOR . Config::CONFIG_DIR,
$this->root->url() . DIRECTORY_SEPARATOR . Config::STATIC_DIR
->at($this->root)
->setContent(file_get_contents($file));
- $configFileLoader = new ConfigFileLoader(
+ $configFileLoader = new ConfigFileManager(
$this->root->url(),
$this->root->url() . DIRECTORY_SEPARATOR . Config::CONFIG_DIR,
$this->root->url() . DIRECTORY_SEPARATOR . Config::STATIC_DIR
->at($this->root->getChild('addon')->getChild('test')->getChild('config'))
->setContent(file_get_contents($file));
- $configFileLoader = new ConfigFileLoader(
+ $configFileLoader = new ConfigFileManager(
$this->root->url(),
$this->root->url() . DIRECTORY_SEPARATOR . Config::CONFIG_DIR,
$this->root->url() . DIRECTORY_SEPARATOR . Config::STATIC_DIR
->at($this->root->getChild('config'))
->setContent(file_get_contents($fileDir . 'B.config.php'));
- $configFileLoader = new ConfigFileLoader(
+ $configFileLoader = new ConfigFileManager(
$this->root->url(),
$this->root->url() . DIRECTORY_SEPARATOR . Config::CONFIG_DIR,
$this->root->url() . DIRECTORY_SEPARATOR . Config::STATIC_DIR
->at($this->root->getChild('config'))
->setContent(file_get_contents($fileDir . 'B.ini.php'));
- $configFileLoader = new ConfigFileLoader(
+ $configFileLoader = new ConfigFileManager(
$this->root->url(),
$this->root->url() . DIRECTORY_SEPARATOR . Config::CONFIG_DIR,
$this->root->url() . DIRECTORY_SEPARATOR . Config::STATIC_DIR
->at($this->root->getChild('config'))
->setContent(file_get_contents($fileDir . 'B.ini.php'));
- $configFileLoader = new ConfigFileLoader(
+ $configFileLoader = new ConfigFileManager(
$this->root->url(),
$this->root->url() . DIRECTORY_SEPARATOR . Config::CONFIG_DIR,
$this->root->url() . DIRECTORY_SEPARATOR . Config::STATIC_DIR
self::assertEquals('newValue', $configCache->get('system', 'newKey'));
}
+
+ public function testSaveData()
+ {
+ $this->delConfigFile('local.config.php');
+
+ $fileDir = dirname(__DIR__) . DIRECTORY_SEPARATOR .
+ '..' . DIRECTORY_SEPARATOR .
+ '..' . DIRECTORY_SEPARATOR .
+ '..' . DIRECTORY_SEPARATOR .
+ 'datasets' . DIRECTORY_SEPARATOR .
+ 'config' . DIRECTORY_SEPARATOR;
+
+ vfsStream::newFile('B.config.php')
+ ->at($this->root->getChild('config2'))
+ ->setContent(file_get_contents($fileDir . 'B.config.php'));
+
+ $configFileLoader = (new Config())->createConfigFileLoader($this->root->url(), ['FRIENDICA_CONFIG_DIR' => $this->root->getChild('config2')->url()]);
+ $configCache = new \Friendica\Core\Config\ValueObject\Cache();
+
+ $configFileLoader->setupCache($configCache);
+
+ // overwrite some data and save it back to the config file
+ $configCache->set('system', 'test', 'it', \Friendica\Core\Config\ValueObject\Cache::SOURCE_DATA);
+ $configCache->set('config', 'test', 'it', \Friendica\Core\Config\ValueObject\Cache::SOURCE_DATA);
+ $configCache->set('system', 'test_2', 2, \Friendica\Core\Config\ValueObject\Cache::SOURCE_DATA);
+ $configFileLoader->saveData($configCache);
+
+ // Reload the configCache with the new values
+ $configCache2 = new \Friendica\Core\Config\ValueObject\Cache();
+ $configFileLoader->setupCache($configCache2);
+
+ self::assertEquals($configCache, $configCache2);
+ self::assertEquals([
+ 'system' => [
+ 'test' => 'it',
+ 'test_2' => 2
+ ],
+ 'config' => [
+ 'test' => 'it'
+ ]], $configCache2->getDataBySource(\Friendica\Core\Config\ValueObject\Cache::SOURCE_DATA));
+ }
}
use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts;
use Friendica\Core\Config\Capability\IManageConfigValues;
-use Friendica\Core\Config\Repository\Config as ConfigModel;
+use Friendica\Core\Config\Model\Config;
+use Friendica\Core\Config\Util\ConfigFileManager;
+use Friendica\Core\Config\Util\ConfigFileTransformer;
use Friendica\Core\Config\ValueObject\Cache;
use Friendica\Test\MockedTest;
-use Mockery\MockInterface;
-use Mockery;
+use Friendica\Test\Util\VFSTrait;
+use org\bovigo\vfs\vfsStream;
-abstract class ConfigTest extends MockedTest
+class ConfigTest extends MockedTest
{
use ArraySubsetAsserts;
-
- /** @var ConfigModel|MockInterface */
- protected $configModel;
+ use VFSTrait;
/** @var Cache */
protected $configCache;
+ /** @var ConfigFileManager */
+ protected $configFileManager;
+
/** @var IManageConfigValues */
protected $testedConfig;
protected function setUp(): void
{
+ $this->setUpVfsDir();
+
parent::setUp();
- // Create the config model
- $this->configModel = Mockery::mock(ConfigModel::class);
$this->configCache = new Cache();
+ $this->configFileManager = new ConfigFileManager($this->root->url(), $this->root->url() . '/config/', $this->root->url() . '/static/');
}
/**
* @return IManageConfigValues
*/
- abstract public function getInstance();
+ public function getInstance()
+ {
+ $this->configFileManager->setupCache($this->configCache, []);
+ return new Config($this->configFileManager, $this->configCache);
+ }
public function dataTests()
{
/**
* Test the configuration initialization
+ * @dataProvider dataConfigLoad
*/
public function testSetUp(array $data)
{
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(true)
- ->once();
+ vfsStream::newFile(ConfigFileManager::CONFIG_DATA_FILE)
+ ->at($this->root->getChild('config'))
+ ->setContent(ConfigFileTransformer::encode($data));
$this->testedConfig = $this->getInstance();
self::assertInstanceOf(Cache::class, $this->testedConfig->getCache());
}
/**
- * Test the configuration load() method
+ * Test the configuration reload() method
*
* @param array $data
* @param array $load
+ *
+ * @dataProvider dataConfigLoad
*/
- public function testLoad(array $data, array $load)
+ public function testReload(array $data, array $load)
{
+ vfsStream::newFile(ConfigFileManager::CONFIG_DATA_FILE)
+ ->at($this->root->getChild('config'))
+ ->setContent(ConfigFileTransformer::encode($data));
+
$this->testedConfig = $this->getInstance();
self::assertInstanceOf(Cache::class, $this->testedConfig->getCache());
- foreach ($load as $loadedCats) {
- $this->testedConfig->load($loadedCats);
- }
+ $this->testedConfig->reload();
// Assert at least loaded cats are loaded
foreach ($load as $loadedCats) {
/**
* Test the configuration load() method with overwrite
+ *
+ * @dataProvider dataDoubleLoad
*/
public function testCacheLoadDouble(array $data1, array $data2, array $expect = [])
{
+ vfsStream::newFile(ConfigFileManager::CONFIG_DATA_FILE)
+ ->at($this->root->getChild('config'))
+ ->setContent(ConfigFileTransformer::encode($data1));
+
$this->testedConfig = $this->getInstance();
self::assertInstanceOf(Cache::class, $this->testedConfig->getCache());
- foreach ($data1 as $cat => $data) {
- $this->testedConfig->load($cat);
- }
-
// Assert at least loaded cats are loaded
foreach ($data1 as $cat => $data) {
self::assertConfig($cat, $data);
}
+ vfsStream::newFile(ConfigFileManager::CONFIG_DATA_FILE)
+ ->at($this->root->getChild('config'))
+ ->setContent(ConfigFileTransformer::encode($data2));
+
+ $this->testedConfig->reload();
+
foreach ($data2 as $cat => $data) {
- $this->testedConfig->load($cat);
+ self::assertConfig($cat, $data);
}
}
*/
public function testLoadWrong()
{
- $this->configModel->shouldReceive('isConnected')->andReturn(true)->once();
- $this->configModel->shouldReceive('load')->withAnyArgs()->andReturn([])->once();
-
- $this->testedConfig = $this->getInstance();
+ $this->testedConfig = new Config($this->configFileManager, new Cache());
self::assertInstanceOf(Cache::class, $this->testedConfig->getCache());
self::assertEmpty($this->testedConfig->getCache()->getAll());
}
/**
- * Test the configuration get() and set() methods without adapter
- *
- * @dataProvider dataTests
- */
- public function testSetGetWithoutDB($data)
- {
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(false)
- ->times(3);
-
- $this->testedConfig = $this->getInstance();
- self::assertInstanceOf(Cache::class, $this->testedConfig->getCache());
-
- self::assertTrue($this->testedConfig->set('test', 'it', $data));
-
- self::assertEquals($data, $this->testedConfig->get('test', 'it'));
- self::assertEquals($data, $this->testedConfig->getCache()->get('test', 'it'));
- }
-
- /**
- * Test the configuration get() and set() methods with a model/db
+ * Test the configuration get() and set() methods
*
* @dataProvider dataTests
*/
- public function testSetGetWithDB($data)
+ public function testSetGet($data)
{
- $this->configModel->shouldReceive('set')->with('test', 'it', $data)->andReturn(true)->once();
-
$this->testedConfig = $this->getInstance();
self::assertInstanceOf(Cache::class, $this->testedConfig->getCache());
self::assertEquals('default', $this->testedConfig->get('test', 'it', 'default', true));
}
- /**
- * Test the configuration get() method with refresh
- *
- * @dataProvider dataTests
- */
- public function testGetWithRefresh($data)
- {
- $this->configCache->load(['test' => ['it' => 'now']], Cache::SOURCE_FILE);
-
- $this->testedConfig = $this->getInstance();
- self::assertInstanceOf(Cache::class, $this->testedConfig->getCache());
-
- // without refresh
- self::assertEquals('now', $this->testedConfig->get('test', 'it'));
- self::assertEquals('now', $this->testedConfig->getCache()->get('test', 'it'));
-
- // with refresh
- self::assertEquals($data, $this->testedConfig->get('test', 'it', null, true));
- self::assertEquals($data, $this->testedConfig->getCache()->get('test', 'it'));
-
- // without refresh and wrong value and default
- self::assertEquals('default', $this->testedConfig->get('test', 'not', 'default'));
- self::assertNull($this->testedConfig->getCache()->get('test', 'not'));
- }
-
/**
* Test the configuration delete() method without a model/db
*
* @dataProvider dataTests
*/
- public function testDeleteWithoutDB($data)
+ public function testDelete($data)
{
$this->configCache->load(['test' => ['it' => $data]], Cache::SOURCE_FILE);
- $this->testedConfig = $this->getInstance();
+ $this->testedConfig = new Config($this->configFileManager, $this->configCache);
self::assertInstanceOf(Cache::class, $this->testedConfig->getCache());
self::assertEquals($data, $this->testedConfig->get('test', 'it'));
self::assertEmpty($this->testedConfig->getCache()->getAll());
}
- /**
- * Test the configuration delete() method with a model/db
- */
- public function testDeleteWithDB()
- {
- $this->configCache->load(['test' => ['it' => 'now', 'quarter' => 'true']], Cache::SOURCE_FILE);
-
- $this->configModel->shouldReceive('delete')
- ->with('test', 'it')
- ->andReturn(false)
- ->once();
- $this->configModel->shouldReceive('delete')
- ->with('test', 'second')
- ->andReturn(true)
- ->once();
- $this->configModel->shouldReceive('delete')
- ->with('test', 'third')
- ->andReturn(false)
- ->once();
- $this->configModel->shouldReceive('delete')
- ->with('test', 'quarter')
- ->andReturn(true)
- ->once();
-
- $this->testedConfig = $this->getInstance();
- self::assertInstanceOf(Cache::class, $this->testedConfig->getCache());
-
- // directly set the value to the cache
- $this->testedConfig->getCache()->set('test', 'it', 'now');
-
- self::assertEquals('now', $this->testedConfig->get('test', 'it'));
- self::assertEquals('now', $this->testedConfig->getCache()->get('test', 'it'));
-
- // delete from cache only
- self::assertTrue($this->testedConfig->delete('test', 'it'));
- // delete from db only
- self::assertTrue($this->testedConfig->delete('test', 'second'));
- // no delete
- self::assertFalse($this->testedConfig->delete('test', 'third'));
- // delete both
- self::assertTrue($this->testedConfig->delete('test', 'quarter'));
-
- self::assertEmpty($this->testedConfig->getCache()->getAll());
- }
-
/**
* Test the configuration get() and set() method where the db value has a higher prio than the config file
*/
*/
public function testSetGetLowPrio()
{
+ vfsStream::newFile(ConfigFileManager::CONFIG_DATA_FILE)
+ ->at($this->root->getChild('config'))
+ ->setContent(ConfigFileTransformer::encode([
+ 'config' => ['test' => 'it'],
+ ]));
+
$this->testedConfig = $this->getInstance();
self::assertInstanceOf(Cache::class, $this->testedConfig->getCache());
self::assertEquals('it', $this->testedConfig->get('config', 'test'));
+++ /dev/null
-<?php
-/**
- * @copyright Copyright (C) 2010-2023, the Friendica project
- *
- * @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 <https://www.gnu.org/licenses/>.
- *
- */
-
-namespace Friendica\Test\src\Core\Config;
-
-use Friendica\Core\Config\Type\JitConfig;
-
-class JitConfigTest extends ConfigTest
-{
- public function getInstance()
- {
- return new JitConfig($this->configCache, $this->configModel);
- }
-
- /**
- * @dataProvider dataConfigLoad
- */
- public function testSetUp(array $data)
- {
- $this->configModel->shouldReceive('load')
- ->with('config')
- ->andReturn(['config' => $data['config']])
- ->once();
-
- parent::testSetUp($data);
- }
-
- /**
- * @dataProvider dataConfigLoad
- *
- * @param array $data
- * @param array $load
- */
- public function testLoad(array $data, array $load)
- {
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(true)
- ->times(count($load) + 1);
-
- $this->configModel->shouldReceive('load')
- ->with('config')
- ->andReturn(['config' => $data['config']])
- ->once();
-
- foreach ($load as $loadCat) {
- $this->configModel->shouldReceive('load')
- ->with($loadCat)
- ->andReturn([$loadCat => $data[$loadCat]])
- ->once();
- }
-
- parent::testLoad($data, $load);
- }
-
- /**
- * @dataProvider dataDoubleLoad
- */
- public function testCacheLoadDouble(array $data1, array $data2, array $expect = [])
- {
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(true)
- ->times(count($data1) + count($data2) + 1);
-
- $this->configModel->shouldReceive('load')
- ->with('config')
- ->andReturn(['config' => $data1['config']])
- ->once();
-
- foreach ($data1 as $cat => $data) {
- $this->configModel->shouldReceive('load')
- ->with($cat)
- ->andReturn([$cat => $data])
- ->once();
- }
-
-
- foreach ($data2 as $cat => $data) {
- $this->configModel->shouldReceive('load')
- ->with($cat)
- ->andReturn([$cat => $data])
- ->once();
- }
-
- parent::testCacheLoadDouble($data1, $data2);
-
- // Assert the expected categories
- foreach ($data2 as $cat => $data) {
- self::assertConfig($cat, $expect[$cat]);
- }
- }
-
- /**
- * @dataProvider dataTests
- */
- public function testSetGetWithDB($data)
- {
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(true)
- ->times(3);
-
- $this->configModel->shouldReceive('load')->with('config')->andReturn(['config' => []])->once();
-
- parent::testSetGetWithDB($data);
- }
-
- /**
- * @dataProvider dataTests
- */
- public function testGetWithRefresh($data)
- {
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(true)
- ->times(4);
-
- // constructor loading
- $this->configModel->shouldReceive('load')
- ->with('config')
- ->andReturn(['config' => []])
- ->once();
-
- // mocking one get without result
- $this->configModel->shouldReceive('get')
- ->with('test', 'it')
- ->andReturn(null)
- ->once();
-
- // mocking the data get
- $this->configModel->shouldReceive('get')
- ->with('test', 'it')
- ->andReturn($data)
- ->once();
-
- // mocking second get
- $this->configModel->shouldReceive('get')
- ->with('test', 'not')
- ->andReturn(null)
- ->once();
-
- parent::testGetWithRefresh($data);
- }
-
- public function testGetWrongWithoutDB()
- {
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(false)
- ->times(4);
-
- parent::testGetWrongWithoutDB();
- }
-
- /**
- * @dataProvider dataTests
- */
- public function testDeleteWithoutDB($data)
- {
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(false)
- ->times(4);
-
- parent::testDeleteWithoutDB($data);
- }
-
- public function testDeleteWithDB()
- {
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(true)
- ->times(6);
-
- // constructor loading
- $this->configModel->shouldReceive('load')
- ->with('config')
- ->andReturn(['config' => []])
- ->once();
-
- // mocking one get without result
- $this->configModel->shouldReceive('get')
- ->with('test', 'it')
- ->andReturn(null)
- ->once();
-
- parent::testDeleteWithDB();
- }
-
- public function testSetGetHighPrio()
- {
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(true);
-
- // constructor loading
- $this->configModel->shouldReceive('load')
- ->with('config')
- ->andReturn(['config' => []])
- ->once();
-
- $this->configModel->shouldReceive('get')
- ->with('config', 'test')
- ->andReturn('prio')
- ->once();
-
- $this->configModel->shouldReceive('set')
- ->with('config', 'test', '123')
- ->andReturn(true)
- ->once();
-
- $this->configModel->shouldReceive('get')
- ->with('config', 'test')
- ->andReturn('123')
- ->once();
-
- parent::testSetGetHighPrio();
- }
-
- public function testSetGetLowPrio()
- {
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(true);
-
- // constructor loading
- $this->configModel->shouldReceive('load')
- ->with('config')
- ->andReturn(['config' => ['test' => 'it']])
- ->once();
-
- $this->configModel->shouldReceive('set')
- ->with('config', 'test', '123')
- ->andReturn(true)
- ->once();
-
- // mocking one get without result
- $this->configModel->shouldReceive('get')
- ->with('config', 'test')
- ->andReturn('it')
- ->once();
-
- parent::testSetGetLowPrio();
- }
-}
+++ /dev/null
-<?php
-/**
- * @copyright Copyright (C) 2010-2023, the Friendica project
- *
- * @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 <https://www.gnu.org/licenses/>.
- *
- */
-
-namespace Friendica\Test\src\Core\Config;
-
-use Friendica\Core\Config\Type\PreloadConfig;
-
-class PreloadConfigTest extends ConfigTest
-{
- public function getInstance()
- {
- return new PreloadConfig($this->configCache, $this->configModel);
- }
-
- /**
- * @dataProvider dataConfigLoad
- */
- public function testSetUp(array $data)
- {
- $this->configModel->shouldReceive('load')
- ->andReturn($data)
- ->once();
-
- parent::testSetUp($data);
- }
-
- /**
- * @dataProvider dataConfigLoad
- *
- * @param array $data
- * @param array $load
- */
- public function testLoad(array $data, array $load)
- {
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(true)
- ->once();
-
- $this->configModel->shouldReceive('load')
- ->andReturn($data)
- ->once();
-
- parent::testLoad($data, $load);
-
- // Assert that every category is loaded everytime
- foreach ($data as $cat => $values) {
- self::assertConfig($cat, $values);
- }
- }
-
- /**
- * @dataProvider dataDoubleLoad
- *
- * @param array $data1
- * @param array $data2
- */
- public function testCacheLoadDouble(array $data1, array $data2, array $expect = [])
- {
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(true)
- ->once();
-
- $this->configModel->shouldReceive('load')
- ->andReturn($data1)
- ->once();
-
- parent::testCacheLoadDouble($data1, $data2);
-
- // Assert that every category is loaded everytime and is NOT overwritten
- foreach ($data1 as $cat => $values) {
- self::assertConfig($cat, $values);
- }
- }
-
- /**
- * @dataProvider dataTests
- */
- public function testSetGetWithDB($data)
- {
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(true)
- ->times(2);
-
- $this->configModel->shouldReceive('load')->andReturn(['config' => []])->once();
-
- parent::testSetGetWithDB($data);
- }
-
- /**
- * @dataProvider dataTests
- */
- public function testGetWithRefresh($data)
- {
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(true)
- ->times(2);
-
- // constructor loading
- $this->configModel->shouldReceive('load')
- ->andReturn(['config' => []])
- ->once();
-
- // mocking one get
- $this->configModel->shouldReceive('get')
- ->with('test', 'it')
- ->andReturn($data)
- ->once();
-
- parent::testGetWithRefresh($data);
- }
-
-
- public function testGetWrongWithoutDB()
- {
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(false)
- ->times(2);
-
- parent::testGetWrongWithoutDB();
- }
-
- /**
- * @dataProvider dataTests
- */
- public function testDeleteWithoutDB($data)
- {
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(false)
- ->times(2);
-
- parent::testDeleteWithoutDB($data);
- }
-
- public function testDeleteWithDB()
- {
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(true)
- ->times(5);
-
- // constructor loading
- $this->configModel->shouldReceive('load')
- ->andReturn(['config' => []])
- ->once();
-
- parent::testDeleteWithDB();
- }
-
-
- public function testSetGetHighPrio()
- {
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(true);
-
- // constructor loading
- $this->configModel->shouldReceive('load')
- ->andReturn(['config' => []])
- ->once();
-
- $this->configModel->shouldReceive('set')
- ->with('config', 'test', '123')
- ->andReturn(true)
- ->once();
-
- $this->configModel->shouldReceive('get')
- ->with('config', 'test')
- ->andReturn('123')
- ->once();
-
- parent::testSetGetHighPrio();
- }
-
- public function testSetGetLowPrio()
- {
- $this->configModel->shouldReceive('isConnected')
- ->andReturn(true);
-
- // constructor loading
- $this->configModel->shouldReceive('load')
- ->andReturn(['config' => ['test' => 'it']])
- ->once();
-
- $this->configModel->shouldReceive('set')
- ->with('config', 'test', '123')
- ->andReturn(true)
- ->once();
-
- // mocking one get without result
- $this->configModel->shouldReceive('get')
- ->with('config', 'test')
- ->andReturn('it')
- ->once();
-
- parent::testSetGetLowPrio();
- }
-}
use Dice\Dice;
use Friendica\App;
use Friendica\Core\Config\Capability\IManageConfigValues;
+use Friendica\Core\Config\Model\Config;
use Friendica\Core\Config\Type\JitConfig;
+use Friendica\Core\Config\Util\ConfigFileManager;
+use Friendica\Core\Config\ValueObject\Cache;
use Friendica\Core\Lock\Type\SemaphoreLock;
use Friendica\Core\System;
use Friendica\DI;
$app->shouldReceive('getHostname')->andReturn('friendica.local');
$dice->shouldReceive('create')->with(App::class)->andReturn($app);
- $configMock = Mockery::mock(JitConfig::class);
- $configMock
- ->shouldReceive('get')
- ->with('system', 'temppath')
- ->andReturn('/tmp/');
+ $configCache = new Cache(['system' => ['temppath' => '/tmp']]);
+ $configMock = new Config(Mockery::mock(ConfigFileManager::class), $configCache);
$dice->shouldReceive('create')->with(IManageConfigValues::class)->andReturn($configMock);
// @todo Because "get_temppath()" is using static methods, we have to initialize the BaseObject
namespace Friendica\Test\src\Core\Storage\Repository;
use Dice\Dice;
-use Friendica\App\Mode;
use Friendica\Core\Config\Capability\IManageConfigValues;
-use Friendica\Core\Config\Type\PreloadConfig;
use Friendica\Core\Hook;
use Friendica\Core\L10n;
use Friendica\Core\Session\Capability\IHandleSessions;
use Friendica\Database\Definition\ViewDefinition;
use Friendica\DI;
use Friendica\Core\Config\Factory\Config;
-use Friendica\Core\Config\Repository;
use Friendica\Core\Storage\Type;
use Friendica\Test\DatabaseTest;
use Friendica\Test\Util\Database\StaticDatabase;
$this->dba = new StaticDatabase($configCache, $profiler, $dbaDefinition, $viewDefinition);
- $configModel = new Repository\Config($this->dba, new Mode(Mode::DBCONFIGAVAILABLE));
- $this->config = new PreloadConfig($configCache, $configModel);
+ $this->config = new \Friendica\Core\Config\Model\Config($loader, $configCache);
$this->config->set('storage', 'name', 'Database');
$this->config->set('storage', 'filesystem_path', $this->root->getChild(Type\FilesystemConfig::DEFAULT_BASE_FOLDER)->url());
*/
public function testExists() {
- self::assertTrue(DBA::exists('config', []));
+ self::assertTrue(DBA::exists('user', []));
self::assertFalse(DBA::exists('notable', []));
-
- self::assertTrue(DBA::exists('config', ['k' => 'hostname']));
- self::assertFalse(DBA::exists('config', ['k' => 'nonsense']));
}
}
* @small
*/
public function testExists() {
- self::assertTrue(DBStructure::existsTable('config'));
+ self::assertTrue(DBStructure::existsTable('user'));
self::assertFalse(DBStructure::existsTable('notatable'));
- self::assertTrue(DBStructure::existsColumn('config', ['k']));
- self::assertFalse(DBStructure::existsColumn('config', ['nonsense']));
- self::assertFalse(DBStructure::existsColumn('config', ['k', 'nonsense']));
+ self::assertTrue(DBStructure::existsColumn('user', ['uid']));
+ self::assertFalse(DBStructure::existsColumn('user', ['nonsense']));
+ self::assertFalse(DBStructure::existsColumn('user', ['uid', 'nonsense']));
}
/**
* @small
*/
public function testRename() {
- $fromColumn = 'k';
- $toColumn = 'key';
- $fromType = 'varbinary(255) not null';
- $toType = 'varbinary(255) not null comment \'Test To Type\'';
+ $fromColumn = 'email';
+ $toColumn = 'email_key';
+ $fromType = 'varchar(255) NOT NULL DEFAULT \'\' COMMENT \'the users email address\'';
+ $toType = 'varchar(255) NOT NULL DEFAULT \'\' COMMENT \'Adapted column\'';
- self::assertTrue(DBStructure::rename('config', [ $fromColumn => [ $toColumn, $toType ]]));
- self::assertTrue(DBStructure::existsColumn('config', [ $toColumn ]));
- self::assertFalse(DBStructure::existsColumn('config', [ $fromColumn ]));
+ self::assertTrue(DBStructure::rename('user', [ $fromColumn => [ $toColumn, $toType ]]));
+ self::assertTrue(DBStructure::existsColumn('user', [ $toColumn ]));
+ self::assertFalse(DBStructure::existsColumn('user', [ $fromColumn ]));
- self::assertTrue(DBStructure::rename('config', [ $toColumn => [ $fromColumn, $fromType ]]));
- self::assertTrue(DBStructure::existsColumn('config', [ $fromColumn ]));
- self::assertFalse(DBStructure::existsColumn('config', [ $toColumn ]));
+ self::assertTrue(DBStructure::rename('user', [ $toColumn => [ $fromColumn, $fromType ]]));
+ self::assertTrue(DBStructure::existsColumn('user', [ $fromColumn ]));
+ self::assertFalse(DBStructure::existsColumn('user', [ $toColumn ]));
}
/**
use Friendica\DI;
use Friendica\Module\Api\GNUSocial\GNUSocial\Config;
use Friendica\Test\src\Module\Api\ApiTest;
+use Friendica\Test\Util\VFSTrait;
class ConfigTest extends ApiTest
{
$configMock->shouldReceive('get')->with('system', 'ssl_policy')->andReturn($input['sslPolicy']);
$configMock->shouldReceive('get')->with('system', 'url')->andReturn($input['url']);
+ $savable = false;
+
// If we don't have an urlPath as an input, we assert it, we will save it to the DB for the next time
if (!isset($input['urlPath']) && isset($assert['urlPath'])) {
- $configMock->shouldReceive('set')->with('system', 'urlpath', $assert['urlPath'])->once();
+ $configMock->shouldReceive('set')->with('system', 'urlpath', $assert['urlPath'], false)->once();
+ $savable = true;
}
// If we don't have the ssl_policy as an input, we assert it, we will save it to the DB for the next time
if (!isset($input['sslPolicy']) && isset($assert['sslPolicy'])) {
- $configMock->shouldReceive('set')->with('system', 'ssl_policy', $assert['sslPolicy'])->once();
+ $configMock->shouldReceive('set')->with('system', 'ssl_policy', $assert['sslPolicy'], false)->once();
+ $savable = true;
}
// If we don't have the hostname as an input, we assert it, we will save it to the DB for the next time
if (empty($input['hostname']) && !empty($assert['hostname'])) {
- $configMock->shouldReceive('set')->with('config', 'hostname', $assert['hostname'])->once();
+ $configMock->shouldReceive('set')->with('config', 'hostname', $assert['hostname'], false)->once();
+ $savable = true;
}
// If we don't have an URL at first, but we assert it, we will save it to the DB for the next time
if (empty($input['url']) && !empty($assert['url'])) {
- $configMock->shouldReceive('set')->with('system', 'url', $assert['url'])->once();
+ $configMock->shouldReceive('set')->with('system', 'url', $assert['url'], false)->once();
+ $savable = true;
+ }
+
+ if ($savable) {
+ $configMock->shouldReceive('save')->once();
}
$baseUrl = new BaseURL($configMock, $server);
$baseUrl = new BaseURL($configMock, []);
if (isset($save['hostname'])) {
- $configMock->shouldReceive('set')->with('config', 'hostname', $save['hostname'])->andReturn(true)->once();
+ $configMock->shouldReceive('set')->with('config', 'hostname', $save['hostname'], false)->andReturn(true)->once();
}
if (isset($save['urlPath'])) {
- $configMock->shouldReceive('set')->with('system', 'urlpath', $save['urlPath'])->andReturn(true)->once();
+ $configMock->shouldReceive('set')->with('system', 'urlpath', $save['urlPath'], false)->andReturn(true)->once();
}
if (isset($save['sslPolicy'])) {
- $configMock->shouldReceive('set')->with('system', 'ssl_policy', $save['sslPolicy'])->andReturn(true)->once();
+ $configMock->shouldReceive('set')->with('system', 'ssl_policy', $save['sslPolicy'], false)->andReturn(true)->once();
}
- $configMock->shouldReceive('set')->with('system', 'url', $url)->andReturn(true)->once();
+ $configMock->shouldReceive('set')->with('system', 'url', $url, false)->andReturn(true)->once();
+
+ $configMock->shouldReceive('save')->once();
$baseUrl->save($save['hostname'], $save['sslPolicy'], $save['urlPath']);
$baseUrl = new BaseURL($configMock, []);
if (isset($save['hostname'])) {
- $configMock->shouldReceive('set')->with('config', 'hostname', $save['hostname'])->andReturn(true)->once();
+ $configMock->shouldReceive('set')->with('config', 'hostname', $save['hostname'], false)->andReturn(true)->once();
}
if (isset($save['urlPath'])) {
- $configMock->shouldReceive('set')->with('system', 'urlpath', $save['urlPath'])->andReturn(true)->once();
+ $configMock->shouldReceive('set')->with('system', 'urlpath', $save['urlPath'], false)->andReturn(true)->once();
}
if (isset($save['sslPolicy'])) {
- $configMock->shouldReceive('set')->with('system', 'ssl_policy', $save['sslPolicy'])->andReturn(true)->once();
+ $configMock->shouldReceive('set')->with('system', 'ssl_policy', $save['sslPolicy'], false)->andReturn(true)->once();
}
- $configMock->shouldReceive('set')->with('system', 'url', $url)->andReturn(true)->once();
+ $configMock->shouldReceive('set')->with('system', 'url', $url, false)->andReturn(true)->once();
+
+ $configMock->shouldReceive('save')->once();
$baseUrl->saveByURL($url);
switch ($fail) {
case 'hostname':
- $configMock->shouldReceive('set')->with('config', 'hostname', \Mockery::any())->andReturn(false)->once();
+ $configMock->shouldReceive('set')->with('config', 'hostname', \Mockery::any(), false)->andReturn(false)->once();
break;
case 'sslPolicy':
- $configMock->shouldReceive('set')->with('config', 'hostname', \Mockery::any())->andReturn(true)->twice();
- $configMock->shouldReceive('set')->with('system', 'ssl_policy', \Mockery::any())->andReturn(false)->once();
+ $configMock->shouldReceive('set')->with('config', 'hostname', \Mockery::any(), false)->andReturn(true)->twice();
+ $configMock->shouldReceive('set')->with('system', 'ssl_policy', \Mockery::any(), false)->andReturn(false)->once();
+ $configMock->shouldReceive('save')->once();
break;
case 'urlPath':
- $configMock->shouldReceive('set')->with('config', 'hostname', \Mockery::any())->andReturn(true)->twice();
- $configMock->shouldReceive('set')->with('system', 'ssl_policy', \Mockery::any())->andReturn(true)->twice();
- $configMock->shouldReceive('set')->with('system', 'urlpath', \Mockery::any())->andReturn(false)->once();
+ $configMock->shouldReceive('set')->with('config', 'hostname', \Mockery::any(), false)->andReturn(true)->twice();
+ $configMock->shouldReceive('set')->with('system', 'ssl_policy', \Mockery::any(), false)->andReturn(true)->twice();
+ $configMock->shouldReceive('set')->with('system', 'urlpath', \Mockery::any(), false)->andReturn(false)->once();
+ $configMock->shouldReceive('save')->once();
break;
case 'url':
- $configMock->shouldReceive('set')->with('config', 'hostname', \Mockery::any())->andReturn(true)->twice();
- $configMock->shouldReceive('set')->with('system', 'ssl_policy', \Mockery::any())->andReturn(true)->twice();
- $configMock->shouldReceive('set')->with('system', 'urlpath', \Mockery::any())->andReturn(true)->twice();
- $configMock->shouldReceive('set')->with('system', 'url', \Mockery::any())->andReturn(false)->once();
+ $configMock->shouldReceive('set')->with('config', 'hostname', \Mockery::any(), false)->andReturn(true)->twice();
+ $configMock->shouldReceive('set')->with('system', 'ssl_policy', \Mockery::any(), false)->andReturn(true)->twice();
+ $configMock->shouldReceive('set')->with('system', 'urlpath', \Mockery::any(), false)->andReturn(true)->twice();
+ $configMock->shouldReceive('set')->with('system', 'url', \Mockery::any(), false)->andReturn(false)->once();
+ $configMock->shouldReceive('save')->once();
break;
}