/vendor/monolog/monolog/tests/Monolog/Handler/RavenHandlerTest.php |
@@ -0,0 +1,255 @@ |
<?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 Monolog\TestCase; |
use Monolog\Logger; |
use Monolog\Formatter\LineFormatter; |
|
class RavenHandlerTest extends TestCase |
{ |
public function setUp() |
{ |
if (!class_exists('Raven_Client')) { |
$this->markTestSkipped('raven/raven not installed'); |
} |
|
require_once __DIR__ . '/MockRavenClient.php'; |
} |
|
/** |
* @covers Monolog\Handler\RavenHandler::__construct |
*/ |
public function testConstruct() |
{ |
$handler = new RavenHandler($this->getRavenClient()); |
$this->assertInstanceOf('Monolog\Handler\RavenHandler', $handler); |
} |
|
protected function getHandler($ravenClient) |
{ |
$handler = new RavenHandler($ravenClient); |
|
return $handler; |
} |
|
protected function getRavenClient() |
{ |
$dsn = 'http://43f6017361224d098402974103bfc53d:a6a0538fc2934ba2bed32e08741b2cd3@marca.python.live.cheggnet.com:9000/1'; |
|
return new MockRavenClient($dsn); |
} |
|
public function testDebug() |
{ |
$ravenClient = $this->getRavenClient(); |
$handler = $this->getHandler($ravenClient); |
|
$record = $this->getRecord(Logger::DEBUG, 'A test debug message'); |
$handler->handle($record); |
|
$this->assertEquals($ravenClient::DEBUG, $ravenClient->lastData['level']); |
$this->assertContains($record['message'], $ravenClient->lastData['message']); |
} |
|
public function testWarning() |
{ |
$ravenClient = $this->getRavenClient(); |
$handler = $this->getHandler($ravenClient); |
|
$record = $this->getRecord(Logger::WARNING, 'A test warning message'); |
$handler->handle($record); |
|
$this->assertEquals($ravenClient::WARNING, $ravenClient->lastData['level']); |
$this->assertContains($record['message'], $ravenClient->lastData['message']); |
} |
|
public function testTag() |
{ |
$ravenClient = $this->getRavenClient(); |
$handler = $this->getHandler($ravenClient); |
|
$tags = array(1, 2, 'foo'); |
$record = $this->getRecord(Logger::INFO, 'test', array('tags' => $tags)); |
$handler->handle($record); |
|
$this->assertEquals($tags, $ravenClient->lastData['tags']); |
} |
|
public function testExtraParameters() |
{ |
$ravenClient = $this->getRavenClient(); |
$handler = $this->getHandler($ravenClient); |
|
$checksum = '098f6bcd4621d373cade4e832627b4f6'; |
$release = '05a671c66aefea124cc08b76ea6d30bb'; |
$eventId = '31423'; |
$record = $this->getRecord(Logger::INFO, 'test', array('checksum' => $checksum, 'release' => $release, 'event_id' => $eventId)); |
$handler->handle($record); |
|
$this->assertEquals($checksum, $ravenClient->lastData['checksum']); |
$this->assertEquals($release, $ravenClient->lastData['release']); |
$this->assertEquals($eventId, $ravenClient->lastData['event_id']); |
} |
|
public function testFingerprint() |
{ |
$ravenClient = $this->getRavenClient(); |
$handler = $this->getHandler($ravenClient); |
|
$fingerprint = array('{{ default }}', 'other value'); |
$record = $this->getRecord(Logger::INFO, 'test', array('fingerprint' => $fingerprint)); |
$handler->handle($record); |
|
$this->assertEquals($fingerprint, $ravenClient->lastData['fingerprint']); |
} |
|
public function testUserContext() |
{ |
$ravenClient = $this->getRavenClient(); |
$handler = $this->getHandler($ravenClient); |
|
$recordWithNoContext = $this->getRecord(Logger::INFO, 'test with default user context'); |
// set user context 'externally' |
|
$user = array( |
'id' => '123', |
'email' => 'test@test.com', |
); |
|
$recordWithContext = $this->getRecord(Logger::INFO, 'test', array('user' => $user)); |
|
$ravenClient->user_context(array('id' => 'test_user_id')); |
// handle context |
$handler->handle($recordWithContext); |
$this->assertEquals($user, $ravenClient->lastData['user']); |
|
// check to see if its reset |
$handler->handle($recordWithNoContext); |
$this->assertInternalType('array', $ravenClient->context->user); |
$this->assertSame('test_user_id', $ravenClient->context->user['id']); |
|
// handle with null context |
$ravenClient->user_context(null); |
$handler->handle($recordWithContext); |
$this->assertEquals($user, $ravenClient->lastData['user']); |
|
// check to see if its reset |
$handler->handle($recordWithNoContext); |
$this->assertNull($ravenClient->context->user); |
} |
|
public function testException() |
{ |
$ravenClient = $this->getRavenClient(); |
$handler = $this->getHandler($ravenClient); |
|
try { |
$this->methodThatThrowsAnException(); |
} catch (\Exception $e) { |
$record = $this->getRecord(Logger::ERROR, $e->getMessage(), array('exception' => $e)); |
$handler->handle($record); |
} |
|
$this->assertEquals($record['message'], $ravenClient->lastData['message']); |
} |
|
public function testHandleBatch() |
{ |
$records = $this->getMultipleRecords(); |
$records[] = $this->getRecord(Logger::WARNING, 'warning'); |
$records[] = $this->getRecord(Logger::WARNING, 'warning'); |
|
$logFormatter = $this->getMock('Monolog\\Formatter\\FormatterInterface'); |
$logFormatter->expects($this->once())->method('formatBatch'); |
|
$formatter = $this->getMock('Monolog\\Formatter\\FormatterInterface'); |
$formatter->expects($this->once())->method('format')->with($this->callback(function ($record) { |
return $record['level'] == 400; |
})); |
|
$handler = $this->getHandler($this->getRavenClient()); |
$handler->setBatchFormatter($logFormatter); |
$handler->setFormatter($formatter); |
$handler->handleBatch($records); |
} |
|
public function testHandleBatchDoNothingIfRecordsAreBelowLevel() |
{ |
$records = array( |
$this->getRecord(Logger::DEBUG, 'debug message 1'), |
$this->getRecord(Logger::DEBUG, 'debug message 2'), |
$this->getRecord(Logger::INFO, 'information'), |
); |
|
$handler = $this->getMock('Monolog\Handler\RavenHandler', null, array($this->getRavenClient())); |
$handler->expects($this->never())->method('handle'); |
$handler->setLevel(Logger::ERROR); |
$handler->handleBatch($records); |
} |
|
public function testHandleBatchPicksProperMessage() |
{ |
$records = array( |
$this->getRecord(Logger::DEBUG, 'debug message 1'), |
$this->getRecord(Logger::DEBUG, 'debug message 2'), |
$this->getRecord(Logger::INFO, 'information 1'), |
$this->getRecord(Logger::ERROR, 'error 1'), |
$this->getRecord(Logger::WARNING, 'warning'), |
$this->getRecord(Logger::ERROR, 'error 2'), |
$this->getRecord(Logger::INFO, 'information 2'), |
); |
|
$logFormatter = $this->getMock('Monolog\\Formatter\\FormatterInterface'); |
$logFormatter->expects($this->once())->method('formatBatch'); |
|
$formatter = $this->getMock('Monolog\\Formatter\\FormatterInterface'); |
$formatter->expects($this->once())->method('format')->with($this->callback(function ($record) use ($records) { |
return $record['message'] == 'error 1'; |
})); |
|
$handler = $this->getHandler($this->getRavenClient()); |
$handler->setBatchFormatter($logFormatter); |
$handler->setFormatter($formatter); |
$handler->handleBatch($records); |
} |
|
public function testGetSetBatchFormatter() |
{ |
$ravenClient = $this->getRavenClient(); |
$handler = $this->getHandler($ravenClient); |
|
$handler->setBatchFormatter($formatter = new LineFormatter()); |
$this->assertSame($formatter, $handler->getBatchFormatter()); |
} |
|
public function testRelease() |
{ |
$ravenClient = $this->getRavenClient(); |
$handler = $this->getHandler($ravenClient); |
$release = 'v42.42.42'; |
$handler->setRelease($release); |
$record = $this->getRecord(Logger::INFO, 'test'); |
$handler->handle($record); |
$this->assertEquals($release, $ravenClient->lastData['release']); |
|
$localRelease = 'v41.41.41'; |
$record = $this->getRecord(Logger::INFO, 'test', array('release' => $localRelease)); |
$handler->handle($record); |
$this->assertEquals($localRelease, $ravenClient->lastData['release']); |
} |
|
private function methodThatThrowsAnException() |
{ |
throw new \Exception('This is an exception'); |
} |
} |