Skip to content

Commit de8edcf

Browse files
[AWS S3] Improvements (#6262)
1 parent 00a170a commit de8edcf

File tree

60 files changed

+1287
-590
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+1287
-590
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ atlassian*
5858
/pub/media/tmp/*
5959
!/pub/media/tmp/.htaccess
6060
/pub/media/captcha/*
61+
/pub/media/sitemap/*
62+
!/pub/media/sitemap/.htaccess
6163
/pub/static/*
6264
!/pub/static/.htaccess
6365

app/code/Magento/AwsS3/Driver/AwsS3.php

Lines changed: 60 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,29 @@
77

88
namespace Magento\AwsS3\Driver;
99

10+
use Exception;
1011
use League\Flysystem\AwsS3v3\AwsS3Adapter;
1112
use League\Flysystem\Config;
1213
use Magento\Framework\Exception\FileSystemException;
1314
use Magento\Framework\Filesystem\DriverInterface;
1415
use Magento\Framework\Phrase;
1516
use Psr\Log\LoggerInterface;
17+
use Magento\RemoteStorage\Driver\DriverException;
18+
use Magento\RemoteStorage\Driver\RemoteDriverInterface;
1619

1720
/**
1821
* Driver for AWS S3 IO operations.
1922
*
2023
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
2124
*/
22-
class AwsS3 implements DriverInterface
25+
class AwsS3 implements RemoteDriverInterface
2326
{
2427
public const TYPE_DIR = 'dir';
2528
public const TYPE_FILE = 'file';
2629

27-
private const CONFIG = ['ACL' => 'public-read'];
30+
private const TEST_FLAG = 'storage.flag';
31+
32+
private const CONFIG = ['ACL' => 'private'];
2833

2934
/**
3035
* @var AwsS3Adapter
@@ -68,6 +73,18 @@ public function __destruct()
6873
}
6974
}
7075

76+
/**
77+
* @inheritDoc
78+
*/
79+
public function test(): void
80+
{
81+
try {
82+
$this->adapter->write(self::TEST_FLAG, '', new Config(self::CONFIG));
83+
} catch (Exception $exception) {
84+
throw new DriverException(__($exception->getMessage()), $exception);
85+
}
86+
}
87+
7188
/**
7289
* @inheritDoc
7390
*/
@@ -177,7 +194,7 @@ public function deleteDirectory($path): bool
177194
/**
178195
* @inheritDoc
179196
*/
180-
public function filePutContents($path, $content, $mode = null, $context = null): int
197+
public function filePutContents($path, $content, $mode = null): int
181198
{
182199
$path = $this->normalizeRelativePath($path);
183200

@@ -345,6 +362,7 @@ public function isDirectory($path): bool
345362
if ($this->adapter->has($path) && ($meta = $this->adapter->getMetadata($path))) {
346363
return ($meta['type'] ?? null) === self::TYPE_DIR;
347364
}
365+
348366
return false;
349367
}
350368

@@ -416,10 +434,44 @@ public function stat($path): array
416434
'blksize' => 0,
417435
'blocks' => 0,
418436
'size' => $metaInfo['size'] ?? 0,
419-
'type' => $metaInfo['type'] ?? 0,
437+
'type' => $metaInfo['type'] ?? '',
420438
'mtime' => $metaInfo['timestamp'] ?? 0,
421-
'disposition' => null,
422-
'mimetype' => $metaInfo['mimetype'] ?? 0
439+
'disposition' => null
440+
];
441+
}
442+
443+
/**
444+
* @inheritDoc
445+
*/
446+
public function getMetadata(string $path): array
447+
{
448+
$path = $this->normalizeRelativePath($path);
449+
$metaInfo = $this->adapter->getMetadata($path);
450+
451+
if (!$metaInfo) {
452+
throw new FileSystemException(__('Cannot gather meta info! %1', [$this->getWarningMessage()]));
453+
}
454+
455+
$extra = [
456+
'image-width' => 0,
457+
'image-height' => 0
458+
];
459+
460+
if (isset($metaInfo['image-width'], $metaInfo['image-height'])) {
461+
$extra['image-width'] = $metaInfo['image-width'];
462+
$extra['image-height'] = $metaInfo['image-height'];
463+
}
464+
465+
return [
466+
'path' => $metaInfo['path'],
467+
'dirname' => $metaInfo['dirname'],
468+
'basename' => $metaInfo['basename'],
469+
'extension' => $metaInfo['extension'],
470+
'filename' => $metaInfo['filename'],
471+
'timestamp' => $metaInfo['timestamp'],
472+
'size' => $metaInfo['size'],
473+
'mimetype' => $metaInfo['mimetype'],
474+
'extra' => $extra
423475
];
424476
}
425477

