CvvEmsCodeMapperTest.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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;
  7. use Magento\Paypal\Model\Config;
  8. use Magento\Paypal\Model\Info;
  9. use Magento\Paypal\Model\Payflow\CvvEmsCodeMapper;
  10. use Magento\Sales\Api\Data\OrderPaymentInterface;
  11. use PHPUnit_Framework_MockObject_MockObject as MockObject;
  12. class CvvEmsCodeMapperTest extends \PHPUnit\Framework\TestCase
  13. {
  14. /**
  15. * @var CvvEmsCodeMapper
  16. */
  17. private $mapper;
  18. /**
  19. * @inheritdoc
  20. */
  21. protected function setUp()
  22. {
  23. $this->mapper = new CvvEmsCodeMapper();
  24. }
  25. /**
  26. * Checks different variations for cvv codes mapping.
  27. *
  28. * @covers \Magento\Paypal\Model\Payflow\CvvEmsCodeMapper::getCode
  29. * @param string $cvvCode
  30. * @param string $expected
  31. * @dataProvider getCodeDataProvider
  32. */
  33. public function testGetCode($cvvCode, $expected)
  34. {
  35. /** @var OrderPaymentInterface|MockObject $orderPayment */
  36. $orderPayment = $this->getMockBuilder(OrderPaymentInterface::class)
  37. ->disableOriginalConstructor()
  38. ->getMock();
  39. $orderPayment->expects(self::once())
  40. ->method('getMethod')
  41. ->willReturn(Config::METHOD_PAYFLOWPRO);
  42. $orderPayment->expects(self::once())
  43. ->method('getAdditionalInformation')
  44. ->willReturn([Info::PAYPAL_CVV2MATCH => $cvvCode]);
  45. self::assertEquals($expected, $this->mapper->getCode($orderPayment));
  46. }
  47. /**
  48. * Checks a test case, when payment order is not Payflow payment method.
  49. *
  50. * @covers \Magento\Paypal\Model\Payflow\CvvEmsCodeMapper::getCode
  51. * @expectedException \InvalidArgumentException
  52. * @expectedExceptionMessage The "some_payment" does not supported by Payflow CVV mapper.
  53. */
  54. public function testGetCodeWithException()
  55. {
  56. /** @var OrderPaymentInterface|MockObject $orderPayment */
  57. $orderPayment = $this->getMockBuilder(OrderPaymentInterface::class)
  58. ->disableOriginalConstructor()
  59. ->getMock();
  60. $orderPayment->expects(self::exactly(2))
  61. ->method('getMethod')
  62. ->willReturn('some_payment');
  63. $this->mapper->getCode($orderPayment);
  64. }
  65. /**
  66. * Gets variations of cvv codes and expected mapping result.
  67. *
  68. * @return array
  69. */
  70. public function getCodeDataProvider()
  71. {
  72. return [
  73. ['cvvCode' => '', 'expected' => 'P'],
  74. ['cvvCode' => null, 'expected' => 'P'],
  75. ['cvvCode' => 'Y', 'expected' => 'M'],
  76. ['cvvCode' => 'N', 'expected' => 'N'],
  77. ['cvvCode' => 'X', 'expected' => 'P']
  78. ];
  79. }
  80. }