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

/**
 * @covers MonologHandlerChromePHPHandler
 */
class ChromePHPHandlerTest extends TestCase
{
    protected function 
setUp()
    {
        
TestChromePHPHandler::reset();
        
$_SERVER['HTTP_USER_AGENT'] = 'Monolog Test; Chrome/1.0';
    }

    public function 
testHeaders()
    {
        
$handler = new TestChromePHPHandler();
        
$handler->setFormatter($this->getIdentityFormatter());
        
$handler->handle($this->getRecord(Logger::DEBUG));
        
$handler->handle($this->getRecord(Logger::WARNING));

        
$expected = array(
            
'X-ChromeLogger-Data'   => base64_encode(utf8_encode(json_encode(array(
                
'version' => ChromePHPHandler::VERSION,
                
'columns' => array('label''log''backtrace''type'),
                
'rows' => array(
                    
'test',
                    
'test',
                ),
                
'request_uri' => '',
            )))),
        );

        
$this->assertEquals($expected$handler->getHeaders());
    }

    public function 
testHeadersOverflow()
    {
        
$handler = new TestChromePHPHandler();
        
$handler->handle($this->getRecord(Logger::DEBUG));
        
$handler->handle($this->getRecord(Logger::WARNINGstr_repeat('a'150 1024)));

        
// overflow chrome headers limit
        
$handler->handle($this->getRecord(Logger::WARNINGstr_repeat('a'100 1024)));

        
$expected = array(
            
'X-ChromeLogger-Data'   => base64_encode(utf8_encode(json_encode(array(
                
'version' => ChromePHPHandler::VERSION,
                
'columns' => array('label''log''backtrace''type'),
                
'rows' => array(
                    array(
                        
'test',
                        
'test',
                        
'unknown',
                        
'log',
                    ),
                    array(
                        
'test',
                        
str_repeat('a'150 1024),
                        
'unknown',
                        
'warn',
                    ),
                    array(
                        
'monolog',
                        
'Incomplete logs, chrome header size limit reached',
                        
'unknown',
                        
'warn',
                    ),
                ),
                
'request_uri' => '',
            )))),
        );

        
$this->assertEquals($expected$handler->getHeaders());
    }

    public function 
testConcurrentHandlers()
    {
        
$handler = new TestChromePHPHandler();
        
$handler->setFormatter($this->getIdentityFormatter());
        
$handler->handle($this->getRecord(Logger::DEBUG));
        
$handler->handle($this->getRecord(Logger::WARNING));

        
$handler2 = new TestChromePHPHandler();
        
$handler2->setFormatter($this->getIdentityFormatter());
        
$handler2->handle($this->getRecord(Logger::DEBUG));
        
$handler2->handle($this->getRecord(Logger::WARNING));

        
$expected = array(
            
'X-ChromeLogger-Data'   => base64_encode(utf8_encode(json_encode(array(
                
'version' => ChromePHPHandler::VERSION,
                
'columns' => array('label''log''backtrace''type'),
                
'rows' => array(
                    
'test',
                    
'test',
                    
'test',
                    
'test',
                ),
                
'request_uri' => '',
            )))),
        );

        
$this->assertEquals($expected$handler2->getHeaders());
    }
}

class 
TestChromePHPHandler extends ChromePHPHandler
{
    protected 
$headers = array();

    public static function 
reset()
    {
        
self::$initialized false;
        
self::$overflowed false;
        
self::$sendHeaders true;
        
self::$json['rows'] = array();
    }

    protected function 
sendHeader($header$content)
    {
        
$this->headers[$header] = $content;
    }

    public function 
getHeaders()
    {
        return 
$this->headers;
    }
}
Онлайн: 1
Реклама