From ccc5941aa5d9166afc12b90fc91dcd1b27b2d5ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=A0=20=E6=81=A9=E6=A8=B9?= Date: Tue, 5 Mar 2024 10:16:14 +0900 Subject: [PATCH 01/11] =?UTF-8?q?=E3=83=90=E3=83=AA=E3=83=87=E3=83=BC?= =?UTF-8?q?=E3=82=B7=E3=83=A7=E3=83=B3=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin/Store/OwnerStoreController.php | 45 +++++++++++++++---- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/src/Eccube/Controller/Admin/Store/OwnerStoreController.php b/src/Eccube/Controller/Admin/Store/OwnerStoreController.php index ce4afbce6d1..6ab2bce759e 100644 --- a/src/Eccube/Controller/Admin/Store/OwnerStoreController.php +++ b/src/Eccube/Controller/Admin/Store/OwnerStoreController.php @@ -32,6 +32,8 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\Routing\Annotation\Route; +use Symfony\Component\Validator\Constraints as Assert; +use Symfony\Component\Validator\Validator\ValidatorInterface; /** * @Route("/%eccube_admin_route%/store/plugin/api") @@ -63,6 +65,11 @@ class OwnerStoreController extends AbstractController */ protected $pluginApiService; + /** + * @var ValidatorInterface + */ + protected ValidatorInterface $validator; + private static $vendorName = 'ec-cube'; /** @var BaseInfo */ @@ -81,6 +88,7 @@ class OwnerStoreController extends AbstractController * @param PluginApiService $pluginApiService * @param BaseInfoRepository $baseInfoRepository * @param CacheUtil $cacheUtil + * @param ValidatorInterface $validatorInterface * * @throws \Doctrine\ORM\NoResultException * @throws \Doctrine\ORM\NonUniqueResultException @@ -92,7 +100,8 @@ public function __construct( SystemService $systemService, PluginApiService $pluginApiService, BaseInfoRepository $baseInfoRepository, - CacheUtil $cacheUtil + CacheUtil $cacheUtil, + ValidatorInterface $validatorInterface ) { $this->pluginRepository = $pluginRepository; $this->pluginService = $pluginService; @@ -100,6 +109,7 @@ public function __construct( $this->pluginApiService = $pluginApiService; $this->BaseInfo = $baseInfoRepository->get(); $this->cacheUtil = $cacheUtil; + $this->validator = $validatorInterface; // TODO: Check the flow of the composer service below $this->composerService = $composerService; @@ -263,14 +273,33 @@ public function apiInstall(Request $request) $pluginCode = $request->get('pluginCode'); - $log = null; - try { - $log = $this->composerService->execRequire('ec-cube/'.$pluginCode); + $errors = $this->validator->validate( + $pluginCode, + [ + new Assert\NotBlank(), + new Assert\Regex( + [ + 'pattern' => '/^[a-zA-Z0-9_]+$/', + ] + ), + ] + ); - return $this->json(['success' => true, 'log' => $log]); - } catch (\Exception $e) { - $log = $e->getMessage(); - log_error($e); + $log = null; + if ($errors->count() != 0) { + $log = []; + foreach ($errors as $error) { + $log[] = $error->getMessage(); + } + } else { + try { + $log = $this->composerService->execRequire('ec-cube/'.$pluginCode); + + return $this->json(['success' => true, 'log' => $log]); + } catch (\Exception $e) { + $log = $e->getMessage(); + log_error($e); + } } return $this->json(['success' => false, 'log' => $log], 500); From 6602a586022cbc8f4095c8fa0a4bfbdd7b250f71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=A0=20=E6=81=A9=E6=A8=B9?= Date: Tue, 5 Mar 2024 10:17:01 +0900 Subject: [PATCH 02/11] =?UTF-8?q?=E3=83=90=E3=83=AA=E3=83=87=E3=83=BC?= =?UTF-8?q?=E3=82=B7=E3=83=A7=E3=83=B3=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Web/Admin/Store/PluginControllerTest.php | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/tests/Eccube/Tests/Web/Admin/Store/PluginControllerTest.php b/tests/Eccube/Tests/Web/Admin/Store/PluginControllerTest.php index 4bfdee3a80e..8974ea1a51a 100644 --- a/tests/Eccube/Tests/Web/Admin/Store/PluginControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Store/PluginControllerTest.php @@ -49,4 +49,43 @@ public function testSubmit() $this->actual = $this->entityManager->getRepository(\Eccube\Entity\BaseInfo::class)->get()->getPhpPath(); $this->verify(); } + + /** + * 異常系を確認。正常系のインストールはE2Eテストの方で実施 + * + * @dataProvider OwnerStoreInstallParam + * + */ + public function testFailureInstall($param1, $param2, $message) + { + $form = [ + 'pluginCode' => $param1, + 'version' => $param2, + ]; + + $crawler = $this->client->request('POST', + $this->generateUrl('admin_store_plugin_api_install', $form), + [], + [], + [ + 'HTTP_X-Requested-With' => 'XMLHttpRequest', + 'CONTENT_TYPE' => 'application/json', + ] + ); + // ダウンロードできないことを確認 + $this->assertEquals(500, $this->client->getResponse()->getStatusCode()); + // ログを確認 + $this->assertContains($message, json_decode($this->client->getResponse()->getContent())->log); + } + + /** + * 異常系のテストケース + */ + public function OwnerStoreInstallParam() + { + return [ + ['api+symfony/yaml:5.3', '2.1.3', '有効な値ではありません。'], + ['', '2.1.3','入力されていません。'], + ]; + } } From dad834d65dbc87f5d3c552a54642918107da12ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=A0=20=E6=81=A9=E6=A8=B9?= Date: Tue, 5 Mar 2024 10:26:23 +0900 Subject: [PATCH 03/11] =?UTF-8?q?ubuntu=E3=83=90=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/coverage.yml | 4 ++-- .github/workflows/deny-test.yml | 2 +- .github/workflows/dockerbuild.yml | 2 +- .github/workflows/e2e-bc-test.yml | 2 +- .github/workflows/e2e-test.yml | 2 +- .github/workflows/penetration-test.yml | 2 +- .github/workflows/plugin-test.yml | 8 ++++---- .github/workflows/unit-test.yml | 2 +- .github/workflows/vaddy-1.yml | 2 +- .github/workflows/vaddy-2.yml | 2 +- src/Eccube/Command/PluginGenerateCommand.php | 2 +- 11 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index d2445fbab04..1adda9eebc8 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -19,7 +19,7 @@ jobs: strategy: fail-fast: false matrix: - operating-system: [ ubuntu-18.04 ] + operating-system: [ ubuntu-22.04 ] php: [ 7.4 ] db: [ pgsql ] include: @@ -96,7 +96,7 @@ jobs: strategy: fail-fast: false matrix: - operating-system: [ ubuntu-18.04 ] + operating-system: [ ubuntu-22.04 ] php: [ 7.4 ] db: [ pgsql ] group: [ admin01, admin02, admin03, front, installer ] diff --git a/.github/workflows/deny-test.yml b/.github/workflows/deny-test.yml index 9efba087e88..9b0c46091f4 100644 --- a/.github/workflows/deny-test.yml +++ b/.github/workflows/deny-test.yml @@ -15,7 +15,7 @@ on: jobs: deploy: name: Deny check - runs-on: ubuntu-18.04 + runs-on: ubuntu-22.04 services: postgres: image: postgres:14 diff --git a/.github/workflows/dockerbuild.yml b/.github/workflows/dockerbuild.yml index 2fe7b5dc642..194002d2974 100644 --- a/.github/workflows/dockerbuild.yml +++ b/.github/workflows/dockerbuild.yml @@ -20,7 +20,7 @@ jobs: strategy: fail-fast: false matrix: - operating-system: [ ubuntu-18.04 ] + operating-system: [ ubuntu-22.04 ] php: [ 7.4 ] db: [ pgsql ] group: [ admin01 ] diff --git a/.github/workflows/e2e-bc-test.yml b/.github/workflows/e2e-bc-test.yml index 24a12f574b3..27af71f74da 100644 --- a/.github/workflows/e2e-bc-test.yml +++ b/.github/workflows/e2e-bc-test.yml @@ -20,7 +20,7 @@ jobs: fail-fast: false matrix: version: [ 4.0.0, 4.0.1, 4.0.2, 4.0.3, 4.0.4, 4.0.5 ] - operating-system: [ ubuntu-18.04 ] + operating-system: [ ubuntu-22.04 ] php: [ 7.4 ] db: [ pgsql ] group: [ front ] diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index 6734e94b742..7b095b23936 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -19,7 +19,7 @@ jobs: strategy: fail-fast: false matrix: - operating-system: [ ubuntu-18.04 ] + operating-system: [ ubuntu-22.04 ] php: [ 7.4 ] db: [ pgsql ] group: [ admin01, admin02, admin03, front, installer ] diff --git a/.github/workflows/penetration-test.yml b/.github/workflows/penetration-test.yml index 018d107aef3..68fac6cb6dc 100644 --- a/.github/workflows/penetration-test.yml +++ b/.github/workflows/penetration-test.yml @@ -10,7 +10,7 @@ jobs: strategy: fail-fast: false matrix: - operating-system: [ ubuntu-18.04 ] + operating-system: [ ubuntu-22.04 ] group: - 'test/front_login/contact.test.ts' - 'test/front_guest/contact.test.ts' diff --git a/.github/workflows/plugin-test.yml b/.github/workflows/plugin-test.yml index 3ade906385e..5de4ec9f497 100644 --- a/.github/workflows/plugin-test.yml +++ b/.github/workflows/plugin-test.yml @@ -19,7 +19,7 @@ jobs: strategy: fail-fast: false matrix: - operating-system: [ ubuntu-18.04 ] + operating-system: [ ubuntu-22.04 ] php: [ 7.4 ] db: [ pgsql, mysql ] method: @@ -163,7 +163,7 @@ jobs: strategy: fail-fast: false matrix: - operating-system: [ ubuntu-18.04 ] + operating-system: [ ubuntu-22.04 ] php: [ 7.4 ] db: [ pgsql, mysql ] method: @@ -305,7 +305,7 @@ jobs: strategy: fail-fast: false matrix: - operating-system: [ ubuntu-18.04 ] + operating-system: [ ubuntu-22.04 ] php: [ 7.4 ] db: [ pgsql, mysql ] method: @@ -447,7 +447,7 @@ jobs: strategy: fail-fast: false matrix: - operating-system: [ ubuntu-18.04 ] + operating-system: [ ubuntu-22.04 ] php: [ 7.4 ] db: [ pgsql, mysql ] method: diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 96455004151..1fb665aec8a 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -19,7 +19,7 @@ jobs: strategy: fail-fast: false matrix: - operating-system: [ ubuntu-18.04 ] + operating-system: [ ubuntu-22.04 ] php: [ '7.3', '7.4' ] db: [ mysql, pgsql, sqlite3 ] include: diff --git a/.github/workflows/vaddy-1.yml b/.github/workflows/vaddy-1.yml index ea146bd4dfe..9c90e585b9d 100644 --- a/.github/workflows/vaddy-1.yml +++ b/.github/workflows/vaddy-1.yml @@ -6,7 +6,7 @@ on: jobs: vaddy: name: VAddy - runs-on: ubuntu-18.04 + runs-on: ubuntu-22.04 strategy: matrix: include: diff --git a/.github/workflows/vaddy-2.yml b/.github/workflows/vaddy-2.yml index c8fd1ce4518..e275e7de988 100644 --- a/.github/workflows/vaddy-2.yml +++ b/.github/workflows/vaddy-2.yml @@ -6,7 +6,7 @@ on: jobs: vaddy: name: VAddy - runs-on: ubuntu-18.04 + runs-on: ubuntu-22.04 strategy: matrix: include: diff --git a/src/Eccube/Command/PluginGenerateCommand.php b/src/Eccube/Command/PluginGenerateCommand.php index 8bf720cec55..a24c9a54490 100644 --- a/src/Eccube/Command/PluginGenerateCommand.php +++ b/src/Eccube/Command/PluginGenerateCommand.php @@ -209,7 +209,7 @@ protected function createGithubActions($pluginDir) jobs: deploy: name: Build - runs-on: ubuntu-18.04 + runs-on: ubuntu-22.04 steps: - name: Checkout uses: actions/checkout@v2 From f5001de3550b8c04753266866f4c9d5753e789e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=A0=20=E6=81=A9=E6=A8=B9?= Date: Tue, 5 Mar 2024 15:37:40 +0900 Subject: [PATCH 04/11] =?UTF-8?q?composer=E3=83=90=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/coverage.yml | 6 ++++-- .github/workflows/deny-test.yml | 5 ++++- .github/workflows/deploy.yml | 4 +++- .github/workflows/dockerbuild.yml | 4 +++- .github/workflows/e2e-bc-test.yml | 4 +++- .github/workflows/e2e-test.yml | 4 +++- .github/workflows/phpstan.yml | 4 +++- .github/workflows/plugin-test.yml | 16 ++++++++++++---- .github/workflows/unit-test.yml | 4 +++- 9 files changed, 38 insertions(+), 13 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 1adda9eebc8..6ebe1138dd7 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -58,7 +58,9 @@ jobs: php-version: ${{ matrix.php }} - name: composer install - run: composer install --dev --no-interaction -o --apcu-autoloader + run: | + sudo composer selfupdate 2.6.6 + composer install --dev --no-interaction -o --apcu-autoloader - name: Setup pcov run: | @@ -153,7 +155,7 @@ jobs: - name: composer install run: | - sudo composer selfupdate + sudo composer selfupdate 2.6.6 composer install --dev --no-interaction -o --apcu-autoloader - name: Setup to EC-CUBE env: diff --git a/.github/workflows/deny-test.yml b/.github/workflows/deny-test.yml index 9b0c46091f4..afc3ad6070d 100644 --- a/.github/workflows/deny-test.yml +++ b/.github/workflows/deny-test.yml @@ -47,7 +47,9 @@ jobs: ${{ runner.os }}-composer- - name: Install to Composer - run: composer install --no-scripts --no-dev --no-interaction --optimize-autoloader + run: | + sudo composer selfupdate 2.6.6 + composer install --no-scripts --no-dev --no-interaction --optimize-autoloader - name: Translate to templates run: php bin/template_jp.php @@ -111,6 +113,7 @@ jobs: echo ">>> Started chrome-driver" sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & echo ">>> Started xvfb" + sudo composer selfupdate 2.6.6 composer install --no-scripts --no-interaction --optimize-autoloader echo "modules: enabled: diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index cc642dd9c6b..685891ddfc7 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -37,7 +37,9 @@ jobs: ${{ runner.os }}-composer- - name: Install to Composer - run: composer install --no-scripts --no-dev --no-interaction --optimize-autoloader + run: | + sudo composer selfupdate 2.6.6 + composer install --no-scripts --no-dev --no-interaction --optimize-autoloader - name: Translate to templates run: php bin/template_jp.php diff --git a/.github/workflows/dockerbuild.yml b/.github/workflows/dockerbuild.yml index 194002d2974..b62b212a481 100644 --- a/.github/workflows/dockerbuild.yml +++ b/.github/workflows/dockerbuild.yml @@ -63,7 +63,9 @@ jobs: php-version: ${{ matrix.php }} - name: composer install - run: composer install --dev --no-interaction -o --apcu-autoloader + run: | + sudo composer selfupdate 2.6.6 + composer install --dev --no-interaction -o --apcu-autoloader - name: Setup to EC-CUBE env: APP_ENV: ${{ matrix.app_env }} diff --git a/.github/workflows/e2e-bc-test.yml b/.github/workflows/e2e-bc-test.yml index 27af71f74da..7acf3905b81 100644 --- a/.github/workflows/e2e-bc-test.yml +++ b/.github/workflows/e2e-bc-test.yml @@ -78,7 +78,9 @@ jobs: php-version: ${{ matrix.php }} - name: composer install - run: composer install --dev --no-interaction -o --apcu-autoloader + run: | + sudo composer selfupdate 2.6.6 + composer install --dev --no-interaction -o --apcu-autoloader - name: Setup to EC-CUBE env: APP_ENV: ${{ matrix.app_env }} diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index 7b095b23936..16186428cba 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -75,7 +75,9 @@ jobs: php-version: ${{ matrix.php }} - name: composer install - run: composer install --dev --no-interaction -o --apcu-autoloader + run: | + sudo composer selfupdate 2.6.6 + composer install --dev --no-interaction -o --apcu-autoloader - name: Setup to EC-CUBE env: APP_ENV: ${{ matrix.app_env }} diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index 72f3b87fc5d..11d1c1089d7 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -27,6 +27,8 @@ jobs: with: php-version: '7.4' - name: composer install - run: composer install --dev --no-interaction -o --apcu-autoloader + run: | + sudo composer selfupdate 2.6.6 + composer install --dev --no-interaction -o --apcu-autoloader - name: PHPStan run: vendor/bin/phpstan analyze src/ --error-format=github diff --git a/.github/workflows/plugin-test.yml b/.github/workflows/plugin-test.yml index 5de4ec9f497..5b5514035fa 100644 --- a/.github/workflows/plugin-test.yml +++ b/.github/workflows/plugin-test.yml @@ -83,7 +83,9 @@ jobs: php-version: ${{ matrix.php }} - name: composer install - run: composer install --dev --no-interaction -o --apcu-autoloader + run: | + sudo composer selfupdate 2.6.6 + composer install --dev --no-interaction -o --apcu-autoloader - name: Setup to EC-CUBE env: @@ -225,7 +227,9 @@ jobs: php-version: ${{ matrix.php }} - name: Install to Composer - run: composer install --dev --no-interaction -o --apcu-autoloader + run: | + sudo composer selfupdate 2.6.6 + composer install --dev --no-interaction -o --apcu-autoloader - name: Setup to EC-CUBE env: @@ -367,7 +371,9 @@ jobs: php-version: ${{ matrix.php }} - name: Install to Composer - run: composer install --dev --no-interaction -o --apcu-autoloader + run: | + sudo composer selfupdate 2.6.6 + composer install --dev --no-interaction -o --apcu-autoloader - name: Setup to EC-CUBE env: @@ -512,7 +518,9 @@ jobs: php-version: ${{ matrix.php }} - name: Install to Composer - run: composer install --dev --no-interaction -o --apcu-autoloader + run: | + sudo composer selfupdate 2.6.6 + composer install --dev --no-interaction -o --apcu-autoloader - name: Setup to EC-CUBE env: diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 1fb665aec8a..3fb51b16b9d 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -72,7 +72,9 @@ jobs: php-version: ${{ matrix.php }} - name: composer install - run: composer install --dev --no-interaction -o --apcu-autoloader + run: | + sudo composer selfupdate 2.6.6 + composer install --dev --no-interaction -o --apcu-autoloader - name: Setup EC-CUBE env: From 8dd768742da406a44e65c559d790769fe50b9558 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=A0=20=E6=81=A9=E6=A8=B9?= Date: Tue, 5 Mar 2024 15:39:13 +0900 Subject: [PATCH 05/11] =?UTF-8?q?7.4=E4=BB=A5=E5=89=8D=E3=81=A7=E3=81=AF?= =?UTF-8?q?=E5=9E=8B=E5=AE=A3=E8=A8=80=E3=82=A8=E3=83=A9=E3=83=BC=E3=81=8C?= =?UTF-8?q?=E5=87=BA=E3=82=8B=E3=81=9F=E3=82=81=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Eccube/Controller/Admin/Store/OwnerStoreController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Eccube/Controller/Admin/Store/OwnerStoreController.php b/src/Eccube/Controller/Admin/Store/OwnerStoreController.php index 6ab2bce759e..2ab8e29fe03 100644 --- a/src/Eccube/Controller/Admin/Store/OwnerStoreController.php +++ b/src/Eccube/Controller/Admin/Store/OwnerStoreController.php @@ -68,7 +68,7 @@ class OwnerStoreController extends AbstractController /** * @var ValidatorInterface */ - protected ValidatorInterface $validator; + protected $validator; private static $vendorName = 'ec-cube'; From 4b41b40626e9470e336f73f637352a29934f8706 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=A0=20=E6=81=A9=E6=A8=B9?= Date: Thu, 7 Mar 2024 13:08:11 +0900 Subject: [PATCH 06/11] =?UTF-8?q?Dockerfile=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 1318e4fa5cd..32a0848affe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -73,7 +73,7 @@ RUN curl -sS https://getcomposer.org/installer \ && mv composer.phar /usr/bin/composer # 全体コピー前にcomposer installを先行完了させる(docker cache利用によるリビルド速度向上) - +RUN composer self-update --2.2 RUN composer config -g repos.packagist composer https://packagist.jp COPY composer.json ${APACHE_DOCUMENT_ROOT}/composer.json COPY composer.lock ${APACHE_DOCUMENT_ROOT}/composer.lock From 108a4d8eb3baa4350e0a4b41311d84eb26056302 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=A0=20=E6=81=A9=E6=A8=B9?= Date: Thu, 7 Mar 2024 13:46:56 +0900 Subject: [PATCH 07/11] =?UTF-8?q?Dockerfile=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/coverage.yml | 4 ++-- .github/workflows/deny-test.yml | 4 ++-- .github/workflows/deploy.yml | 2 +- .github/workflows/dockerbuild.yml | 2 +- .github/workflows/e2e-bc-test.yml | 2 +- .github/workflows/e2e-test.yml | 2 +- .github/workflows/phpstan.yml | 2 +- .github/workflows/plugin-test.yml | 8 ++++---- .github/workflows/unit-test.yml | 2 +- 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 6ebe1138dd7..ccd3edb2e59 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -59,7 +59,7 @@ jobs: - name: composer install run: | - sudo composer selfupdate 2.6.6 + sudo composer self-update --2.2 composer install --dev --no-interaction -o --apcu-autoloader - name: Setup pcov @@ -155,7 +155,7 @@ jobs: - name: composer install run: | - sudo composer selfupdate 2.6.6 + sudo composer self-update --2.2 composer install --dev --no-interaction -o --apcu-autoloader - name: Setup to EC-CUBE env: diff --git a/.github/workflows/deny-test.yml b/.github/workflows/deny-test.yml index afc3ad6070d..729a36ecaa9 100644 --- a/.github/workflows/deny-test.yml +++ b/.github/workflows/deny-test.yml @@ -48,7 +48,7 @@ jobs: - name: Install to Composer run: | - sudo composer selfupdate 2.6.6 + sudo composer self-update --2.2 composer install --no-scripts --no-dev --no-interaction --optimize-autoloader - name: Translate to templates @@ -113,7 +113,7 @@ jobs: echo ">>> Started chrome-driver" sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & echo ">>> Started xvfb" - sudo composer selfupdate 2.6.6 + sudo composer self-update --2.2 composer install --no-scripts --no-interaction --optimize-autoloader echo "modules: enabled: diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 685891ddfc7..09df5c2e124 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -38,7 +38,7 @@ jobs: - name: Install to Composer run: | - sudo composer selfupdate 2.6.6 + sudo composer self-update --2.2 composer install --no-scripts --no-dev --no-interaction --optimize-autoloader - name: Translate to templates diff --git a/.github/workflows/dockerbuild.yml b/.github/workflows/dockerbuild.yml index b62b212a481..4c70257986e 100644 --- a/.github/workflows/dockerbuild.yml +++ b/.github/workflows/dockerbuild.yml @@ -64,7 +64,7 @@ jobs: - name: composer install run: | - sudo composer selfupdate 2.6.6 + sudo composer self-update --2.2 composer install --dev --no-interaction -o --apcu-autoloader - name: Setup to EC-CUBE env: diff --git a/.github/workflows/e2e-bc-test.yml b/.github/workflows/e2e-bc-test.yml index 7acf3905b81..f96f56a3cd8 100644 --- a/.github/workflows/e2e-bc-test.yml +++ b/.github/workflows/e2e-bc-test.yml @@ -79,7 +79,7 @@ jobs: - name: composer install run: | - sudo composer selfupdate 2.6.6 + sudo composer self-update --2.2 composer install --dev --no-interaction -o --apcu-autoloader - name: Setup to EC-CUBE env: diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index 16186428cba..f84896b0f21 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -76,7 +76,7 @@ jobs: - name: composer install run: | - sudo composer selfupdate 2.6.6 + sudo composer self-update --2.2 composer install --dev --no-interaction -o --apcu-autoloader - name: Setup to EC-CUBE env: diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index 11d1c1089d7..e0e94876890 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -28,7 +28,7 @@ jobs: php-version: '7.4' - name: composer install run: | - sudo composer selfupdate 2.6.6 + sudo composer self-update --2.2 composer install --dev --no-interaction -o --apcu-autoloader - name: PHPStan run: vendor/bin/phpstan analyze src/ --error-format=github diff --git a/.github/workflows/plugin-test.yml b/.github/workflows/plugin-test.yml index 5b5514035fa..5deba99fc71 100644 --- a/.github/workflows/plugin-test.yml +++ b/.github/workflows/plugin-test.yml @@ -84,7 +84,7 @@ jobs: - name: composer install run: | - sudo composer selfupdate 2.6.6 + sudo composer self-update --2.2 composer install --dev --no-interaction -o --apcu-autoloader - name: Setup to EC-CUBE @@ -228,7 +228,7 @@ jobs: - name: Install to Composer run: | - sudo composer selfupdate 2.6.6 + sudo composer self-update --2.2 composer install --dev --no-interaction -o --apcu-autoloader - name: Setup to EC-CUBE @@ -372,7 +372,7 @@ jobs: - name: Install to Composer run: | - sudo composer selfupdate 2.6.6 + sudo composer self-update --2.2 composer install --dev --no-interaction -o --apcu-autoloader - name: Setup to EC-CUBE @@ -519,7 +519,7 @@ jobs: - name: Install to Composer run: | - sudo composer selfupdate 2.6.6 + sudo composer self-update --2.2 composer install --dev --no-interaction -o --apcu-autoloader - name: Setup to EC-CUBE diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 3fb51b16b9d..523c42d0729 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -73,7 +73,7 @@ jobs: - name: composer install run: | - sudo composer selfupdate 2.6.6 + sudo composer self-update --2.2 composer install --dev --no-interaction -o --apcu-autoloader - name: Setup EC-CUBE From da6549fbe978d17d19eae721765552138173d833 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=A0=20=E6=81=A9=E6=A8=B9?= Date: Thu, 7 Mar 2024 16:25:27 +0900 Subject: [PATCH 08/11] =?UTF-8?q?E2E=E3=83=86=E3=82=B9=E3=83=88=E3=81=8C?= =?UTF-8?q?=E5=9B=9E=E3=82=8B=E3=81=8B=E7=A2=BA=E8=AA=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/e2e-test.yml | 3 +++ codeception/_envs/github_action.yml | 3 ++- codeception/acceptance/EA07BasicinfoCest.php | 6 ++++++ codeception/acceptance/EA08SysteminfoCest.php | 6 ++++++ codeception/acceptance/EF02ProductCest.php | 9 +++++++++ 5 files changed, 26 insertions(+), 1 deletion(-) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index f84896b0f21..878aadad9da 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -93,6 +93,9 @@ jobs: - name: setup-chromedriver uses: nanasess/setup-chromedriver@master + - name: Install fonts + run: sudo apt install fonts-ipafont fonts-ipaexfont + - name: Run chromedriver run: | export DISPLAY=:99 diff --git a/codeception/_envs/github_action.yml b/codeception/_envs/github_action.yml index 002f2fa3b03..4bd1ea7c8e2 100644 --- a/codeception/_envs/github_action.yml +++ b/codeception/_envs/github_action.yml @@ -8,6 +8,7 @@ modules: chromeOptions: prefs: download.default_directory: '%GITHUB_WORKSPACE%/codeception/_support/_downloads' + wait: 30 MailCatcher: url: '127.0.0.1' - port: 1080 + port: 1080 \ No newline at end of file diff --git a/codeception/acceptance/EA07BasicinfoCest.php b/codeception/acceptance/EA07BasicinfoCest.php index 57c69736d16..19a988d50ad 100644 --- a/codeception/acceptance/EA07BasicinfoCest.php +++ b/codeception/acceptance/EA07BasicinfoCest.php @@ -166,16 +166,22 @@ public function basicinfo_支払方法削除(AcceptanceTester $I) // 削除用の支払い方法の登録 PaymentManagePage::go($I) ->新規入力(); + + $I->wait(10); + PaymentEditPage::at($I) ->入力_支払方法('dummy payment') ->登録(); + $I->wait(10); // 削除 $page = PaymentManagePage::go($I); $before = $page->一覧_件数取得(); $page->一覧_削除(1); $I->see('削除しました', PaymentEditPage::$登録完了メッセージ); + $I->wait(10); + $after = PaymentManagePage::go($I)->一覧_件数取得(); $I->assertEquals($before - 1, $after); } diff --git a/codeception/acceptance/EA08SysteminfoCest.php b/codeception/acceptance/EA08SysteminfoCest.php index 47456040b4e..9e360f6395c 100644 --- a/codeception/acceptance/EA08SysteminfoCest.php +++ b/codeception/acceptance/EA08SysteminfoCest.php @@ -318,16 +318,22 @@ public function systeminfo_セキュリティ管理SSL(AcceptanceTester $I) $I->amOnUrl($httpBaseUrl); $I->assertRegExp('/^http:\/\//', $I->executeJS('return location.href'), 'httpsにリダイレクトされない'); + $I->wait(10); + $config = Fixtures::get('config'); $httpsBaseUrl = str_replace('http://', 'https://', $httpBaseUrl); $I->amOnUrl($httpsBaseUrl.$config['eccube_admin_route'].'/setting/system/security'); $I->checkOption(['id' => 'admin_security_force_ssl']); $I->click('#page_admin_setting_system_security form div.c-contentsArea__cols > div.c-conversionArea > div > div > div:nth-child(2) > div > div > button'); + $I->wait(10); + // httpでアクセスしたらhttpsにリダイレクトされる $I->amOnUrl($httpBaseUrl); $I->assertRegExp('/^https:\/\//', $I->executeJS('return location.href'), 'httpsにリダイレクトされる'); + $I->wait(10); + // 後続テストのために戻しておく $I->amOnUrl($httpsBaseUrl.$config['eccube_admin_route'].'/setting/system/security'); $I->uncheckOption(['id' => 'admin_security_force_ssl']); diff --git a/codeception/acceptance/EF02ProductCest.php b/codeception/acceptance/EF02ProductCest.php index 51fe914b188..6bb5dfaaf0e 100644 --- a/codeception/acceptance/EF02ProductCest.php +++ b/codeception/acceptance/EF02ProductCest.php @@ -49,10 +49,15 @@ public function product_商品一覧ソート(AcceptanceTester $I) // TOPページ>商品一覧(ヘッダーのいずれかのカテゴリを選択)へ遷移 $topPage->カテゴリ選択(['新入荷']); + $I->wait(10); + // 各商品のサムネイルが表示される デフォルトは価格順 $products = $I->grabMultiple(['xpath' => "//*[@class='ec-shelfGrid__item']/a/p[2]"]); $pPos = 0; $fPos = 0; + + $I->wait(10); + foreach ($products as $key => $product) { if ($product == 'チェリーアイスサンド') { $pPos = $key; @@ -68,10 +73,14 @@ public function product_商品一覧ソート(AcceptanceTester $I) ->表示件数設定(40) ->表示順設定('価格が高い順'); + $I->wait(10); // 変更されたソート条件に従い、商品がソートされる $products = $I->grabMultiple(['xpath' => "//*[@class='ec-shelfGrid__item']/a/p[2]"]); $pPos = 0; $fPos = 0; + + $I->wait(10); + foreach ($products as $key => $product) { if ($product == 'チェリーアイスサンド') { $pPos = $key; From e18166aa59f52ed1258f4d5219170f69d7624362 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=A0=20=E6=81=A9=E6=A8=B9?= Date: Thu, 18 Apr 2024 11:34:16 +0900 Subject: [PATCH 09/11] =?UTF-8?q?=E3=82=A2=E3=83=83=E3=83=97=E3=83=87?= =?UTF-8?q?=E3=83=BC=E3=83=88=E3=81=AB=E5=85=A5=E5=8A=9B=E5=80=A4=E3=81=AE?= =?UTF-8?q?=E5=88=B6=E9=99=90=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin/Store/OwnerStoreController.php | 54 ++++++++++++++++--- .../Web/Admin/Store/PluginControllerTest.php | 42 +++++++++++++++ 2 files changed, 88 insertions(+), 8 deletions(-) diff --git a/src/Eccube/Controller/Admin/Store/OwnerStoreController.php b/src/Eccube/Controller/Admin/Store/OwnerStoreController.php index 2ab8e29fe03..017f3fb48f0 100644 --- a/src/Eccube/Controller/Admin/Store/OwnerStoreController.php +++ b/src/Eccube/Controller/Admin/Store/OwnerStoreController.php @@ -285,7 +285,6 @@ public function apiInstall(Request $request) ] ); - $log = null; if ($errors->count() != 0) { $log = []; foreach ($errors as $error) { @@ -373,14 +372,53 @@ public function apiUpgrade(Request $request) $pluginCode = $request->get('pluginCode'); $version = $request->get('version'); - $log = null; - try { - $log = $this->composerService->execRequire('ec-cube/'.$pluginCode.':'.$version); + $log = []; + + $errors = $this->validator->validate( + $pluginCode, + [ + new Assert\NotBlank(), + new Assert\Regex( + [ + 'pattern' => '/^[a-zA-Z0-9_]+$/', + ] + ), + ] + ); - return $this->json(['success' => true, 'log' => $log]); - } catch (\Exception $e) { - $log = $e->getMessage(); - log_error($e); + if ($errors->count() != 0) { + foreach ($errors as $error) { + $log[] = $pluginCode.':'.$error->getMessage(); + } + } + + $errors = $this->validator->validate( + $version, + [ + new Assert\NotBlank(), + new Assert\Regex( + [ + 'pattern' => '/^[0-9.]+$/', + ] + ), + ] + ); + + if ($errors->count() != 0) { + foreach ($errors as $error) { + $log[] = $version.':'.$error->getMessage(); + } + } + + if (empty($log)) { + try { + $log = $this->composerService->execRequire('ec-cube/'.$pluginCode.':'.$version); + + return $this->json(['success' => true, 'log' => $log]); + } catch (\Exception $e) { + $log = $e->getMessage(); + log_error($e); + } } return $this->json(['success' => false, 'log' => $log], 500); diff --git a/tests/Eccube/Tests/Web/Admin/Store/PluginControllerTest.php b/tests/Eccube/Tests/Web/Admin/Store/PluginControllerTest.php index 8974ea1a51a..60ce0b4731e 100644 --- a/tests/Eccube/Tests/Web/Admin/Store/PluginControllerTest.php +++ b/tests/Eccube/Tests/Web/Admin/Store/PluginControllerTest.php @@ -78,6 +78,35 @@ public function testFailureInstall($param1, $param2, $message) $this->assertContains($message, json_decode($this->client->getResponse()->getContent())->log); } + /** + * 異常系を確認。正常系のアップデートはE2Eテストの方で実施 + * + * @dataProvider OwnerStoreUpgradeParam + * + */ + public function testFailureUpgrade($param1, $param2, $message) + { + $form = [ + 'pluginCode' => $param1, + 'version' => $param2, + ]; + + $crawler = $this->client->request('POST', + $this->generateUrl('admin_store_plugin_api_upgrade', $form), + [], + [], + [ + 'HTTP_X-Requested-With' => 'XMLHttpRequest', + 'CONTENT_TYPE' => 'application/json', + ] + ); + // ダウンロードできないことを確認 + $this->assertEquals(500, $this->client->getResponse()->getStatusCode()); + + // ログを確認 + $this->assertStringContainsString($message, implode(',', json_decode($this->client->getResponse()->getContent())->log)); + } + /** * 異常系のテストケース */ @@ -88,4 +117,17 @@ public function OwnerStoreInstallParam() ['', '2.1.3','入力されていません。'], ]; } + + /** + * 異常系のテストケース + */ + public function OwnerStoreUpgradeParam() + { + return [ + ['api+symfony/yaml:5.3', '2.1.3', '有効な値ではありません。'], + ['api', '2.1.3+symfony/yaml:5.3', '有効な値ではありません。'], + ['', '2.1.3','入力されていません。'], + ['api', '','入力されていません。'], + ]; + } } From a5810f45fe5d2edc31fd3867c32e047a168fd9af Mon Sep 17 00:00:00 2001 From: ji-eunsoo <132241702+ji-eunsoo@users.noreply.github.com> Date: Thu, 18 Apr 2024 15:13:03 +0900 Subject: [PATCH 10/11] =?UTF-8?q?=E5=A4=96=E9=83=A8=E3=81=AE=E5=85=A5?= =?UTF-8?q?=E5=8A=9B=E5=80=A4=E3=81=AE=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Eccube/Controller/Admin/Store/OwnerStoreController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Eccube/Controller/Admin/Store/OwnerStoreController.php b/src/Eccube/Controller/Admin/Store/OwnerStoreController.php index 017f3fb48f0..dbaca33ac4c 100644 --- a/src/Eccube/Controller/Admin/Store/OwnerStoreController.php +++ b/src/Eccube/Controller/Admin/Store/OwnerStoreController.php @@ -388,7 +388,7 @@ public function apiUpgrade(Request $request) if ($errors->count() != 0) { foreach ($errors as $error) { - $log[] = $pluginCode.':'.$error->getMessage(); + $log[] = $error->getMessage(); } } @@ -406,7 +406,7 @@ public function apiUpgrade(Request $request) if ($errors->count() != 0) { foreach ($errors as $error) { - $log[] = $version.':'.$error->getMessage(); + $log[] = $error->getMessage(); } } From 8dae817ce72ae6536d48bae8a4e57a58e2e94684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=A0=20=E6=81=A9=E6=A8=B9?= Date: Tue, 23 Jul 2024 13:40:11 +0900 Subject: [PATCH 11/11] =?UTF-8?q?=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 2 +- package.json | 2 +- src/Eccube/Common/Constant.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7f528a4a3bc..1eeb6168d60 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "eccube", - "version": "4.1.2-p3", + "version": "4.1.2-p4", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index bc385ec9511..470104d72eb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eccube", - "version": "4.1.2-p3", + "version": "4.1.2-p4", "description": "EC-CUBE EC open platform.", "main": "index.js", "directories": { diff --git a/src/Eccube/Common/Constant.php b/src/Eccube/Common/Constant.php index 78cf1533028..c66243b9043 100644 --- a/src/Eccube/Common/Constant.php +++ b/src/Eccube/Common/Constant.php @@ -18,7 +18,7 @@ class Constant /** * EC-CUBE VERSION. */ - const VERSION = '4.1.2-p3'; + const VERSION = '4.1.2-p4'; /** * Enable value.