1
0
قرینه از https://github.com/matomo-org/matomo.git synced 2025-08-22 15:07:44 +00:00
Files
matomo/plugins/Monolog/tests/Unit/Formatter/LineMessageFormatterTest.php
Stefan Giehl ff9070adc3 Escape control characters in log messages (#22937)
* Escape control characters in log messages

* Fix handling of line breaks
2025-01-17 13:50:59 +01:00

117 خطوط
3.1 KiB
PHP

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
namespace Piwik\Plugins\Monolog\tests\Unit\Formatter;
use DateTime;
use Piwik\Plugins\Monolog\Formatter\LineMessageFormatter;
/**
* @group Log
* @covers \Piwik\Plugins\Monolog\Formatter\LineMessageFormatter
*/
class LineMessageFormatterTest extends \PHPUnit\Framework\TestCase
{
public function testItShouldFormatWithPlaceholders()
{
$formatter = new LineMessageFormatter('%level% %tag% %datetime% %message%');
$record = array(
'message' => 'Hello world',
'datetime' => DateTime::createFromFormat('U', 0),
'level_name' => 'ERROR',
'extra' => array(
'class' => 'Foo'
),
);
$formatted = "ERROR Foo 1970-01-01 00:00:00 GMT+0000 Hello world\n";
$this->assertEquals($formatted, $formatter->format($record));
}
public function testItShouldInsertRequestIdIfDefined()
{
$formatter = new LineMessageFormatter('%message%');
$record = array(
'message' => 'Hello world',
'datetime' => DateTime::createFromFormat('U', 0),
'level_name' => 'ERROR',
'extra' => array(
'request_id' => 'request id'
),
);
$formatted = "[request id] Hello world\n";
$this->assertEquals($formatted, $formatter->format($record));
}
public function testItShouldIndentMultilineMessage()
{
$formatter = new LineMessageFormatter('%level% %message%');
$record = array(
'message' => "Hello world\ntest\x0Atest",
'datetime' => DateTime::createFromFormat('U', 0),
'level_name' => 'ERROR',
);
$formatted = <<<LOG
ERROR Hello world
test
test
LOG;
$this->assertEquals($formatted, $formatter->format($record));
}
public function testItShouldSplitInlineLineBreaksIntoManyMessagesIfDisabled()
{
$formatter = new LineMessageFormatter('%level% %message%', $allowInlineLineBreaks = false);
$record = array(
'message' => "Hello world\ntest\ntest",
'datetime' => DateTime::createFromFormat('U', 0),
'level_name' => 'ERROR',
'extra' => array('request_id' => '1234')
);
$formatted = <<<LOG
ERROR [1234] Hello world
ERROR [1234] test
ERROR [1234] test
LOG;
$this->assertEquals($formatted, $formatter->format($record));
}
public function testItShouldEscapeControlCharacters()
{
$formatter = new LineMessageFormatter('%level% %message%', $allowInlineLineBreaks = false);
$record = array(
'message' => "Hello world\x1Btest\ntesttest",
'datetime' => DateTime::createFromFormat('U', 0),
'level_name' => 'ERROR',
);
$formatted = <<<LOG
ERROR Hello world\\033test
ERROR test\\033test
LOG;
$this->assertEquals($formatted, $formatter->format($record));
}
}