public function testIgnoreJavascriptColonAnything() { $webPage = new WebPage(); $webPage->setHttpResponse($this->getHttpFixtureFromHtmlDocument('example11', 'http://example.com/')); $checker = $this->getDefaultChecker(); $checker->setWebPage($webPage); $this->assertEquals(0, count($checker->getAll())); }
public function testExcludeMailtoLinks() { $webPage = new WebPage(); $webPage->setHttpResponse($this->getHttpFixtureFromHtmlDocument('example19', 'http://example.com')); $checker = $this->getDefaultChecker(); $checker->setWebPage($webPage); $this->assertEquals([], $checker->getErrored()); }
public function testWithVariedLinkTypes() { $this->loadHttpClientFixtures(array('HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok')); $webPage = new WebPage(); $webPage->setHttpResponse($this->getHttpFixtureFromHtmlDocument('example04', 'http://example.com/')); $checker = $this->getDefaultChecker(); $checker->setWebPage($webPage); $this->assertEquals(30, count($checker->getAll())); }
public function testReuseLinkState() { $this->loadHttpClientFixtures(array("HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect1\r\nContent-Length: 0\r\n\r\n", "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect1\r\nContent-Length: 0\r\n\r\n", "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect1\r\nContent-Length: 0\r\n\r\n", "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect1\r\nContent-Length: 0\r\n\r\n", "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect1\r\nContent-Length: 0\r\n\r\n", "HTTP/1.1 301 Moved Permanently\r\nLocation: /redirect1\r\nContent-Length: 0\r\n\r\n")); $webPage = new WebPage(); $webPage->setHttpResponse($this->getHttpFixtureFromHtmlDocument('example10', 'http://example.com/foo')); $checker = $this->getDefaultChecker(); $checker->setWebPage($webPage); $this->assertEquals(array(new LinkResult('http://example.com/', '<a href="http://example.com/">Example no subdomain</a>', new LinkState(LinkState::TYPE_HTTP, 301))), $checker->getErrored()); }
public function testWithMixedHttpStatusCodesAndCurlCodes() { $this->loadHttpClientFixtures(array(new ConnectException('cURL error 6: Couldn\'t resolve host. The given remote host was not resolved.', new Request('GET', 'http://example.com/')), 'HTTP/1.1 200 Ok', 'HTTP/1.1 500 Internal Server Error', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok')); $webPage = new WebPage(); $webPage->setHttpResponse($this->getHttpFixtureFromHtmlDocument('example01', 'http://example.com')); $checker = $this->getDefaultChecker(); $checker->setWebPage($webPage); $this->assertEquals(array(new LinkResult('http://www.youtube.com/example', '<a href="http://www.youtube.com/example"><img src="/images/youtube.png"></a>', new LinkState(LinkState::TYPE_CURL, 6)), new LinkResult('http://blog.example.com/', '<a href="http://blog.example.com"><img src="/images/blog.png"></a>', new LinkState(LinkState::TYPE_HTTP, 500))), $checker->getErrored()); }
public function testExcludeMailtoLinks() { $this->loadHttpClientFixtures(array('HTTP/1.1 200 Ok')); $webPage = new WebPage(); $webPage->setHttpResponse($this->getHttpFixtureFromHtmlDocument('example05', 'http://example.com')); $checker = $this->getDefaultChecker(); $checker->setWebPage($webPage); $this->assertEquals(array(), $checker->getErrored()); }
public function testReuseLinkState() { $this->loadHttpClientFixtures(array('HTTP/1.1 500 Internal Server Error', 'HTTP/1.1 200 Ok')); $webPage = new WebPage(); $webPage->setHttpResponse($this->getHttpFixtureFromHtmlDocument('example12', 'http://example.com')); $checker = $this->getDefaultChecker(); $checker->setWebPage($webPage); $this->assertEquals(array(new LinkResult('http://example.com/', '<a href="http://example.com/">Example no subdomain 1</a>', new LinkState(LinkState::TYPE_HTTP, 500)), new LinkResult('http://example.com/', '<a href="http://example.com/">Example no subdomain 2</a>', new LinkState(LinkState::TYPE_HTTP, 200))), $checker->getAll()); }
public function testWithMixedHttpStatusCodesAndCurlCodes() { $this->loadHttpClientFixtures(array(new ConnectException('cURL error 6: Couldn\'t resolve host. The given remote host was not resolved.', new Request('GET', 'http://example.com/')), 'HTTP/1.1 200 Ok', new ConnectException('cURL error 28: Operation timeout. The specified time-out period was reached according to the conditions.', new Request('GET', 'http://example.com/')), 'HTTP/1.1 500 Internal Server Error', 'HTTP/1.1 400 Bad Request', 'HTTP/1.1 200 Ok')); $webPage = new WebPage(); $webPage->setHttpResponse($this->getHttpFixtureFromHtmlDocument('example01', 'http://example.com/')); $checker = $this->getDefaultChecker(); $checker->setWebPage($webPage); $this->assertEquals(array(new LinkResult('http://example.com/images/youtube.png', '<img src="/images/youtube.png">', new LinkState(LinkState::TYPE_HTTP, 200)), new LinkResult('http://example.com/images/twitter.png', '<img src="/images/twitter.png">', new LinkState(LinkState::TYPE_HTTP, 200))), $checker->getWorking()); }
public function testExcludeDomains() { $this->loadHttpClientFixtures(array('HTTP/1.1 200 Ok')); $webPage = new WebPage(); $webPage->setHttpResponse($this->getHttpFixtureFromHtmlDocument('example08', 'http://example.com')); $checker = $this->getDefaultChecker(); $checker->setWebPage($webPage); $checker->getConfiguration()->setUrlsToExclude(array('http://example.com/foo', 'http://example.com/bar')); $this->assertEquals(1, count($checker->getAll())); }
public function testReuseLinkState() { $this->loadHttpClientFixtures(array('HTTP/1.1 200', 'HTTP/1.1 200', 'HTTP/1.1 200')); $webPage = new WebPage(); $webPage->setHttpResponse($this->getHttpFixtureFromHtmlDocument('example17', 'http://example.com')); $checker = $this->getDefaultChecker(); $checker->getConfiguration()->enableIgnoreFragmentInUrlComparison(); $checker->setWebPage($webPage); $this->assertEquals(6, count($checker->getAll())); }
public function setUp() { $this->loadHttpClientFixtures(array('HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok', 'HTTP/1.1 200 Ok')); $webPage = new WebPage(); $webPage->setHttpResponse($this->getHttpFixtureFromHtmlDocument('example16', 'http://example.com')); $cookieJar = new CookieJar(); foreach ($this->getCookies() as $cookieData) { $cookieJar->setCookie(new SetCookie($cookieData)); } $this->getHttpClient()->getEmitter()->attach(new HttpCookieSubscriber($cookieJar)); $checker = $this->getDefaultChecker(); $checker->setWebPage($webPage); $checker->getAll(); }
/** * * @return array */ public function getAll() { if (is_null($this->linkCheckResults)) { $this->linkCheckResults = array(); if (is_null($this->webPage)) { return $this->linkCheckResults; } $linkFinder = new HtmlDocumentLinkUrlFinder(); $linkFinder->getConfiguration()->setSourceUrl($this->webPage->getHttpResponse()->getEffectiveUrl()); $linkFinder->getConfiguration()->setSource($this->webPage); if (!$linkFinder->hasUrls()) { return $this->linkCheckResults; } foreach ($linkFinder->getAll() as $link) { $link['url'] = rawurldecode($link['url']); if ($this->isUrlToBeIncluded($link['url'])) { $this->linkCheckResults[] = new LinkResult($link['url'], $link['element'], $this->getLinkState($link['url'])); } } } return $this->linkCheckResults; }
/** * * @return boolean|\webignition\WebResource\WebPage\WebPage */ private function retrieveRootWebPage() { $request = clone $this->getConfiguration()->getBaseRequest(); $request->setUrl($this->getConfiguration()->getRootUrl()); $this->setRequestCookies($request); try { $response = $request->send(); } catch (\Guzzle\Http\Exception\RequestException $requestException) { return false; } try { $webPage = new WebPage(); $webPage->setHttpResponse($response); return $webPage; } catch (\webignition\WebResource\Exception $exception) { // Invalid content type (is not the URL of a web page) return false; } }
/** * * @param WebResource $webResource * @return WebPage */ private function translateHtmlWebResourceToWebPage(WebResource $webResource) { $webPage = new WebPage(); $webPage->setContent($webResource->getContent()); $webPage->setUrl($webResource->getUrl()); return $webPage; }
/** * * @param string $cssSelector * @param array $options * @return \QueryPath\DOMQuery */ public function getDomQuery($cssSelector, $options = array()) { $options += array('ignore_parser_warnings' => TRUE, 'convert_to_encoding' => 'ISO-8859-1', 'convert_from_encoding' => 'auto', 'use_parser' => 'html'); return new \QueryPath\DOMQuery($this->webPage->getContent(), $cssSelector, $options); }