diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 842f42ba..2c8ea965 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -48,11 +48,6 @@ jobs: dependencies: lowest allowed-to-fail: false variant: normal - - php-version: '8.2' - dependencies: highest - allowed-to-fail: false - symfony-require: 4.4.* - variant: symfony/symfony:"4.4.*" - php-version: '8.2' dependencies: highest allowed-to-fail: false diff --git a/composer.json b/composer.json index b8649c84..1c5a96b5 100644 --- a/composer.json +++ b/composer.json @@ -30,17 +30,17 @@ "doctrine/collections": "^1.6 || ^2.0", "doctrine/mongodb-odm": "^2.3", "doctrine/mongodb-odm-bundle": "^4.4", - "doctrine/persistence": "^2.0 || ^3.0", + "doctrine/persistence": "^3.0", "sonata-project/admin-bundle": "^4.18", "sonata-project/exporter": "^2.0 || ^3.0", "sonata-project/form-extensions": "^1.7.1", - "symfony/config": "^4.4 || ^5.4 || ^6.2", - "symfony/dependency-injection": "^4.4 || ^5.4 || ^6.2", - "symfony/doctrine-bridge": "^4.4.22 || ^5.4 || ^6.2", - "symfony/form": "^4.4 || ^5.4 || ^6.2", - "symfony/http-kernel": "^4.4 || ^5.4 || ^6.2", - "symfony/property-access": "^4.4 || ^5.4 || ^6.2", - "twig/twig": "^2.6 || ^3.0" + "symfony/config": "^5.4 || ^6.2", + "symfony/dependency-injection": "^5.4 || ^6.2", + "symfony/doctrine-bridge": "^5.4 || ^6.2", + "symfony/form": "^5.4 || ^6.2", + "symfony/http-kernel": "^5.4 || ^6.2", + "symfony/property-access": "^5.4 || ^6.2", + "twig/twig": "^3.0" }, "require-dev": { "doctrine/data-fixtures": "^1.4", @@ -54,14 +54,14 @@ "phpstan/phpstan-symfony": "^1.0", "phpunit/phpunit": "^9.6", "psalm/plugin-phpunit": "^0.18", - "psalm/plugin-symfony": "^4.0 || ^5.0", + "psalm/plugin-symfony": "^5.0", "rector/rector": "^0.15", "sonata-project/block-bundle": "^4.2", - "symfony/browser-kit": "^4.4 || ^5.4 || ^6.2", - "symfony/css-selector": "^4.4 || ^5.4 || ^6.2", - "symfony/panther": "^1.0 || ^2.0", + "symfony/browser-kit": "^5.4 || ^6.2", + "symfony/css-selector": "^5.4 || ^6.2", + "symfony/panther": "^2.0.1", "symfony/phpunit-bridge": "^6.2", - "vimeo/psalm": "^4.30 || ^5.7" + "vimeo/psalm": "^5.7" }, "conflict": { "sonata-project/block-bundle": "<4.2" diff --git a/src/Resources/config/doctrine_mongodb.php b/src/Resources/config/doctrine_mongodb.php index 7630be4a..5f8714d6 100644 --- a/src/Resources/config/doctrine_mongodb.php +++ b/src/Resources/config/doctrine_mongodb.php @@ -11,6 +11,8 @@ * file that was distributed with this source code. */ +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + use Sonata\AdminBundle\FieldDescription\TypeGuesserChain; use Sonata\DoctrineMongoDBAdminBundle\Builder\DatagridBuilder; use Sonata\DoctrineMongoDBAdminBundle\Builder\FormContractor; @@ -21,8 +23,6 @@ use Sonata\DoctrineMongoDBAdminBundle\FieldDescription\FilterTypeGuesser; use Sonata\DoctrineMongoDBAdminBundle\FieldDescription\TypeGuesser; use Sonata\DoctrineMongoDBAdminBundle\Model\ModelManager; -use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; -use Symfony\Component\DependencyInjection\Loader\Configurator\ReferenceConfigurator; return static function (ContainerConfigurator $containerConfigurator): void { // Use "service" function for creating references to services when dropping support for Symfony 4.4 @@ -32,20 +32,20 @@ ->set('sonata.admin.manager.doctrine_mongodb', ModelManager::class) ->tag('sonata.admin.manager') ->args([ - new ReferenceConfigurator('doctrine_mongodb'), - new ReferenceConfigurator('property_accessor'), + service('doctrine_mongodb'), + service('property_accessor'), ]) ->set('sonata.admin.builder.doctrine_mongodb_form', FormContractor::class) ->args([ - new ReferenceConfigurator('form.factory'), - new ReferenceConfigurator('form.registry'), + service('form.factory'), + service('form.registry'), ]) ->set('sonata.admin.builder.doctrine_mongodb_list', ListBuilder::class) ->args([ - new ReferenceConfigurator('sonata.admin.guesser.doctrine_mongodb_list_chain'), - [], + service('sonata.admin.guesser.doctrine_mongodb_list_chain'), + abstract_arg('templates'), ]) ->set('sonata.admin.guesser.doctrine_mongodb_list', TypeGuesser::class) @@ -54,14 +54,14 @@ ->set('sonata.admin.guesser.doctrine_mongodb_list_chain', TypeGuesserChain::class) ->args([ [ - new ReferenceConfigurator('sonata.admin.guesser.doctrine_mongodb_list'), + service('sonata.admin.guesser.doctrine_mongodb_list'), ], ]) ->set('sonata.admin.builder.doctrine_mongodb_show', ShowBuilder::class) ->args([ - new ReferenceConfigurator('sonata.admin.guesser.doctrine_mongodb_show_chain'), - [], + service('sonata.admin.guesser.doctrine_mongodb_show_chain'), + abstract_arg('templates'), ]) ->set('sonata.admin.guesser.doctrine_mongodb_show', TypeGuesser::class) @@ -70,16 +70,16 @@ ->set('sonata.admin.guesser.doctrine_mongodb_show_chain', TypeGuesserChain::class) ->args([ [ - new ReferenceConfigurator('sonata.admin.guesser.doctrine_mongodb_list'), + service('sonata.admin.guesser.doctrine_mongodb_list'), ], ]) ->set('sonata.admin.builder.doctrine_mongodb_datagrid', DatagridBuilder::class) ->args([ - new ReferenceConfigurator('form.factory'), - new ReferenceConfigurator('sonata.admin.builder.filter.factory'), - new ReferenceConfigurator('sonata.admin.guesser.doctrine_mongodb_datagrid_chain'), - '%form.type_extension.csrf.enabled%', + service('form.factory'), + service('sonata.admin.builder.filter.factory'), + service('sonata.admin.guesser.doctrine_mongodb_datagrid_chain'), + param('form.type_extension.csrf.enabled'), ]) ->set('sonata.admin.guesser.doctrine_mongodb_datagrid', FilterTypeGuesser::class) @@ -88,7 +88,7 @@ ->set('sonata.admin.guesser.doctrine_mongodb_datagrid_chain', TypeGuesserChain::class) ->args([ [ - new ReferenceConfigurator('sonata.admin.guesser.doctrine_mongodb_datagrid'), + service('sonata.admin.guesser.doctrine_mongodb_datagrid'), ], ]) @@ -96,6 +96,6 @@ ->set('sonata.admin.field_description_factory.doctrine_mongodb', FieldDescriptionFactory::class) ->args([ - new ReferenceConfigurator('doctrine_mongodb'), + service('doctrine_mongodb'), ]); }; diff --git a/src/Resources/config/doctrine_mongodb_filter_types.php b/src/Resources/config/doctrine_mongodb_filter_types.php index e6e1ee25..03ac8d17 100644 --- a/src/Resources/config/doctrine_mongodb_filter_types.php +++ b/src/Resources/config/doctrine_mongodb_filter_types.php @@ -11,6 +11,8 @@ * file that was distributed with this source code. */ +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + use Sonata\DoctrineMongoDBAdminBundle\Filter\BooleanFilter; use Sonata\DoctrineMongoDBAdminBundle\Filter\CallbackFilter; use Sonata\DoctrineMongoDBAdminBundle\Filter\ChoiceFilter; @@ -22,10 +24,8 @@ use Sonata\DoctrineMongoDBAdminBundle\Filter\ModelFilter; use Sonata\DoctrineMongoDBAdminBundle\Filter\NumberFilter; use Sonata\DoctrineMongoDBAdminBundle\Filter\StringFilter; -use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; return static function (ContainerConfigurator $containerConfigurator): void { - // Use "service" function for creating references to services when dropping support for Symfony 4.4 $containerConfigurator->services() ->set('sonata.admin.odm.filter.type.boolean', BooleanFilter::class) diff --git a/src/Resources/config/security.php b/src/Resources/config/security.php index 78b4e374..70bf86f6 100644 --- a/src/Resources/config/security.php +++ b/src/Resources/config/security.php @@ -11,16 +11,15 @@ * file that was distributed with this source code. */ +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + use Sonata\DoctrineMongoDBAdminBundle\Util\ObjectAclManipulator; -use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; -use Symfony\Component\DependencyInjection\Loader\Configurator\ReferenceConfigurator; return static function (ContainerConfigurator $containerConfigurator): void { - // Use "service" function for creating references to services when dropping support for Symfony 4.4 $containerConfigurator->services() ->set('sonata.admin.manipulator.acl.object.doctrine_mongodb', ObjectAclManipulator::class) ->args([ - new ReferenceConfigurator('doctrine_mongodb'), + service('doctrine_mongodb'), ]); }; diff --git a/tests/App/AppKernel.php b/tests/App/AppKernel.php index fb00fa53..9b6a3992 100644 --- a/tests/App/AppKernel.php +++ b/tests/App/AppKernel.php @@ -24,13 +24,13 @@ use Sonata\Twig\Bridge\Symfony\SonataTwigBundle; use Symfony\Bundle\FrameworkBundle\FrameworkBundle; use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait; -use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\AuthenticatorFactoryInterface; use Symfony\Bundle\SecurityBundle\SecurityBundle; use Symfony\Bundle\TwigBundle\TwigBundle; use Symfony\Component\Config\Loader\LoaderInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\HttpKernel\Kernel; use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator; +use Symfony\Component\Security\Http\Attribute\IsGranted; final class AppKernel extends Kernel { @@ -68,12 +68,7 @@ public function getProjectDir(): string return __DIR__; } - /** - * TODO: Add typehint when dropping support of symfony < 5.1. - * - * @param RoutingConfigurator $routes - */ - protected function configureRoutes($routes): void + protected function configureRoutes(RoutingConfigurator $routes): void { $routes->import(sprintf('%s/config/routes.yaml', $this->getProjectDir())); } @@ -83,12 +78,10 @@ protected function configureRoutes($routes): void */ protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void { - if (interface_exists(AuthenticatorFactoryInterface::class)) { - $loader->load(__DIR__.'/config/config_v5.yml'); - $loader->load(__DIR__.'/config/security_v5.yml'); - } else { - $loader->load(__DIR__.'/config/config_v4.yml'); - $loader->load(__DIR__.'/config/security_v4.yml'); + $loader->load(__DIR__.'/config/config.yaml'); + + if (!class_exists(IsGranted::class)) { + $loader->load(__DIR__.'/config/config_symfony_v5.yaml'); } if (class_exists(HttpCacheHandler::class)) { diff --git a/tests/App/config/config_v5.yml b/tests/App/config/config.yaml similarity index 87% rename from tests/App/config/config_v5.yml rename to tests/App/config/config.yaml index 73a3e5ff..cfaed472 100644 --- a/tests/App/config/config_v5.yml +++ b/tests/App/config/config.yaml @@ -14,6 +14,14 @@ framework: router: utf8: true +security: + providers: + in_memory: + memory: null + firewalls: + main: + lazy: true + twig: exception_controller: null strict_variables: true diff --git a/tests/App/config/config_symfony_v5.yaml b/tests/App/config/config_symfony_v5.yaml new file mode 100644 index 00000000..f1e0ffdd --- /dev/null +++ b/tests/App/config/config_symfony_v5.yaml @@ -0,0 +1,2 @@ +security: + enable_authenticator_manager: true diff --git a/tests/App/config/config_v4.yml b/tests/App/config/config_v4.yml deleted file mode 100644 index 5f11b0d4..00000000 --- a/tests/App/config/config_v4.yml +++ /dev/null @@ -1,32 +0,0 @@ -framework: - secret: '$3cr37' - assets: - enabled: true - form: - enabled: true - session: - handler_id: session.handler.native_file - storage_id: session.storage.mock_file - name: MOCKSESSID - http_method_override: false - test: true - translator: - enabled: true - -twig: - exception_controller: null - strict_variables: true - -doctrine_mongodb: - connections: - default: - server: "mongodb://localhost:27017" - default_database: test_database - document_managers: - default: - mappings: - SonataMongoDBTest: - type: attribute - dir: "%kernel.project_dir%/Document" - is_bundle: false - prefix: Sonata\DoctrineMongoDBAdminBundle\Tests\App\Document diff --git a/tests/App/config/security_v4.yml b/tests/App/config/security_v4.yml deleted file mode 100644 index c536b002..00000000 --- a/tests/App/config/security_v4.yml +++ /dev/null @@ -1,7 +0,0 @@ -security: - providers: - in_memory: - memory: null - firewalls: - main: - anonymous: true diff --git a/tests/App/config/security_v5.yml b/tests/App/config/security_v5.yml deleted file mode 100644 index 51cd24cb..00000000 --- a/tests/App/config/security_v5.yml +++ /dev/null @@ -1,8 +0,0 @@ -security: - enable_authenticator_manager: true - providers: - in_memory: - memory: null - firewalls: - main: - lazy: true diff --git a/tests/App/config/services.php b/tests/App/config/services.php index ba579e8f..dd561442 100644 --- a/tests/App/config/services.php +++ b/tests/App/config/services.php @@ -11,6 +11,8 @@ * file that was distributed with this source code. */ +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + use Sonata\DoctrineMongoDBAdminBundle\Tests\App\Admin\AddressAdmin; use Sonata\DoctrineMongoDBAdminBundle\Tests\App\Admin\AuthorAdmin; use Sonata\DoctrineMongoDBAdminBundle\Tests\App\Admin\BookAdmin; @@ -21,14 +23,13 @@ use Sonata\DoctrineMongoDBAdminBundle\Tests\App\Document\Book; use Sonata\DoctrineMongoDBAdminBundle\Tests\App\Document\Category; use Sonata\DoctrineMongoDBAdminBundle\Tests\App\Document\PhoneNumber; -use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; return static function (ContainerConfigurator $containerConfigurator): void { $containerConfigurator->services() ->defaults() ->autowire() ->autoconfigure() - ->load('Sonata\\DoctrineMongoDBAdminBundle\\Tests\\App\\DataFixtures\\', dirname(__DIR__).'/DataFixtures') + ->load('Sonata\\DoctrineMongoDBAdminBundle\\Tests\\App\\DataFixtures\\', \dirname(__DIR__).'/DataFixtures') ->set(CategoryAdmin::class) ->tag('sonata.admin', [