|
20 | 20 | use Zend\Http\Response;
|
21 | 21 | use Zend\Mvc\Controller\AbstractController;
|
22 | 22 | use Zend\Mvc\Controller\MiddlewareController;
|
| 23 | +use Zend\Mvc\Exception\RuntimeException; |
23 | 24 | use Zend\Mvc\InjectApplicationEventInterface;
|
24 | 25 | use Zend\Mvc\MvcEvent;
|
25 | 26 | use Zend\Stdlib\DispatchableInterface;
|
| 27 | +use Zend\Stdlib\RequestInterface; |
26 | 28 | use Zend\Stratigility\MiddlewarePipe;
|
27 | 29 |
|
28 | 30 | /**
|
@@ -88,6 +90,7 @@ public function testWillDispatchARequestAndResponseWithAGivenPipe()
|
88 | 90 | $request = new Request();
|
89 | 91 | $response = new Response();
|
90 | 92 | $result = $this->createMock(ResponseInterface::class);
|
| 93 | + /* @var $dispatchListener callable|\PHPUnit_Framework_MockObject_MockObject */ |
91 | 94 | $dispatchListener = $this->getMockBuilder(\stdClass::class)->setMethods(['__invoke'])->getMock();
|
92 | 95 |
|
93 | 96 | $this->eventManager->attach(MvcEvent::EVENT_DISPATCH, $dispatchListener, 100);
|
@@ -115,4 +118,34 @@ public function testWillDispatchARequestAndResponseWithAGivenPipe()
|
115 | 118 | self::assertSame($result, $controllerResult);
|
116 | 119 | self::assertSame($result, $this->event->getResult());
|
117 | 120 | }
|
| 121 | + |
| 122 | + public function testWillRefuseDispatchingInvalidRequestTypes() |
| 123 | + { |
| 124 | + /* @var $request RequestInterface */ |
| 125 | + $request = $this->createMock(RequestInterface::class); |
| 126 | + $response = new Response(); |
| 127 | + /* @var $dispatchListener callable|\PHPUnit_Framework_MockObject_MockObject */ |
| 128 | + $dispatchListener = $this->getMockBuilder(\stdClass::class)->setMethods(['__invoke'])->getMock(); |
| 129 | + |
| 130 | + $this->eventManager->attach(MvcEvent::EVENT_DISPATCH, $dispatchListener, 100); |
| 131 | + |
| 132 | + $dispatchListener |
| 133 | + ->expects(self::once()) |
| 134 | + ->method('__invoke') |
| 135 | + ->with(self::callback(function (MvcEvent $event) use ($request, $response) { |
| 136 | + self::assertSame($this->event, $event); |
| 137 | + self::assertSame(MvcEvent::EVENT_DISPATCH, $event->getName()); |
| 138 | + self::assertSame($this->controller, $event->getTarget()); |
| 139 | + self::assertSame($request, $event->getRequest()); |
| 140 | + self::assertSame($response, $event->getResponse()); |
| 141 | + |
| 142 | + return true; |
| 143 | + })); |
| 144 | + |
| 145 | + $this->pipe->expects(self::never())->method('process'); |
| 146 | + |
| 147 | + $this->expectException(RuntimeException::class); |
| 148 | + |
| 149 | + $this->controller->dispatch($request, $response); |
| 150 | + } |
118 | 151 | }
|
0 commit comments