diff --git a/.travis.yml b/.travis.yml index 225c0c0..be0d319 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,8 @@ language: php php: - '5.6' - '7.0' + - '7.1' + - '7.2' - hhvm sudo: false cache: @@ -9,7 +11,6 @@ cache: - $HOME/.composer/cache install: - travis_retry composer self-update - - travis_retry composer global require fxp/composer-asset-plugin - travis_retry composer install --prefer-dist --no-interaction script: - composer exec codecept run --verbose diff --git a/composer.json b/composer.json index c1560d1..85cc27c 100644 --- a/composer.json +++ b/composer.json @@ -24,5 +24,11 @@ "psr-4": { "devgroup\\grayii\\": "src/" } - } + }, + "repositories": [ + { + "type": "composer", + "url": "https://asset-packagist.org" + } + ] } diff --git a/src/GelfTarget.php b/src/GelfTarget.php index 72b3fd6..9484517 100644 --- a/src/GelfTarget.php +++ b/src/GelfTarget.php @@ -5,13 +5,13 @@ namespace devgroup\grayii; +use devgroup\grayii\publisher\Publisher; +use devgroup\grayii\transport\HttpTransport; use Gelf\Message; use Gelf\MessageValidator; use Gelf\MessageValidatorInterface; use Gelf\PublisherInterface; use Gelf\Transport\TransportInterface; -use devgroup\grayii\publisher\Publisher; -use devgroup\grayii\transport\HttpTransport; use Psr\Log\LogLevel; use Yii; use yii\di\Container; @@ -154,6 +154,8 @@ protected function createMessage($data) $message->setShortMessage($msg['short']); } elseif (!empty($msg[0])) { $message->setShortMessage($msg[0]); + } else { + $message->setShortMessage(array_shift($msg)); } if (!empty($msg['full'])) { @@ -161,8 +163,8 @@ protected function createMessage($data) } foreach ($msg as $key => $value) { - if (strpos($key, '_') === 0) { - $message->setAdditional($key, $value); + if ((!in_array($key, ['short', 'full'])) && $key !== 0) { + $message->setAdditional('_' . $key, $value); } } } diff --git a/tests/unit/GelfTargetTest.php b/tests/unit/GelfTargetTest.php index d78732f..5753a48 100644 --- a/tests/unit/GelfTargetTest.php +++ b/tests/unit/GelfTargetTest.php @@ -2,9 +2,9 @@ namespace devgroup\grayii\tests; +use devgroup\grayii\GelfTarget; use Gelf\Message; use Gelf\PublisherInterface; -use devgroup\grayii\GelfTarget; use yii\helpers\ArrayHelper; use yii\log\Logger; @@ -16,9 +16,7 @@ class GelfTargetTest extends \Codeception\Test\Unit protected $tester; private function isPhpVersion7OrMore() { - list($uno, $dos, $tres) = phpversion(); - - return intval($uno) >= 7; + return PHP_MAJOR_VERSION >= 7; } public function versionProvider() { @@ -47,7 +45,7 @@ public function testValidateSimpleMessage($version) $reason = ""; $validateStatus = $validator->validate($message, $reason); - self::assertTrue($validateStatus, $reason); + $this->assertTrue($validateStatus, $reason); } /** @@ -69,12 +67,12 @@ public function testValidateExceptionMessage($version) $reason = ""; $validateStatus = $validator->validate($message, $reason); - self::assertTrue($validateStatus, $reason); + $this->assertTrue($validateStatus, $reason); - self::assertEquals('Exception ' . \Exception::class . ' Test message exception', $message->getShortMessage()); - self::assertTrue(is_string($message->getFullMessage())); - self::assertNotNull($message->getFile()); - self::assertNotNull($message->getLine()); + $this->assertEquals('Exception ' . \Exception::class . ' Test message exception', $message->getShortMessage()); + $this->assertTrue(is_string($message->getFullMessage())); + $this->assertNotNull($message->getFile()); + $this->assertNotNull($message->getLine()); } /** @@ -101,10 +99,10 @@ public function testValidateCombinedMessage($version) $reason = ""; $validateStatus = $validator->validate($message, $reason); - self::assertTrue($validateStatus, $reason); + $this->assertTrue($validateStatus, $reason); - self::assertEquals('Test short message', $message->getShortMessage()); - self::assertEquals('Test full message', $message->getFullMessage()); + $this->assertEquals('Test short message', $message->getShortMessage()); + $this->assertEquals('Test full message', $message->getFullMessage()); } /** @@ -131,10 +129,10 @@ public function testValidateCombinedMessageWithSimplifiedShort($version) $reason = ""; $validateStatus = $validator->validate($message, $reason); - self::assertTrue($validateStatus, $reason); + $this->assertTrue($validateStatus, $reason); - self::assertEquals('Test short message', $message->getShortMessage()); - self::assertEquals('Test full message', $message->getFullMessage()); + $this->assertEquals('Test short message', $message->getShortMessage()); + $this->assertEquals('Test full message', $message->getFullMessage()); } @@ -147,7 +145,7 @@ public function testAppNameAutoFromGelfMessage() '', Logger::LEVEL_INFO, null, null ]); - self::assertEquals(\Yii::$app->id, $message->getHost()); + $this->assertEquals(\Yii::$app->id, $message->getHost()); } public function testAdditionalDataFromGelfMessage() @@ -162,8 +160,8 @@ public function testAdditionalDataFromGelfMessage() ], Logger::LEVEL_INFO, null, null ]); - self::assertEquals('value1', $message->getAdditional('_correctFieldName1')); - self::assertEquals('value2', $message->getAdditional('_correctFieldName2')); + $this->assertEquals('value1', $message->getShortMessage()); //First value goes to message + $this->assertEquals('value2', $message->getAdditional('__correctFieldName2')); } public function testExceptionDataFromGelfMessage() @@ -177,7 +175,7 @@ public function testExceptionDataFromGelfMessage() $ex, Logger::LEVEL_INFO, null, null ]); - self::assertEquals('Exception ' . get_class($ex) . ' Test message', $message->getShortMessage()); + $this->assertEquals('Exception ' . get_class($ex) . ' Test message', $message->getShortMessage()); } public function testErrorDataFromGelfMessage() @@ -195,7 +193,63 @@ public function testErrorDataFromGelfMessage() $ex, Logger::LEVEL_INFO, null, null ]); - self::assertEquals('Error ' . get_class($ex) . ' Test message', $message->getShortMessage()); + $this->assertEquals('Error ' . get_class($ex) . ' Test message', $message->getShortMessage()); + } + + /** + * @dataProvider versionProvider + */ + public function testArrayMessageWithoutRequiredDataGetsFirstElementAsMessage($version) + { + /** @var GelfTarget $target */ + list($target, $method) = $this->createCreateMessageMethod([ + 'version' => $version + ]); + + /** @var Message $message */ + $message = $method->invoke($target, [ + [ + 'message' => 'Test short message', + ], Logger::LEVEL_INFO, null, null + ]); + + $validator = $target->getMessageValidator(); + + $reason = ""; + $validateStatus = $validator->validate($message, $reason); + $this->assertTrue($validateStatus, $reason); + + $this->assertEquals('Test short message', $message->getShortMessage()); + } + + /** + * @dataProvider versionProvider + */ + public function testArrayMessageWithoutRequiredDataWithAdditionalData($version) + { + /** @var GelfTarget $target */ + list($target, $method) = $this->createCreateMessageMethod([ + 'version' => $version + ]); + + /** @var Message $message */ + $message = $method->invoke($target, [ + [ + 'message' => 'Test short message', + 'additionaldata1' => 'test1', + 'additionaldata2' => 'test2' + ], Logger::LEVEL_INFO, null, null + ]); + + $validator = $target->getMessageValidator(); + + $reason = ""; + $validateStatus = $validator->validate($message, $reason); + $this->assertTrue($validateStatus, $reason); + + $this->assertEquals('Test short message', $message->getShortMessage()); + $this->assertEquals('test1', $message->getAdditional('_additionaldata1')); + $this->assertEquals('test2', $message->getAdditional('_additionaldata2')); } protected function createCreateMessageMethod($config = null) @@ -238,18 +292,18 @@ public function testMessageGenerator() switch ($counter) { case 1: - self::assertEquals('test message', $message); + $this->assertEquals('test message', $message); break; case 2: - self::assertEquals(\Exception::class, get_class($message)); + $this->assertEquals(\Exception::class, get_class($message)); break; case 3: if ($versionMoreTheSix) { - self::assertEquals(\Error::class, get_class($message)); + $this->assertEquals(\Error::class, get_class($message)); } break; case 4: - self::assertTrue(is_array($message)); + $this->assertTrue(is_array($message)); break; default: throw new \Exception();