1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
<?php
namespace MediaWiki\Tests\Logger\Monolog;
use MediaWiki\Logger\Monolog\LogstashFormatter;
class LogstashFormatterTest extends \MediaWikiUnitTestCase {
/**
* @dataProvider provideV1
* @covers \MediaWiki\Logger\Monolog\LogstashFormatter::format
* @param array $record The input record.
* @param array $expected Associative array of expected keys and their values.
* @param array $notExpected List of keys that should not exist.
*/
public function testV1( array $record, array $expected, array $notExpected ) {
$formatter = new LogstashFormatter( 'app', 'system', '', '', LogstashFormatter::V1 );
$formatted = json_decode( $formatter->format( $record ), true );
foreach ( $expected as $key => $value ) {
$this->assertArrayHasKey( $key, $formatted );
$this->assertSame( $value, $formatted[$key] );
}
foreach ( $notExpected as $key ) {
$this->assertArrayNotHasKey( $key, $formatted );
}
}
public static function provideV1() {
return [
[
[ 'extra' => [ 'foo' => 1 ], 'context' => [ 'bar' => 2 ] ],
[ 'foo' => 1, 'bar' => 2 ],
[ 'logstash_formatter_key_conflict' ],
],
[
[ 'extra' => [ 'url' => 1 ], 'context' => [ 'url' => 2 ] ],
[ 'url' => 1, 'c_url' => 2, 'logstash_formatter_key_conflict' => [ 'url' ] ],
[],
],
[
[ 'channel' => 'x', 'context' => [ 'channel' => 'y' ] ],
[ 'channel' => 'x', 'c_channel' => 'y',
'logstash_formatter_key_conflict' => [ 'channel' ] ],
[],
],
];
}
/**
* @covers \MediaWiki\Logger\Monolog\LogstashFormatter::format
*/
public function testV1WithPrefix() {
$formatter = new LogstashFormatter( 'app', 'system', '', 'ctx_', LogstashFormatter::V1 );
$record = [ 'extra' => [ 'url' => 1 ], 'context' => [ 'url' => 2 ] ];
$formatted = json_decode( $formatter->format( $record ), true );
$this->assertArrayHasKey( 'url', $formatted );
$this->assertSame( 1, $formatted['url'] );
$this->assertArrayHasKey( 'ctx_url', $formatted );
$this->assertSame( 2, $formatted['ctx_url'] );
$this->assertArrayNotHasKey( 'c_url', $formatted );
}
}
|