diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php index f2ec540f..87be818b 100644 --- a/src/DependencyInjection/Configuration.php +++ b/src/DependencyInjection/Configuration.php @@ -127,6 +127,18 @@ public function getConfigTreeBuilder() ->arrayNode('skip_capture') ->prototype('scalar')->end() ->defaultValue([HttpExceptionInterface::class]) + ->validate() + ->ifTrue(function (array $classes) { + foreach ($classes as $class) { + if (! class_exists($class)) { + return true; + } + } + + return false; + }) + ->thenInvalid('Unknown classes passed to skip_capture') + ->end() ->end() ->arrayNode('listener_priorities') ->addDefaultsIfNotSet() diff --git a/test/DependencyInjection/SentryExtensionTest.php b/test/DependencyInjection/SentryExtensionTest.php index f74143ad..b64eb392 100644 --- a/test/DependencyInjection/SentryExtensionTest.php +++ b/test/DependencyInjection/SentryExtensionTest.php @@ -201,19 +201,31 @@ public function test_that_it_uses_exception_listener_value() ); } + public function test_skip_capture_classes_exist() + { + $this->expectException(InvalidConfigurationException::class); + + $this->getContainer( + [ + 'skip_capture' => [ + 'ThisClassDoesNotExist', + ], + ] + ); + } + public function test_that_it_uses_skipped_capture_value() { $container = $this->getContainer( [ 'skip_capture' => [ - 'classA', - 'classB', + self::class, ], ] ); $this->assertSame( - ['classA', 'classB'], + [self::class], $container->getParameter('sentry.skip_capture') ); }