46 $this->createServiceInfo = [
48 'resourcePath' =>
'/V1/products/simple/media',
52 'service' =>
'catalogProductAttributeMediaGalleryManagementV1',
53 'serviceVersion' =>
'V1',
54 'operation' =>
'catalogProductAttributeMediaGalleryManagementV1Create',
58 $this->updateServiceInfo = [
60 'resourcePath' =>
'/V1/products/simple/media',
64 'service' =>
'catalogProductAttributeMediaGalleryManagementV1',
65 'serviceVersion' =>
'V1',
66 'operation' =>
'catalogProductAttributeMediaGalleryManagementV1Update',
69 $this->deleteServiceInfo = [
74 'service' =>
'catalogProductAttributeMediaGalleryManagementV1',
75 'serviceVersion' =>
'V1',
76 'operation' =>
'catalogProductAttributeMediaGalleryManagementV1Remove',
79 $this->testImagePath =
__DIR__ . DIRECTORY_SEPARATOR .
'_files' . DIRECTORY_SEPARATOR .
'test_image.jpg';
103 $image = array_shift($mediaGallery[
'images']);
104 return (
int)
$image[
'value_id'];
114 'media_type' => \Magento\Catalog\Model\Product\Attribute\Backend\Media\ImageEntryConverter::MEDIA_TYPE_CODE,
115 'label' =>
'Image Text',
117 'types' => [
'image'],
128 $mediaGallery = $targetProduct->getData(
'media_gallery');
130 $this->assertCount(1, $mediaGallery[
'images']);
131 $updatedImage = array_shift($mediaGallery[
'images']);
132 $this->assertEquals($actualResult, $updatedImage[
'value_id']);
133 $this->assertEquals(
'Image Text', $updatedImage[
'label']);
134 $this->assertEquals(1, $updatedImage[
'position']);
135 $this->assertEquals(0, $updatedImage[
'disabled']);
136 $this->assertStringStartsWith(
'/t/e/test_image', $updatedImage[
'file']);
137 $this->assertEquals($updatedImage[
'file'], $targetProduct->getData(
'image'));
147 'media_type' => \Magento\Catalog\Model\Product\Attribute\Backend\Media\ImageEntryConverter::MEDIA_TYPE_CODE,
148 'label' =>
'Image Text',
150 'types' => [
'image'],
161 $mediaGallery = $targetProduct->getData(
'media_gallery');
163 $this->assertCount(1, $mediaGallery[
'images']);
164 $updatedImage = array_shift($mediaGallery[
'images']);
165 $this->assertEquals($actualResult, $updatedImage[
'value_id']);
166 $this->assertEquals(
'Image Text', $updatedImage[
'label']);
167 $this->assertEquals(1, $updatedImage[
'position']);
168 $this->assertEquals(0, $updatedImage[
'disabled']);
169 $this->assertStringStartsWith(
'/t/e/test_image', $updatedImage[
'file']);
170 $this->assertEquals($updatedImage[
'file'], $targetProduct->getData(
'image'));
180 'media_type' => \Magento\Catalog\Model\Product\Attribute\Backend\Media\ImageEntryConverter::MEDIA_TYPE_CODE,
181 'label' =>
'Image Text',
183 'types' => [
'image'],
187 'type' =>
'image/jpeg',
188 'name' =>
'test_image.jpg',
193 $this->createServiceInfo,
201 $mediaGallery = $targetProduct->getData(
'media_gallery');
202 $this->assertCount(1, $mediaGallery[
'images']);
203 $updatedImage = array_shift($mediaGallery[
'images']);
205 $this->assertEquals(
'Image Text', $updatedImage[
'label']);
206 $this->assertEquals($actualResult, $updatedImage[
'value_id']);
207 $this->assertEquals(1, $updatedImage[
'position']);
208 $this->assertEquals(0, $updatedImage[
'disabled']);
209 $this->assertStringStartsWith(
'/t/e/test_image', $updatedImage[
'file']);
210 $this->assertEquals($updatedImage[
'file'], $targetProduct->getData(
'image'));
212 $this->assertNull($updatedImage[
'label_default']);
213 $this->assertNull($updatedImage[
'position_default']);
214 $this->assertNull($updatedImage[
'disabled_default']);
226 'label' =>
'Updated Image Text',
228 'types' => [
'thumbnail'],
230 'media_type' =>
'image',
234 $this->updateServiceInfo[
'rest'][
'resourcePath'] = $this->updateServiceInfo[
'rest'][
'resourcePath']
240 $this->assertEquals(
'/m/a/magento_image.jpg', $targetProduct->getData(
'thumbnail'));
241 $this->assertEquals(
'no_selection', $targetProduct->getData(
'image'));
242 $this->assertEquals(
'no_selection', $targetProduct->getData(
'small_image'));
243 $mediaGallery = $targetProduct->getData(
'media_gallery');
244 $this->assertCount(1, $mediaGallery[
'images']);
245 $updatedImage = array_shift($mediaGallery[
'images']);
246 $this->assertEquals(
'Updated Image Text', $updatedImage[
'label']);
247 $this->assertEquals(
'/m/a/magento_image.jpg', $updatedImage[
'file']);
248 $this->assertEquals(10, $updatedImage[
'position']);
249 $this->assertEquals(1, $updatedImage[
'disabled']);
250 $this->assertEquals(
'Updated Image Text', $updatedImage[
'label_default']);
251 $this->assertEquals(10, $updatedImage[
'position_default']);
252 $this->assertEquals(1, $updatedImage[
'disabled_default']);
264 'label' =>
'Updated Image Text',
266 'types' => [
'thumbnail'],
268 'media_type' =>
'image',
272 $this->updateServiceInfo[
'rest'][
'resourcePath'] = $this->updateServiceInfo[
'rest'][
'resourcePath']
278 $this->assertEquals(
'/m/a/magento_image.jpg', $targetProduct->getData(
'thumbnail'));
279 $mediaGallery = $targetProduct->getData(
'media_gallery');
280 $this->assertCount(1, $mediaGallery[
'images']);
281 $updatedImage = array_shift($mediaGallery[
'images']);
283 $this->assertEquals(
'Updated Image Text', $updatedImage[
'label']);
284 $this->assertEquals(
'/m/a/magento_image.jpg', $updatedImage[
'file']);
285 $this->assertEquals(10, $updatedImage[
'position']);
286 $this->assertEquals(1, $updatedImage[
'disabled']);
288 $this->assertEquals(
'Image Alt Text', $updatedImage[
'label_default']);
289 $this->assertEquals(1, $updatedImage[
'position_default']);
290 $this->assertEquals(0, $updatedImage[
'disabled_default']);
299 $this->deleteServiceInfo[
'rest'][
'resourcePath'] =
"/V1/products/simple/media/{$entryId}";
307 $mediaGallery = $targetProduct->getData(
'media_gallery');
308 $this->assertCount(0, $mediaGallery[
'images']);
318 $encodedContent =
'not_a_base64_encoded_content';
321 'media_type' =>
'image',
322 'label' =>
'Image Text',
324 'types' => [
'image'],
327 'base64_encoded_data' => $encodedContent,
328 'type' =>
'image/jpeg',
329 'name' =>
'test_image.jpg',
343 $encodedContent = base64_encode(
'not_an_image');
346 'media_type' =>
'image',
347 'label' =>
'Image Text',
349 'types' => [
'image'],
352 'base64_encoded_data' => $encodedContent,
353 'type' =>
'image/jpeg',
354 'name' =>
'test_image.jpg',
371 'media_type' =>
'image',
372 'label' =>
'Image Text',
374 'types' => [
'image'],
377 'base64_encoded_data' => $encodedContent,
378 'type' =>
'wrong_mime_type',
379 'name' =>
'test_image.jpg',
392 $this->createServiceInfo[
'rest'][
'resourcePath'] =
'/V1/products/wrong_product_sku/media';
396 'media_type' =>
'image',
397 'label' =>
'Image Text',
399 'types' => [
'image'],
403 'type' =>
'image/jpeg',
404 'name' =>
'test_image.jpg',
420 'media_type' =>
'image',
421 'label' =>
'Image Text',
423 'types' => [
'image'],
427 'type' =>
'image/jpeg',
428 'name' =>
'test/\\{}|:"<>',
441 $this->updateServiceInfo[
'rest'][
'resourcePath'] =
'/V1/products/wrong_product_sku/media' 444 'sku' =>
'wrong_product_sku',
447 'media_type' =>
'image',
448 'label' =>
'Updated Image Text',
450 'types' => [
'thumbnail'],
469 'media_type' =>
'image',
470 'label' =>
'Updated Image Text',
472 'types' => [
'thumbnail'],
477 $this->updateServiceInfo[
'rest'][
'resourcePath'] = $this->updateServiceInfo[
'rest'][
'resourcePath']
489 $this->deleteServiceInfo[
'rest'][
'resourcePath'] =
'/V1/products/wrong_product_sku/media/9999';
491 'sku' =>
'wrong_product_sku',
505 $this->deleteServiceInfo[
'rest'][
'resourcePath'] =
'/V1/products/simple/media/9999';
517 public function testGet()
519 $productSku =
'simple';
526 $imageId =
$image[
'value_id'];
529 'label' =>
$image[
'label'],
530 'media_type' =>
$image[
'media_type'],
531 'position' =>
$image[
'position'],
532 'disabled' => (bool)
$image[
'disabled'],
534 'types' => [
'image',
'small_image',
'thumbnail'],
539 'resourcePath' =>
'/V1/products/' . $productSku .
'/media/' . $imageId,
543 'service' =>
'catalogProductAttributeMediaGalleryManagementV1',
544 'serviceVersion' =>
'V1',
545 'operation' =>
'catalogProductAttributeMediaGalleryManagementV1Get',
549 'sku' => $productSku,
550 'entryId' => $imageId,
553 $actual = (array)
$data;
554 $this->assertEquals($expected[
'label'], $actual[
'label']);
555 $this->assertEquals($expected[
'position'], $actual[
'position']);
556 $this->assertEquals($expected[
'file'], $actual[
'file']);
557 $this->assertEquals($expected[
'types'], $actual[
'types']);
558 $this->assertEquals($expected[
'media_type'], $actual[
'media_type']);
559 $this->assertEquals($expected[
'disabled'], (
bool)$actual[
'disabled']);
567 $productSku =
'simple';
570 'resourcePath' =>
'/V1/products/' . urlencode($productSku) .
'/media',
574 'service' =>
'catalogProductAttributeMediaGalleryManagementV1',
575 'serviceVersion' =>
'V1',
576 'operation' =>
'catalogProductAttributeMediaGalleryManagementV1GetList',
581 'sku' => $productSku,
585 $image = reset($imageList);
586 $this->assertEquals(
'/m/a/magento_image.jpg',
$image[
'file']);
587 $this->assertNotEmpty(
$image[
'types']);
588 $imageTypes =
$image[
'types'];
589 $this->assertContains(
'image', $imageTypes);
590 $this->assertContains(
'small_image', $imageTypes);
591 $this->assertContains(
'thumbnail', $imageTypes);
596 $productSku =
'absent_sku_' .
time();
599 'resourcePath' =>
'/V1/products/' . urlencode($productSku) .
'/media',
603 'service' =>
'catalogProductAttributeMediaGalleryManagementV1',
604 'serviceVersion' =>
'V1',
605 'operation' =>
'catalogProductAttributeMediaGalleryManagementV1GetList',
610 'sku' => $productSku,
612 if (TESTS_WEB_API_ADAPTER == self::ADAPTER_SOAP) {
613 $this->expectException(
'SoapFault');
614 $this->expectExceptionMessage(
615 "The product that was requested doesn't exist. Verify the product and try again." 618 $this->expectException(
'Exception');
619 $this->expectExceptionCode(404);
630 'media_type' =>
'external-video',
631 'video_provider' =>
'vimeo',
632 'video_url' =>
'https://vimeo.com/testUrl',
633 'video_title' =>
'Vimeo Test Title',
634 'video_description' =>
'test description',
635 'video_metadata' =>
'video meta data' 640 'media_type' =>
'external-video',
641 'label' =>
'Image Text',
650 'extension_attributes' => [
657 $mediaGallery = $targetProduct->getData(
'media_gallery');
659 $this->assertCount(1, $mediaGallery[
'images']);
660 $updatedImage = array_shift($mediaGallery[
'images']);
661 $this->assertEquals($actualResult, $updatedImage[
'value_id']);
662 $this->assertEquals(
'Image Text', $updatedImage[
'label']);
663 $this->assertEquals(1, $updatedImage[
'position']);
664 $this->assertEquals(0, $updatedImage[
'disabled']);
665 $this->assertStringStartsWith(
'/t/e/test_image', $updatedImage[
'file']);
_webApiCall( $serviceInfo, $arguments=[], $webApiAdapterCode=null, $storeCode=null, $integration=null)
defined('TESTS_BP')||define('TESTS_BP' __DIR__
const BASE64_ENCODED_DATA
static getObjectManager()