Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

<?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)
                );
        }

}