Skip to content

Commit 0470c5b

Browse files
committed
MAGETWO-66212: Re-subscribe after M2 token was lost at server-side
-- resolve merge conflicts
1 parent fd1dba0 commit 0470c5b

File tree

7 files changed

+61
-20
lines changed

7 files changed

+61
-20
lines changed

app/code/Magento/Analytics/Model/Config/Backend/Enabled/SubscriptionHandler.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77

88
use Magento\Analytics\Model\AnalyticsToken;
99
use Magento\Analytics\Model\Config\Backend\CollectionTime;
10-
use Magento\Analytics\Model\FlagManager;
1110
use Magento\Analytics\Model\NotificationTime;
1211
use Magento\Framework\App\Config\ReinitableConfigInterface;
1312
use Magento\Framework\App\Config\Storage\WriterInterface;
13+
use Magento\Framework\FlagManager;
1414

1515
/**
1616
* Class for processing of activation/deactivation MBI subscription.

app/code/Magento/Analytics/Model/Connector/UpdateCommand.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77

88
use Magento\Analytics\Model\AnalyticsToken;
99
use Magento\Analytics\Model\Connector\Http\ResponseResolver;
10-
use Magento\Analytics\Model\FlagManager;
1110
use Magento\Analytics\Model\Plugin\BaseUrlConfigPlugin;
1211
use Magento\Config\Model\Config;
12+
use Magento\Framework\FlagManager;
1313
use Magento\Framework\HTTP\ZendClient;
1414
use Magento\Store\Model\Store;
1515
use Psr\Log\LoggerInterface;

app/code/Magento/Analytics/Model/SubscriptionStatusProvider.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
use Magento\Analytics\Model\Config\Backend\Enabled\SubscriptionHandler;
99
use Magento\Framework\App\Config\ScopeConfigInterface;
10+
use Magento\Framework\FlagManager;
1011

1112
/**
1213
* Provider of subscription status.

app/code/Magento/Analytics/Test/Unit/Model/Connector/UpdateCommandTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
use Magento\Analytics\Model\AnalyticsToken;
99
use Magento\Analytics\Model\Connector\Http\ResponseResolver;
10-
use Magento\Analytics\Model\FlagManager;
10+
use Magento\Framework\FlagManager;
1111
use Magento\Framework\HTTP\ZendClient;
1212
use Magento\Config\Model\Config;
1313
use Psr\Log\LoggerInterface;

app/code/Magento/Analytics/Test/Unit/Model/SubscriptionStatusProviderTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77

88
use Magento\Analytics\Model\AnalyticsToken;
99
use Magento\Analytics\Model\Config\Backend\Enabled\SubscriptionHandler;
10-
use Magento\Analytics\Model\FlagManager;
1110
use Magento\Analytics\Model\SubscriptionStatusProvider;
1211
use Magento\Framework\App\Config\ScopeConfigInterface;
12+
use Magento\Framework\FlagManager;
1313
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
1414

1515
/**

app/code/Magento/Config/Model/PreparedValueFactory.php

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
*/
66
namespace Magento\Config\Model;
77

8+
use Magento\Config\Model\Config\BackendFactory;
89
use Magento\Config\Model\Config\Structure;
910
use Magento\Config\Model\Config\StructureFactory;
11+
use Magento\Framework\App\Config\ScopeConfigInterface;
1012
use Magento\Framework\App\Config\ValueInterface;
1113
use Magento\Framework\App\Config\Value;
12-
use Magento\Framework\App\Config\ValueFactory;
1314
use Magento\Framework\App\ScopeInterface;
1415
use Magento\Framework\App\ScopeResolverPool;
1516
use Magento\Framework\Exception\RuntimeException;
@@ -39,23 +40,33 @@ class PreparedValueFactory
3940
* The factory for configuration value objects.
4041
*
4142
* @see ValueInterface
42-
* @var ValueFactory
43+
* @var BackendFactory
4344
*/
4445
private $valueFactory;
4546

47+
/**
48+
* The scope configuration.
49+
*
50+
* @var ScopeConfigInterface
51+
*/
52+
private $config;
53+
4654
/**
4755
* @param ScopeResolverPool $scopeResolverPool The scope resolver pool
4856
* @param StructureFactory $structureFactory The manager for system configuration structure
49-
* @param ValueFactory $valueFactory The factory for configuration value objects
57+
* @param BackendFactory $valueFactory The factory for configuration value objects
58+
* @param ScopeConfigInterface $config The scope configuration
5059
*/
5160
public function __construct(
5261
ScopeResolverPool $scopeResolverPool,
5362
StructureFactory $structureFactory,
54-
ValueFactory $valueFactory
63+
BackendFactory $valueFactory,
64+
ScopeConfigInterface $config
5565
) {
5666
$this->scopeResolverPool = $scopeResolverPool;
5767
$this->structureFactory = $structureFactory;
5868
$this->valueFactory = $valueFactory;
69+
$this->config = $config;
5970
}
6071

