3 namespace Friendica\Test\src\Console;
6 use Friendica\App\Mode;
7 use Friendica\Console\Config;
8 use Friendica\Core\Config\IConfiguration;
9 use Mockery\MockInterface;
11 class ConfigConsoleTest extends ConsoleTest
14 * @var App\Mode|MockInterface $appMode
18 protected function setUp()
22 \Mockery::getConfiguration()->setConstantsMap([
24 'DBCONFIGAVAILABLE' => 0
28 $this->appMode = \Mockery::mock(App\Mode::class);
29 $this->appMode->shouldReceive('has')
32 $this->configMock = \Mockery::mock(IConfiguration::class);
35 function testSetGetKeyValue()
38 ->shouldReceive('set')
39 ->with('config', 'test', 'now')
43 ->shouldReceive('get')
44 ->with('config', 'test')
48 $console = new Config($this->appMode, $this->configMock, $this->consoleArgv);
49 $console->setArgument(0, 'config');
50 $console->setArgument(1, 'test');
51 $console->setArgument(2, 'now');
52 $txt = $this->dumpExecute($console);
53 $this->assertEquals("config.test <= now\n", $txt);
56 ->shouldReceive('get')
57 ->with('config', 'test')
61 $console = new Config($this->appMode, $this->configMock, [$this->consoleArgv]);
62 $console->setArgument(0, 'config');
63 $console->setArgument(1, 'test');
64 $txt = $this->dumpExecute($console);
65 $this->assertEquals("config.test => now\n", $txt);
68 ->shouldReceive('get')
69 ->with('config', 'test')
73 $console = new Config($this->appMode, $this->configMock, $this->consoleArgv);
74 $console->setArgument(0, 'config');
75 $console->setArgument(1, 'test');
76 $txt = $this->dumpExecute($console);
77 $this->assertEquals("config.test => \n", $txt);
80 function testSetArrayValue() {
81 $testArray = [1, 2, 3];
83 ->shouldReceive('get')
84 ->with('config', 'test')
85 ->andReturn($testArray)
88 $console = new Config($this->appMode, $this->configMock, $this->consoleArgv);
89 $console->setArgument(0, 'config');
90 $console->setArgument(1, 'test');
91 $console->setArgument(2, 'now');
92 $txt = $this->dumpExecute($console);
94 $this->assertEquals("[Error] config.test is an array and can't be set using this command.\n", $txt);
97 function testTooManyArguments() {
98 $console = new Config($this->appMode, $this->configMock, $this->consoleArgv);
99 $console->setArgument(0, 'config');
100 $console->setArgument(1, 'test');
101 $console->setArgument(2, 'it');
102 $console->setArgument(3, 'now');
103 $txt = $this->dumpExecute($console);
104 $assertion = '[Warning] Too many arguments';
105 $firstline = substr($txt, 0, strlen($assertion));
106 $this->assertEquals($assertion, $firstline);
109 function testVerbose() {
111 ->shouldReceive('get')
115 $console = new Config($this->appMode, $this->configMock, $this->consoleArgv);
116 $console->setArgument(0, 'test');
117 $console->setArgument(1, 'it');
118 $console->setOption('v', 1);
119 $executable = $this->consoleArgv[0];
121 Executable: {$executable}
122 Class: Friendica\Console\Config
133 $txt = $this->dumpExecute($console);
134 $this->assertEquals($assertion, $txt);
137 function testUnableToSet() {
139 ->shouldReceive('set')
140 ->with('test', 'it', 'now')
144 ->shouldReceive('get')
148 $console = new Config($this->appMode, $this->configMock, [$this->consoleArgv]);
149 $console->setArgument(0, 'test');
150 $console->setArgument(1, 'it');
151 $console->setArgument(2, 'now');
152 $txt = $this->dumpExecute($console);
153 $this->assertSame("Unable to set test.it\n", $txt);
156 public function testGetHelp()
158 // Usable to purposely fail if new commands are added without taking tests into account
160 console config - Manage site configuration
162 bin/console config [-h|--help|-?] [-v]
163 bin/console config <category> [-h|--help|-?] [-v]
164 bin/console config <category> <key> [-h|--help|-?] [-v]
165 bin/console config <category> <key> <value> [-h|--help|-?] [-v]
169 Lists all config values
171 bin/console config <category>
172 Lists all config values in the provided category
174 bin/console config <category> <key>
175 Shows the value of the provided key in the category
177 bin/console config <category> <key> <value>
178 Sets the value of the provided key in the category
181 Setting config entries which are manually set in config/local.config.php may result in
182 conflict between database settings and the manual startup settings.
185 -h|--help|-? Show help information
186 -v Show more debug information.
189 $console = new Config($this->appMode, $this->configMock, [$this->consoleArgv]);
190 $console->setOption('help', true);
192 $txt = $this->dumpExecute($console);
194 $this->assertEquals($txt, $theHelp);