Skip to content

Commit 6fcec78

Browse files
author
Joan He
committed
MAGETWO-85060: Move code from 2.2.2 to develop
- address code review comments
1 parent 4fdc75c commit 6fcec78

File tree

6 files changed

+71
-14
lines changed

6 files changed

+71
-14
lines changed

app/code/Magento/Analytics/Model/Connector/Http/Client/Curl.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use Magento\Analytics\Model\Connector\Http\ConverterInterface;
99
use Psr\Log\LoggerInterface;
1010
use Magento\Framework\HTTP\Adapter\CurlFactory;
11-
use Magento\Analytics\Model\Connector\Http\ResponseFactory;
11+
use Magento\Framework\HTTP\ResponseFactory;
1212

1313
/**
1414
* A CURL HTTP client.

app/code/Magento/Analytics/Model/Connector/Http/ConverterInterface.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
/**
99
* Represents converter interface for http request and response body.
10+
*
11+
* @api
1012
*/
1113
interface ConverterInterface
1214
{

app/code/Magento/Analytics/Model/Connector/Http/JsonConverter.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
*/
66
namespace Magento\Analytics\Model\Connector\Http;
77

8+
use Magento\Framework\Serialize\Serializer\Json;
9+
810
/**
911
* Represents JSON converter for http request and response body.
1012
*/
@@ -15,25 +17,35 @@ class JsonConverter implements ConverterInterface
1517
*/
1618
const CONTENT_TYPE_HEADER = 'Content-Type: application/json';
1719

20+
/**
21+
* @var Json
22+
*/
23+
private $serializer;
24+
25+
public function __construct(Json $serializer)
26+
{
27+
$this->serializer = $serializer;
28+
}
29+
1830
/**
1931
* @param string $body
2032
*
2133
* @return array
2234
*/
2335
public function fromBody($body)
2436
{
25-
$decodedBody = json_decode($body, 1);
37+
$decodedBody = $this->serializer->unserialize($body);
2638
return $decodedBody === null ? [$body] : $decodedBody;
2739
}
2840

29-
/**
41+
/**c
3042
* @param array $data
3143
*
3244
* @return string
3345
*/
3446
public function toBody(array $data)
3547
{
36-
return json_encode($data);
48+
return $this->serializer->serialize($data);
3749
}
3850

3951
/**

app/code/Magento/Analytics/Test/Unit/Model/Connector/Http/Client/CurlTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ protected function setUp()
7474
->willReturn($this->curlMock);
7575

7676
$this->responseFactoryMock = $this->getMockBuilder(
77-
\Magento\Analytics\Model\Connector\Http\ResponseFactory::class
77+
\Magento\Framework\HTTP\ResponseFactory::class
7878
)
7979
->disableOriginalConstructor()
8080
->getMock();

app/code/Magento/Analytics/Test/Unit/Model/Connector/Http/JsonConverterTest.php

Lines changed: 51 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,69 @@
66
namespace Magento\Analytics\Test\Unit\Model\Connector\Http;
77

88
use Magento\Analytics\Model\Connector\Http\JsonConverter;
9+
use Magento\Framework\Serialize\Serializer\Json;
910

1011
class JsonConverterTest extends \PHPUnit\Framework\TestCase
1112
{
13+
/**
14+
* @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
15+
*/
16+
private $objectManagerHelper;
17+
18+
/**
19+
* @var Json|\PHPUnit_Framework_MockObject_MockObject
20+
*/
21+
private $serializerMock;
22+
23+
/**
24+
* @var JsonConverter
25+
*/
26+
private $converter;
27+
28+
protected function setUp()
29+
{
30+
$this->objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
31+
$this->serializerMock = $this->getMockBuilder(Json::class)
32+
->disableOriginalConstructor()
33+
->getMock();
34+
$this->converter = $this->objectManagerHelper->getObject(
35+
JsonConverter::class,
36+
['serializer' => $this->serializerMock]
37+
);
38+
}
39+
1240
public function testConverterContainsHeader()
1341
{
14-
$converter = new JsonConverter();
15-
$this->assertEquals(JsonConverter::CONTENT_TYPE_HEADER, $converter->getContentTypeHeader());
42+
$this->assertEquals(JsonConverter::CONTENT_TYPE_HEADER, $this->converter->getContentTypeHeader());
43+
}
44+
45+
/**
46+
* @param array|null $unserializedResult
47+
* @param array $expected
48+
* @dataProvider convertBodyDataProvider
49+
*/
50+
public function testConvertBody($unserializedResult, $expected)
51+
{
52+
$this->serializerMock->expects($this->once())
53+
->method('unserialize')
54+
->willReturn($unserializedResult);
55+
$this->assertEquals($expected, $this->converter->fromBody('body'));
1656
}
1757

18-
public function testConvertBody()
58+
public function convertBodyDataProvider()
1959
{
20-
$body = '{"token": "secret-token"}';
21-
$converter = new JsonConverter();
22-
$this->assertEquals(json_decode($body, 1), $converter->fromBody($body));
60+
return [
61+
[null, ['body']],
62+
[['unserializedBody'], ['unserializedBody']]
63+
];
2364
}
2465

2566
public function testConvertData()
2667
{
2768
$data = ["token" => "secret-token"];
28-
$converter = new JsonConverter();
29-
$this->assertEquals(json_encode($data), $converter->toBody($data));
69+
$this->serializerMock->expects($this->once())
70+
->method('serialize')
71+
->willReturn('serializedResult');
72+
$this->assertEquals('serializedResult', $this->converter->toBody(["token" => "secret-token"]));
3073
}
3174
}

app/code/Magento/Analytics/Model/Connector/Http/ResponseFactory.php renamed to lib/internal/Magento/Framework/HTTP/ResponseFactory.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6-
namespace Magento\Analytics\Model\Connector\Http;
6+
namespace Magento\Framework\HTTP;
77

88
/**
99
* A factory for an HTTP response.

0 commit comments

Comments
 (0)