dreamjob/lib/Cake/Test/Case/Log/Engine/SyslogLogTest.php

95 lines
2.6 KiB
PHP

<?php
/**
*
*
* CakePHP(tm) Tests <http://book.cakephp.org/2.0/en/development/testing.html>
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice
*
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://book.cakephp.org/2.0/en/development/testing.html CakePHP(tm) Tests
* @package Cake.Test.Case.Log.Engine
* @since CakePHP(tm) v 2.4
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/
App::uses('SyslogLog', 'Log/Engine');
/**
* SyslogLogTest class
*
* @package Cake.Test.Case.Log.Engine
*/
class SyslogLogTest extends CakeTestCase {
/**
* Tests that the connection to the logger is open with the right arguments
*
* @return void
*/
public function testOpenLog() {
$log = $this->getMock('SyslogLog', array('_open', '_write'));
$log->expects($this->once())->method('_open')->with('', LOG_ODELAY, LOG_USER);
$log->write('debug', 'message');
$log = $this->getMock('SyslogLog', array('_open', '_write'));
$log->config(array(
'prefix' => 'thing',
'flag' => LOG_NDELAY,
'facility' => LOG_MAIL,
'format' => '%s: %s'
));
$log->expects($this->once())->method('_open')
->with('thing', LOG_NDELAY, LOG_MAIL);
$log->write('debug', 'message');
}
/**
* Tests that single lines are written to syslog
*
* @dataProvider typesProvider
* @return void
*/
public function testWriteOneLine($type, $expected) {
$log = $this->getMock('SyslogLog', array('_open', '_write'));
$log->expects($this->once())->method('_write')->with($expected, $type . ': Foo');
$log->write($type, 'Foo');
}
/**
* Tests that multiple lines are split and logged separately
*
* @return void
*/
public function testWriteMultiLine() {
$log = $this->getMock('SyslogLog', array('_open', '_write'));
$log->expects($this->at(1))->method('_write')->with(LOG_DEBUG, 'debug: Foo');
$log->expects($this->at(2))->method('_write')->with(LOG_DEBUG, 'debug: Bar');
$log->expects($this->exactly(2))->method('_write');
$log->write('debug', "Foo\nBar");
}
/**
* Data provider for the write function test
*
* @return array
*/
public function typesProvider() {
return array(
array('emergency', LOG_EMERG),
array('alert', LOG_ALERT),
array('critical', LOG_CRIT),
array('error', LOG_ERR),
array('warning', LOG_WARNING),
array('notice', LOG_NOTICE),
array('info', LOG_INFO),
array('debug', LOG_DEBUG)
);
}
}