Вход Регистрация
Файл: gapps/vendor/monolog/monolog/tests/Monolog/Handler/RavenHandlerTest.php
Строк: 367
<?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 MonologHandler;

use 
MonologTestCase;
use 
MonologLogger;
use 
MonologFormatterLineFormatter;

class 
RavenHandlerTest extends TestCase
{
    public function 
setUp()
    {
        if (!
class_exists('Raven_Client')) {
            
$this->markTestSkipped('raven/raven not installed');
        }

        require_once 
__DIR__ '/MockRavenClient.php';
    }

    
/**
     * @covers MonologHandlerRavenHandler::__construct
     */
    
public function testConstruct()
    {
        
$handler = new RavenHandler($this->getRavenClient());
        
$this->assertInstanceOf('MonologHandlerRavenHandler'$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(12'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('MonologHandlerRavenHandler'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');
    }
}
Онлайн: 0
Реклама