aboutsummaryrefslogtreecommitdiffstats
path: root/tests/lib/Log
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lib/Log')
-rw-r--r--tests/lib/Log/ExceptionSerializerTest.php4
-rw-r--r--tests/lib/Log/FileTest.php31
-rw-r--r--tests/lib/Log/LogFactoryTest.php50
-rw-r--r--tests/lib/Log/PsrLoggerAdapterTest.php82
4 files changed, 130 insertions, 37 deletions
diff --git a/tests/lib/Log/ExceptionSerializerTest.php b/tests/lib/Log/ExceptionSerializerTest.php
index 1ec422fb53d..6d5bc5cf19f 100644
--- a/tests/lib/Log/ExceptionSerializerTest.php
+++ b/tests/lib/Log/ExceptionSerializerTest.php
@@ -42,7 +42,7 @@ class ExceptionSerializerTest extends TestCase {
* exception was passed to the logger. The token was replaced, the original
* variable overwritten.
*/
- public function testSerializer() {
+ public function testSerializer(): void {
try {
$secret = ['Secret'];
$this->emit([&$secret]);
@@ -53,7 +53,7 @@ class ExceptionSerializerTest extends TestCase {
}
}
- public function testSerializerWithRegisteredMethods() {
+ public function testSerializerWithRegisteredMethods(): void {
$this->serializer->enlistSensitiveMethods(self::class, ['customMagicAuthThing']);
try {
$this->customMagicAuthThing('u57474', 'Secret');
diff --git a/tests/lib/Log/FileTest.php b/tests/lib/Log/FileTest.php
index 37219b5c2b1..3f030665fb4 100644
--- a/tests/lib/Log/FileTest.php
+++ b/tests/lib/Log/FileTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
*
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
@@ -8,8 +9,10 @@
namespace Test\Log;
use OC\Log\File;
+use OC\SystemConfig;
use OCP\IConfig;
use OCP\ILogger;
+use OCP\Server;
use Test\TestCase;
/**
@@ -24,31 +27,31 @@ class FileTest extends TestCase {
protected function setUp(): void {
parent::setUp();
- $config = \OC::$server->getSystemConfig();
- $this->restore_logfile = $config->getValue("logfile");
+ $config = Server::get(SystemConfig::class);
+ $this->restore_logfile = $config->getValue('logfile');
$this->restore_logdateformat = $config->getValue('logdateformat');
- $config->setValue("logfile", $config->getValue('datadirectory') . "/logtest.log");
+ $config->setValue('logfile', $config->getValue('datadirectory') . '/logtest.log');
$this->logFile = new File($config->getValue('datadirectory') . '/logtest.log', '', $config);
}
protected function tearDown(): void {
- $config = \OC::$server->getSystemConfig();
+ $config = Server::get(SystemConfig::class);
if (isset($this->restore_logfile)) {
- $config->getValue("logfile", $this->restore_logfile);
+ $config->getValue('logfile', $this->restore_logfile);
} else {
- $config->deleteValue("logfile");
+ $config->deleteValue('logfile');
}
if (isset($this->restore_logdateformat)) {
- $config->getValue("logdateformat", $this->restore_logdateformat);
+ $config->getValue('logdateformat', $this->restore_logdateformat);
} else {
- $config->deleteValue("logdateformat");
+ $config->deleteValue('logdateformat');
}
$this->logFile = new File($this->restore_logfile, '', $config);
parent::tearDown();
}
- public function testLogging() {
- $config = \OC::$server->get(IConfig::class);
+ public function testLogging(): void {
+ $config = Server::get(IConfig::class);
# delete old logfile
unlink($config->getSystemValue('logfile'));
@@ -62,14 +65,14 @@ class FileTest extends TestCase {
fclose($handle);
# check log has data content
- $values = (array) json_decode($line, true);
+ $values = (array)json_decode($line, true);
$this->assertArrayNotHasKey('message', $values['data']);
$this->assertEquals('extra', $values['data']['something']);
$this->assertEquals('Testing logging', $values['message']);
}
- public function testMicrosecondsLogTimestamp() {
- $config = \OC::$server->getConfig();
+ public function testMicrosecondsLogTimestamp(): void {
+ $config = Server::get(IConfig::class);
# delete old logfile
unlink($config->getSystemValue('logfile'));
@@ -83,7 +86,7 @@ class FileTest extends TestCase {
fclose($handle);
# check timestamp has microseconds part
- $values = (array) json_decode($line);
+ $values = (array)json_decode($line);
$microseconds = $values['time'];
$this->assertNotEquals(0, $microseconds);
}
diff --git a/tests/lib/Log/LogFactoryTest.php b/tests/lib/Log/LogFactoryTest.php
index c1232f7b28d..b1adbd0e823 100644
--- a/tests/lib/Log/LogFactoryTest.php
+++ b/tests/lib/Log/LogFactoryTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -12,6 +13,7 @@ use OC\Log\LogFactory;
use OC\Log\Syslog;
use OC\Log\Systemdlog;
use OC\SystemConfig;
+use OCP\AppFramework\QueryException;
use OCP\IServerContainer;
use Test\TestCase;
@@ -39,7 +41,7 @@ class LogFactoryTest extends TestCase {
$this->factory = new LogFactory($this->c, $this->systemConfig);
}
- public function fileTypeProvider(): array {
+ public static function fileTypeProvider(): array {
return [
[
'file'
@@ -58,23 +60,26 @@ class LogFactoryTest extends TestCase {
/**
* @param string $type
- * @dataProvider fileTypeProvider
- * @throws \OCP\AppFramework\QueryException
+ * @throws QueryException
*/
- public function testFile(string $type) {
- $datadir = \OC::$SERVERROOT.'/data';
+ #[\PHPUnit\Framework\Attributes\DataProvider('fileTypeProvider')]
+ public function testFile(string $type): void {
+ $datadir = \OC::$SERVERROOT . '/data';
$defaultLog = $datadir . '/nextcloud.log';
$this->systemConfig->expects($this->exactly(3))
->method('getValue')
- ->withConsecutive(['datadirectory', $datadir], ['logfile', $defaultLog], ['logfilemode', 0640])
- ->willReturnOnConsecutiveCalls($datadir, $defaultLog, 0640);
+ ->willReturnMap([
+ ['datadirectory', $datadir, $datadir],
+ ['logfile', $defaultLog, $defaultLog],
+ ['logfilemode', 0640, 0640],
+ ]);
$log = $this->factory->get($type);
$this->assertInstanceOf(File::class, $log);
}
- public function logFilePathProvider():array {
+ public static function logFilePathProvider():array {
return [
[
'/dev/null',
@@ -82,23 +87,26 @@ class LogFactoryTest extends TestCase {
],
[
'/xdev/youshallfallback',
- \OC::$SERVERROOT.'/data/nextcloud.log'
+ \OC::$SERVERROOT . '/data/nextcloud.log'
]
];
}
/**
- * @dataProvider logFilePathProvider
- * @throws \OCP\AppFramework\QueryException
+ * @throws QueryException
*/
- public function testFileCustomPath($path, $expected) {
- $datadir = \OC::$SERVERROOT.'/data';
+ #[\PHPUnit\Framework\Attributes\DataProvider('logFilePathProvider')]
+ public function testFileCustomPath($path, $expected): void {
+ $datadir = \OC::$SERVERROOT . '/data';
$defaultLog = $datadir . '/nextcloud.log';
$this->systemConfig->expects($this->exactly(3))
->method('getValue')
- ->withConsecutive(['datadirectory', $datadir], ['logfile', $defaultLog], ['logfilemode', 0640])
- ->willReturnOnConsecutiveCalls($datadir, $path, 0640);
+ ->willReturnMap([
+ ['datadirectory', $datadir, $datadir],
+ ['logfile', $defaultLog, $path],
+ ['logfilemode', 0640, 0640],
+ ]);
$log = $this->factory->get('file');
$this->assertInstanceOf(File::class, $log);
@@ -106,17 +114,17 @@ class LogFactoryTest extends TestCase {
}
/**
- * @throws \OCP\AppFramework\QueryException
+ * @throws QueryException
*/
- public function testErrorLog() {
+ public function testErrorLog(): void {
$log = $this->factory->get('errorlog');
$this->assertInstanceOf(Errorlog::class, $log);
}
/**
- * @throws \OCP\AppFramework\QueryException
+ * @throws QueryException
*/
- public function testSystemLog() {
+ public function testSystemLog(): void {
$this->c->expects($this->once())
->method('resolve')
->with(Syslog::class)
@@ -127,9 +135,9 @@ class LogFactoryTest extends TestCase {
}
/**
- * @throws \OCP\AppFramework\QueryException
+ * @throws QueryException
*/
- public function testSystemdLog() {
+ public function testSystemdLog(): void {
$this->c->expects($this->once())
->method('resolve')
->with(Systemdlog::class)
diff --git a/tests/lib/Log/PsrLoggerAdapterTest.php b/tests/lib/Log/PsrLoggerAdapterTest.php
new file mode 100644
index 00000000000..c11af7a12c2
--- /dev/null
+++ b/tests/lib/Log/PsrLoggerAdapterTest.php
@@ -0,0 +1,82 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace Test\Log;
+
+use OC\Log;
+use OC\Log\PsrLoggerAdapter;
+use OCP\ILogger;
+use PHPUnit\Framework\MockObject\MockObject;
+use Psr\Log\InvalidArgumentException;
+use Psr\Log\LogLevel;
+use Test\TestCase;
+
+class PsrLoggerAdapterTest extends TestCase {
+ protected Log&MockObject $logger;
+ protected PsrLoggerAdapter $loggerAdapter;
+
+ protected function setUp(): void {
+ parent::setUp();
+
+ $this->logger = $this->createMock(Log::class);
+ $this->loggerAdapter = new PsrLoggerAdapter($this->logger);
+ }
+
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataPsrLoggingLevels')]
+ public function testLoggingWithPsrLogLevels(string $level, int $expectedLevel): void {
+ $this->logger->expects(self::once())
+ ->method('log')
+ ->with($expectedLevel, 'test message', ['app' => 'test']);
+ $this->loggerAdapter->log($level, 'test message', ['app' => 'test']);
+ }
+
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataPsrLoggingLevels')]
+ public function testLogLevelToInt(string $level, int $expectedLevel): void {
+ $this->assertEquals($expectedLevel, PsrLoggerAdapter::logLevelToInt($level));
+ }
+
+ public static function dataPsrLoggingLevels(): array {
+ return [
+ [LogLevel::ALERT, ILogger::ERROR],
+ [LogLevel::CRITICAL, ILogger::ERROR],
+ [LogLevel::DEBUG, ILogger::DEBUG],
+ [LogLevel::EMERGENCY, ILogger::FATAL],
+ [LogLevel::ERROR, ILogger::ERROR],
+ [LogLevel::INFO, ILogger::INFO],
+ [LogLevel::NOTICE, ILogger::INFO],
+ [LogLevel::WARNING, ILogger::WARN],
+ ];
+ }
+
+ #[\PHPUnit\Framework\Attributes\DataProvider('dataInvalidLoggingLevel')]
+ public function testInvalidLoggingLevel($level): void {
+ $this->logger->expects(self::never())
+ ->method('log');
+ $this->expectException(InvalidArgumentException::class);
+
+ $this->loggerAdapter->log($level, 'valid message');
+ }
+
+ public static function dataInvalidLoggingLevel(): array {
+ return [
+ // invalid string
+ ['this is not a level'],
+ // int out of range
+ [ILogger::DEBUG - 1],
+ [ILogger::FATAL + 1],
+ // float is not allowed
+ [1.2345],
+ // boolean is not a level
+ [true],
+ [false],
+ //
+ [null],
+ ];
+ }
+}