From edaae67a6849b0284e998f156944b1c9008d15eb Mon Sep 17 00:00:00 2001 From: marekrzytki Date: Fri, 18 Feb 2022 13:35:07 +0100 Subject: [PATCH 1/5] Add support for Sylius 1.11 --- composer.json | 5 +- tests/Application/.env | 8 + tests/Application/Kernel.php | 2 +- .../Application/config/api_platform/.gitkeep | 0 .../config/sylius/1.11/bundles.php | 7 + .../sylius/1.11/packages/jms_serializer.yaml | 4 + .../config/sylius/1.11/packages/security.yaml | 148 ++++++++++++++++++ 7 files changed, 171 insertions(+), 3 deletions(-) create mode 100644 tests/Application/config/api_platform/.gitkeep create mode 100644 tests/Application/config/sylius/1.11/bundles.php create mode 100644 tests/Application/config/sylius/1.11/packages/jms_serializer.yaml create mode 100644 tests/Application/config/sylius/1.11/packages/security.yaml diff --git a/composer.json b/composer.json index 6211704..789f57f 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,7 @@ "license": "MIT", "require": { "php": "^7.4 || ^8.0", - "sylius/sylius": "~1.9.0 || ~1.10.0" + "sylius/sylius": "~1.9.0 || ~1.10.0 || ~1.11.0" }, "require-dev": { "behat/behat": "^3.6.1", @@ -36,7 +36,8 @@ "symfony/debug-bundle": "^4.4 || ^5.2", "symfony/dotenv": "^4.4 || ^5.2", "symfony/intl": "^4.4", - "symfony/web-profiler-bundle": "^4.4 || ^5.2" + "symfony/web-profiler-bundle": "^4.4 || ^5.2", + "polishsymfonycommunity/symfony-mocker-container": "^1.0" }, "prefer-stable": true, "autoload": { diff --git a/tests/Application/.env b/tests/Application/.env index 12ce7e0..6a3585f 100755 --- a/tests/Application/.env +++ b/tests/Application/.env @@ -21,6 +21,14 @@ JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem JWT_PASSPHRASE=acme_plugin_development ###< lexik/jwt-authentication-bundle ### +###> symfony/messenger ### +# Choose one of the transports below +# MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages +#MESSENGER_TRANSPORT_DSN=doctrine://default +# MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages +MESSENGER_TRANSPORT_DSN=sync:// +###< symfony/messenger ### + ###> symfony/swiftmailer-bundle ### # For Gmail as a transport, use: "gmail://username:password@localhost" # For a generic SMTP server, use: "smtp://localhost:25?encryption=&auth_mode=" diff --git a/tests/Application/Kernel.php b/tests/Application/Kernel.php index 74a6879..773d1d8 100644 --- a/tests/Application/Kernel.php +++ b/tests/Application/Kernel.php @@ -67,7 +67,7 @@ protected function configureRoutes(RouteCollectionBuilder $routes): void protected function getContainerBaseClass(): string { - if ($this->isTestEnvironment()) { + if ($this->isTestEnvironment() && class_exists(MockerContainer::class)) { return MockerContainer::class; } diff --git a/tests/Application/config/api_platform/.gitkeep b/tests/Application/config/api_platform/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/Application/config/sylius/1.11/bundles.php b/tests/Application/config/sylius/1.11/bundles.php new file mode 100644 index 0000000..ce7c123 --- /dev/null +++ b/tests/Application/config/sylius/1.11/bundles.php @@ -0,0 +1,7 @@ + ['all' => true], + SyliusLabs\Polyfill\Symfony\Security\Bundle\SyliusLabsPolyfillSymfonySecurityBundle::class => ['all' => true], + Sylius\Calendar\SyliusCalendarBundle::class => ['all' => true], +]; diff --git a/tests/Application/config/sylius/1.11/packages/jms_serializer.yaml b/tests/Application/config/sylius/1.11/packages/jms_serializer.yaml new file mode 100644 index 0000000..ed7bc61 --- /dev/null +++ b/tests/Application/config/sylius/1.11/packages/jms_serializer.yaml @@ -0,0 +1,4 @@ +jms_serializer: + visitors: + xml_serialization: + format_output: '%kernel.debug%' diff --git a/tests/Application/config/sylius/1.11/packages/security.yaml b/tests/Application/config/sylius/1.11/packages/security.yaml new file mode 100644 index 0000000..1062810 --- /dev/null +++ b/tests/Application/config/sylius/1.11/packages/security.yaml @@ -0,0 +1,148 @@ +parameters: + sylius.security.admin_regex: "^/%sylius_admin.path_name%" + sylius.security.api_regex: "^/api" + sylius.security.shop_regex: "^/(?!%sylius_admin.path_name%|new-api|api/.*|api$|media/.*)[^/]++" + sylius.security.new_api_route: "/new-api" + sylius.security.new_api_regex: "^%sylius.security.new_api_route%" + sylius.security.new_api_admin_route: "%sylius.security.new_api_route%/admin" + sylius.security.new_api_admin_regex: "^%sylius.security.new_api_admin_route%" + sylius.security.new_api_shop_route: "%sylius.security.new_api_route%/shop" + sylius.security.new_api_shop_regex: "^%sylius.security.new_api_shop_route%" + +security: + always_authenticate_before_granting: true + providers: + sylius_admin_user_provider: + id: sylius.admin_user_provider.email_or_name_based + sylius_api_admin_user_provider: + id: sylius.admin_user_provider.email_or_name_based + sylius_shop_user_provider: + id: sylius.shop_user_provider.email_or_name_based + sylius_api_shop_user_provider: + id: sylius.shop_user_provider.email_or_name_based + sylius_api_chain_provider: + chain: + providers: [sylius_api_shop_user_provider, sylius_api_admin_user_provider] + + encoders: + Sylius\Component\User\Model\UserInterface: argon2i + firewalls: + admin: + switch_user: true + context: admin + pattern: "%sylius.security.admin_regex%" + provider: sylius_admin_user_provider + form_login: + provider: sylius_admin_user_provider + login_path: sylius_admin_login + check_path: sylius_admin_login_check + failure_path: sylius_admin_login + default_target_path: sylius_admin_dashboard + use_forward: false + use_referer: true + csrf_token_generator: security.csrf.token_manager + csrf_parameter: _csrf_admin_security_token + csrf_token_id: admin_authenticate + remember_me: + secret: "%env(APP_SECRET)%" + path: "/%sylius_admin.path_name%" + name: APP_ADMIN_REMEMBER_ME + lifetime: 31536000 + remember_me_parameter: _remember_me + logout: + path: sylius_admin_logout + target: sylius_admin_login + anonymous: true + + new_api_admin_user: + pattern: "%sylius.security.new_api_route%/admin-user-authentication-token" + provider: sylius_admin_user_provider + stateless: true + anonymous: true + json_login: + check_path: "%sylius.security.new_api_route%/admin-user-authentication-token" + username_path: email + password_path: password + success_handler: lexik_jwt_authentication.handler.authentication_success + failure_handler: lexik_jwt_authentication.handler.authentication_failure + guard: + authenticators: + - lexik_jwt_authentication.jwt_token_authenticator + + new_api_shop_user: + pattern: "%sylius.security.new_api_route%/shop-user-authentication-token" + provider: sylius_shop_user_provider + stateless: true + anonymous: true + json_login: + check_path: "%sylius.security.new_api_route%/shop-user-authentication-token" + username_path: email + password_path: password + success_handler: lexik_jwt_authentication.handler.authentication_success + failure_handler: lexik_jwt_authentication.handler.authentication_failure + guard: + authenticators: + - lexik_jwt_authentication.jwt_token_authenticator + + new_api: + pattern: "%sylius.security.new_api_regex%/*" + provider: sylius_api_chain_provider + stateless: true + anonymous: lazy + guard: + authenticators: + - lexik_jwt_authentication.jwt_token_authenticator + + shop: + switch_user: { role: ROLE_ALLOWED_TO_SWITCH } + context: shop + pattern: "%sylius.security.shop_regex%" + provider: sylius_shop_user_provider + form_login: + success_handler: sylius.authentication.success_handler + failure_handler: sylius.authentication.failure_handler + provider: sylius_shop_user_provider + login_path: sylius_shop_login + check_path: sylius_shop_login_check + failure_path: sylius_shop_login + default_target_path: sylius_shop_homepage + use_forward: false + use_referer: true + csrf_token_generator: security.csrf.token_manager + csrf_parameter: _csrf_shop_security_token + csrf_token_id: shop_authenticate + remember_me: + secret: "%env(APP_SECRET)%" + name: APP_SHOP_REMEMBER_ME + lifetime: 31536000 + remember_me_parameter: _remember_me + logout: + path: sylius_shop_logout + target: sylius_shop_login + invalidate_session: false + success_handler: sylius.handler.shop_user_logout + anonymous: true + + dev: + pattern: ^/(_(profiler|wdt)|css|images|js)/ + security: false + + access_control: + - { path: "%sylius.security.admin_regex%/_partial", role: IS_AUTHENTICATED_ANONYMOUSLY, ips: [127.0.0.1, ::1] } + - { path: "%sylius.security.admin_regex%/_partial", role: ROLE_NO_ACCESS } + - { path: "%sylius.security.shop_regex%/_partial", role: IS_AUTHENTICATED_ANONYMOUSLY, ips: [127.0.0.1, ::1] } + - { path: "%sylius.security.shop_regex%/_partial", role: ROLE_NO_ACCESS } + + - { path: "%sylius.security.admin_regex%/login", role: IS_AUTHENTICATED_ANONYMOUSLY } + - { path: "%sylius.security.api_regex%/login", role: IS_AUTHENTICATED_ANONYMOUSLY } + - { path: "%sylius.security.shop_regex%/login", role: IS_AUTHENTICATED_ANONYMOUSLY } + + - { path: "%sylius.security.shop_regex%/register", role: IS_AUTHENTICATED_ANONYMOUSLY } + - { path: "%sylius.security.shop_regex%/verify", role: IS_AUTHENTICATED_ANONYMOUSLY } + + - { path: "%sylius.security.admin_regex%", role: ROLE_ADMINISTRATION_ACCESS } + - { path: "%sylius.security.api_regex%/.*", role: ROLE_API_ACCESS } + - { path: "%sylius.security.shop_regex%/account", role: ROLE_USER } + + - { path: "%sylius.security.new_api_admin_regex%/.*", role: ROLE_API_ACCESS } + - { path: "%sylius.security.new_api_shop_regex%/.*", role: IS_AUTHENTICATED_ANONYMOUSLY } From ef55234ee732dda26225521e1f2a878e6c4a39a1 Mon Sep 17 00:00:00 2001 From: marekrzytki Date: Fri, 18 Feb 2022 13:35:25 +0100 Subject: [PATCH 2/5] Update build --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 145d6e9..4c5d1ab 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,7 @@ jobs: matrix: php: ["8.0", "7.4"] symfony: ["^4.4", "^5.2"] - sylius: ["~1.9.0", "~1.10.0"] + sylius: ["~1.9.0", "~1.10.0", "~1.11.0"] node: ["10.x"] mysql: ["8.0"] From c5eba0d194c87f4bc432259bbbf164abbcc3ddc8 Mon Sep 17 00:00:00 2001 From: marekrzytki Date: Fri, 18 Feb 2022 15:40:22 +0100 Subject: [PATCH 3/5] Add missing exclude to build --- .github/workflows/build.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4c5d1ab..cb1d4f3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,6 +31,12 @@ jobs: - sylius: "~1.9.0" php: "8.0" + - sylius: ~1.10.0 + symfony: 4.4 + + - sylius: ~1.11.0 + php: 7.4 + env: APP_ENV: test DATABASE_URL: "mysql://root:root@127.0.0.1/sylius?serverVersion=${{ matrix.mysql }}" From a2b8912bbdb80b38cc8c6b9809bef93468bf1cc5 Mon Sep 17 00:00:00 2001 From: Marek Rzytki <61479357+marekrzytki@users.noreply.github.com> Date: Mon, 28 Feb 2022 11:05:33 +0100 Subject: [PATCH 4/5] Add missing space in env file --- tests/Application/.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Application/.env b/tests/Application/.env index 6a3585f..c62480c 100755 --- a/tests/Application/.env +++ b/tests/Application/.env @@ -24,7 +24,7 @@ JWT_PASSPHRASE=acme_plugin_development ###> symfony/messenger ### # Choose one of the transports below # MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages -#MESSENGER_TRANSPORT_DSN=doctrine://default +# MESSENGER_TRANSPORT_DSN=doctrine://default # MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages MESSENGER_TRANSPORT_DSN=sync:// ###< symfony/messenger ### From d820ea4bc3e7b15823322aafea259c1cb39a189b Mon Sep 17 00:00:00 2001 From: marekrzytki Date: Mon, 28 Feb 2022 11:12:14 +0100 Subject: [PATCH 5/5] Try to fix build issue with node version --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cb1d4f3..aac7745 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,12 +24,12 @@ jobs: php: ["8.0", "7.4"] symfony: ["^4.4", "^5.2"] sylius: ["~1.9.0", "~1.10.0", "~1.11.0"] - node: ["10.x"] + node: ["12.x"] mysql: ["8.0"] exclude: - - sylius: "~1.9.0" - php: "8.0" + - sylius: ~1.9.0 + php: 8.0 - sylius: ~1.10.0 symfony: 4.4