public function test_with_restrictions() { $router = new Router(); $url1 = new Url('https://w.x.y.z/foo'); $url2 = new Url('http://a.b.c.d/foo'); $router->restrictProtocol('https'); $router->group(function (IRouter $router) { $router->restrictProtocol('http'); $router->get('foo', 'baz'); }); $router->get('foo', 'bar'); $route = $router->match(HttpRequestMethod::GET, $url1); $this->assertNotNull($route); $this->assertEquals('bar', $route->getAction()); $route = $router->match(HttpRequestMethod::GET, $url2); $this->assertNotNull($route); $this->assertEquals('baz', $route->getAction()); $router->restrictTLD('y'); $this->assertNull($router->match(HttpRequestMethod::GET, $url1)); $router->restrictTLD(['z']); $this->assertNotNull($router->match(HttpRequestMethod::GET, $url1)); $router->restrictSubdomain('a'); $this->assertNull($router->match(HttpRequestMethod::GET, $url1)); $router->restrictSubdomain(['w.x']); $this->assertNotNull($router->match(HttpRequestMethod::GET, $url1)); $router->restrictDomain('foo'); $this->assertNull($router->match(HttpRequestMethod::GET, $url1)); $router->restrictDomain(['y']); $this->assertNotNull($router->match(HttpRequestMethod::GET, $url1)); $router->restrictHost('foo'); $this->assertNull($router->match(HttpRequestMethod::GET, $url1)); $router->restrictHost(['w.x.y.z']); $this->assertNotNull($router->match(HttpRequestMethod::GET, $url1)); }