Skip to content

Commit 0dfe30c

Browse files
committed
Merge branch 'MAGETWO-87832' into MPI-PR-2.2.5
2 parents 4068a84 + baa6712 commit 0dfe30c

File tree

15 files changed

+618
-105
lines changed

15 files changed

+618
-105
lines changed

app/code/Magento/Paypal/Model/Payflow/Service/Request/SecureToken.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@
55
*/
66
namespace Magento\Paypal\Model\Payflow\Service\Request;
77

8-
use Magento\Framework\Math\Random;
98
use Magento\Framework\DataObject;
9+
use Magento\Framework\Math\Random;
1010
use Magento\Framework\UrlInterface;
1111
use Magento\Paypal\Model\Payflow\Transparent;
1212
use Magento\Paypal\Model\Payflowpro;
1313
use Magento\Quote\Model\Quote;
14-
use Magento\Sales\Model\Order\Payment;
1514

1615
/**
1716
* Class SecureToken
@@ -59,6 +58,7 @@ public function __construct(
5958
*/
6059
public function requestToken(Quote $quote)
6160
{
61+
$this->transparent->setStore($quote->getStoreId());
6262
$request = $this->transparent->buildBasicRequest();
6363

6464
$request->setTrxtype(Payflowpro::TRXTYPE_AUTH_ONLY);

app/code/Magento/Paypal/Model/Payflowlink.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use Magento\Payment\Model\Method\ConfigInterfaceFactory;
1313
use Magento\Paypal\Model\Payflow\Service\Response\Handler\HandlerInterface;
1414
use Magento\Sales\Api\Data\OrderPaymentInterface;
15+
use Magento\Sales\Model\Order;
1516
use Magento\Sales\Model\Order\Email\Sender\OrderSender;
1617

1718
/**
@@ -241,11 +242,13 @@ public function initialize($paymentAction, $stateObject)
241242
case \Magento\Paypal\Model\Config::PAYMENT_ACTION_AUTH:
242243
case \Magento\Paypal\Model\Config::PAYMENT_ACTION_SALE:
243244
$payment = $this->getInfoInstance();
245+
/** @var Order $order */
244246
$order = $payment->getOrder();
245247
$order->setCanSendNewEmailFlag(false);
246248
$payment->setAmountAuthorized($order->getTotalDue());
247249
$payment->setBaseAmountAuthorized($order->getBaseTotalDue());
248250
$this->_generateSecureSilentPostHash($payment);
251+
$this->setStore($order->getStoreId());
249252
$request = $this->_buildTokenRequest($payment);
250253
$response = $this->postRequest($request, $this->getConfig());
251254
$this->_processTokenErrors($response, $payment);

app/code/Magento/Paypal/Test/Unit/Model/Payflow/Service/Request/SecureTokenTest.php

Lines changed: 52 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -5,78 +5,93 @@
55
*/
66
namespace Magento\Paypal\Test\Unit\Model\Payflow\Service\Request;
77

8-
use Magento\Framework\Math\Random;
98
use Magento\Framework\DataObject;
9+
use Magento\Framework\Math\Random;
1010
use Magento\Framework\UrlInterface;
1111
use Magento\Paypal\Model\Payflow\Service\Request\SecureToken;
1212
use Magento\Paypal\Model\Payflow\Transparent;
13+
use Magento\Paypal\Model\PayflowConfig;
14+
use Magento\Quote\Model\Quote;
15+
use PHPUnit_Framework_MockObject_MockObject as MockObject;
1316

14-
/**
15-
* Test class for \Magento\Paypal\Model\Payflow\Service\Request\SecureToken
16-
*/
1717
class SecureTokenTest extends \PHPUnit\Framework\TestCase
1818
{
1919
/**
2020
* @var SecureToken
2121
*/
22-
protected $model;
22+
private $service;
2323

2424
/**
25-
* @var \PHPUnit_Framework_MockObject_MockObject|Transparent
25+
* @var Transparent|MockObject
2626
*/
27-
protected $transparent;
27+
private $transparent;
2828

2929
/**
30-
* @var \PHPUnit_Framework_MockObject_MockObject|Random
30+
* @var Random|MockObject
3131
*/
32-
protected $mathRandom;
32+
private $mathRandom;
3333

3434
/**
35-
* @var \PHPUnit_Framework_MockObject_MockObject|UrlInterface
35+
* @inheritdoc
3636
*/
37-
protected $url;
38-
3937
protected function setUp()
4038
{
41-
$this->url = $this->createMock(\Magento\Framework\UrlInterface::class);
42-
$this->mathRandom = $this->createMock(\Magento\Framework\Math\Random::class);
43-
$this->transparent = $this->createMock(\Magento\Paypal\Model\Payflow\Transparent::class);
39+
$url = $this->getMockForAbstractClass(UrlInterface::class);
40+
$this->mathRandom = $this->getMockBuilder(Random::class)
41+
->getMock();
42+
$this->transparent = $this->getMockBuilder(Transparent::class)
43+
->disableOriginalConstructor()
44+
->getMock();
4445

45-
$this->model = new SecureToken(
46-
$this->url,
46+
$this->service = new SecureToken(
47+
$url,
4748
$this->mathRandom,
4849
$this->transparent
4950
);
5051
}
5152

5253
public function testRequestToken()
5354
{
54-
$request = new DataObject();
55+
$storeId = 1;
5556
$secureTokenID = 'Sdj46hDokds09c8k2klaGJdKLl032ekR';
57+
$response = new DataObject([
58+
'result' => '0',
59+
'respmsg' => 'Approved',
60+
'securetoken' => '80IgSbabyj0CtBDWHZZeQN3',
61+
'securetokenid' => $secureTokenID,
62+
'result_code' => '0',
63+
]);
5664

57-
$this->transparent->expects($this->once())
58-
->method('buildBasicRequest')
59-
->willReturn($request);
60-
$this->transparent->expects($this->once())
61-
->method('fillCustomerContacts');
62-
$this->transparent->expects($this->once())
63-
->method('getConfig')
64-
->willReturn($this->createMock(\Magento\Paypal\Model\PayflowConfig::class));
65-
$this->transparent->expects($this->once())
66-
->method('postRequest')
67-
->willReturn(new DataObject());
65+
$quote = $this->getMockBuilder(Quote::class)
66+
->disableOriginalConstructor()
67+
->getMock();
68+
$quote->method('getStoreId')
69+
->willReturn($storeId);
6870

69-
$this->mathRandom->expects($this->once())
70-
->method('getUniqueHash')
71-
->willReturn($secureTokenID);
71+
$this->transparent->expects(self::once())
72+
->method('setStore')
73+
->with($storeId);
7274

73-
$this->url->expects($this->exactly(3))
74-
->method('getUrl');
75+
$this->transparent->method('buildBasicRequest')
76+
->willReturn(new DataObject());
7577

76-
$quote = $this->createMock(\Magento\Quote\Model\Quote::class);
78+
$config = $this->getMockBuilder(PayflowConfig::class)
79+
->disableOriginalConstructor()
80+
->getMock();
81+
$this->transparent->method('getConfig')
82+
->willReturn($config);
83+
$this->transparent->method('postRequest')
84+
->with(self::callback(function ($request) use ($secureTokenID) {
85+
self::assertEquals($secureTokenID, $request->getSecuretokenid(), '{Secure Token} should match.');
86+
return true;
87+
}))
88+
->willReturn($response);
89+
90+
$this->mathRandom->method('getUniqueHash')
91+
->willReturn($secureTokenID);
7792

78-
$this->model->requestToken($quote);
93+
$actual = $this->service->requestToken($quote);
7994

80-
$this->assertEquals($secureTokenID, $request->getSecuretokenid());
95+
self::assertEquals($secureTokenID, $actual->getSecuretokenid());
8196
}
8297
}

0 commit comments

Comments
 (0)