TokenUiComponentProviderTest.php 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Braintree\Test\Unit\Model\Ui\Adminhtml;
  7. use Magento\Braintree\Model\Ui\Adminhtml\TokenUiComponentProvider;
  8. use Magento\Framework\UrlInterface;
  9. use Magento\Vault\Api\Data\PaymentTokenInterface;
  10. use Magento\Vault\Model\Ui\TokenUiComponentInterface;
  11. use Magento\Vault\Model\Ui\TokenUiComponentInterfaceFactory;
  12. use PHPUnit_Framework_MockObject_MockObject as MockObject;
  13. /**
  14. * Class TokenUiComponentProviderTest
  15. */
  16. class TokenUiComponentProviderTest extends \PHPUnit\Framework\TestCase
  17. {
  18. /**
  19. * @var TokenUiComponentInterfaceFactory|MockObject
  20. */
  21. private $componentFactory;
  22. /**
  23. * @var UrlInterface|MockObject
  24. */
  25. private $urlBuilder;
  26. /**
  27. * @var TokenUiComponentProvider
  28. */
  29. private $tokenUiComponentProvider;
  30. protected function setUp()
  31. {
  32. $this->componentFactory = $this->getMockBuilder(TokenUiComponentInterfaceFactory::class)
  33. ->disableOriginalConstructor()
  34. ->setMethods(['create'])
  35. ->getMock();
  36. $this->urlBuilder = $this->createMock(UrlInterface::class);
  37. $this->tokenUiComponentProvider = new TokenUiComponentProvider(
  38. $this->componentFactory,
  39. $this->urlBuilder
  40. );
  41. }
  42. /**
  43. * @covers \Magento\Braintree\Model\Ui\Adminhtml\TokenUiComponentProvider::getComponentForToken
  44. */
  45. public function testGetComponentForToken()
  46. {
  47. $nonceUrl = 'https://payment/adminhtml/nonce/url';
  48. $type = 'VI';
  49. $maskedCC = '1111';
  50. $expirationDate = '12/2015';
  51. $expected = [
  52. 'code' => 'vault',
  53. 'nonceUrl' => $nonceUrl,
  54. 'details' => [
  55. 'type' => $type,
  56. 'maskedCC' => $maskedCC,
  57. 'expirationDate' => $expirationDate
  58. ],
  59. 'template' => 'vault.phtml'
  60. ];
  61. $paymentToken = $this->createMock(PaymentTokenInterface::class);
  62. $paymentToken->expects(static::once())
  63. ->method('getTokenDetails')
  64. ->willReturn('{"type":"VI","maskedCC":"1111","expirationDate":"12\/2015"}');
  65. $paymentToken->expects(static::once())
  66. ->method('getPublicHash')
  67. ->willReturn('37du7ir5ed');
  68. $this->urlBuilder->expects(static::once())
  69. ->method('getUrl')
  70. ->willReturn($nonceUrl);
  71. $tokenComponent = $this->createMock(TokenUiComponentInterface::class);
  72. $tokenComponent->expects(static::once())
  73. ->method('getConfig')
  74. ->willReturn($expected);
  75. $this->componentFactory->expects(static::once())
  76. ->method('create')
  77. ->willReturn($tokenComponent);
  78. $component = $this->tokenUiComponentProvider->getComponentForToken($paymentToken);
  79. static::assertEquals($tokenComponent, $component);
  80. static::assertEquals($expected, $component->getConfig());
  81. }
  82. }