Skip to content

Commit d796127

Browse files
authored
Merge pull request magento#7058 from magento-arcticfoxes/B2B-1876
B2B-1876: New directories in pub/media do not get synced back to local filesystem from S3 Remote Storage
2 parents 6df210e + 9177877 commit d796127

File tree

148 files changed

+2845
-696
lines changed

Some content is hidden

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

148 files changed

+2845
-696
lines changed

app/code/Magento/AwsS3/Test/Mftf/Helper/S3FileAssertions.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ public function createDirectory($path, $permissions = 0777): void
134134
*/
135135
public function deleteDirectory($path): void
136136
{
137-
if ($this->driver->isExists($path)) {
137+
if ($this->driver->isDirectory($path)) {
138138
$this->driver->deleteDirectory($path);
139139
}
140140
}
@@ -169,31 +169,31 @@ public function assertGlobbedFileExists($path, $pattern, $message = ''): void
169169
}
170170

171171
/**
172-
* Asserts that a file or directory exists on the remote storage system
172+
* Asserts that a directory exists on the remote storage system
173173
*
174174
* @param string $path
175175
* @param string $message
176176
* @return void
177177
*
178178
* @throws \Magento\Framework\Exception\FileSystemException
179179
*/
180-
public function assertPathExists($path, $message = ''): void
180+
public function assertDirectoryExists($path, $message = ''): void
181181
{
182-
$this->assertTrue($this->driver->isExists($path), "Failed asserting $path exists. " . $message);
182+
$this->assertTrue($this->driver->isDirectory($path), "Failed asserting $path exists. " . $message);
183183
}
184184

185185
/**
186-
* Asserts that a file or directory does not exist on the remote storage system
186+
* Asserts that a directory does not exist on the remote storage system
187187
*
188188
* @param string $path
189189
* @param string $message
190190
* @return void
191191
*
192192
* @throws \Magento\Framework\Exception\FileSystemException
193193
*/
194-
public function assertPathDoesNotExist($path, $message = ''): void
194+
public function assertDirectoryDoesNotExist($path, $message = ''): void
195195
{
196-
$this->assertFalse($this->driver->isExists($path), "Failed asserting $path does not exist. " . $message);
196+
$this->assertFalse($this->driver->isDirectory($path), "Failed asserting $path does not exist. " . $message);
197197
}
198198

