3 * @copyright Copyright (C) 2010-2021, the Friendica project
5 * @license GNU AGPL version 3 or any later version
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.
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.
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/>.
22 namespace Friendica\Test\src\Util\Logger;
24 use Friendica\Util\Logger\SyslogLogger;
27 class SyslogLoggerTest extends AbstractLoggerTest
30 * @var SyslogLoggerWrapper
34 protected function setUp(): void
38 $this->introspection->shouldReceive('addClasses')->with([SyslogLogger::class]);
44 protected function getContent()
46 return $this->logger->getContent();
52 protected function getInstance($level = LogLevel::DEBUG)
54 $this->logger = new SyslogLoggerWrapper('test', $this->introspection, $level);
61 * Test when the minimum level is not valid
63 public function testWrongMinimumLevel()
65 $this->expectException(\InvalidArgumentException::class);
66 $this->expectExceptionMessageMatches("/The level \".*\" is not valid./");
68 $logger = new SyslogLoggerWrapper('test', $this->introspection, 'NOPE');
72 * Test when the minimum level is not valid
74 public function testWrongLogLevel()
76 $this->expectException(\InvalidArgumentException::class);
77 $this->expectExceptionMessageMatches("/The level \".*\" is not valid./");
79 $logger = new SyslogLoggerWrapper('test', $this->introspection);
81 $logger->log('NOPE', 'a test');
85 * Test when the logfacility is wrong (string)
87 public function testServerException()
89 if (PHP_MAJOR_VERSION < 8) {
90 $this->expectException(\UnexpectedValueException::class);
91 $this->expectExceptionMessageMatches("/Can\'t open syslog for ident \".*\" and facility \".*\": .* /");
93 $this->expectException(\TypeError::class);
94 $this->expectExceptionMessage("openlog(): Argument #3 (\$facility) must be of type int, string given");
97 $logger = new SyslogLoggerWrapper('test', $this->introspection, LogLevel::DEBUG, null, 'a string');
98 $logger->emergency('not working');
102 * Test the close() method
103 * @doesNotPerformAssertions
105 public function testClose()
107 $logger = new SyslogLoggerWrapper('test', $this->introspection);
108 $logger->emergency('test');
111 $logger->emergency('test');