/** * {@inheritdoc} */ protected function doValidation(Response $response) { $document = new Document($response->getBody(), false); $urls = $document->getDependencies($response->getUri()); $invalidUrls = array(); foreach ($urls as $url) { if (!filter_var(trim((string) $url), FILTER_VALIDATE_URL)) { $invalidUrls[] = (string) $url; } } $this->assert(count($invalidUrls) === 0, 'Invalid urls found (' . implode(', ', $invalidUrls) . ').'); }
public function testGetDependencies() { $document = new Document(file_get_contents(__DIR__ . '/fixtures/referencedUrls.html')); $urls = $document->getDependencies(new Uri('http://www.example.com/test/')); foreach ($urls as $url) { $currentUrls[] = (string) $url; } $expectedUrls = array('http://foreign-domain-schema-relative.com', 'http://www.example.com/test/images/relative_path.html?withQuery', 'http://www.example.com/test/images/relative_path.html', 'http://foreign-domain-schema-relative.com/file.js', 'http://www.example.com/', 'http://fonts.googleapis.com/css?family=Dancing+Script', 'http://www.example.com/absolute_path.php', 'http://www.notexample.com/foreign_domain.html'); sort($expectedUrls); sort($currentUrls); $this->assertEquals($currentUrls, $expectedUrls); }
public function validate(Response $response) { $request = $response->getRequest(); if ('https' !== $request->getUri()->getScheme()) { return; } $htmlDocument = new Document($response->getBody()); $resources = $htmlDocument->getDependencies($response->getRequest()->getUri(), false); foreach ($resources as $resource) { if ($resource->getScheme() && 'https' !== $resource->getScheme()) { throw new ValidationFailedException('At least one dependency was found on a secure url, that was transfered insecure (' . (string) $resource . ')'); } } }
protected function execute(InputInterface $input, OutputInterface $output) { $client = new Client(); $url = $input->getArgument("url"); $startResult = $client->get($url); $results[$url] = $startResult; if ($input->getOption('children')) { $document = new Document((string) $startResult->getBody()); $dependendUrls = $document->getDependencies(new Uri($url), false); foreach ($dependendUrls as $dependendUrl) { $results[(string) $dependendUrl] = $client->get($dependendUrl); } } foreach ($results as $url => $result) { $this->printHeaders($result, $url, $output); } }