Skip to content
This repository was archived by the owner on Jan 29, 2020. It is now read-only.

Commit 145e300

Browse files
committed
Dispatching a MiddlewareController with an invalid request type should raise a RuntimeException
1 parent 29d8e5b commit 145e300

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

test/Controller/MiddlewareControllerTest.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@
2020
use Zend\Http\Response;
2121
use Zend\Mvc\Controller\AbstractController;
2222
use Zend\Mvc\Controller\MiddlewareController;
23+
use Zend\Mvc\Exception\RuntimeException;
2324
use Zend\Mvc\InjectApplicationEventInterface;
2425
use Zend\Mvc\MvcEvent;
2526
use Zend\Stdlib\DispatchableInterface;
27+
use Zend\Stdlib\RequestInterface;
2628
use Zend\Stratigility\MiddlewarePipe;
2729

2830
/**
@@ -88,6 +90,7 @@ public function testWillDispatchARequestAndResponseWithAGivenPipe()
8890
$request = new Request();
8991
$response = new Response();
9092
$result = $this->createMock(ResponseInterface::class);
93+
/* @var $dispatchListener callable|\PHPUnit_Framework_MockObject_MockObject */
9194
$dispatchListener = $this->getMockBuilder(\stdClass::class)->setMethods(['__invoke'])->getMock();
9295

9396
$this->eventManager->attach(MvcEvent::EVENT_DISPATCH, $dispatchListener, 100);
@@ -115,4 +118,34 @@ public function testWillDispatchARequestAndResponseWithAGivenPipe()
115118
self::assertSame($result, $controllerResult);
116119
self::assertSame($result, $this->event->getResult());
117120
}
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+
}
118151
}

0 commit comments

Comments
 (0)