123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Bundle\MonologBundle\Tests\DependencyInjection;
- use Symfony\Bundle\MonologBundle\Tests\TestCase;
- use Symfony\Bundle\MonologBundle\DependencyInjection\MonologExtension;
- use Symfony\Component\DependencyInjection\ContainerBuilder;
- use Symfony\Component\DependencyInjection\Reference;
- class MonologExtensionTest extends TestCase
- {
- public function testLoadWithDefault()
- {
- $container = new ContainerBuilder();
- $loader = new MonologExtension();
- $loader->load(array(array('handlers' => array('main' => array('type' => 'stream')))), $container);
- $this->assertTrue($container->hasDefinition('monolog.logger'));
- $this->assertTrue($container->hasDefinition('monolog.handler.main'));
- $logger = $container->getDefinition('monolog.logger');
- $this->assertDICDefinitionMethodCallAt(0, $logger, 'pushHandler', array(new Reference('monolog.handler.main')));
- $handler = $container->getDefinition('monolog.handler.main');
- $this->assertDICDefinitionClass($handler, '%monolog.handler.stream.class%');
- $this->assertDICConstructorArguments($handler, array('%kernel.logs_dir%/%kernel.environment%.log', \Monolog\Logger::DEBUG, false));
- }
- public function testLoadWithCustomValues()
- {
- $container = new ContainerBuilder();
- $loader = new MonologExtension();
- $loader->load(array(array('handlers' => array('custom' => array('type' => 'stream', 'path' => '/tmp/symfony.log', 'bubble' => true, 'level' => 'ERROR')))), $container);
- $this->assertTrue($container->hasDefinition('monolog.logger'));
- $this->assertTrue($container->hasDefinition('monolog.handler.custom'));
- $logger = $container->getDefinition('monolog.logger');
- $this->assertDICDefinitionMethodCallAt(0, $logger, 'pushHandler', array(new Reference('monolog.handler.custom')));
- $handler = $container->getDefinition('monolog.handler.custom');
- $this->assertDICDefinitionClass($handler, '%monolog.handler.stream.class%');
- $this->assertDICConstructorArguments($handler, array('/tmp/symfony.log', \Monolog\Logger::ERROR, true));
- }
- public function testLoadWithSeveralHandlers()
- {
- $container = new ContainerBuilder();
- $loader = new MonologExtension();
- $loader->load(array(array('handlers' => array(
- 'custom' => array('type' => 'stream', 'path' => '/tmp/symfony.log', 'bubble' => true, 'level' => 'ERROR'),
- 'main' => array('type' => 'fingers_crossed', 'action_level' => 'ERROR', 'handler' => 'nested'),
- 'nested' => array('type' => 'stream')
- ))), $container);
- $this->assertTrue($container->hasDefinition('monolog.logger'));
- $this->assertTrue($container->hasDefinition('monolog.handler.custom'));
- $this->assertTrue($container->hasDefinition('monolog.handler.main'));
- $this->assertTrue($container->hasDefinition('monolog.handler.nested'));
- $logger = $container->getDefinition('monolog.logger');
- $this->assertDICDefinitionMethodCallAt(1, $logger, 'pushHandler', array(new Reference('monolog.handler.custom')));
- $this->assertDICDefinitionMethodCallAt(0, $logger, 'pushHandler', array(new Reference('monolog.handler.main')));
- $handler = $container->getDefinition('monolog.handler.custom');
- $this->assertDICDefinitionClass($handler, '%monolog.handler.stream.class%');
- $this->assertDICConstructorArguments($handler, array('/tmp/symfony.log', \Monolog\Logger::ERROR, true));
- $handler = $container->getDefinition('monolog.handler.main');
- $this->assertDICDefinitionClass($handler, '%monolog.handler.fingers_crossed.class%');
- $this->assertDICConstructorArguments($handler, array(new Reference('monolog.handler.nested'), \Monolog\Logger::ERROR, 0, false));
- }
- public function testLoadWithOverwriting()
- {
- $container = new ContainerBuilder();
- $loader = new MonologExtension();
- $loader->load(array(
- array('handlers' => array(
- 'custom' => array('type' => 'stream', 'path' => '/tmp/symfony.log', 'bubble' => true, 'level' => 'ERROR'),
- 'main' => array('type' => 'fingers_crossed', 'action_level' => 'ERROR', 'handler' => 'nested'),
- 'nested' => array('type' => 'stream')
- )),
- array('handlers' => array(
- 'custom' => array('type' => 'stream', 'path' => '/tmp/symfony.log', 'bubble' => true, 'level' => 'WARNING'),
- ))
- ), $container);
- $this->assertTrue($container->hasDefinition('monolog.logger'));
- $this->assertTrue($container->hasDefinition('monolog.handler.custom'));
- $this->assertTrue($container->hasDefinition('monolog.handler.main'));
- $this->assertTrue($container->hasDefinition('monolog.handler.nested'));
- $logger = $container->getDefinition('monolog.logger');
- $this->assertDICDefinitionMethodCallAt(1, $logger, 'pushHandler', array(new Reference('monolog.handler.custom')));
- $this->assertDICDefinitionMethodCallAt(0, $logger, 'pushHandler', array(new Reference('monolog.handler.main')));
- $handler = $container->getDefinition('monolog.handler.custom');
- $this->assertDICDefinitionClass($handler, '%monolog.handler.stream.class%');
- $this->assertDICConstructorArguments($handler, array('/tmp/symfony.log', \Monolog\Logger::WARNING, true));
- $handler = $container->getDefinition('monolog.handler.main');
- $this->assertDICDefinitionClass($handler, '%monolog.handler.fingers_crossed.class%');
- $this->assertDICConstructorArguments($handler, array(new Reference('monolog.handler.nested'), \Monolog\Logger::ERROR, 0, false));
- }
- public function testLoadWithNewAtEnd()
- {
- $container = new ContainerBuilder();
- $loader = new MonologExtension();
- $loader->load(array(
- array('handlers' => array(
- 'custom' => array('type' => 'stream', 'path' => '/tmp/symfony.log', 'bubble' => true, 'level' => 'ERROR'),
- 'main' => array('type' => 'fingers_crossed', 'action_level' => 'ERROR', 'handler' => 'nested'),
- 'nested' => array('type' => 'stream')
- )),
- array('handlers' => array(
- 'custom' => array('type' => 'stream', 'path' => '/tmp/symfony.log', 'bubble' => true, 'level' => 'WARNING'),
- 'new' => array('type' => 'stream', 'path' => '/tmp/monolog.log', 'bubble' => true, 'level' => 'ERROR'),
- ))
- ), $container);
- $this->assertTrue($container->hasDefinition('monolog.logger'));
- $this->assertTrue($container->hasDefinition('monolog.handler.custom'));
- $this->assertTrue($container->hasDefinition('monolog.handler.main'));
- $this->assertTrue($container->hasDefinition('monolog.handler.nested'));
- $this->assertTrue($container->hasDefinition('monolog.handler.new'));
- $logger = $container->getDefinition('monolog.logger');
- $this->assertDICDefinitionMethodCallAt(2, $logger, 'pushHandler', array(new Reference('monolog.handler.new')));
- $this->assertDICDefinitionMethodCallAt(1, $logger, 'pushHandler', array(new Reference('monolog.handler.custom')));
- $this->assertDICDefinitionMethodCallAt(0, $logger, 'pushHandler', array(new Reference('monolog.handler.main')));
- $handler = $container->getDefinition('monolog.handler.new');
- $this->assertDICDefinitionClass($handler, '%monolog.handler.stream.class%');
- $this->assertDICConstructorArguments($handler, array('/tmp/monolog.log', \Monolog\Logger::ERROR, true));
- }
- public function testLoadWithNewAndPriority()
- {
- $container = new ContainerBuilder();
- $loader = new MonologExtension();
- $loader->load(array(
- array('handlers' => array(
- 'custom' => array('type' => 'stream', 'path' => '/tmp/symfony.log', 'bubble' => true, 'level' => 'ERROR'),
- 'main' => array('type' => 'buffer', 'level' => 'INFO', 'handler' => 'nested'),
- 'nested' => array('type' => 'stream')
- )),
- array('handlers' => array(
- 'custom' => array('type' => 'stream', 'path' => '/tmp/symfony.log', 'bubble' => true, 'level' => 'WARNING'),
- 'first' => array('type' => 'rotating_file', 'path' => '/tmp/monolog.log', 'bubble' => true, 'level' => 'ERROR', 'priority' => 3),
- 'last' => array('type' => 'stream', 'path' => '/tmp/last.log', 'bubble' => true, 'level' => 'ERROR', 'priority' => -3),
- ))
- ), $container);
- $this->assertTrue($container->hasDefinition('monolog.logger'));
- $this->assertTrue($container->hasDefinition('monolog.handler.custom'));
- $this->assertTrue($container->hasDefinition('monolog.handler.main'));
- $this->assertTrue($container->hasDefinition('monolog.handler.nested'));
- $this->assertTrue($container->hasDefinition('monolog.handler.first'));
- $this->assertTrue($container->hasDefinition('monolog.handler.last'));
- $logger = $container->getDefinition('monolog.logger');
- $this->assertDICDefinitionMethodCallAt(2, $logger, 'pushHandler', array(new Reference('monolog.handler.last')));
- $this->assertDICDefinitionMethodCallAt(1, $logger, 'pushHandler', array(new Reference('monolog.handler.custom')));
- $this->assertDICDefinitionMethodCallAt(0, $logger, 'pushHandler', array(new Reference('monolog.handler.main')));
- $this->assertDICDefinitionMethodCallAt(2, $logger, 'pushHandler', array(new Reference('monolog.handler.first')));
- $handler = $container->getDefinition('monolog.handler.main');
- $this->assertDICDefinitionClass($handler, '%monolog.handler.buffer.class%');
- $this->assertDICConstructorArguments($handler, array(new Reference('monolog.handler.nested'), 0, \Monolog\Logger::INFO, false));
- $handler = $container->getDefinition('monolog.handler.first');
- $this->assertDICDefinitionClass($handler, '%monolog.handler.rotating_file.class%');
- $this->assertDICConstructorArguments($handler, array('/tmp/monolog.log', 0, \Monolog\Logger::ERROR, true));
- $handler = $container->getDefinition('monolog.handler.last');
- $this->assertDICDefinitionClass($handler, '%monolog.handler.stream.class%');
- $this->assertDICConstructorArguments($handler, array('/tmp/last.log', \Monolog\Logger::ERROR, true));
- }
- /**
- * @expectedException InvalidArgumentException
- */
- public function testExceptionWhenInvalidHandler()
- {
- $container = new ContainerBuilder();
- $loader = new MonologExtension();
- $loader->load(array(array('handlers' => array('main' => array('type' => 'invalid_handler')))), $container);
- }
- /**
- * @expectedException Symfony\Component\Config\Definition\Exception\InvalidConfigurationException
- */
- public function testExceptionWhenUsingFingerscrossedWithoutHandler()
- {
- $container = new ContainerBuilder();
- $loader = new MonologExtension();
- $loader->load(array(array('handlers' => array('main' => array('type' => 'fingers_crossed')))), $container);
- }
- /**
- * @expectedException Symfony\Component\Config\Definition\Exception\InvalidConfigurationException
- */
- public function testExceptionWhenUsingBufferWithoutHandler()
- {
- $container = new ContainerBuilder();
- $loader = new MonologExtension();
- $loader->load(array(array('handlers' => array('main' => array('type' => 'buffer')))), $container);
- }
- /**
- * @expectedException Symfony\Component\Config\Definition\Exception\InvalidConfigurationException
- */
- public function testExceptionWhenUsingServiceWithoutId()
- {
- $container = new ContainerBuilder();
- $loader = new MonologExtension();
- $loader->load(array(array('handlers' => array('main' => array('type' => 'service')))), $container);
- }
- /**
- * @expectedException Symfony\Component\Config\Definition\Exception\InvalidConfigurationException
- */
- public function testExceptionWhenUsingDebugName()
- {
- // logger
- $container = new ContainerBuilder();
- $loader = new MonologExtension();
- $loader->load(array(array('handlers' => array('debug' => array('type' => 'stream')))), $container);
- }
- /**
- * Assertion on the Class of a DIC Service Definition.
- *
- * @param \Symfony\Component\DependencyInjection\Definition $definition
- * @param string $expectedClass
- */
- protected function assertDICDefinitionClass($definition, $expectedClass)
- {
- $this->assertEquals($expectedClass, $definition->getClass(), "Expected Class of the DIC Container Service Definition is wrong.");
- }
- protected function assertDICConstructorArguments($definition, $args)
- {
- $this->assertEquals($args, $definition->getArguments(), "Expected and actual DIC Service constructor arguments of definition '" . $definition->getClass()."' don't match.");
- }
- protected function assertDICDefinitionMethodCallAt($pos, $definition, $methodName, array $params = null)
- {
- $calls = $definition->getMethodCalls();
- if (isset($calls[$pos][0])) {
- $this->assertEquals($methodName, $calls[$pos][0], "Method '".$methodName."' is expected to be called at position $pos.");
- if ($params !== null) {
- $this->assertEquals($params, $calls[$pos][1], "Expected parameters to methods '" . $methodName . "' do not match the actual parameters.");
- }
- }
- }
- }
|