6172
/**
@@ -75,13 +86,21 @@ public function create($path, $value, $scope, $scopeCode = null)
7586
try {
7687
/** @var Structure $structure */
7788
$structure = $this->structureFactory->create();
78-
$backendModel = $this->valueFactory->create();
7989
/** @var Structure\ElementInterface $field */
8090
$field = $structure->getElement($path);
91+
$configPath = $path;
92+
/** @var string $backendModelName */
8193
if ($field instanceof Structure\Element\Field && $field->hasBackendModel()) {
82-
$backendModel = $field->getBackendModel();
83-
$path = $field->getConfigPath() ?: $path;
94+
$backendModelName = $field->getData()['backend_model'];
95+
$configPath = $field->getConfigPath() ?: $path;
96+
} else {
97+
$backendModelName = ValueInterface::class;
8498
}
99+
/** @var ValueInterface $backendModel */
100+
$backendModel = $this->valueFactory->create(
101+
$backendModelName,
102+
['config' => $this->config]
103+
);
85104

86105
if ($backendModel instanceof Value) {
87106
$scopeId = 0;
@@ -91,7 +110,7 @@ public function create($path, $value, $scope, $scopeCode = null)
91110
$scopeId = $scopeResolver->getScope($scopeCode)->getId();
92111
}
93112

94-
$backendModel->setPath($path);
113+
$backendModel->setPath($configPath);
95114
$backendModel->setScope($scope);
96115
$backendModel->setScopeId($scopeId);
97116
$backendModel->setValue($value);

app/code/Magento/Config/Test/Unit/Model/PreparedValueFactoryTest.php

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
*/
66
namespace Magento\Config\Test\Unit\Model;
77

8+
use Magento\Config\Model\Config\BackendFactory;
89
use Magento\Config\Model\PreparedValueFactory;
9-
use Magento\Framework\App\Config\ValueFactory;
10+
use Magento\Framework\App\Config\ScopeConfigInterface;
1011
use Magento\Config\Model\Config\StructureFactory;
1112
use Magento\Framework\App\Config\Value;
1213
use Magento\Config\Model\Config\Structure;
@@ -27,7 +28,7 @@ class PreparedValueFactoryTest extends \PHPUnit_Framework_TestCase
2728
private $structureFactoryMock;
2829

2930
/**
30-
* @var ValueFactory|Mock
31+
* @var BackendFactory|Mock
3132
*/
3233
private $valueFactoryMock;
3334

@@ -46,6 +47,11 @@ class PreparedValueFactoryTest extends \PHPUnit_Framework_TestCase
4647
*/
4748
private $fieldMock;
4849

50+
/**
51+
* @var ScopeConfigInterface|Mock
52+
*/
53+
private $configMock;
54+
4955
/**
5056
* @var ScopeResolverPool|Mock
5157
*/
@@ -75,7 +81,7 @@ protected function setUp()
7581
->disableOriginalConstructor()
7682
->setMethods(['create'])
7783
->getMock();
78-
$this->valueFactoryMock = $this->getMockBuilder(ValueFactory::class)
84+
$this->valueFactoryMock = $this->getMockBuilder(BackendFactory::class)
7985
->disableOriginalConstructor()
8086
->setMethods(['create'])
8187
->getMock();
@@ -89,6 +95,8 @@ protected function setUp()
8995
->disableOriginalConstructor()
9096
->setMethods(['setPath', 'setScope', 'setScopeId', 'setValue'])
9197
->getMock();
98+
$this->configMock = $this->getMockBuilder(ScopeConfigInterface::class)
99+
->getMockForAbstractClass();
92100
$this->scopeResolverPoolMock = $this->getMockBuilder(ScopeResolverPool::class)
93101
->disableOriginalConstructor()
94102
->getMock();
@@ -101,12 +109,14 @@ protected function setUp()
101109
$this->preparedValueFactory = new PreparedValueFactory(
102110
$this->scopeResolverPoolMock,
103111
$this->structureFactoryMock,
104-
$this->valueFactoryMock
112+
$this->valueFactoryMock,
113+
$this->configMock
105114
);
106115
}
107116

108117
/**
109118
* @param string $path
119+
* @param string|null $configPath
110120
* @param string $value
111121
* @param string $scope
112122
* @param string|int|null $scopeCode
@@ -115,6 +125,7 @@ protected function setUp()
115125
*/
116126
public function testCreate(
117127
$path,
128+
$configPath,
118129
$value,
119130
$scope,
120131
$scopeCode,
@@ -143,15 +154,15 @@ public function testCreate(
143154
$this->fieldMock->expects($this->once())
144155
->method('hasBackendModel')
145156
->willReturn(true);
146-
$this->fieldMock->expects($this->once())
147-
->method('getBackendModel')
148-
->willReturn($this->valueMock);
157+
$this->fieldMock
158+
->method('getConfigPath')
159+
->willReturn($configPath);
149160
$this->valueFactoryMock->expects($this->once())
150161
->method('create')
151162
->willReturn($this->valueMock);
152163
$this->valueMock->expects($this->once())
153164
->method('setPath')
154-
->with($path)
165+
->with($configPath ?: $path)
155166
->willReturnSelf();
156167
$this->valueMock->expects($this->once())
157168
->method('setScope')
@@ -180,13 +191,23 @@ public function createDataProvider()
180191
return [
181192
'standard flow' => [
182193
'/some/path',
194+
null,
195+
'someValue',
196+
'someScope',
197+
'someScopeCode',
198+
1,
199+
],
200+
'standard flow with custom config path' => [
201+
'/some/path',
202+
'/custom/config_path',
183203
'someValue',
184204
'someScope',
185205
'someScopeCode',
186206
1,
187207
],
188208
'default scope flow' => [
189209
'/some/path',
210+
null,
190211
'someValue',
191212
ScopeInterface::SCOPE_DEFAULT,
192213
null,

0 commit comments

Comments
 (0)