From 95a97de860ecce618c84abcc986fa0e3c86e1f6e Mon Sep 17 00:00:00 2001 From: Maksim Kotlyar Date: Tue, 3 Apr 2018 20:37:45 +0300 Subject: [PATCH 1/2] The authorize form should be used only if authorize option true. --- .../FOSOAuthServerExtension.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/DependencyInjection/FOSOAuthServerExtension.php b/DependencyInjection/FOSOAuthServerExtension.php index 602de0aa..f46396e1 100644 --- a/DependencyInjection/FOSOAuthServerExtension.php +++ b/DependencyInjection/FOSOAuthServerExtension.php @@ -90,16 +90,16 @@ public function load(array $configs, ContainerBuilder $container) if (!empty($config['authorize'])) { $this->loadAuthorize($config['authorize'], $container, $loader); - } - // Authorize form factory definition - // TODO: Go back to xml configuration when bumping the requirement to Symfony >=2.6 - $authorizeFormDefinition = $container->getDefinition('fos_oauth_server.authorize.form'); - if (method_exists($authorizeFormDefinition, 'setFactory')) { - $authorizeFormDefinition->setFactory(array(new Reference('form.factory'), 'createNamed')); - } else { - $authorizeFormDefinition->setFactoryService('form.factory'); - $authorizeFormDefinition->setFactoryMethod('createNamed'); + // Authorize form factory definition + // TODO: Go back to xml configuration when bumping the requirement to Symfony >=2.6 + $authorizeFormDefinition = $container->getDefinition('fos_oauth_server.authorize.form'); + if (method_exists($authorizeFormDefinition, 'setFactory')) { + $authorizeFormDefinition->setFactory(array(new Reference('form.factory'), 'createNamed')); + } else { + $authorizeFormDefinition->setFactoryService('form.factory'); + $authorizeFormDefinition->setFactoryMethod('createNamed'); + } } } From 8286c527dfc6cf890aacfe0917ee0172c342752c Mon Sep 17 00:00:00 2001 From: Maksim Kotlyar Date: Wed, 4 Apr 2018 17:47:22 +0300 Subject: [PATCH 2/2] add tests. --- .../FOSOAuthServerExtensionTest.php | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/Tests/DependencyInjection/FOSOAuthServerExtensionTest.php b/Tests/DependencyInjection/FOSOAuthServerExtensionTest.php index b0b8f7b1..e9852ed4 100644 --- a/Tests/DependencyInjection/FOSOAuthServerExtensionTest.php +++ b/Tests/DependencyInjection/FOSOAuthServerExtensionTest.php @@ -11,11 +11,66 @@ namespace DependencyInjection; +use FOS\OAuthServerBundle\DependencyInjection\FOSOAuthServerExtension; use Symfony\Component\Config\FileLocator; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Extension\Extension; use Symfony\Component\Routing\Loader\XmlFileLoader; class FOSOAuthServerExtensionTest extends \PHPUnit_Framework_TestCase { + public function testShouldImplementConfigurationInterface() + { + $rc = new \ReflectionClass(FOSOAuthServerExtension::class); + + $this->assertTrue($rc->isSubclassOf(Extension::class)); + } + + public function testCouldBeConstructedWithoutAnyArguments() + { + new FOSOAuthServerExtension(); + } + + public function testShouldLoadAuthorizeRelatedServicesIfAuthorizationIsEnabled() + { + $container = new ContainerBuilder(); + + $extension = new FOSOAuthServerExtension(); + $extension->load([[ + 'db_driver' => 'orm', + 'client_class' => 'aClientClass', + 'access_token_class' => 'anAccessTokenClass', + 'refresh_token_class' => 'aRefreshTokenClass', + 'auth_code_class' => 'anAuthCodeClass', + 'authorize' => true, + ]], $container); + + $this->assertTrue($container->hasDefinition('fos_oauth_server.authorize.form')); + $this->assertTrue($container->hasDefinition('fos_oauth_server.authorize.form.type')); + $this->assertTrue($container->hasDefinition('fos_oauth_server.authorize.form.handler.default')); + $this->assertTrue($container->hasDefinition('fos_oauth_server.controller.authorize')); + } + + public function testShouldNotLoadAuthorizeRelatedServicesIfAuthorizationIsDisabled() + { + $container = new ContainerBuilder(); + + $extension = new FOSOAuthServerExtension(); + $extension->load([[ + 'db_driver' => 'orm', + 'client_class' => 'aClientClass', + 'access_token_class' => 'anAccessTokenClass', + 'refresh_token_class' => 'aRefreshTokenClass', + 'auth_code_class' => 'anAuthCodeClass', + 'authorize' => false, + ]], $container); + + $this->assertFalse($container->hasDefinition('fos_oauth_server.authorize.form')); + $this->assertFalse($container->hasDefinition('fos_oauth_server.authorize.form.type')); + $this->assertFalse($container->hasDefinition('fos_oauth_server.authorize.form.handler.default')); + $this->assertFalse($container->hasDefinition('fos_oauth_server.controller.authorize')); + } + public function testLoadAuthorizeRouting() { $locator = new FileLocator();