CustomerFlushFormKeyTest.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Customer\Test\Unit\Model\Plugin;
  7. use Magento\Customer\Model\Plugin\CustomerFlushFormKey;
  8. use Magento\Customer\Model\Session;
  9. use Magento\Framework\App\PageCache\FormKey as CookieFormKey;
  10. use Magento\Framework\Data\Form\FormKey as DataFormKey;
  11. use Magento\Framework\Event\Observer;
  12. use Magento\PageCache\Observer\FlushFormKey;
  13. use PHPUnit\Framework\TestCase;
  14. use PHPUnit_Framework_MockObject_MockObject as MockObject;
  15. class CustomerFlushFormKeyTest extends TestCase
  16. {
  17. /**
  18. * @var CookieFormKey | MockObject
  19. */
  20. private $cookieFormKey;
  21. /**
  22. * @var Session | MockObject
  23. */
  24. private $customerSession;
  25. /**
  26. * @var DataFormKey | MockObject
  27. */
  28. private $dataFormKey;
  29. protected function setUp()
  30. {
  31. /** @var CookieFormKey | MockObject */
  32. $this->cookieFormKey = $this->getMockBuilder(CookieFormKey::class)
  33. ->disableOriginalConstructor()
  34. ->getMock();
  35. /** @var DataFormKey | MockObject */
  36. $this->dataFormKey = $this->getMockBuilder(DataFormKey::class)
  37. ->disableOriginalConstructor()
  38. ->getMock();
  39. /** @var Session | MockObject */
  40. $this->customerSession = $this->getMockBuilder(Session::class)
  41. ->disableOriginalConstructor()
  42. ->setMethods(['getBeforeRequestParams', 'setBeforeRequestParams'])
  43. ->getMock();
  44. }
  45. /**
  46. * @dataProvider aroundFlushFormKeyProvider
  47. * @param $beforeFormKey
  48. * @param $currentFormKey
  49. * @param $getFormKeyTimes
  50. * @param $setBeforeParamsTimes
  51. */
  52. public function testAroundFlushFormKey(
  53. $beforeFormKey,
  54. $currentFormKey,
  55. $getFormKeyTimes,
  56. $setBeforeParamsTimes
  57. ) {
  58. $observerDto = new Observer();
  59. $observer = new FlushFormKey($this->cookieFormKey, $this->dataFormKey);
  60. $plugin = new CustomerFlushFormKey($this->customerSession, $this->dataFormKey);
  61. $beforeParams['form_key'] = $beforeFormKey;
  62. $this->dataFormKey->expects($this->exactly($getFormKeyTimes))
  63. ->method('getFormKey')
  64. ->willReturn($currentFormKey);
  65. $this->customerSession->expects($this->once())
  66. ->method('getBeforeRequestParams')
  67. ->willReturn($beforeParams);
  68. $this->customerSession->expects($this->exactly($setBeforeParamsTimes))
  69. ->method('setBeforeRequestParams')
  70. ->with($beforeParams);
  71. $proceed = function ($observerDto) use ($observer) {
  72. return $observer->execute($observerDto);
  73. };
  74. $plugin->aroundExecute($observer, $proceed, $observerDto);
  75. }
  76. /**
  77. * Data provider for testAroundFlushFormKey
  78. *
  79. * @return array
  80. */
  81. public function aroundFlushFormKeyProvider()
  82. {
  83. return [
  84. ['form_key_value', 'form_key_value', 2, 1],
  85. ['form_old_key_value', 'form_key_value', 1, 0],
  86. [null, 'form_key_value', 1, 0]
  87. ];
  88. }
  89. }