|
18 | 18 | use Symfony\Bundle\MonologBundle\DependencyInjection\Compiler\LoggerChannelPass;
|
19 | 19 | use Symfony\Component\DependencyInjection\ContainerBuilder;
|
20 | 20 | use Symfony\Component\DependencyInjection\Definition;
|
| 21 | +use Symfony\Component\DependencyInjection\ParameterBag\EnvPlaceholderParameterBag; |
21 | 22 | use Symfony\Component\DependencyInjection\Reference;
|
22 | 23 | use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
|
23 | 24 | use Symfony\Component\HttpFoundation\RequestStack;
|
@@ -611,10 +612,94 @@ public function v1AddedDataProvider()
|
611 | 612 | ];
|
612 | 613 | }
|
613 | 614 |
|
| 615 | + public function testLogLevelfromInvalidparameterThrowsException() |
| 616 | + { |
| 617 | + $container = new ContainerBuilder(); |
| 618 | + $loader = new MonologExtension(); |
| 619 | + $config = [['handlers' => ['main' => ['type' => 'stream', 'level' => '%some_param%']]]]; |
614 | 620 |
|
615 |
| - protected function getContainer(array $config = [], array $thirdPartyDefinitions = []) |
| 621 | + $this->expectException(InvalidArgumentException::class); |
| 622 | + $this->expectExceptionMessage('Could not match "%some_param%" to a log level.'); |
| 623 | + |
| 624 | + $loader->load($config, $container); |
| 625 | + } |
| 626 | + |
| 627 | + /** |
| 628 | + * @dataProvider provideLoglevelParameterConfig |
| 629 | + */ |
| 630 | + public function testLogLevelfromParameter(array $parameters, array $config, $expectedClass, array $expectedArgs) |
616 | 631 | {
|
617 | 632 | $container = new ContainerBuilder();
|
| 633 | + foreach ($parameters as $name => $value) { |
| 634 | + $container->setParameter($name, $value); |
| 635 | + } |
| 636 | + $loader = new MonologExtension(); |
| 637 | + $config = [['handlers' => ['main' => $config]]]; |
| 638 | + $loader->load($config, $container); |
| 639 | + |
| 640 | + $definition = $container->getDefinition('monolog.handler.main'); |
| 641 | + $this->assertDICDefinitionClass($definition, $expectedClass); |
| 642 | + $this->assertDICConstructorArguments($definition, $expectedArgs); |
| 643 | + } |
| 644 | + |
| 645 | + public function provideLoglevelParameterConfig() |
| 646 | + { |
| 647 | + return [ |
| 648 | + 'browser console with parameter level' => [ |
| 649 | + ['%log_level%' => 'info'], |
| 650 | + ['type' => 'browser_console', 'level' => '%log_level%'], |
| 651 | + 'Monolog\Handler\BrowserConsoleHandler', |
| 652 | + [200, true] |
| 653 | + ], |
| 654 | + 'browser console with envvar level' => [ |
| 655 | + ['%env(LOG_LEVEL)%' => 'info'], |
| 656 | + ['type' => 'browser_console', 'level' => '%env(LOG_LEVEL)%'], |
| 657 | + 'Monolog\Handler\BrowserConsoleHandler', |
| 658 | + [200, true] |
| 659 | + ], |
| 660 | + 'stream with envvar level null or "~" (in yaml config)' => [ |
| 661 | + ['%env(LOG_LEVEL)%' => null], |
| 662 | + ['type' => 'stream', 'level' => '%env(LOG_LEVEL)%'], |
| 663 | + 'Monolog\Handler\StreamHandler', |
| 664 | + [ |
| 665 | + '%kernel.logs_dir%/%kernel.environment%.log', |
| 666 | + null, |
| 667 | + true, |
| 668 | + null, |
| 669 | + false, |
| 670 | + ] |
| 671 | + ], |
| 672 | + 'stream with envvar level' => [ |
| 673 | + ['%env(LOG_LEVEL)%' => '400'], |
| 674 | + ['type' => 'stream', 'level' => '%env(LOG_LEVEL)%'], |
| 675 | + 'Monolog\Handler\StreamHandler', |
| 676 | + [ |
| 677 | + '%kernel.logs_dir%/%kernel.environment%.log', |
| 678 | + 400, |
| 679 | + true, |
| 680 | + null, |
| 681 | + false, |
| 682 | + ] |
| 683 | + ], |
| 684 | + 'stream with envvar and fallback parameter' => [ |
| 685 | + ['%env(LOG_LEVEL)%' => '500', '%log_level%' => '%env(LOG_LEVEL)%'], |
| 686 | + ['type' => 'stream', 'level' => '%log_level%'], |
| 687 | + 'Monolog\Handler\StreamHandler', |
| 688 | + [ |
| 689 | + '%kernel.logs_dir%/%kernel.environment%.log', |
| 690 | + 500, |
| 691 | + true, |
| 692 | + null, |
| 693 | + false, |
| 694 | + ] |
| 695 | + ], |
| 696 | + ]; |
| 697 | + } |
| 698 | + |
| 699 | + |
| 700 | + protected function getContainer(array $config = [], array $thirdPartyDefinitions = []) |
| 701 | + { |
| 702 | + $container = new ContainerBuilder(new EnvPlaceholderParameterBag()); |
618 | 703 | foreach ($thirdPartyDefinitions as $id => $definition) {
|
619 | 704 | $container->setDefinition($id, $definition);
|
620 | 705 | }
|
|
0 commit comments