199199
/**
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
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+
<suites xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Suite/etc/suiteSchema.xsd">
11+
<suite name="RemoteStorageAwsS3EnabledMediaGalleryUiSuite">
12+
<before>
13+
<actionGroup ref="AdminDisableWYSIWYGActionGroup" stepKey="disableWYSIWYG" />
14+
<magentoCLI command="config:set {{MediaGalleryConfigDataEnabled.path}} {{MediaGalleryConfigDataEnabled.value}}" stepKey="enableEnhancedMediaGallery"/>
15+
<magentoCLI command="config:set {{MediaGalleryRenditionsDataEnabled.path}} {{MediaGalleryRenditionsDataEnabled.value}}" stepKey="enableMediaGalleryRenditions"/>
16+
17+
<!-- Create Media Gallery Directories for `catalog/category` and `wysiwyg` -->
18+
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
19+
<actionGroup ref="AdminOpenCategoryPageActionGroup" stepKey="openCategoryPage"/>
20+
<actionGroup ref="AdminOpenMediaGalleryFromCategoryImageUploaderActionGroup" stepKey="openMediaGalleryFromCategoryImage"/>
21+
<actionGroup ref="AdminOpenCreateNewCMSPageActionGroup" stepKey="openNewPage"/>
22+
<actionGroup ref="AdminOpenMediaGalleryFromPageNoEditorActionGroup" stepKey="openMediaGalleryForPage"/>
23+
<actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/>
24+
25+
<!-- Enable AWS S3 Remote Storage -->
26+
<magentoCLI command="setup:config:set {{RemoteStorageAwsS3ConfigData.enable_options}}" stepKey="enableRemoteStorage"/>
27+
<magentoCLI command="remote-storage:sync" timeout="120" stepKey="syncRemoteStorage"/>
28+
</before>
29+
<after>
30+
<magentoCLI command="config:set {{MediaGalleryRenditionsDataDisabled.path}} {{MediaGalleryRenditionsDataDisabled.value}}" stepKey="disableMediaGalleryRenditions"/>
31+
<magentoCLI command="config:set {{MediaGalleryConfigDataDisabled.path}} {{MediaGalleryConfigDataDisabled.value}}" stepKey="disableEnhancedMediaGallery"/>
32+
<actionGroup ref="AdminEnableWYSIWYGActionGroup" stepKey="enableWYSIWYG" />
33+
34+
<!-- Disable Remote Storage -->
35+
<magentoCLI command="setup:config:set {{RemoteStorageAwsS3ConfigData.disable_options}}" stepKey="disableRemoteStorage"/>
36+
</after>
37+
<include>
38+
<group name="remote_storage_aws_s3_media_gallery_ui"/>
39+
</include>
40+
<exclude>
41+
<group name="remote_storage_aws_s3"/>
42+
<group name="remote_storage_disabled"/>
43+
<group name="remote_storage_aws_s3_pagebuilder"/>
44+
</exclude>
45+
</suite>
46+
</suites>
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
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="AdminAwsS3MediaGalleryDeleteFolderTest">
12+
<annotations>
13+
<features value="AwsS3"/>
14+
<stories value="Media Gallery"/>
15+
<title value="Verify Deleting Folder Deletes S3 and Local File Storage Directories"/>
16+
<description value="Verify that when a user deletes a folder in Media Gallery that the directory gets
17+
deleted in S3 and in the local file system."/>
18+
<severity value="CRITICAL"/>
19+
<group value="remote_storage_aws_s3_media_gallery_ui"/>
20+
</annotations>
21+
22+
<before>
23+
<createData entity="_emptyCmsPage" stepKey="createCMSPage"/>
24+
25+
<!-- Create Media Gallery Directories -->
26+
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdminBefore"/>
27+
<actionGroup ref="AdminOpenStandaloneMediaGalleryActionGroup" stepKey="openMediaGallery"/>
28+
<actionGroup ref="ResetAdminDataGridToDefaultViewActionGroup" stepKey="resetGrid"/>
29+
<actionGroup ref="AdminMediaGalleryFolderSelectActionGroup" stepKey="selectWysiwygFolder">
30+
<argument name="name" value="wysiwyg"/>
31+
</actionGroup>
32+
<actionGroup ref="AdminMediaGalleryOpenNewFolderFormActionGroup" stepKey="openCreateFolderForm"/>
33+
<actionGroup ref="AdminMediaGalleryCreateNewFolderActionGroup" stepKey="createFolder">
34+
<argument name="name" value="{{AdminMediaGalleryFolderData.name}}"/>
35+
</actionGroup>
36+
<actionGroup ref="AdminMediaGalleryOpenNewFolderFormActionGroup" stepKey="openCreateFolderForm2"/>
37+
<actionGroup ref="AdminMediaGalleryCreateNewFolderActionGroup" stepKey="createFolder2">
38+
<argument name="name" value="{{AdminMediaGalleryFolder2Data.name}}"/>
39+
</actionGroup>
40+
<actionGroup ref="AdminEnhancedMediaGalleryUploadImageActionGroup" stepKey="uploadImage">
41+
<argument name="image" value="ImageUpload"/>
42+
</actionGroup>
43+
</before>
44+
45+
<after>
46+
<deleteData createDataKey="createCMSPage" stepKey="deleteCMSPage"/>
47+
48+
<!-- Delete Created Directories -->
49+
<actionGroup ref="AdminOpenStandaloneMediaGalleryActionGroup" stepKey="openMediaGallery"/>
50+
<actionGroup ref="ResetAdminDataGridToDefaultViewActionGroup" stepKey="resetGrid"/>
51+
<actionGroup ref="AdminExpandMediaGalleryFolderActionGroup" stepKey="expandWysiwygFolder">
52+
<argument name="FolderName" value="wysiwyg"/>
53+
</actionGroup>
54+
<actionGroup ref="AdminMediaGalleryFolderSelectActionGroup" stepKey="select1stCreatedFolder">
55+
<argument name="name" value="{{AdminMediaGalleryFolderData.name}}"/>
56+
</actionGroup>
57+
<actionGroup ref="AdminMediaGalleryFolderDeleteActionGroup" stepKey="delete1stCreatedFolder"/>
58+
<actionGroup ref="AdminLogoutActionGroup" stepKey="logoutFromAdmin"/>
59+
</after>
60+
61+
62+
<!-- Verify Images & Directories in S3 & Local File System -->
63+
<helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertFileExists" stepKey="assertS3BaseImageExists">
64+
<argument name="filePath">media/wysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}/{{ImageUpload.file}}</argument>
65+
</helper>
66+
<helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertFileExists" stepKey="assertS3ThumbnailImageExists">
67+
<argument name="filePath">media/.thumbswysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}/{{ImageUpload.file}}</argument>
68+
</helper>
69+
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertDirectoryDoesNotExist" stepKey="assertLocalBaseImageDirectoryDoesNotExist">
70+
<argument name="path">pub/media/wysiwyg/{{AdminMediaGalleryFolderData.name}}</argument>
71+
</helper>
72+
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertFileExists" stepKey="assertLocalThumbnailImageExists">
73+
<argument name="filePath">pub/media/.thumbswysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}/{{ImageUpload.file}}</argument>
74+
</helper>
75+
76+
<!-- Create CMS Page w/ Uploaded Image & Trigger Local Sync -->
77+
<actionGroup ref="NavigateToCreatedCMSPageActionGroup" stepKey="navigateToCreatedCMSPage">
78+
<argument name="CMSPage" value="$$createCMSPage$$"/>
79+
</actionGroup>
80+
<actionGroup ref="AdminOpenMediaGalleryFromPageNoEditorActionGroup" stepKey="openMediaGalleryForPage"/>
81+
<actionGroup ref="ResetAdminDataGridToDefaultViewActionGroup" stepKey="resetGrid"/>
82+
<actionGroup ref="AdminExpandMediaGalleryFolderActionGroup" stepKey="expandWysiwygFolder">
83+
<argument name="FolderName" value="wysiwyg"/>
84+
</actionGroup>
85+
<actionGroup ref="AdminExpandMediaGalleryFolderActionGroup" stepKey="expand1stCreatedFolder">
86+
<argument name="FolderName" value="{{AdminMediaGalleryFolderData.name}}"/>
87+
</actionGroup>
88+
<actionGroup ref="AdminMediaGalleryFolderSelectActionGroup" stepKey="select2ndCreatedFolder">
89+
<argument name="name" value="{{AdminMediaGalleryFolder2Data.name}}"/>
90+
</actionGroup>
91+
<actionGroup ref="AdminMediaGalleryClickImageInGridActionGroup" stepKey="selectUploadedImage">
92+
<argument name="imageName" value="{{ImageUpload.file}}"/>
93+
</actionGroup>
94+
<actionGroup ref="AdminMediaGalleryClickAddSelectedActionGroup" stepKey="clickAddSelected"/>
95+
<actionGroup ref="AdminSaveAndContinueEditCmsPageActionGroup" stepKey="savePage"/>
96+
<actionGroup ref="NavigateToStorefrontForCreatedPageActionGroup" stepKey="navigateToPageOnStorefront">
97+
<argument name="page" value="$$createCMSPage.identifier$$"/>
98+
</actionGroup>
99+
100+
<!-- Verify Images in S3 & Local File System -->
101+
<helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertFileExists" stepKey="assertS3BaseImageExists2">
102+
<argument name="filePath">media/wysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}/{{ImageUpload.file}}</argument>
103+
</helper>
104+
<helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertFileExists" stepKey="assertS3ThumbnailImageExists2">
105+
<argument name="filePath">media/.thumbswysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}/{{ImageUpload.file}}</argument>
106+
</helper>
107+
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertFileExists" stepKey="assertLocalBaseImageExists2">
108+
<argument name="filePath">pub/media/wysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}/{{ImageUpload.file}}</argument>
109+
</helper>
110+
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertFileExists" stepKey="assertLocalThumbnailImageExists2">
111+
<argument name="filePath">pub/media/.thumbswysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}/{{ImageUpload.file}}</argument>
112+
</helper>
113+
114+
<!-- Delete 2nd Created Folder -->
115+
<actionGroup ref="AdminOpenStandaloneMediaGalleryActionGroup" stepKey="openMediaGallery"/>
116+
<actionGroup ref="ResetAdminDataGridToDefaultViewActionGroup" stepKey="resetGrid2"/>
117+
<actionGroup ref="AdminExpandMediaGalleryFolderActionGroup" stepKey="expandWysiwygFolder2">
118+
<argument name="FolderName" value="wysiwyg"/>
119+
</actionGroup>
120+
<actionGroup ref="AdminExpandMediaGalleryFolderActionGroup" stepKey="expand1stCreatedFolder2">
121+
<argument name="FolderName" value="{{AdminMediaGalleryFolderData.name}}"/>
122+
</actionGroup>
123+
<actionGroup ref="AdminMediaGalleryFolderSelectActionGroup" stepKey="select2ndCreatedFolder2">
124+
<argument name="name" value="{{AdminMediaGalleryFolder2Data.name}}"/>
125+
</actionGroup>
126+
<actionGroup ref="AdminMediaGalleryFolderDeleteActionGroup" stepKey="deleteFolder"/>
127+
<actionGroup ref="AdminMediaGalleryAssertFolderDoesNotExistActionGroup" stepKey="assertFolderWasDeleted">
128+
<argument name="name" value="{{AdminMediaGalleryFolder2Data.name}}"/>
129+
</actionGroup>
130+
131+
<!-- Verify Images & Directories in S3 & Local File System -->
132+
<helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertDirectoryExists" stepKey="assertS31stCreatedBaseFolderExists">
133+
<argument name="path">media/wysiwyg/{{AdminMediaGalleryFolderData.name}}</argument>
134+
</helper>
135+
<helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertDirectoryDoesNotExist" stepKey="assertS32ndCreatedBaseFolderDoesNotExist">
136+
<argument name="path">media/wysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}</argument>
137+
</helper>
138+
<helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertFileExists" stepKey="assertS3ThumbnailImageExists3">
139+
<argument name="filePath">media/.thumbswysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}/{{ImageUpload.file}}</argument>
140+
</helper>
141+
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertDirectoryExists" stepKey="assertLocal1stCreatedBaseFolderExists">
142+
<argument name="path">pub/media/wysiwyg/{{AdminMediaGalleryFolderData.name}}</argument>
143+
</helper>
144+
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertDirectoryDoesNotExist" stepKey="assertLocal2ndCreatedBaseFolderDoesNotExist">
145+
<argument name="path">pub/media/wysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}</argument>
146+
</helper>
147+
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertFileExists" stepKey="assertLocalThumbnailImageExists3">
148+
<argument name="filePath">pub/media/.thumbswysiwyg/{{AdminMediaGalleryFolderData.name}}/{{AdminMediaGalleryFolder2Data.name}}/{{ImageUpload.file}}</argument>
149+
</helper>
150+
</test>
151+
</tests>

0 commit comments

Comments
 (0)