Skip to content

Commit eef788e

Browse files
committed
MAGETWO-61060: [Backport] - Incorrect URLs in sitemap when generated from admin with 'Use Secure URLs in Admin' = Yes - for 2.0
1 parent 54d4e70 commit eef788e

File tree

2 files changed

+45
-18
lines changed

2 files changed

+45
-18
lines changed

app/code/Magento/Sitemap/Model/Sitemap.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ public function __construct(
201201
*/
202202
protected function _construct()
203203
{
204-
$this->_init('Magento\Sitemap\Model\ResourceModel\Sitemap');
204+
$this->_init(\Magento\Sitemap\Model\ResourceModel\Sitemap::class);
205205
}
206206

207207
/**
@@ -586,7 +586,12 @@ protected function _getBaseDir()
586586
*/
587587
protected function _getStoreBaseUrl($type = \Magento\Framework\UrlInterface::URL_TYPE_LINK)
588588
{
589-
return rtrim($this->_storeManager->getStore($this->getStoreId())->getBaseUrl($type), '/') . '/';
589+
/** @var \Magento\Store\Model\Store $store */
590+
$store = $this->_storeManager->getStore($this->getStoreId());
591+
592+
$isSecure = $store->isUrlSecure();
593+
594+
return rtrim($store->getBaseUrl($type, $isSecure), '/') . '/';
590595
}
591596

592597
/**

app/code/Magento/Sitemap/Test/Unit/Model/SitemapTest.php

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -50,22 +50,27 @@ class SitemapTest extends \PHPUnit_Framework_TestCase
5050
*/
5151
protected $_fileMock;
5252

53+
/**
54+
* @var \Magento\Store\Model\StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject
55+
*/
56+
private $storeManagerMock;
57+
5358
/**
5459
* Set helper mocks, create resource model mock
5560
*/
5661
protected function setUp()
5762
{
5863
$this->_sitemapCategoryMock = $this->getMockBuilder(
59-
'Magento\Sitemap\Model\ResourceModel\Catalog\Category'
64+
\Magento\Sitemap\Model\ResourceModel\Catalog\Category::class
6065
)->disableOriginalConstructor()->getMock();
6166
$this->_sitemapProductMock = $this->getMockBuilder(
62-
'Magento\Sitemap\Model\ResourceModel\Catalog\Product'
67+
\Magento\Sitemap\Model\ResourceModel\Catalog\Product::class
6368
)->disableOriginalConstructor()->getMock();
6469
$this->_sitemapCmsPageMock = $this->getMockBuilder(
65-
'Magento\Sitemap\Model\ResourceModel\Cms\Page'
70+
\Magento\Sitemap\Model\ResourceModel\Cms\Page::class
6671
)->disableOriginalConstructor()->getMock();
6772
$this->_helperMockSitemap = $this->getMock(
68-
'Magento\Sitemap\Helper\Data',
73+
\Magento\Sitemap\Helper\Data::class,
6974
[
7075
'getCategoryChangefreq',
7176
'getProductChangefreq',
@@ -114,23 +119,23 @@ protected function setUp()
114119
$this->_helperMockSitemap->expects($this->any())->method('getPagePriority')->will($this->returnValue('0.25'));
115120

116121
$this->_resourceMock = $this->getMockBuilder(
117-
'Magento\Sitemap\Model\ResourceModel\Sitemap'
122+
\Magento\Sitemap\Model\ResourceModel\Sitemap::class
118123
)->setMethods(
119124
['_construct', 'beginTransaction', 'rollBack', 'save', 'addCommitCallback', 'commit', '__wakeup']
120125
)->disableOriginalConstructor()->getMock();
121126
$this->_resourceMock->expects($this->any())->method('addCommitCallback')->will($this->returnSelf());
122127

123128
$this->_fileMock = $this->getMockBuilder(
124-
'Magento\Framework\Filesystem\File\Write'
129+
\Magento\Framework\Filesystem\File\Write::class
125130
)->disableOriginalConstructor()->getMock();
126131

127132
$this->_directoryMock = $this->getMockBuilder(
128-
'Magento\Framework\Filesystem\Directory\Write'
133+
\Magento\Framework\Filesystem\Directory\Write::class
129134
)->disableOriginalConstructor()->getMock();
130135
$this->_directoryMock->expects($this->any())->method('openFile')->will($this->returnValue($this->_fileMock));
131136

132137
$this->_filesystemMock = $this->getMockBuilder(
133-
'Magento\Framework\Filesystem'
138+
\Magento\Framework\Filesystem::class
134139
)->setMethods(
135140
['getDirectoryWrite']
136141
)->disableOriginalConstructor()->getMock();
@@ -473,6 +478,20 @@ function ($from, $to) {
473478

474479
$model = $this->_getModelMock(true);
475480

481+
$storeMock = $this->getMockBuilder(\Magento\Store\Model\Store::class)
482+
->setMethods(['isFrontUrlSecure', 'getBaseUrl'])
483+
->disableOriginalConstructor()
484+
->getMock();
485+
$storeMock->expects($this->atLeastOnce())->method('isFrontUrlSecure')->willReturn(false);
486+
$storeMock->expects($this->atLeastOnce())
487+
->method('getBaseUrl')
488+
->with($this->isType('string'), false)
489+
->willReturn('http://store.com/');
490+
$this->storeManagerMock->expects($this->atLeastOnce())
491+
->method('getStore')
492+
->with(1)
493+
->willReturn($storeMock);
494+
476495
return $model;
477496
}
478497

@@ -490,7 +509,6 @@ protected function _getModelMock($mockBeforeSave = false)
490509
'_getBaseDir',
491510
'_getFileObject',
492511
'_afterSave',
493-
'_getStoreBaseUrl',
494512
'_getCurrentDateTime',
495513
'_getCategoryItemsCollection',
496514
'_getProductItemsCollection',
@@ -554,15 +572,14 @@ protected function _getModelMock($mockBeforeSave = false)
554572

555573
/** @var $model \Magento\Sitemap\Model\Sitemap */
556574
$model = $this->getMockBuilder(
557-
'Magento\Sitemap\Model\Sitemap'
575+
\Magento\Sitemap\Model\Sitemap::class
558576
)->setMethods(
559577
$methods
560578
)->setConstructorArgs(
561579
$this->_getModelConstructorArgs()
562580
)->getMock();
563581

564582
$model->expects($this->any())->method('_getResource')->will($this->returnValue($this->_resourceMock));
565-
$model->expects($this->any())->method('_getStoreBaseUrl')->will($this->returnValue('http://store.com/'));
566583
$model->expects(
567584
$this->any()
568585
)->method(
@@ -585,7 +602,7 @@ protected function _getModelMock($mockBeforeSave = false)
585602
protected function _getModelConstructorArgs()
586603
{
587604
$categoryFactory = $this->getMockBuilder(
588-
'Magento\Sitemap\Model\ResourceModel\Catalog\CategoryFactory'
605+
\Magento\Sitemap\Model\ResourceModel\Catalog\CategoryFactory::class
589606
)->setMethods(
590607
['create']
591608
)->disableOriginalConstructor()->getMock();
@@ -598,26 +615,31 @@ protected function _getModelConstructorArgs()
598615
);
599616

600617
$productFactory = $this->getMockBuilder(
601-
'Magento\Sitemap\Model\ResourceModel\Catalog\ProductFactory'
618+
\Magento\Sitemap\Model\ResourceModel\Catalog\ProductFactory::class
602619
)->setMethods(
603620
['create']
604621
)->disableOriginalConstructor()->getMock();
605622
$productFactory->expects($this->any())->method('create')->will($this->returnValue($this->_sitemapProductMock));
606623

607624
$cmsFactory = $this->getMockBuilder(
608-
'Magento\Sitemap\Model\ResourceModel\Cms\PageFactory'
625+
\Magento\Sitemap\Model\ResourceModel\Cms\PageFactory::class
609626
)->setMethods(
610627
['create']
611628
)->disableOriginalConstructor()->getMock();
612629
$cmsFactory->expects($this->any())->method('create')->will($this->returnValue($this->_sitemapCmsPageMock));
613630

631+
$this->storeManagerMock = $this->getMockBuilder(\Magento\Store\Model\StoreManagerInterface::class)
632+
->setMethods(['getStore'])
633+
->getMockForAbstractClass();
634+
614635
$objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
615636
$constructArguments = $objectManager->getConstructArguments(
616-
'Magento\Sitemap\Model\Sitemap',
637+
\Magento\Sitemap\Model\Sitemap::class,
617638
[
618639
'categoryFactory' => $categoryFactory,
619640
'productFactory' => $productFactory,
620641
'cmsFactory' => $cmsFactory,
642+
'storeManager' => $this->storeManagerMock,
621643
'sitemapData' => $this->_helperMockSitemap,
622644
'filesystem' => $this->_filesystemMock
623645
]
@@ -641,7 +663,7 @@ public function testGetSitemapUrl($storeBaseUrl, $documentRoot, $baseDir, $sitem
641663
{
642664
/** @var $model \Magento\Sitemap\Model\Sitemap */
643665
$model = $this->getMockBuilder(
644-
'Magento\Sitemap\Model\Sitemap'
666+
\Magento\Sitemap\Model\Sitemap::class
645667
)->setMethods(
646668
['_getStoreBaseUrl', '_getDocumentRoot', '_getBaseDir', '_construct']
647669
)->setConstructorArgs(

0 commit comments

Comments
 (0)