diff options
Diffstat (limited to 'tests/Monolog/Formatter/LogstashFormatterTest.php')
-rw-r--r-- | tests/Monolog/Formatter/LogstashFormatterTest.php | 270 |
1 files changed, 62 insertions, 208 deletions
diff --git a/tests/Monolog/Formatter/LogstashFormatterTest.php b/tests/Monolog/Formatter/LogstashFormatterTest.php index 9f6b1cc..2ca9f55 100644 --- a/tests/Monolog/Formatter/LogstashFormatterTest.php +++ b/tests/Monolog/Formatter/LogstashFormatterTest.php @@ -1,4 +1,4 @@ -<?php +<?php declare(strict_types=1); /* * This file is part of the Monolog package. @@ -13,7 +13,7 @@ namespace Monolog\Formatter; use Monolog\Logger; -class LogstashFormatterTest extends \PHPUnit_Framework_TestCase +class LogstashFormatterTest extends \PHPUnit\Framework\TestCase { public function tearDown() { @@ -25,158 +25,18 @@ class LogstashFormatterTest extends \PHPUnit_Framework_TestCase /** * @covers Monolog\Formatter\LogstashFormatter::format */ - public function testDefaultFormatter() - { - $formatter = new LogstashFormatter('test', 'hostname'); - $record = array( - 'level' => Logger::ERROR, - 'level_name' => 'ERROR', - 'channel' => 'meh', - 'context' => array(), - 'datetime' => new \DateTime("@0"), - 'extra' => array(), - 'message' => 'log', - ); - - $message = json_decode($formatter->format($record), true); - - $this->assertEquals("1970-01-01T00:00:00.000000+00:00", $message['@timestamp']); - $this->assertEquals('log', $message['@message']); - $this->assertEquals('meh', $message['@fields']['channel']); - $this->assertContains('meh', $message['@tags']); - $this->assertEquals(Logger::ERROR, $message['@fields']['level']); - $this->assertEquals('test', $message['@type']); - $this->assertEquals('hostname', $message['@source']); - - $formatter = new LogstashFormatter('mysystem'); - - $message = json_decode($formatter->format($record), true); - - $this->assertEquals('mysystem', $message['@type']); - } - - /** - * @covers Monolog\Formatter\LogstashFormatter::format - */ - public function testFormatWithFileAndLine() - { - $formatter = new LogstashFormatter('test'); - $record = array( - 'level' => Logger::ERROR, - 'level_name' => 'ERROR', - 'channel' => 'meh', - 'context' => array('from' => 'logger'), - 'datetime' => new \DateTime("@0"), - 'extra' => array('file' => 'test', 'line' => 14), - 'message' => 'log', - ); - - $message = json_decode($formatter->format($record), true); - - $this->assertEquals('test', $message['@fields']['file']); - $this->assertEquals(14, $message['@fields']['line']); - } - - /** - * @covers Monolog\Formatter\LogstashFormatter::format - */ - public function testFormatWithContext() - { - $formatter = new LogstashFormatter('test'); - $record = array( - 'level' => Logger::ERROR, - 'level_name' => 'ERROR', - 'channel' => 'meh', - 'context' => array('from' => 'logger'), - 'datetime' => new \DateTime("@0"), - 'extra' => array('key' => 'pair'), - 'message' => 'log', - ); - - $message = json_decode($formatter->format($record), true); - - $message_array = $message['@fields']; - - $this->assertArrayHasKey('ctxt_from', $message_array); - $this->assertEquals('logger', $message_array['ctxt_from']); - - // Test with extraPrefix - $formatter = new LogstashFormatter('test', null, null, 'CTX'); - $message = json_decode($formatter->format($record), true); - - $message_array = $message['@fields']; - - $this->assertArrayHasKey('CTXfrom', $message_array); - $this->assertEquals('logger', $message_array['CTXfrom']); - } - - /** - * @covers Monolog\Formatter\LogstashFormatter::format - */ - public function testFormatWithExtra() - { - $formatter = new LogstashFormatter('test'); - $record = array( - 'level' => Logger::ERROR, - 'level_name' => 'ERROR', - 'channel' => 'meh', - 'context' => array('from' => 'logger'), - 'datetime' => new \DateTime("@0"), - 'extra' => array('key' => 'pair'), - 'message' => 'log', - ); - - $message = json_decode($formatter->format($record), true); - - $message_array = $message['@fields']; - - $this->assertArrayHasKey('key', $message_array); - $this->assertEquals('pair', $message_array['key']); - - // Test with extraPrefix - $formatter = new LogstashFormatter('test', null, 'EXT'); - $message = json_decode($formatter->format($record), true); - - $message_array = $message['@fields']; - - $this->assertArrayHasKey('EXTkey', $message_array); - $this->assertEquals('pair', $message_array['EXTkey']); - } - - public function testFormatWithApplicationName() - { - $formatter = new LogstashFormatter('app', 'test'); - $record = array( - 'level' => Logger::ERROR, - 'level_name' => 'ERROR', - 'channel' => 'meh', - 'context' => array('from' => 'logger'), - 'datetime' => new \DateTime("@0"), - 'extra' => array('key' => 'pair'), - 'message' => 'log', - ); - - $message = json_decode($formatter->format($record), true); - - $this->assertArrayHasKey('@type', $message); - $this->assertEquals('app', $message['@type']); - } - - /** - * @covers Monolog\Formatter\LogstashFormatter::format - */ public function testDefaultFormatterV1() { - $formatter = new LogstashFormatter('test', 'hostname', null, 'ctxt_', LogstashFormatter::V1); - $record = array( + $formatter = new LogstashFormatter('test', 'hostname', null, 'ctxt_'); + $record = [ 'level' => Logger::ERROR, 'level_name' => 'ERROR', 'channel' => 'meh', - 'context' => array(), - 'datetime' => new \DateTime("@0"), - 'extra' => array(), + 'context' => [], + 'datetime' => new \DateTimeImmutable("@0"), + 'extra' => [], 'message' => 'log', - ); + ]; $message = json_decode($formatter->format($record), true); @@ -185,10 +45,11 @@ class LogstashFormatterTest extends \PHPUnit_Framework_TestCase $this->assertEquals('log', $message['message']); $this->assertEquals('meh', $message['channel']); $this->assertEquals('ERROR', $message['level']); + $this->assertEquals(Logger::ERROR, $message['monolog_level']); $this->assertEquals('test', $message['type']); $this->assertEquals('hostname', $message['host']); - $formatter = new LogstashFormatter('mysystem', null, null, 'ctxt_', LogstashFormatter::V1); + $formatter = new LogstashFormatter('mysystem', null, null, 'ctxt_'); $message = json_decode($formatter->format($record), true); @@ -200,21 +61,21 @@ class LogstashFormatterTest extends \PHPUnit_Framework_TestCase */ public function testFormatWithFileAndLineV1() { - $formatter = new LogstashFormatter('test', null, null, 'ctxt_', LogstashFormatter::V1); - $record = array( + $formatter = new LogstashFormatter('test', null, null, 'ctxt_'); + $record = [ 'level' => Logger::ERROR, 'level_name' => 'ERROR', 'channel' => 'meh', - 'context' => array('from' => 'logger'), - 'datetime' => new \DateTime("@0"), - 'extra' => array('file' => 'test', 'line' => 14), + 'context' => ['from' => 'logger'], + 'datetime' => new \DateTimeImmutable("@0"), + 'extra' => ['file' => 'test', 'line' => 14], 'message' => 'log', - ); + ]; $message = json_decode($formatter->format($record), true); - $this->assertEquals('test', $message['file']); - $this->assertEquals(14, $message['line']); + $this->assertEquals('test', $message['extra']['file']); + $this->assertEquals(14, $message['extra']['line']); } /** @@ -222,28 +83,30 @@ class LogstashFormatterTest extends \PHPUnit_Framework_TestCase */ public function testFormatWithContextV1() { - $formatter = new LogstashFormatter('test', null, null, 'ctxt_', LogstashFormatter::V1); - $record = array( + $formatter = new LogstashFormatter('test', null, null, 'ctxt_'); + $record = [ 'level' => Logger::ERROR, 'level_name' => 'ERROR', 'channel' => 'meh', - 'context' => array('from' => 'logger'), - 'datetime' => new \DateTime("@0"), - 'extra' => array('key' => 'pair'), + 'context' => ['from' => 'logger'], + 'datetime' => new \DateTimeImmutable("@0"), + 'extra' => ['key' => 'pair'], 'message' => 'log', - ); + ]; $message = json_decode($formatter->format($record), true); - $this->assertArrayHasKey('ctxt_from', $message); - $this->assertEquals('logger', $message['ctxt_from']); + $this->assertArrayHasKey('ctxt_context', $message); + $this->assertArrayHasKey('from', $message['ctxt_context']); + $this->assertEquals('logger', $message['ctxt_context']['from']); // Test with extraPrefix - $formatter = new LogstashFormatter('test', null, null, 'CTX', LogstashFormatter::V1); + $formatter = new LogstashFormatter('test', null, null, 'CTX'); $message = json_decode($formatter->format($record), true); - $this->assertArrayHasKey('CTXfrom', $message); - $this->assertEquals('logger', $message['CTXfrom']); + $this->assertArrayHasKey('CTXcontext', $message); + $this->assertArrayHasKey('from', $message['CTXcontext']); + $this->assertEquals('logger', $message['CTXcontext']['from']); } /** @@ -251,42 +114,44 @@ class LogstashFormatterTest extends \PHPUnit_Framework_TestCase */ public function testFormatWithExtraV1() { - $formatter = new LogstashFormatter('test', null, null, 'ctxt_', LogstashFormatter::V1); - $record = array( + $formatter = new LogstashFormatter('test', null, null, 'ctxt_'); + $record = [ 'level' => Logger::ERROR, 'level_name' => 'ERROR', 'channel' => 'meh', - 'context' => array('from' => 'logger'), - 'datetime' => new \DateTime("@0"), - 'extra' => array('key' => 'pair'), + 'context' => ['from' => 'logger'], + 'datetime' => new \DateTimeImmutable("@0"), + 'extra' => ['key' => 'pair'], 'message' => 'log', - ); + ]; $message = json_decode($formatter->format($record), true); - $this->assertArrayHasKey('key', $message); - $this->assertEquals('pair', $message['key']); + $this->assertArrayHasKey('extra', $message); + $this->assertArrayHasKey('key', $message['extra']); + $this->assertEquals('pair', $message['extra']['key']); // Test with extraPrefix - $formatter = new LogstashFormatter('test', null, 'EXT', 'ctxt_', LogstashFormatter::V1); + $formatter = new LogstashFormatter('test', null, 'EXT', 'ctxt_'); $message = json_decode($formatter->format($record), true); - $this->assertArrayHasKey('EXTkey', $message); - $this->assertEquals('pair', $message['EXTkey']); + $this->assertArrayHasKey('EXTextra', $message); + $this->assertArrayHasKey('key', $message['EXTextra']); + $this->assertEquals('pair', $message['EXTextra']['key']); } public function testFormatWithApplicationNameV1() { - $formatter = new LogstashFormatter('app', 'test', null, 'ctxt_', LogstashFormatter::V1); - $record = array( + $formatter = new LogstashFormatter('app', 'test', null, 'ctxt_'); + $record = [ 'level' => Logger::ERROR, 'level_name' => 'ERROR', 'channel' => 'meh', - 'context' => array('from' => 'logger'), - 'datetime' => new \DateTime("@0"), - 'extra' => array('key' => 'pair'), + 'context' => ['from' => 'logger'], + 'datetime' => new \DateTimeImmutable("@0"), + 'extra' => ['key' => 'pair'], 'message' => 'log', - ); + ]; $message = json_decode($formatter->format($record), true); @@ -296,38 +161,27 @@ class LogstashFormatterTest extends \PHPUnit_Framework_TestCase public function testFormatWithLatin9Data() { - if (version_compare(PHP_VERSION, '5.5.0', '<')) { - // Ignore the warning that will be emitted by PHP <5.5.0 - \PHPUnit_Framework_Error_Warning::$enabled = false; - } $formatter = new LogstashFormatter('test', 'hostname'); - $record = array( + $record = [ 'level' => Logger::ERROR, 'level_name' => 'ERROR', 'channel' => '¯\_(ツ)_/¯', - 'context' => array(), - 'datetime' => new \DateTime("@0"), - 'extra' => array( + 'context' => [], + 'datetime' => new \DateTimeImmutable("@0"), + 'extra' => [ 'user_agent' => "\xD6WN; FBCR/OrangeEspa\xF1a; Vers\xE3o/4.0; F\xE4rist", - ), + ], 'message' => 'log', - ); + ]; $message = json_decode($formatter->format($record), true); $this->assertEquals("1970-01-01T00:00:00.000000+00:00", $message['@timestamp']); - $this->assertEquals('log', $message['@message']); - $this->assertEquals('¯\_(ツ)_/¯', $message['@fields']['channel']); - $this->assertContains('¯\_(ツ)_/¯', $message['@tags']); - $this->assertEquals(Logger::ERROR, $message['@fields']['level']); - $this->assertEquals('test', $message['@type']); - $this->assertEquals('hostname', $message['@source']); - if (version_compare(PHP_VERSION, '5.5.0', '>=')) { - $this->assertEquals('ÖWN; FBCR/OrangeEspaña; Versão/4.0; Färist', $message['@fields']['user_agent']); - } else { - // PHP <5.5 does not return false for an element encoding failure, - // instead it emits a warning (possibly) and nulls the value. - $this->assertEquals(null, $message['@fields']['user_agent']); - } + $this->assertEquals('log', $message['message']); + $this->assertEquals('¯\_(ツ)_/¯', $message['channel']); + $this->assertEquals('ERROR', $message['level']); + $this->assertEquals('test', $message['type']); + $this->assertEquals('hostname', $message['host']); + $this->assertEquals('ÖWN; FBCR/OrangeEspaña; Versão/4.0; Färist', $message['extra']['user_agent']); } } |