PsrResponseSubscriberTest.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace Drupal\Tests\Core\EventSubscriber;
  3. use Drupal\Tests\UnitTestCase;
  4. use Drupal\Core\EventSubscriber\PsrResponseSubscriber;
  5. /**
  6. * @coversDefaultClass \Drupal\Core\EventSubscriber\PsrResponseSubscriber
  7. * @group EventSubscriber
  8. */
  9. class PsrResponseSubscriberTest extends UnitTestCase {
  10. /**
  11. * The tested path root subscriber.
  12. *
  13. * @var \Drupal\Core\EventSubscriber\PsrResponseSubscriber
  14. */
  15. protected $psrResponseSubscriber;
  16. /**
  17. * The tested path root subscriber.
  18. *
  19. * @var \Symfony\Bridge\PsrHttpMessage\HttpFoundationFactoryInterface|\PHPUnit\Framework\MockObject\MockObject
  20. */
  21. protected $httpFoundationFactoryMock;
  22. /**
  23. * {@inheritdoc}
  24. */
  25. protected function setUp() {
  26. $factory = $this->getMockBuilder('Symfony\Bridge\PsrHttpMessage\HttpFoundationFactoryInterface')
  27. ->disableOriginalConstructor()
  28. ->getMock();
  29. $factory
  30. ->expects($this->any())
  31. ->method('createResponse')
  32. ->willReturn($this->createMock('Symfony\Component\HttpFoundation\Response'));
  33. $this->httpFoundationFactoryMock = $factory;
  34. $this->psrResponseSubscriber = new PsrResponseSubscriber($this->httpFoundationFactoryMock);
  35. }
  36. /**
  37. * Tests altering and finished event.
  38. *
  39. * @covers ::onKernelView
  40. */
  41. public function testConvertsControllerResult() {
  42. $event = $this->createEventMock($this->createMock('Psr\Http\Message\ResponseInterface'));
  43. $event
  44. ->expects($this->once())
  45. ->method('setResponse')
  46. ->with($this->isInstanceOf('Symfony\Component\HttpFoundation\Response'));
  47. $this->psrResponseSubscriber->onKernelView($event);
  48. }
  49. /**
  50. * Tests altering and finished event.
  51. *
  52. * @covers ::onKernelView
  53. */
  54. public function testDoesNotConvertControllerResult() {
  55. $event = $this->createEventMock([]);
  56. $event
  57. ->expects($this->never())
  58. ->method('setResponse');
  59. $this->psrResponseSubscriber->onKernelView($event);
  60. $event = $this->createEventMock(NULL);
  61. $event
  62. ->expects($this->never())
  63. ->method('setResponse');
  64. $this->psrResponseSubscriber->onKernelView($event);
  65. }
  66. /**
  67. * Sets up an alias event that return $controllerResult.
  68. *
  69. * @param mixed $controller_result
  70. * The return Object.
  71. *
  72. * @return \Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent|\PHPUnit\Framework\MockObject\MockObject
  73. * A mock object to test.
  74. */
  75. protected function createEventMock($controller_result) {
  76. $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent')
  77. ->disableOriginalConstructor()
  78. ->getMock();
  79. $event
  80. ->expects($this->once())
  81. ->method('getControllerResult')
  82. ->willReturn($controller_result);
  83. return $event;
  84. }
  85. }