From 3e49e0ff078538756074d40b6125f4f75bb5f07a Mon Sep 17 00:00:00 2001
From: Ankur Kaneria <akaneria@ebay.com>
Date: Tue, 1 Mar 2016 10:05:29 -0600
Subject: [PATCH] MAGETWO-48479: JS errors on create backup page

- Reduced client side prolong request interval to every 25 seconds
- Updated logic to set correct cookie path for admin cookie
---
 setup/pub/magento/setup/main.js                          | 2 +-
 setup/src/Magento/Setup/Controller/Session.php           | 9 ++++++---
 .../Magento/Setup/Test/Unit/Controller/SessionTest.php   | 6 ++++--
 3 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/setup/pub/magento/setup/main.js b/setup/pub/magento/setup/main.js
index 00badd46416..1049c65eb90 100644
--- a/setup/pub/magento/setup/main.js
+++ b/setup/pub/magento/setup/main.js
@@ -46,7 +46,7 @@ main.controller('navigationController',
                     .error(function (result) {
                     });
             },
-            120000
+            25000
         );
 
         $scope.moduleName = $localStorage.moduleName;
diff --git a/setup/src/Magento/Setup/Controller/Session.php b/setup/src/Magento/Setup/Controller/Session.php
index 60dca027219..27a13cfa178 100644
--- a/setup/src/Magento/Setup/Controller/Session.php
+++ b/setup/src/Magento/Setup/Controller/Session.php
@@ -46,10 +46,13 @@ class Session extends AbstractActionController
                 /** @var \Magento\Framework\App\State $adminAppState */
                 $adminAppState = $objectManager->get('Magento\Framework\App\State');
                 $adminAppState->setAreaCode(\Magento\Framework\App\Area::AREA_ADMIN);
-
-                /* @var \Magento\Backend\Model\Auth\Session $session */
                 $sessionConfig = $objectManager->get('Magento\Backend\Model\Session\AdminConfig');
-                $sessionConfig->setCookiePath('/setup');
+                /** @var \Magento\Backend\Model\Url $backendUrl */
+                $backendUrl = $objectManager->get('Magento\Backend\Model\Url');
+                $urlPath = parse_url($backendUrl->getBaseUrl(), PHP_URL_PATH);
+                $cookiePath = $urlPath . 'setup';
+                $sessionConfig->setCookiePath($cookiePath);
+                /* @var \Magento\Backend\Model\Auth\Session $session */
                 $session = $objectManager->create(
                     'Magento\Backend\Model\Auth\Session',
                     [
diff --git a/setup/src/Magento/Setup/Test/Unit/Controller/SessionTest.php b/setup/src/Magento/Setup/Test/Unit/Controller/SessionTest.php
index efb17735007..05ba6730649 100644
--- a/setup/src/Magento/Setup/Test/Unit/Controller/SessionTest.php
+++ b/setup/src/Magento/Setup/Test/Unit/Controller/SessionTest.php
@@ -31,7 +31,6 @@ class SessionTest extends \PHPUnit_Framework_TestCase
         $objectManagerProvider = $this->getMock('Magento\Setup\Model\ObjectManagerProvider', ['get'], [], '', false);
         $this->objectManager = $objectManager;
         $this->objectManagerProvider = $objectManagerProvider;
-
         $this->serviceManager = $this->getMock('Zend\ServiceManager\ServiceManager', ['get'], [], '', false);
     }
 
@@ -52,10 +51,12 @@ class SessionTest extends \PHPUnit_Framework_TestCase
         $sessionConfigMock =
             $this->getMock('Magento\Backend\Model\Session\AdminConfig', ['setCookiePath'], [], '', false);
         $sessionConfigMock->expects($this->once())->method('setCookiePath');
+        $urlMock = $this->getMock('\Magento\Backend\Model\Url', [], [], '', false);
 
         $returnValueMap = [
             ['Magento\Framework\App\State', $stateMock],
-            ['Magento\Backend\Model\Session\AdminConfig', $sessionConfigMock]
+            ['Magento\Backend\Model\Session\AdminConfig', $sessionConfigMock],
+            ['Magento\Backend\Model\Url', $urlMock]
         ];
 
         $this->serviceManager->expects($this->once())->method('get')->will($this->returnValue($deployConfigMock));
@@ -69,6 +70,7 @@ class SessionTest extends \PHPUnit_Framework_TestCase
             ->method('create')
             ->will($this->returnValue($sessionMock));
         $controller = new Session($this->serviceManager, $this->objectManagerProvider);
+        $urlMock->expects($this->once())->method('getBaseUrl');
         $controller->prolongAction();
     }
 
-- 
GitLab