From c49a9d8be24a331e60f80c24e7eb2217e62f20d6 Mon Sep 17 00:00:00 2001
From: Stanislav Lopukhov <slopukhov@magento.com>
Date: Mon, 16 Jan 2017 15:08:36 +0200
Subject: [PATCH] MAGETWO-58600: Remove uses of unserialize in
 \Magento\UrlRewrite\Model\UrlRewrite attribute metadata

---
 .../Observer/UrlRewriteHandler.php            | 14 +++++++-------
 .../ChildrenUrlRewriteGeneratorTest.php       | 13 ++++++++++---
 .../Model/CategoryUrlRewriteGeneratorTest.php |  6 +++++-
 .../Unit/Model/Map/UrlRewriteFinderTest.php   |  7 ++++++-
 .../Unit/Observer/UrlRewriteHandlerTest.php   | 19 +++++++++++++++++++
 5 files changed, 47 insertions(+), 12 deletions(-)

diff --git a/app/code/Magento/CatalogUrlRewrite/Observer/UrlRewriteHandler.php b/app/code/Magento/CatalogUrlRewrite/Observer/UrlRewriteHandler.php
index cab6bdcdf34..9d531506755 100644
--- a/app/code/Magento/CatalogUrlRewrite/Observer/UrlRewriteHandler.php
+++ b/app/code/Magento/CatalogUrlRewrite/Observer/UrlRewriteHandler.php
@@ -5,8 +5,6 @@
  */
 namespace Magento\CatalogUrlRewrite\Observer;
 
