public function testDispatchWithNotValidCriteria() { $request = new Request(); $response = new Response(); $criteria = ['some' => 'criteria']; $changes = ['key' => 'value']; $errors = ['some' => 'error']; $request->setCriteria($criteria); $request->setChanges($changes); $this->criteriaValidator->isValid($criteria)->willReturn(false); $this->criteriaValidator->getErrors()->willReturn($errors); $this->criteriaValidator->getValid()->willReturn([]); $response = $this->controller->dispatch($request, $response); $this->assertInstanceOf(Response::class, $response); $this->assertNull($response->getResult()); $this->assertEquals($criteria, $response->getCriteria()); $this->assertEquals($changes, $response->getChanges()); $this->assertEquals($errors, $response->getCriteriaErrors()); }
public function createService(ServiceLocatorInterface $serviceLocator) { /** @var \Zend\Mvc\Application $app */ $app = $serviceLocator->get('Application'); /** @var \Zend\Mvc\Router\Http\RouteMatch $routeMatch */ $routeMatch = $app->getMvcEvent()->getRouteMatch(); /** @var \Zend\Http\PhpEnvironment\Request $zendRequest */ $zendRequest = $serviceLocator->get('request'); /** @var RequestInterface $request */ if ($routeMatch->getParam('request')) { $request = $serviceLocator->get($routeMatch->getParam('request')); if (!$request instanceof RequestInterface) { throw new \RuntimeException('Request must be instance of ' . RequestInterface::class); } } else { $request = new Request(); $routeMatchParams = $routeMatch->getParams(); unset($routeMatchParams['controller']); unset($routeMatchParams['allowedMethods']); unset($routeMatchParams['criteriaValidator']); unset($routeMatchParams['changesValidator']); unset($routeMatchParams['service']); unset($routeMatchParams['template']); unset($routeMatchParams['viewModel']); unset($routeMatchParams['redirectTo']); $criteria = array_merge($routeMatchParams, $zendRequest->getQuery()->toArray()); $request->setCriteria($criteria); $changes = []; /** @var \Zend\Http\Header\ContentType $contentType */ $contentType = $zendRequest->getHeaders()->get('contenttype'); if ($contentType) { if ($contentType->getMediaType() == 'multipart/form-data') { $changes = array_merge($zendRequest->getPost()->toArray(), $zendRequest->getFiles()->toArray()); } elseif ($contentType->getMediaType() == 'application/json') { $changes = array_merge(json_decode($zendRequest->getContent(), true), $zendRequest->getFiles()->toArray()); } } $request->setChanges($changes); } $request->setMethod($zendRequest->getMethod()); return $request; }
public function createService(ServiceLocatorInterface $serviceLocator) { /** @var \Zend\Mvc\Application $app */ $app = $serviceLocator->get('Application'); /** @var \Zend\Mvc\Router\Http\RouteMatch $routeMatch */ $routeMatch = $app->getMvcEvent()->getRouteMatch(); /** @var \Zend\Http\PhpEnvironment\Request $zendRequest */ $zendRequest = $serviceLocator->get('request'); /** @var RequestInterface $request */ if ($routeMatch->getParam('request')) { $request = $serviceLocator->get($routeMatch->getParam('request')); if (!$request instanceof RequestInterface) { throw new \RuntimeException('Request must be instance of ' . RequestInterface::class); } } else { $request = new Request(); $routeMatchParams = $routeMatch->getParams(); $routeMatchCriteria = []; if (!empty($routeMatchParams['routeCriteria'])) { if (is_string($routeMatchParams['routeCriteria'])) { $routeMatchCriteria[$routeMatchParams['routeCriteria']] = $routeMatchParams[$routeMatchParams['routeCriteria']]; } if (is_array($routeMatchParams['routeCriteria'])) { foreach ($routeMatchParams['routeCriteria'] as $criteria) { if (array_key_exists($criteria, $routeMatchParams)) { $routeMatchCriteria[$criteria] = $routeMatchParams[$criteria]; } } } } $criteria = array_merge($routeMatchCriteria, $zendRequest->getQuery()->toArray()); $request->setCriteria($criteria); $changes = array_merge($zendRequest->getPost()->toArray(), $zendRequest->getFiles()->toArray()); $request->setChanges($changes); } $request->setMethod($zendRequest->getMethod()); return $request; }