85 lines
2.1 KiB
PHP
85 lines
2.1 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Monolog package.
|
|
*
|
|
* (c) Jordi Boggiano <j.boggiano@seld.be>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Monolog\Handler;
|
|
|
|
use Exception;
|
|
use Monolog\TestCase;
|
|
use Monolog\Logger;
|
|
use PHPUnit_Framework_MockObject_MockObject as MockObject;
|
|
|
|
/**
|
|
* @author Erik Johansson <erik.pm.johansson@gmail.com>
|
|
* @see https://rollbar.com/docs/notifier/rollbar-php/
|
|
*
|
|
* @coversDefaultClass Monolog\Handler\RollbarHandler
|
|
*/
|
|
class RollbarHandlerTest extends TestCase
|
|
{
|
|
/**
|
|
* @var MockObject
|
|
*/
|
|
private $rollbarNotifier;
|
|
|
|
/**
|
|
* @var array
|
|
*/
|
|
public $reportedExceptionArguments = null;
|
|
|
|
protected function setUp()
|
|
{
|
|
parent::setUp();
|
|
|
|
$this->setupRollbarNotifierMock();
|
|
}
|
|
|
|
/**
|
|
* When reporting exceptions to Rollbar the
|
|
* level has to be set in the payload data
|
|
*/
|
|
public function testExceptionLogLevel()
|
|
{
|
|
$handler = $this->createHandler();
|
|
|
|
$handler->handle($this->createExceptionRecord(Logger::DEBUG));
|
|
|
|
$this->assertEquals('debug', $this->reportedExceptionArguments['payload']['level']);
|
|
}
|
|
|
|
private function setupRollbarNotifierMock()
|
|
{
|
|
$this->rollbarNotifier = $this->getMockBuilder('RollbarNotifier')
|
|
->setMethods(array('report_message', 'report_exception', 'flush'))
|
|
->getMock();
|
|
|
|
$that = $this;
|
|
|
|
$this->rollbarNotifier
|
|
->expects($this->any())
|
|
->method('report_exception')
|
|
->willReturnCallback(function ($exception, $context, $payload) use ($that) {
|
|
$that->reportedExceptionArguments = compact('exception', 'context', 'payload');
|
|
});
|
|
}
|
|
|
|
private function createHandler()
|
|
{
|
|
return new RollbarHandler($this->rollbarNotifier, Logger::DEBUG);
|
|
}
|
|
|
|
private function createExceptionRecord($level = Logger::DEBUG, $message = 'test', $exception = null)
|
|
{
|
|
return $this->getRecord($level, $message, array(
|
|
'exception' => $exception ?: new Exception()
|
|
));
|
|
}
|
|
}
|