@@ -778,6 +830,7 @@ private function getSearchPattern(string $pattern, array $parentPattern, string
778830
'/\?/' => '.',
779831
'/\//' => '\/'
780832
];
833+
781834
return preg_replace(array_keys($replacement), array_values($replacement), $searchPattern);
782835
}
783836

@@ -816,6 +869,7 @@ private function getDirectoryContent(
816869
}
817870
}
818871
}
872+
819873
return $directoryContent;
820874
}
821875
}

app/code/Magento/AwsS3/Driver/AwsS3Factory.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99

1010
use Aws\S3\S3Client;
1111
use League\Flysystem\AwsS3v3\AwsS3Adapter;
12-
use Magento\Framework\Filesystem\DriverInterface;
1312
use Magento\Framework\ObjectManagerInterface;
1413
use Magento\RemoteStorage\Driver\DriverFactoryInterface;
14+
use Magento\RemoteStorage\Driver\RemoteDriverInterface;
1515

1616
/**
1717
* Creates a pre-configured instance of AWS S3 driver.
@@ -36,13 +36,15 @@ public function __construct(ObjectManagerInterface $objectManager)
3636
*
3737
* @param array $config
3838
* @param string $prefix
39-
* @return DriverInterface
39+
* @return RemoteDriverInterface
4040
*/
41-
public function create(array $config, string $prefix): DriverInterface
41+
public function create(array $config, string $prefix): RemoteDriverInterface
4242
{
43-
$config += [
44-
'version' => 'latest'
45-
];
43+
$config['version'] = 'latest';
44+
45+
if (empty($config['credentials']['key']) || empty($config['credentials']['secret'])) {
46+
unset($config['credentials']);
47+
}
4648

4749
return $this->objectManager->create(
4850
AwsS3::class,

app/code/Magento/AwsS3/Test/Mftf/Data/ConfigData.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,7 @@
1313
<data key="bucket">{{_ENV.REMOTE_STORAGE_AWSS3_BUCKET}}</data>
1414
<data key="access_key">{{_ENV.REMOTE_STORAGE_AWSS3_ACCESS_KEY}}</data>
1515
<data key="secret_key">{{_ENV.REMOTE_STORAGE_AWSS3_SECRET_KEY}}</data>
16+
<data key="enable_options">--remote-storage-driver={{_ENV.REMOTE_STORAGE_AWSS3_DRIVER}} --remote-storage-bucket={{_ENV.REMOTE_STORAGE_AWSS3_BUCKET}} --remote-storage-region={{_ENV.REMOTE_STORAGE_AWSS3_REGION}} --remote-storage-prefix={{_ENV.REMOTE_STORAGE_AWSS3_PREFIX}} --remote-storage-key={{_ENV.REMOTE_STORAGE_AWSS3_ACCESS_KEY}} --remote-storage-secret={{_ENV.REMOTE_STORAGE_AWSS3_SECRET_KEY}} -n</data>
17+
<data key="disable_options">--remote-storage-driver=file -n</data>
1618
</entity>
1719
</entities>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
11+
<test name="AwsS3AdminAddImageForCategoryTest" extends="AdminAddImageForCategoryTest">
12+
<annotations>
13+
<title value="AWS S3 Admin should be able to add image to a Category"/>
14+
<stories value="Add/remove images and videos for all product types and category"/>
15+
<description value="Admin should be able to add image to a Category"/>
16+
<severity value="CRITICAL"/>
17+
<testCaseId value="MC-38688"/>
18+
<group value="remote_storage_aws_s3"/>
19+
</annotations>
20+
<before>
21+
<magentoCLI command="setup:config:set {{RemoteStorageAwsS3ConfigData.enable_options}}" stepKey="enableRemoteStorage"/>
22+
</before>
23+
<after>
24+
<magentoCLI command="setup:config:set {{RemoteStorageAwsS3ConfigData.disable_options}}" stepKey="disableRemoteStorage"/>
25+
</after>
26+
</test>
27+
</tests>

app/code/Magento/AwsS3/Test/Mftf/Test/AwsS3AdminAddImageToWYSIWYGBlockTest.xml

Lines changed: 6 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -7,74 +7,20 @@
77
-->
88
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
99
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
10-
<test name="AwsS3AdminAddImageToWYSIWYGBlockTest">
10+
<test name="AwsS3AdminAddImageToWYSIWYGBlockTest" extends="AdminAddImageToWYSIWYGBlockTest">
1111
<annotations>
12-
<features value="Cms"/>
13-
<stories value="MC-37460: Support by Magento CMS"/>
14-
<group value="Cms"/>
15-
<title value="Admin should be able to add image to WYSIWYG content of Block with remote filesystem enabled"/>
16-
<description value="Admin should be able to add image to WYSIWYG content of Block with remote filesystem enabled"/>
12+
<title value="AWS S3 Admin should be able to add image to WYSIWYG content of Block with remote filesystem enabled"/>
13+
<stories value="Default WYSIWYG toolbar configuration with Magento Media Gallery"/>
14+
<description value="Admin should be able to add image to WYSIWYG content of Block"/>
1715
<severity value="BLOCKER"/>
1816
<testCaseId value="MC-38302"/>
1917
<group value="remote_storage_aws_s3"/>
2018
</annotations>
2119
<before>
22-
<magentoCLI command="remote-storage:enable {{RemoteStorageAwsS3ConfigData.driver}} {{RemoteStorageAwsS3ConfigData.bucket}} {{RemoteStorageAwsS3ConfigData.region}} {{RemoteStorageAwsS3ConfigData.prefix}} {{RemoteStorageAwsS3ConfigData.access_key}} {{RemoteStorageAwsS3ConfigData.secret_key}} --is-public true" stepKey="enableRemoteStorage"/>
23-
<createData entity="_defaultCmsPage" stepKey="createCMSPage" />
24-
<createData entity="_defaultBlock" stepKey="createPreReqBlock" />
25-
<actionGroup ref="AdminLoginActionGroup" stepKey="login"/>
26-
<actionGroup ref="AdminDisableWYSIWYGActionGroup" stepKey="disableWYSIWYGBeforeTest" />
27-
<magentoCLI command='config:set cms/wysiwyg/enabled enabled' stepKey="enableWYSIWYGBeforeTest"/>
28-
<actionGroup ref="SwitchToVersion4ActionGroup" stepKey="switchToTinyMCE4" />
20+
<magentoCLI command="setup:config:set {{RemoteStorageAwsS3ConfigData.enable_options}}" stepKey="enableRemoteStorage"/>
2921
</before>
30-
<actionGroup ref="AssignBlockToCMSPage" stepKey="assignBlockToCMSPage">
31-
<argument name="Block" value="$$createPreReqBlock$$"/>
32-
<argument name="CmsPage" value="$$createCMSPage$$"/>
33-
</actionGroup>
34-
<actionGroup ref="NavigateToCreatedCMSBlockPageActionGroup" stepKey="navigateToCreatedCMSBlockPage1">
35-
<argument name="CMSBlockPage" value="$$createPreReqBlock$$"/>
36-
</actionGroup>
37-
<selectOption selector="{{BlockNewPageBasicFieldsSection.storeView}}" userInput="All Store View" stepKey="selectAllStoreView" />
38-
<waitForElementVisible selector="{{TinyMCESection.TinyMCE4}}" stepKey="waitForTinyMCE" />
39-
<click selector="{{TinyMCESection.InsertImageIcon}}" stepKey="clickInsertImageIcon" />
40-
<waitForPageLoad stepKey="waitForPageLoad2" />
41-
<actionGroup ref="ClickBrowseBtnOnUploadPopupActionGroup" stepKey="clickBrowserBtn"/>
42-
<actionGroup ref="VerifyMediaGalleryStorageActionsActionGroup" stepKey="VerifyMediaGalleryStorageBtn"/>
43-
<actionGroup ref="NavigateToMediaFolderActionGroup" stepKey="navigateToFolder">
44-
<argument name="FolderName" value="Storage Root"/>
45-
</actionGroup>
46-
<actionGroup ref="CreateImageFolderActionGroup" stepKey="CreateImageFolder">
47-
<argument name="ImageFolder" value="ImageFolder"/>
48-
</actionGroup>
49-
<actionGroup ref="AttachImageActionGroup" stepKey="attachImage1">
50-
<argument name="Image" value="ImageUpload"/>
51-
</actionGroup>
52-
<actionGroup ref="DeleteImageActionGroup" stepKey="deleteImage"/>
53-
<actionGroup ref="AttachImageActionGroup" stepKey="attachImage2">
54-
<argument name="Image" value="ImageUpload"/>
55-
</actionGroup>
56-
<actionGroup ref="SaveImageActionGroup" stepKey="insertImage"/>
57-
<actionGroup ref="FillOutUploadImagePopupActionGroup" stepKey="fillOutUploadImagePopup" />
58-
<click selector="{{BlockNewPagePageActionsSection.saveBlock}}" stepKey="clickSaveBlock"/>
59-
<amOnPage url="$$createCMSPage.identifier$$" stepKey="amOnPageTestPage"/>
60-
<waitForPageLoad stepKey="waitForPageLoad11" />
61-
<!--see image on Storefront-->
62-
<seeElement selector="{{StorefrontBlockSection.mediaDescription}}" stepKey="assertMediaDescription"/>
63-
<seeElementInDOM selector="{{StorefrontBlockSection.imageSource(ImageUpload.fileName)}}" stepKey="assertMediaSource"/>
6422
<after>
65-
<actionGroup ref="NavigateToMediaGalleryActionGroup" stepKey="navigateToMediaGallery"/>
66-
<actionGroup ref="DeleteFolderActionGroup" stepKey="DeleteCreatedFolder">
67-
<argument name="ImageFolder" value="ImageFolder"/>
68-
</actionGroup>
69-
<amOnPage url="{{CmsPagesPage.url}}" stepKey="amOnEditPage"/>
70-
<waitForPageLoad stepKey="waitForPageLoad"/>
71-
<conditionalClick selector="{{CmsPagesPageActionsSection.clearAllButton}}" dependentSelector="{{CmsPagesPageActionsSection.activeFilters}}" stepKey="clickToResetFilter" visible="true"/>
72-
<waitForPageLoad stepKey="waitForGridReload"/>
73-
<deleteData createDataKey="createPreReqBlock" stepKey="deletePreReqBlock" />
74-
<deleteData createDataKey="createCMSPage" stepKey="deletePreReqCMSPage" />
75-
<actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/>
76-
<actionGroup ref="AdminEnableWYSIWYGActionGroup" stepKey="enableWYSIWYGAfterTest" />
77-
<magentoCLI command="remote-storage:disable" stepKey="disableRemoteStorage"/>
23+
<magentoCLI command="setup:config:set {{RemoteStorageAwsS3ConfigData.disable_options}}" stepKey="disableRemoteStorage"/>
7824
</after>
7925
</test>
8026
</tests>

app/code/Magento/AwsS3/Test/Mftf/Test/AwsS3AdminAddImageToWYSIWYGCMSTest.xml

Lines changed: 6 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -7,69 +7,20 @@
77
-->
88
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
99
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
10-
<test name="AwsS3AdminAddImageToWYSIWYGCMSTest">
10+
<test name="AwsS3AdminAddImageToWYSIWYGCMSTest" extends="AdminAddImageToWYSIWYGCMSTest">
1111
<annotations>
12-
<features value="Cms"/>
13-
<stories value="MC-37460: Support by Magento CMS"/>
14-
<group value="Cms"/>
15-
<title value="Admin should be able to add image to WYSIWYG content of CMS Page with remote filesystem enabled"/>
16-
<description value="Admin should be able to add image to WYSIWYG content of CMS Page with remote filesystem enabled"/>
12+
<title value="AWS S3 Admin should be able to add image to WYSIWYG content of CMS Page with remote filesystem enabled"/>
13+
<stories value="Default WYSIWYG toolbar configuration with Magento Media Gallery"/>
14+
<description value="Admin should be able to add image to WYSIWYG content of CMS Page"/>
1715
<severity value="BLOCKER"/>
1816
<testCaseId value="MC-38295"/>
1917
<group value="remote_storage_aws_s3"/>
2018
</annotations>
2119
<before>
22-
<magentoCLI command="remote-storage:enable {{RemoteStorageAwsS3ConfigData.driver}} {{RemoteStorageAwsS3ConfigData.bucket}} {{RemoteStorageAwsS3ConfigData.region}} {{RemoteStorageAwsS3ConfigData.prefix}} {{RemoteStorageAwsS3ConfigData.access_key}} {{RemoteStorageAwsS3ConfigData.secret_key}} --is-public true" stepKey="enableRemoteStorage"/>
23-
<createData entity="_defaultCmsPage" stepKey="createCMSPage" />
24-
<actionGroup ref="AdminLoginActionGroup" stepKey="login"/>
25-
<actionGroup ref="AdminDisableWYSIWYGActionGroup" stepKey="disableWYSIWYGBeforeTest" />
26-
<magentoCLI command='config:set cms/wysiwyg/enabled enabled' stepKey="enableWYSIWYGBeforeTest"/>
27-
<actionGroup ref="SwitchToVersion4ActionGroup" stepKey="switchToTinyMCE4" />
20+
<magentoCLI command="setup:config:set {{RemoteStorageAwsS3ConfigData.enable_options}}" stepKey="enableRemoteStorage"/>
2821
</before>
2922
<after>
30-
<actionGroup ref="NavigateToMediaGalleryActionGroup" stepKey="navigateToMediaGallery"/>
31-
<actionGroup ref="DeleteFolderActionGroup" stepKey="DeleteCreatedFolder">
32-
<argument name="ImageFolder" value="ImageFolder"/>
33-
</actionGroup>
34-
<deleteData createDataKey="createCMSPage" stepKey="deletePreReqCMSPage" />
35-
<actionGroup ref="AdminEnableWYSIWYGActionGroup" stepKey="enableWYSIWYGAfterTest" />
36-
<actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/>
37-
<magentoCLI command="remote-storage:disable" stepKey="disableRemoteStorage"/>
23+
<magentoCLI command="setup:config:set {{RemoteStorageAwsS3ConfigData.disable_options}}" stepKey="disableRemoteStorage"/>
3824
</after>
39-
40-
<actionGroup ref="NavigateToCreatedCMSPageActionGroup" stepKey="navigateToCreatedCMSPage">
41-
<argument name="CMSPage" value="$$createCMSPage$$"/>
42-
</actionGroup>
43-
<click selector="{{CmsNewPagePageContentSection.header}}" stepKey="clickExpandContent"/>
44-
<waitForElementVisible selector="{{TinyMCESection.TinyMCE4}}" stepKey="waitForTinyMCE4" />
45-
<click selector="{{TinyMCESection.InsertImageIcon}}" stepKey="clickInsertImageIcon" />
46-
<waitForPageLoad stepKey="waitForPageLoad" />
47-
<actionGroup ref="ClickBrowseBtnOnUploadPopupActionGroup" stepKey="clickBrowserBtn"/>
48-
<actionGroup ref="VerifyMediaGalleryStorageActionsActionGroup" stepKey="VerifyMediaGalleryStorageBtn"/>
49-
<actionGroup ref="NavigateToMediaFolderActionGroup" stepKey="navigateToFolder">
50-
<argument name="FolderName" value="Storage Root"/>
51-
</actionGroup>
52-
<actionGroup ref="CreateImageFolderActionGroup" stepKey="CreateImageFolder">
53-
<argument name="ImageFolder" value="ImageFolder"/>
54-
</actionGroup>
55-
<actionGroup ref="AttachImageActionGroup" stepKey="attachImage1">
56-
<argument name="Image" value="ImageUpload3"/>
57-
</actionGroup>
58-
<actionGroup ref="DeleteImageActionGroup" stepKey="deleteImage"/>
59-
<actionGroup ref="AttachImageActionGroup" stepKey="attachImage2">
60-
<argument name="Image" value="ImageUpload3"/>
61-
</actionGroup>
62-
<actionGroup ref="SaveImageActionGroup" stepKey="insertImage"/>
63-
<actionGroup ref="FillOutUploadImagePopupActionGroup" stepKey="fillOutUploadImagePopup" />
64-
<click selector="{{CmsNewPagePageSeoSection.header}}" stepKey="clickExpandSearchEngineOptimisation"/>
65-
<fillField selector="{{CmsNewPagePageSeoSection.urlKey}}" userInput="$$createCMSPage.identifier$$" stepKey="fillFieldUrlKey"/>
66-
<click selector="{{CmsNewPagePageActionsSection.expandSplitButton}}" stepKey="expandButtonMenu"/>
67-
<waitForElementVisible selector="{{CmsNewPagePageActionsSection.splitButtonMenu}}" stepKey="waitForSplitButtonMenuVisible"/>
68-
<click selector="{{CmsNewPagePageActionsSection.savePage}}" stepKey="clickSavePage"/>
69-
<see userInput="You saved the page." stepKey="seeSuccessMessage"/>
70-
<amOnPage url="$$createCMSPage.identifier$$" stepKey="amOnPageTestPage"/>
71-
<waitForPageLoad stepKey="wait4"/>
72-
<seeElement selector="{{StorefrontCMSPageSection.mediaDescription}}" stepKey="assertMediaDescription"/>
73-
<seeElementInDOM selector="{{StorefrontCMSPageSection.imageSource(ImageUpload3.fileName)}}" stepKey="assertMediaSource"/>
7425
</test>
7526
</tests>
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
10+
<test name="AwsS3AdminAddImageToWYSIWYGNewsletterTest" extends="AdminAddImageToWYSIWYGNewsletterTest">
11+
<annotations>
12+
<features value="Newsletter"/>
13+
<stories value="Apply new WYSIWYG in Newsletter"/>
14+
<group value="Newsletter"/>
15+
<title value="AWS S3 Admin should be able to add image to WYSIWYG content of Newsletter"/>
16+
<description value="Admin should be able to add image to WYSIWYG content Newsletter"/>
17+
<severity value="CRITICAL"/>
18+
<testCaseId value="MC-38716"/>
19+
<group value="remote_storage_aws_s3"/>
20+
</annotations>
21+
<before>
22+
<magentoCLI command="setup:config:set {{RemoteStorageAwsS3ConfigData.enable_options}}" stepKey="enableRemoteStorage"/>
23+
</before>
24+
<after>
25+
<magentoCLI command="setup:config:set {{RemoteStorageAwsS3ConfigData.disable_options}}" stepKey="disableRemoteStorage"/>
26+
</after>
27+
</test>
28+
</tests>

0 commit comments

Comments
 (0)