]> git.mxchange.org Git - friendica.git/blob - tests/src/Core/Console/ConfigConsoleTest.php
505c4f794dc58db64f1299d673798e2cb7c14a70
[friendica.git] / tests / src / Core / Console / ConfigConsoleTest.php
1 <?php
2
3 namespace Friendica\Test\src\Core\Console;
4
5 use Friendica\Core\Console\Config;
6
7 /**
8  * @runTestsInSeparateProcesses
9  * @preserveGlobalState disabled
10  * @requires PHP 7.0
11  */
12 class ConfigConsoleTest extends ConsoleTest
13 {
14         protected function setUp()
15         {
16                 parent::setUp();
17
18                 \Mockery::getConfiguration()->setConstantsMap([
19                         'Friendica\App\Mode' => [
20                                 'DBCONFIGAVAILABLE' => 0
21                         ]
22                 ]);
23
24                 $mode = \Mockery::mock('Friendica\App\Mode');
25                 $mode
26                         ->shouldReceive('has')
27                         ->andReturn(true);
28
29                 $this->app
30                         ->shouldReceive('getMode')
31                         ->andReturn($mode);
32         }
33
34         function testSetGetKeyValue() {
35                 $this->configCache
36                         ->shouldReceive('set')
37                         ->with('config', 'test', 'now')
38                         ->andReturn(true)
39                         ->once();
40                 $this->configCache
41                         ->shouldReceive('get')
42                         ->with('config', 'test', NULL)
43                         ->andReturn('now')
44                         ->twice();
45
46                 $console = new Config($this->consoleArgv);
47                 $console->setArgument(0, 'config');
48                 $console->setArgument(1, 'test');
49                 $console->setArgument(2, 'now');
50                 $txt = $this->dumpExecute($console);
51                 $this->assertEquals("config.test <= now\n", $txt);
52
53                 $this->configCache
54                         ->shouldReceive('get')
55                         ->with('config', 'test', null)
56                         ->andReturn('now')
57                         ->once();
58
59                 $console = new Config($this->consoleArgv);
60                 $console->setArgument(0, 'config');
61                 $console->setArgument(1, 'test');
62                 $txt = $this->dumpExecute($console);
63                 $this->assertEquals("config.test => now\n", $txt);
64
65                 $this->configCache
66                         ->shouldReceive('get')
67                         ->with('config', 'test', null)
68                         ->andReturn(null)
69                         ->once();
70
71                 $console = new Config($this->consoleArgv);
72                 $console->setArgument(0, 'config');
73                 $console->setArgument(1, 'test');
74                 $txt = $this->dumpExecute($console);
75                 $this->assertEquals("config.test => \n", $txt);
76         }
77
78         function testSetArrayValue() {
79                 $testArray = [1, 2, 3];
80                 $this->configCache
81                         ->shouldReceive('get')
82                         ->with('config', 'test', null)
83                         ->andReturn($testArray)
84                         ->once();
85
86                 $console = new Config($this->consoleArgv);
87                 $console->setArgument(0, 'config');
88                 $console->setArgument(1, 'test');
89                 $console->setArgument(2, 'now');
90                 $txt = $this->dumpExecute($console);
91
92                 $this->assertEquals("[Error] config.test is an array and can't be set using this command.\n", $txt);
93         }
94
95         function testTooManyArguments() {
96                 $console = new Config($this->consoleArgv);
97                 $console->setArgument(0, 'config');
98                 $console->setArgument(1, 'test');
99                 $console->setArgument(2, 'it');
100                 $console->setArgument(3, 'now');
101                 $txt = $this->dumpExecute($console);
102                 $assertion = '[Warning] Too many arguments';
103                 $firstline = substr($txt, 0, strlen($assertion));
104                 $this->assertEquals($assertion, $firstline);
105         }
106
107         function testVerbose() {
108                 $this->configCache
109                         ->shouldReceive('get')
110                         ->with('test', 'it', null)
111                         ->andReturn('now')
112                         ->once();
113                 $console = new Config($this->consoleArgv);
114                 $console->setArgument(0, 'test');
115                 $console->setArgument(1, 'it');
116                 $console->setOption('v', 1);
117                 $executable = $this->consoleArgv[0];
118                 $assertion = <<<CONF
119 Executable: {$executable}
120 Class: Friendica\Core\Console\Config
121 Arguments: array (
122   0 => 'test',
123   1 => 'it',
124 )
125 Options: array (
126   'v' => 1,
127 )
128 test.it => now
129
130 CONF;
131                 $txt = $this->dumpExecute($console);
132                 $this->assertEquals($assertion, $txt);
133         }
134
135         function testUnableToSet() {
136                 $this->configCache
137                         ->shouldReceive('set')
138                         ->with('test', 'it', 'now')
139                         ->andReturn(false)
140                         ->once();
141                 $this->configCache
142                         ->shouldReceive('get')
143                         ->with('test', 'it', NULL)
144                         ->andReturn(NULL)
145                         ->once();
146                 $console = new Config();
147                 $console->setArgument(0, 'test');
148                 $console->setArgument(1, 'it');
149                 $console->setArgument(2, 'now');
150                 $txt = $this->dumpExecute($console);
151                 $this->assertSame("Unable to set test.it\n", $txt);
152         }
153
154         public function testGetHelp()
155         {
156                 // Usable to purposely fail if new commands are added without taking tests into account
157                 $theHelp = <<<HELP
158 console config - Manage site configuration
159 Synopsis
160         bin/console config [-h|--help|-?] [-v]
161         bin/console config <category> [-h|--help|-?] [-v]
162         bin/console config <category> <key> [-h|--help|-?] [-v]
163         bin/console config <category> <key> <value> [-h|--help|-?] [-v]
164
165 Description
166         bin/console config
167                 Lists all config values
168
169         bin/console config <category>
170                 Lists all config values in the provided category
171
172         bin/console config <category> <key>
173                 Shows the value of the provided key in the category
174
175         bin/console config <category> <key> <value>
176                 Sets the value of the provided key in the category
177
178 Notes:
179         Setting config entries which are manually set in config/local.config.php may result in
180         conflict between database settings and the manual startup settings.
181
182 Options
183     -h|--help|-? Show help information
184     -v           Show more debug information.
185
186 HELP;
187                 $console = new Config($this->consoleArgv);
188                 $console->setOption('help', true);
189
190                 $txt = $this->dumpExecute($console);
191
192                 $this->assertEquals($txt, $theHelp);
193         }
194 }