diff --git a/.travis.yml b/.travis.yml index acaf364..4e46fce 100755 --- a/.travis.yml +++ b/.travis.yml @@ -31,6 +31,7 @@ matrix: before_install: - composer self-update + - composer clear-cache - composer require -n --prefer-dist "symfony/symfony:${SYMFONY_VERSION}" script: diff --git a/Factories/RollbarHandlerFactory.php b/Factories/RollbarHandlerFactory.php index b31c548..cbbf20a 100755 --- a/Factories/RollbarHandlerFactory.php +++ b/Factories/RollbarHandlerFactory.php @@ -15,6 +15,11 @@ */ class RollbarHandlerFactory { + /** + * @var string|null + */ + private $minimumLevel; + /** * RollbarHandlerFactory constructor. * @@ -30,25 +35,28 @@ public function __construct(ContainerInterface $container) if (!empty($config['person_fn']) && is_callable($config['person_fn'])) { $config['person'] = null; - } else { - if (empty($config['person'])) { - $config['person_fn'] = function () use ($container) { - try { - $token = $container->get('security.token_storage')->getToken(); + } elseif (empty($config['person'])) { + $config['person_fn'] = function () use ($container) { - if ($token) { - $user = $token->getUser(); - $serializer = $container->get('serializer'); - $person = \json_decode($serializer->serialize($user, 'json'), true); - return $person; - } - } catch (\Exception $exception) { - // Ignore + try { + $token = $container->get('security.token_storage')->getToken(); + + if ($token) { + $user = $token->getUser(); + $serializer = $container->get('serializer'); + + return \json_decode($serializer->serialize($user, 'json'), true); } - }; - } + } catch (\Exception $exception) { + // Ignore + } + }; } + $this->minimumLevel = isset($config['minimum_level']) + ? $config['minimum_level'] + : \Rollbar\Defaults::get()->minimumLevel(); + Rollbar::init($config, false, false, false); } @@ -59,6 +67,6 @@ public function __construct(ContainerInterface $container) */ public function createRollbarHandler() { - return new RollbarHandler(Rollbar::logger(), LogLevel::ERROR); + return new RollbarHandler(Rollbar::logger(), $this->minimumLevel); } } diff --git a/Tests/Factories/RollbarHandlerFactoryTest.php b/Tests/Factories/RollbarHandlerFactoryTest.php new file mode 100755 index 0000000..462f972 --- /dev/null +++ b/Tests/Factories/RollbarHandlerFactoryTest.php @@ -0,0 +1,56 @@ +setAccessible(true); + $accessToken = $getAccessTokenMethod->invoke(Rollbar::logger()); + + $mockLogger = $this->getMockBuilder('\Rollbar\RollbarLogger') + ->setConstructorArgs(array(array( + 'access_token' => $accessToken, + 'minimum_level' => LogLevel::ERROR + ))) + ->getMock(); + + $rollbarClass = new \ReflectionClass('\Rollbar\Rollbar'); + $setLoggerMethod = $rollbarClass->getMethod('setLogger'); + $setLoggerMethod->setAccessible(true); + $setLoggerMethod->invoke(null, $mockLogger); + + $logger = self::$container->get('test_alias.logger'); + + $mockLogger->expects($this->once()) + ->method('log') + ->with($this->equalTo(Level::ERROR)); + + $logger->log(Level::ERROR, "Test info from the factory test"); + + $logger->log(Level::INFO, "Test debug from the factory test"); + } +} diff --git a/Tests/Fixtures/app/config/config_test.yml b/Tests/Fixtures/app/config/config_test.yml index a445db3..fa20f9e 100755 --- a/Tests/Fixtures/app/config/config_test.yml +++ b/Tests/Fixtures/app/config/config_test.yml @@ -1,9 +1,7 @@ imports: - { resource: config.yml } - { resource: parameters.yml } - -rollbar: - access_token: ~ + - { resource: packages/rollbar.yml } monolog: handlers: @@ -12,7 +10,7 @@ monolog: id: Rollbar\Monolog\Handler\RollbarHandler services: - _defaults: - public: true - test.Rollbar\Symfony\RollbarBundle\Payload\Generator: '@Rollbar\Symfony\RollbarBundle\Payload\Generator' + test_alias.logger: + alias: 'logger' + public: true diff --git a/Tests/Fixtures/app/config/packages/rollbar.yml b/Tests/Fixtures/app/config/packages/rollbar.yml new file mode 100644 index 0000000..293171c --- /dev/null +++ b/Tests/Fixtures/app/config/packages/rollbar.yml @@ -0,0 +1,5 @@ +rollbar: + enabled: true + access_token: ~ # pulled from phpunit.xml + environment: 'rollbar-php-symfony-test-app' + minimum_level: 'info' \ No newline at end of file diff --git a/composer.json b/composer.json index 05c63e1..4915758 100755 --- a/composer.json +++ b/composer.json @@ -29,15 +29,15 @@ "require": { "php": ">=5.6", "rollbar/rollbar": "^1", - "symfony/dependency-injection": "^3.4 | ^4.0", - "symfony/config": "^3.4 | ^4.0", - "symfony/http-kernel": "^3.4 | ^4.0", + "symfony/dependency-injection": "^3.4 | ^4", + "symfony/config": "^3.4 | ^4", + "symfony/http-kernel": "^3.4 | ^4", "symfony/monolog-bundle": "*", "symfony/serializer": "*" }, "require-dev": { "phpunit/phpunit": "^5.7", - "symfony/framework-bundle": "^3.4 | ^4.0", + "symfony/framework-bundle": "^3.4 | ^4", "squizlabs/php_codesniffer": "^2.7", "matthiasnoback/symfony-dependency-injection-test": "^1.1" },