/** * Evaluates the URI against this route and protocol. * * @param ezcMvcRequest $request * @return ezcMvcRoutingInformation|null */ public function matches( ezcMvcRequest $request ) { if ( $this->protocol === null || $request->protocol === $this->protocol ) return parent::matches( $request ); return null; }
public function testMatchSameAsInternalRoute() { $request = new ezcMvcRequest(); $request->uri = '/foo'; $internalRoute = new ezcMvcRailsRoute('/foo', 'testDummyController', 'testDummyAction'); $versionRoute = new ezpRestVersionedRoute($internalRoute, 1); $internalRouteInfo = $internalRoute->matches($request); $versionRouteInfo = $versionRoute->matches($request); self::assertSame('/foo', $internalRouteInfo->matchedRoute); self::assertSame('/foo', $versionRouteInfo->matchedRoute); self::assertSame('testDummyController', $internalRouteInfo->controllerClass); self::assertSame('testDummyController', $versionRouteInfo->controllerClass); self::assertSame('testDummyAction', $internalRouteInfo->action); self::assertSame('testDummyAction', $versionRouteInfo->action); }
public function testMatchWithDotInUrl3a() { $request = new ezcMvcRequest(); $request->uri = '/topic/list/foo.bar.ezc.is.cool'; $route = new ezcMvcRailsRoute('/topic/list/:newsgroup_name', 'testController'); $routeInfo = $route->matches($request); self::assertSame('/topic/list/:newsgroup_name', $routeInfo->matchedRoute); self::assertSame('testController', $routeInfo->controllerClass); self::assertSame(array('newsgroup_name' => 'foo.bar.ezc.is.cool'), $request->variables); }
public function testsMatchComplex() { $route = new ezcMvcRailsRoute('people/:slug', 'testController', 'action', array('nr' => '', 'name' => '')); $request = new ezcMvcRequest(); $request->uri = 'people/hawking'; $routeInfo = $route->matches($request); self::assertSame('testController', $routeInfo->controllerClass); self::assertEquals(array('nr' => '', 'name' => '', 'slug' => 'hawking'), $request->variables); $request->uri = 'people/42'; $routeInfo = $route->matches($request); self::assertSame('testController', $routeInfo->controllerClass); self::assertEquals(array('nr' => '', 'name' => '', 'slug' => 42), $request->variables); $request->uri = 'people'; $routeInfo = $route->matches($request); self::assertEquals(null, $routeInfo); $request->uri = 'people/'; $routeInfo = $route->matches($request); self::assertEquals(null, $routeInfo); }