]> git.mxchange.org Git - friendica.git/blob - tests/src/Util/Logger/SyslogLoggerTest.php
Merge pull request #10693 from nupplaphil/feat/config_dir
[friendica.git] / tests / src / Util / Logger / SyslogLoggerTest.php
1 <?php
2 /**
3  * @copyright Copyright (C) 2010-2021, the Friendica project
4  *
5  * @license GNU AGPL version 3 or any later version
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU Affero General Public License as
9  * published by the Free Software Foundation, either version 3 of the
10  * License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU Affero General Public License for more details.
16  *
17  * You should have received a copy of the GNU Affero General Public License
18  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
19  *
20  */
21
22 namespace Friendica\Test\src\Util\Logger;
23
24 use Friendica\Util\Logger\SyslogLogger;
25 use Psr\Log\LogLevel;
26
27 class SyslogLoggerTest extends AbstractLoggerTest
28 {
29         /**
30          * @var SyslogLoggerWrapper
31          */
32         private $logger;
33
34         protected function setUp(): void
35         {
36                 parent::setUp();
37
38                 $this->introspection->shouldReceive('addClasses')->with([SyslogLogger::class]);
39         }
40
41         /**
42          * {@inheritdoc}
43          */
44         protected function getContent()
45         {
46                 return $this->logger->getContent();
47         }
48
49         /**
50          * {@inheritdoc}
51          */
52         protected function getInstance($level = LogLevel::DEBUG)
53         {
54                 $this->logger = new SyslogLoggerWrapper('test', $this->introspection, $level);
55
56                 return $this->logger;
57         }
58
59
60         /**
61          * Test when the minimum level is not valid
62          */
63         public function testWrongMinimumLevel()
64         {
65                 $this->expectException(\InvalidArgumentException::class);
66                 $this->expectExceptionMessageMatches("/The level \".*\" is not valid./");
67                 
68                 $logger = new SyslogLoggerWrapper('test', $this->introspection, 'NOPE');
69         }
70
71         /**
72          * Test when the minimum level is not valid
73          */
74         public function testWrongLogLevel()
75         {
76                 $this->expectException(\InvalidArgumentException::class);
77                 $this->expectExceptionMessageMatches("/The level \".*\" is not valid./");
78
79                 $logger = new SyslogLoggerWrapper('test', $this->introspection);
80
81                 $logger->log('NOPE', 'a test');
82         }
83
84         /**
85          * Test when the logfacility is wrong (string)
86          */
87         public function testServerException()
88         {
89                 if (PHP_MAJOR_VERSION < 8) {
90                         $this->expectException(\UnexpectedValueException::class);
91                         $this->expectExceptionMessageMatches("/Can\'t open syslog for ident \".*\" and facility \".*\": .* /");
92                 } else {
93                         $this->expectException(\TypeError::class);
94                         $this->expectExceptionMessage("openlog(): Argument #3 (\$facility) must be of type int, string given");
95                 }
96
97                 $logger = new SyslogLoggerWrapper('test', $this->introspection, LogLevel::DEBUG, null, 'a string');
98                 $logger->emergency('not working');
99         }
100
101         /**
102          * Test the close() method
103          * @doesNotPerformAssertions
104          */
105         public function testClose()
106         {
107                 $logger = new SyslogLoggerWrapper('test', $this->introspection);
108                 $logger->emergency('test');
109                 $logger->close();
110                 // Reopened itself
111                 $logger->emergency('test');
112         }
113 }