GatewayTest.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Paypal\Test\Unit\Model\Payflow\Service;
  7. use Magento\Framework\DataObject;
  8. use Magento\Framework\HTTP\ZendClient;
  9. use Magento\Framework\HTTP\ZendClientFactory;
  10. use Magento\Framework\Math\Random;
  11. use Magento\Payment\Model\Method\ConfigInterface;
  12. use Magento\Payment\Model\Method\Logger;
  13. use Magento\Paypal\Model\Payflow\Service\Gateway;
  14. use Psr\Log\LoggerInterface;
  15. /**
  16. * Class GatewayTest
  17. *
  18. * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  19. */
  20. class GatewayTest extends \PHPUnit\Framework\TestCase
  21. {
  22. /** @var Gateway|\PHPUnit_Framework_MockObject_MockObject */
  23. protected $object;
  24. /** @var ZendClientFactory|\PHPUnit_Framework_MockObject_MockObject */
  25. protected $httpClientFactoryMock;
  26. /** @var Random|\PHPUnit_Framework_MockObject_MockObject */
  27. protected $mathRandomMock;
  28. /** @var Logger|\PHPUnit_Framework_MockObject_MockObject */
  29. protected $loggerMock;
  30. /** @var ZendClient|\PHPUnit_Framework_MockObject_MockObject */
  31. protected $zendClientMock;
  32. protected function setUp()
  33. {
  34. $this->httpClientFactoryMock = $this->getMockBuilder(ZendClientFactory::class)
  35. ->setMethods(['create'])
  36. ->disableOriginalConstructor()
  37. ->getMock();
  38. $this->zendClientMock = $this->getMockBuilder(ZendClient::class)
  39. ->setMethods(['request', 'setUri'])
  40. ->disableOriginalConstructor()
  41. ->getMock();
  42. $this->httpClientFactoryMock->expects(static::once())
  43. ->method('create')
  44. ->willReturn($this->zendClientMock);
  45. $this->mathRandomMock = $this->getMockBuilder(Random::class)
  46. ->disableOriginalConstructor()
  47. ->getMock();
  48. $this->loggerMock = $this->getMockBuilder(Logger::class)
  49. ->setConstructorArgs([$this->getMockForAbstractClass(LoggerInterface::class)])
  50. ->setMethods(['debug'])
  51. ->getMock();
  52. $this->object = new Gateway(
  53. $this->httpClientFactoryMock,
  54. $this->mathRandomMock,
  55. $this->loggerMock
  56. );
  57. }
  58. public function testPostRequestOk()
  59. {
  60. $configMap = [
  61. ['getDebugReplacePrivateDataKeys', null, ['masked']],
  62. ['debug', null, true]
  63. ];
  64. $expectedResponse = 'RESULT=0&RESPMSG=Approved&SECURETOKEN=8ZIaw2&SECURETOKENID=2481d53';
  65. /** @var ConfigInterface|\PHPUnit_Framework_MockObject_MockObject $configInterfaceMock */
  66. $configInterfaceMock = $this->getMockBuilder(ConfigInterface::class)
  67. ->getMockForAbstractClass();
  68. $zendResponseMock = $this->getMockBuilder(\Zend_Http_Response::class)
  69. ->setMethods(['getBody'])
  70. ->disableOriginalConstructor()
  71. ->getMock();
  72. $zendResponseMock->expects(static::once())
  73. ->method('getBody')
  74. ->willReturn($expectedResponse);
  75. $this->zendClientMock->expects(static::once())
  76. ->method('request')
  77. ->willReturn($zendResponseMock);
  78. $configInterfaceMock->expects(static::any())
  79. ->method('getValue')
  80. ->willReturnMap($configMap);
  81. $this->loggerMock->expects(static::once())
  82. ->method('debug');
  83. $object = new DataObject();
  84. $result = $this->object->postRequest($object, $configInterfaceMock);
  85. static::assertInstanceOf(DataObject::class, $result);
  86. static::assertArrayHasKey('result_code', $result->getData());
  87. }
  88. /**
  89. * @expectedException \Zend_Http_Client_Exception
  90. */
  91. public function testPostRequestFail()
  92. {
  93. /** @var ConfigInterface|\PHPUnit_Framework_MockObject_MockObject $configInterfaceMock */
  94. $configInterfaceMock = $this->getMockBuilder(ConfigInterface::class)
  95. ->getMockForAbstractClass();
  96. $zendResponseMock = $this->getMockBuilder(\Zend_Http_Response::class)
  97. ->setMethods(['getBody'])
  98. ->disableOriginalConstructor()
  99. ->getMock();
  100. $zendResponseMock->expects(static::never())
  101. ->method('getBody');
  102. $this->zendClientMock->expects(static::once())
  103. ->method('request')
  104. ->willThrowException(new \Zend_Http_Client_Exception());
  105. $object = new DataObject();
  106. $this->object->postRequest($object, $configInterfaceMock);
  107. }
  108. }