Example #1
0
 /**
  * Test that routes Match
  */
 public function testRouteMatches()
 {
     // create a request
     $request = Request::create('/blog/42/testing-routes');
     // Create a route
     $r = new Route('blogtest', '/blog/{page}/::{section}', array('controller' => 'example:DemoController:hello', 'method' => 'GET'), array('page' => 'int', 'section' => 'slug'), array('section' => 'fish'));
     // Check various getters
     $this->assertEquals($r->getName(), 'blogtest');
     $this->assertEquals($r->getActionMethod(), 'helloAction');
     $this->assertEquals($r->getControllerClass(), 'example\\controllers\\DemoController');
     $this->assertEquals($r->getMethod(), 'GET');
     $this->assertEquals($r->getOption('method'), 'GET');
     $this->assertEquals($r->getOption('madeupcrap'), null);
     $this->assertEquals($r->generate(array('page' => 42, 'section' => 'cars')), '/blog/42/cars');
     $this->assertEquals($r->generate(array('page' => 102030)), '/blog/102030/fish');
     // Check that the regex for the URL matches what we think it should
     $this->assertEquals($r->getRegex(), '%^/blog/([0-9]+)/(?:([a-zA-Z0-9-]+))?$%u');
     // Test that the route matches the request
     $this->assertTrue($r->isMatch('/blog/42/testing-routes', $request));
     // test that the controller is as expected
     $this->assertEquals($r->getControllerClass(), 'example\\controllers\\DemoController');
     // test that the action is a match
     $this->assertEquals($r->getActionMethod(), 'helloAction');
     // test that the arguments are good
     $arguments = $r->getArguments();
     $this->assertTrue(is_array($arguments));
     $this->assertEquals($arguments['page'], 42);
     $this->assertEquals($arguments['section'], 'testing-routes');
     // Test that optional arguments are correctly handled
     $this->assertTrue($r->isMatch('/blog/42/', $request));
     $arguments = $r->getArguments();
     $this->assertEquals($arguments['section'], 'fish');
     // Check a POST request against a routes with a method
     $request = Request::create('/blog/42/testing-routes', 'POST');
     $this->assertFalse($r->isMatch('/blog/42/', $request));
     $request = Request::create('/blog/42/testing-routes', 'GET');
     $this->assertTrue($r->isMatch('/blog/42/', $request));
 }
Example #2
0
 public function setRedirectToRoute(Route $route, $args = array(), Request $context = null)
 {
     // set up the response to redirect to a named route
     if (!$route) {
         return;
     }
     // generate the url for the route
     $url = $route->generate($args);
     // add the domain if we can
     if ($context) {
         $url = $context->getHttpHost() . $url;
     }
     // Finally, set the redirect headers
     $this->setRedirectToURL($url);
 }