/**
  * @expectedException Symfony\Component\Routing\Exception\MethodNotAllowedException
  */
 public function testNotAllowed()
 {
     // do not set a content here, or we need a valid request and so on...
     $route = new Route();
     $route->setName('not_allowed');
     $route->setController('testController');
     $route->setRequirement('_method', 'GET');
     $route->setPath('/notallowed');
     self::$em->persist($route);
     self::$em->flush();
     self::$router->getContext()->setMethod('POST');
     self::$router->match('/notallowed');
 }
 /**
  * context must be propagated also when routers are added after context is set
  */
 public function testContextOrder()
 {
     list($low, $high) = $this->createRouterMocks();
     $low->expects($this->once())->method('setContext')->with($this->context);
     $high->expects($this->once())->method('setContext')->with($this->context);
     $this->router->setContext($this->context);
     $this->router->add($low, 10);
     $this->router->add($high, 100);
     $this->router->all();
     $this->assertSame($this->context, $this->router->getContext());
 }
Пример #3
0
 /**
  * @throws ResourceNotFoundException If no match was found
  */
 public function parse($url)
 {
     // we create a request with a new context in order to match $url to a route and get its properties
     $request = Request::create($url, "GET");
     $originalContext = $this->router->getContext();
     $context = clone $originalContext;
     $context->fromRequest($request);
     $this->router->setContext($context);
     try {
         $matchResult = $this->router->matchRequest($request);
     } catch (ResourceNotFoundException $e) {
         $this->router->setContext($originalContext);
         throw new InvalidArgumentException("No route matched '{$url}'");
     }
     if (!$this->matchesRestRequest($matchResult)) {
         $this->router->setContext($originalContext);
         throw new InvalidArgumentException("No route matched '{$url}'");
     }
     $this->router->setContext($originalContext);
     return $matchResult;
 }
 /**
  * {@inheritdoc}
  */
 public function getContext()
 {
     return $this->chainRouter->getContext();
 }