-use Magento\UrlRewrite\Service\V1\Data\UrlRewrite;
-
 class UrlRewriteHandler
 {
     /** @var \Magento\CatalogUrlRewrite\Model\Category\ChildrenCategoriesProvider */
@@ -130,7 +128,7 @@ class UrlRewriteHandler
      * @param int $storeId
      * @param bool $saveRewriteHistory
      * @param int|null $rootCategoryId
-     * @return UrlRewrite[]
+     * @return array
      */
     public function getCategoryProductsUrlRewrites(
         \Magento\Catalog\Model\Category $category,
@@ -187,15 +185,17 @@ class UrlRewriteHandler
         foreach ($categoryIds as $categoryId) {
             $this->urlPersist->deleteByData(
                 [
-                    UrlRewrite::ENTITY_ID => $categoryId,
-                    UrlRewrite::ENTITY_TYPE =>
+                    \Magento\UrlRewrite\Service\V1\Data\UrlRewrite::ENTITY_ID =>
+                        $categoryId,
+                    \Magento\UrlRewrite\Service\V1\Data\UrlRewrite::ENTITY_TYPE =>
                         \Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGenerator::ENTITY_TYPE,
                 ]
             );
             $this->urlPersist->deleteByData(
                 [
-                    UrlRewrite::METADATA => $this->serializer->serialize(['category_id' => $categoryId]),
-                    UrlRewrite::ENTITY_TYPE =>
+                    \Magento\UrlRewrite\Service\V1\Data\UrlRewrite::METADATA =>
+                        $this->serializer->serialize(['category_id' => $categoryId]),
+                    \Magento\UrlRewrite\Service\V1\Data\UrlRewrite::ENTITY_TYPE =>
                         \Magento\CatalogUrlRewrite\Model\ProductUrlRewriteGenerator::ENTITY_TYPE,
                 ]
             );
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/ChildrenUrlRewriteGeneratorTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/ChildrenUrlRewriteGeneratorTest.php
index f41d35f7688..6ff97830c8e 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/ChildrenUrlRewriteGeneratorTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Category/ChildrenUrlRewriteGeneratorTest.php
@@ -6,6 +6,7 @@
 namespace Magento\CatalogUrlRewrite\Test\Unit\Model\Category;
 
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
+use Magento\Framework\Serialize\Serializer\Json;
 
 class ChildrenUrlRewriteGeneratorTest extends \PHPUnit_Framework_TestCase
 {
@@ -27,8 +28,14 @@ class ChildrenUrlRewriteGeneratorTest extends \PHPUnit_Framework_TestCase
     /** @var \PHPUnit_Framework_MockObject_MockObject */
     private $mergeDataProvider;
 
+    /** @var \PHPUnit_Framework_MockObject_MockObject */
+    private $serializerMock;
+
     protected function setUp()
     {
+        $this->serializerMock = $this->getMockBuilder(Json::class)
+            ->disableOriginalConstructor()
+            ->getMock();
         $this->childrenCategoriesProvider = $this->getMockBuilder(
             \Magento\CatalogUrlRewrite\Model\Category\ChildrenCategoriesProvider::class
         )->disableOriginalConstructor()->getMock();
@@ -84,13 +91,13 @@ class ChildrenUrlRewriteGeneratorTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue($saveRewritesHistory));
         $this->categoryUrlRewriteGeneratorFactory->expects($this->once())->method('create')
             ->will($this->returnValue($this->categoryUrlRewriteGenerator));
-        $url1 = new \Magento\UrlRewrite\Service\V1\Data\UrlRewrite();
+        $url1 = new \Magento\UrlRewrite\Service\V1\Data\UrlRewrite([], $this->serializerMock);
         $url1->setRequestPath('category-1')
             ->setStoreId(1);
-        $url2 = new \Magento\UrlRewrite\Service\V1\Data\UrlRewrite();
+        $url2 = new \Magento\UrlRewrite\Service\V1\Data\UrlRewrite([], $this->serializerMock);
         $url2->setRequestPath('category-2')
             ->setStoreId(2);
-        $url3 = new \Magento\UrlRewrite\Service\V1\Data\UrlRewrite();
+        $url3 = new \Magento\UrlRewrite\Service\V1\Data\UrlRewrite([], $this->serializerMock);
         $url3->setRequestPath('category-1')
             ->setStoreId(1);
         $this->categoryUrlRewriteGenerator->expects($this->once())->method('generate')
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/CategoryUrlRewriteGeneratorTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/CategoryUrlRewriteGeneratorTest.php
index 83d481c347e..cfc6243525f 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/CategoryUrlRewriteGeneratorTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/CategoryUrlRewriteGeneratorTest.php
@@ -8,9 +8,13 @@
 
 namespace Magento\CatalogUrlRewrite\Test\Unit\Model;
 
-use Magento\Catalog\Model\Category;
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 
+/**
+ * Class CategoryUrlRewriteGeneratorTest
+ *
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ */
 class CategoryUrlRewriteGeneratorTest extends \PHPUnit_Framework_TestCase
 {
     /** @var \PHPUnit_Framework_MockObject_MockObject */
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/UrlRewriteFinderTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/UrlRewriteFinderTest.php
index b0c4500dab3..fbabbba6a27 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/UrlRewriteFinderTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Model/Map/UrlRewriteFinderTest.php
@@ -13,6 +13,7 @@ use Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory;
 use Magento\UrlRewrite\Service\V1\Data\UrlRewrite;
 use Magento\CatalogUrlRewrite\Model\Map\DataCategoryUrlRewriteDatabaseMap;
 use Magento\CatalogUrlRewrite\Model\Map\DataProductUrlRewriteDatabaseMap;
+use Magento\Framework\Serialize\Serializer\Json;
 
 /**
  * Class UrlRewriteFinderTest
@@ -34,12 +35,16 @@ class UrlRewriteFinderTest extends \PHPUnit_Framework_TestCase
     /** @var UrlRewriteFinder|\PHPUnit_Framework_MockObject_MockObject */
     private $model;
 
+    /** @var \PHPUnit_Framework_MockObject_MockObject */
+    private $serializerMock;
+
     protected function setUp()
     {
+        $this->serializerMock = $this->getMock(Json::class, [], [], '', false);
         $this->databaseMapPoolMock = $this->getMock(DatabaseMapPool::class, [], [], '', false);
         $this->urlFinderMock = $this->getMock(UrlFinderInterface::class);
         $this->urlRewriteFactoryMock = $this->getMock(UrlRewriteFactory::class, ['create'], [], '', false);
-        $this->urlRewritePrototypeMock = new UrlRewrite();
+        $this->urlRewritePrototypeMock = new UrlRewrite([], $this->serializerMock);
 
         $this->urlRewriteFactoryMock->expects($this->any())
             ->method('create')
diff --git a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/UrlRewriteHandlerTest.php b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/UrlRewriteHandlerTest.php
index 3ded5d6512b..2c139d8f395 100644
--- a/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/UrlRewriteHandlerTest.php
+++ b/app/code/Magento/CatalogUrlRewrite/Test/Unit/Observer/UrlRewriteHandlerTest.php
@@ -12,6 +12,8 @@ use Magento\CatalogUrlRewrite\Model\ProductUrlRewriteGenerator;
 use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;
 use Magento\UrlRewrite\Model\UrlPersistInterface;
 use Magento\Framework\Serialize\Serializer\Json;
+use Magento\UrlRewrite\Model\MergeDataProviderFactory;
+use \Magento\UrlRewrite\Model\MergeDataProvider;
 
 class UrlRewriteHandlerTest extends \PHPUnit_Framework_TestCase
 {
@@ -45,6 +47,11 @@ class UrlRewriteHandlerTest extends \PHPUnit_Framework_TestCase
      */
     protected $collectionFactoryMock;
 
+    /**
+     * @var MergeDataProviderFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $mergeDataProviderFactoryMock;
+
     /**
      * @var Json|\PHPUnit_Framework_MockObject_MockObject
      */
@@ -68,6 +75,17 @@ class UrlRewriteHandlerTest extends \PHPUnit_Framework_TestCase
         $this->collectionFactoryMock = $this->getMockBuilder(CollectionFactory::class)
             ->disableOriginalConstructor()
             ->getMock();
+        $this->mergeDataProviderFactoryMock = $this->getMockBuilder(MergeDataProviderFactory::class)
+            ->setMethods(['create'])
+            ->disableOriginalConstructor()
+            ->getMock();
+        $mergeDataProviderMock = $this->getMockBuilder(MergeDataProvider::class)
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->mergeDataProviderFactoryMock->expects($this->any())
+            ->method('create')
+            ->willReturn($mergeDataProviderMock);
+
         $this->serializerMock = $this->getMockBuilder(Json::class)
             ->disableOriginalConstructor()
             ->getMock();
@@ -78,6 +96,7 @@ class UrlRewriteHandlerTest extends \PHPUnit_Framework_TestCase
             $this->productUrlRewriteGeneratorMock,
             $this->urlPersistMock,
             $this->collectionFactoryMock,
+            $this->mergeDataProviderFactoryMock,
             $this->serializerMock
         );
     }
-- 
GitLab