diff options
Diffstat (limited to 'vendor/fguillot/picofeed/tests/Client')
m--------- | vendor/fguillot/picofeed | 0 | ||||
-rw-r--r-- | vendor/fguillot/picofeed/tests/Client/ClientTest.php | 110 | ||||
-rw-r--r-- | vendor/fguillot/picofeed/tests/Client/CurlTest.php | 54 | ||||
-rw-r--r-- | vendor/fguillot/picofeed/tests/Client/GrabberTest.php | 67 | ||||
-rw-r--r-- | vendor/fguillot/picofeed/tests/Client/HttpHeadersTest.php | 19 | ||||
-rw-r--r-- | vendor/fguillot/picofeed/tests/Client/StreamTest.php | 65 | ||||
-rw-r--r-- | vendor/fguillot/picofeed/tests/Client/UrlTest.php | 292 |
7 files changed, 607 insertions, 0 deletions
diff --git a/vendor/fguillot/picofeed b/vendor/fguillot/picofeed deleted file mode 160000 -Subproject 0a1d0d3950f7f047dc8fb1d80aa6296e15f306d diff --git a/vendor/fguillot/picofeed/tests/Client/ClientTest.php b/vendor/fguillot/picofeed/tests/Client/ClientTest.php new file mode 100644 index 000000000..3f094d04c --- /dev/null +++ b/vendor/fguillot/picofeed/tests/Client/ClientTest.php @@ -0,0 +1,110 @@ +<?php + +namespace PicoFeed\Client; + +use PHPUnit_Framework_TestCase; + +class ClientTest extends PHPUnit_Framework_TestCase +{ + public function testDownload() + { + $client = Client::getInstance(); + $client->setUrl('http://php.net/robots.txt'); + $client->execute(); + + $this->assertTrue($client->isModified()); + $this->assertNotEmpty($client->getContent()); + $this->assertNotEmpty($client->getEtag()); + $this->assertNotEmpty($client->getLastModified()); + } + + public function testCacheBothHaveToMatch() + { + $client = Client::getInstance(); + $client->setUrl('http://php.net/robots.txt'); + $client->execute(); + $etag = $client->getEtag(); + + $client = Client::getInstance(); + $client->setUrl('http://php.net/robots.txt'); + $client->setEtag($etag); + $client->execute(); + + $this->assertTrue($client->isModified()); + } + + public function testCacheEtag() + { + $client = Client::getInstance(); + $client->setUrl('http://php.net/robots.txt'); + $client->execute(); + $etag = $client->getEtag(); + $lastModified = $client->getLastModified(); + + $client = Client::getInstance(); + $client->setUrl('http://php.net/robots.txt'); + $client->setEtag($etag); + $client->setLastModified($lastModified); + $client->execute(); + + $this->assertFalse($client->isModified()); + } + + public function testCacheLastModified() + { + $client = Client::getInstance(); + $client->setUrl('http://miniflux.net/humans.txt'); + $client->execute(); + $lastmod = $client->getLastModified(); + + $client = Client::getInstance(); + $client->setUrl('http://miniflux.net/humans.txt'); + $client->setLastModified($lastmod); + $client->execute(); + + $this->assertFalse($client->isModified()); + } + + public function testCacheBoth() + { + $client = Client::getInstance(); + $client->setUrl('http://miniflux.net/humans.txt'); + $client->execute(); + $lastmod = $client->getLastModified(); + $etag = $client->getEtag(); + + $client = Client::getInstance(); + $client->setUrl('http://miniflux.net/humans.txt'); + $client->setLastModified($lastmod); + $client->setEtag($etag); + $client->execute(); + + $this->assertFalse($client->isModified()); + } + + public function testCharset() + { + $client = Client::getInstance(); + $client->setUrl('http://php.net/'); + $client->execute(); + $this->assertEquals('utf-8', $client->getEncoding()); + + $client = Client::getInstance(); + $client->setUrl('http://php.net/robots.txt'); + $client->execute(); + $this->assertEquals('', $client->getEncoding()); + } + + public function testContentType() + { + $client = Client::getInstance(); + $client->setUrl('http://miniflux.net/assets/img/favicon.png'); + $client->execute(); + $this->assertEquals('image/png', $client->getContentType()); + + $client = Client::getInstance(); + $client->setUrl('http://miniflux.net/'); + $client->execute(); + $this->assertEquals('text/html; charset=utf-8', $client->getContentType()); + } +} diff --git a/vendor/fguillot/picofeed/tests/Client/CurlTest.php b/vendor/fguillot/picofeed/tests/Client/CurlTest.php new file mode 100644 index 000000000..4509dbc67 --- /dev/null +++ b/vendor/fguillot/picofeed/tests/Client/CurlTest.php @@ -0,0 +1,54 @@ +<?php +namespace PicoFeed\Client; + +use PHPUnit_Framework_TestCase; + + +class CurlTest extends PHPUnit_Framework_TestCase +{ + public function testDownload() + { + $client = new Curl; + $client->setUrl('http://miniflux.net/index.html'); + $result = $client->doRequest(); + + $this->assertTrue(is_array($result)); + $this->assertEquals(200, $result['status']); + $this->assertEquals('<!DOC', substr($result['body'], 0, 5)); + $this->assertEquals('text/html; charset=utf-8', $result['headers']['Content-Type']); + } + + + public function testRedirect() + { + $client = new Curl; + $client->setUrl('http://www.miniflux.net/index.html'); + $result = $client->doRequest(); + + $this->assertTrue(is_array($result)); + $this->assertEquals(200, $result['status']); + $this->assertEquals('<!DOCTYPE', substr($result['body'], 0, 9)); + $this->assertEquals('text/html; charset=utf-8', $result['headers']['Content-Type']); + $this->assertEquals('http://miniflux.net/', $client->getUrl()); + } + + /** + * @expectedException PicoFeed\Client\InvalidCertificateException + */ + public function testSSL() + { + $client = new Curl; + $client->setUrl('https://www.mjvmobile.com.br'); + $client->doRequest(); + } + + /** + * @expectedException PicoFeed\Client\InvalidUrlException + */ + public function testBadUrl() + { + $client = new Curl; + $client->setUrl('http://12345gfgfgf'); + $client->doRequest(); + } +}
\ No newline at end of file diff --git a/vendor/fguillot/picofeed/tests/Client/GrabberTest.php b/vendor/fguillot/picofeed/tests/Client/GrabberTest.php new file mode 100644 index 000000000..8fc9c58a6 --- /dev/null +++ b/vendor/fguillot/picofeed/tests/Client/GrabberTest.php @@ -0,0 +1,67 @@ +<?php + +namespace PicoFeed\Client; + +use PHPUnit_Framework_TestCase; +use PicoFeed\Reader\Reader; + +class GrabberTest extends PHPUnit_Framework_TestCase +{ + public function testGrabContentWithCandidates() + { + $grabber = new Grabber('http://theonion.com.feedsportal.com/c/34529/f/632231/s/309a7fe4/sc/20/l/0L0Stheonion0N0Carticles0Cobama0Ethrows0Eup0Eright0Ethere0Eduring0Esyria0Emeeting0H336850C/story01.htm'); + $grabber->download(); + $this->assertTrue($grabber->parse()); + + $grabber = new Grabber('http://www.lemonde.fr/proche-orient/article/2013/08/30/la-france-nouvelle-plus-ancienne-alliee-des-etats-unis_3469218_3218.html'); + $grabber->download(); + $this->assertTrue($grabber->parse()); + + $grabber = new Grabber('http://www.rue89.com/2013/08/30/faisait-boris-boillon-ex-sarko-boy-350-000-euros-gare-nord-245315'); + $grabber->download(); + $this->assertTrue($grabber->parse()); + + $grabber = new Grabber('http://www.inc.com/suzanne-lucas/why-employee-turnover-is-so-costly.html'); + $grabber->download(); + $this->assertTrue($grabber->parse()); + + $grabber = new Grabber('http://arstechnica.com/information-technology/2013/08/sysadmin-security-fail-nsa-finds-snowden-hijacked-officials-logins/'); + $grabber->download(); + $this->assertTrue($grabber->parse()); + } + + public function testGetRules() + { + $grabber = new Grabber('http://www.egscomics.com/index.php?id=1690'); + $this->assertTrue(is_array($grabber->getRules())); + } + + // 01net.com - https://github.com/fguillot/miniflux/issues/267 + public function testGetRules_afterRedirection() + { + $grabber = new Grabber('http://rss.feedsportal.com/c/629/f/502199/s/422f8c8a/sc/44/l/0L0S0A1net0N0Ceditorial0C640A3130Cces0E20A150Eimprimer0Eune0Epizza0Eet0Edes0Ebiscuits0Evideo0C0T0Dxtor0FRSS0E16/story01.htm'); + $grabber->download(); + $this->assertTrue(is_array($grabber->getRules())); + } + + public function testGrabContent() + { + $grabber = new Grabber('http://www.egscomics.com/index.php?id=1690'); + $grabber->download(); + $this->assertTrue($grabber->parse()); + + $this->assertEquals('<img title="2013-08-22" src="comics/../comics/1377151029-2013-08-22.png" id="comic" border="0" />', $grabber->getContent()); + } + + public function testRssGrabContent() + { + $reader = new Reader; + $client = $reader->download('http://www.egscomics.com/rss.php'); + $parser = $reader->getParser($client->getUrl(), $client->getContent(), $client->getEncoding()); + $parser->enableContentGrabber(); + $feed = $parser->execute(); + + $this->assertTrue(is_array($feed->items)); + $this->assertTrue(strpos($feed->items[0]->content, '<img') >= 0); + } +} diff --git a/vendor/fguillot/picofeed/tests/Client/HttpHeadersTest.php b/vendor/fguillot/picofeed/tests/Client/HttpHeadersTest.php new file mode 100644 index 000000000..f577d00fa --- /dev/null +++ b/vendor/fguillot/picofeed/tests/Client/HttpHeadersTest.php @@ -0,0 +1,19 @@ +<?php +namespace PicoFeed\Client; + +use PHPUnit_Framework_TestCase; + + +class HttpHeadersTest extends PHPUnit_Framework_TestCase +{ + + public function testHttpHeadersSet() { + $headers = new HttpHeaders(array('Content-Type' => 'test')); + $this->assertEquals('test', $headers['content-typE']); + $this->assertTrue(isset($headers['ConTent-Type'])); + + unset($headers['Content-Type']); + $this->assertFalse(isset($headers['ConTent-Type'])); + } + +}
\ No newline at end of file diff --git a/vendor/fguillot/picofeed/tests/Client/StreamTest.php b/vendor/fguillot/picofeed/tests/Client/StreamTest.php new file mode 100644 index 000000000..91f52c898 --- /dev/null +++ b/vendor/fguillot/picofeed/tests/Client/StreamTest.php @@ -0,0 +1,65 @@ +<?php +namespace PicoFeed\Client; + +use PHPUnit_Framework_TestCase; + + +class StreamTest extends PHPUnit_Framework_TestCase +{ + public function testChunkedResponse() + { + $client = new Stream; + $client->setUrl('http://www.reddit.com/r/dwarffortress/.rss'); + $result = $client->doRequest(); + + $this->assertEquals('</rss>', substr($result['body'], -6)); + } + + public function testDownload() + { + $client = new Stream; + $client->setUrl('https://github.com/fguillot/picoFeed'); + $result = $client->doRequest(); + + $this->assertEquals(200, $result['status']); + $this->assertEquals('text/html; charset=utf-8', $result['headers']['Content-Type']); + $this->assertEquals('<!DOCTYPE html>', substr(trim($result['body']), 0, 15)); + $this->assertEquals('</html>', substr(trim($result['body']), -7)); + } + + public function testRedirect() + { + $client = new Stream; + $client->setUrl('http://www.miniflux.net/index.html'); + $result = $client->doRequest(); + + $this->assertTrue(is_array($result)); + $this->assertEquals(200, $result['status']); + $this->assertEquals('<!DOCTYPE', substr($result['body'], 0, 9)); + $this->assertEquals('text/html; charset=utf-8', $result['headers']['Content-Type']); + $this->assertEquals('http://miniflux.net/', $client->getUrl()); + } + + /** + * @expectedException PicoFeed\Client\InvalidUrlException + */ + public function testBadUrl() + { + $client = new Stream; + $client->setUrl('http://12345gfgfgf'); + $client->setTimeout(1); + $client->doRequest(); + } + + public function testDecodeGzip() + { + if (function_exists('gzdecode')) { + $client = new Stream; + $client->setUrl('https://github.com/fguillot/picoFeed'); + $result = $client->doRequest(); + + $this->assertEquals('gzip', $result['headers']['Content-Encoding']); + $this->assertEquals('<!DOC', substr(trim($result['body']), 0, 5)); + } + } +}
\ No newline at end of file diff --git a/vendor/fguillot/picofeed/tests/Client/UrlTest.php b/vendor/fguillot/picofeed/tests/Client/UrlTest.php new file mode 100644 index 000000000..f55d301c0 --- /dev/null +++ b/vendor/fguillot/picofeed/tests/Client/UrlTest.php @@ -0,0 +1,292 @@ +<?php + +namespace PicoFeed\Client; + +use PHPUnit_Framework_TestCase; + +class UrlTest extends PHPUnit_Framework_TestCase +{ + public function testHasScheme() + { + $url = new Url('http://www.google.fr/'); + $this->assertTrue($url->hasScheme()); + + $url = new Url('//www.google.fr/'); + $this->assertFalse($url->hasScheme()); + + $url = new Url('/path'); + $this->assertFalse($url->hasScheme()); + + $url = new Url('anything'); + $this->assertFalse($url->hasScheme()); + } + + public function testHasPort() + { + $url = new Url('http://127.0.0.1:8000/'); + $this->assertTrue($url->hasPort()); + + $url = new Url('http://127.0.0.1/'); + $this->assertFalse($url->hasPort()); + } + + public function testIsProtocolRelative() + { + $url = new Url('http://www.google.fr/'); + $this->assertFalse($url->isProtocolRelative()); + + $url = new Url('//www.google.fr/'); + $this->assertTrue($url->isProtocolRelative()); + + $url = new Url('/path'); + $this->assertFalse($url->isProtocolRelative()); + + $url = new Url('anything'); + $this->assertFalse($url->isProtocolRelative()); + } + + public function testBaseUrl() + { + $url = new Url('../bla'); + $this->assertEquals('', $url->getBaseUrl()); + + $url = new Url('github.com'); + $this->assertEquals('', $url->getBaseUrl()); + + $url = new Url('http://127.0.0.1:8000'); + $this->assertEquals('http://127.0.0.1:8000', $url->getBaseUrl()); + + $url = new Url('http://127.0.0.1:8000/test?123'); + $this->assertEquals('http://127.0.0.1:8000', $url->getBaseUrl()); + + $url = new Url('http://localhost/test'); + $this->assertEquals('http://localhost', $url->getBaseUrl()); + + $url = new Url('https://localhost/test'); + $this->assertEquals('https://localhost', $url->getBaseUrl()); + + $url = new Url('//localhost/test?truc'); + $this->assertEquals('http://localhost', $url->getBaseUrl()); + + $url = new Url('//localhost/test?truc'); + $this->assertEquals('http://localhost', $url->getBaseUrl()); + } + + public function testIsRelativeUrl() + { + $url = new Url('http://www.google.fr/'); + $this->assertFalse($url->isRelativeUrl()); + + $url = new Url('//www.google.fr/'); + $this->assertFalse($url->isRelativeUrl()); + + $url = new Url('/path'); + $this->assertTrue($url->isRelativeUrl()); + + $url = new Url('../../path'); + $this->assertTrue($url->isRelativeUrl()); + + $url = new Url('anything'); + $this->assertTrue($url->isRelativeUrl()); + + $url = new Url('/2014/08/03/4668-noisettes'); + $this->assertTrue($url->isRelativeUrl()); + + $url = new Url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA +AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO +9TXL0Y4OHwAAAABJRU5ErkJggg=='); + $this->assertFalse($url->isRelativeUrl()); + } + + public function testGetFullPath() + { + $url = new Url('http://www.google.fr/'); + $this->assertEquals('/', $url->getFullPath()); + + $url = new Url('//www.google.fr/search'); + $this->assertEquals('/search', $url->getFullPath()); + + $url = new Url('/path'); + $this->assertEquals('/path', $url->getFullPath()); + + $url = new Url('/path#test'); + $this->assertEquals('/path#test', $url->getFullPath()); + + $url = new Url('anything'); + $this->assertEquals('/anything', $url->getFullPath()); + + $url = new Url('foo/bar'); + $this->assertEquals('/foo/bar', $url->getFullPath()); + + $url = new Url('index.php?foo=bar&test=1'); + $this->assertEquals('/index.php?foo=bar&test=1', $url->getFullPath()); + } + + public function testAbsoluteUrl() + { + $url = new Url('http://google.fr/'); + $this->assertEquals('http://google.fr/', $url->getAbsoluteUrl()); + + $url = new Url('http://google.ca'); + $this->assertEquals('http://google.ca/', $url->getAbsoluteUrl()); + + $url = new Url('../bla'); + $this->assertEquals('', $url->getAbsoluteUrl('')); + + $url = new Url('/2014/08/03/4668-noisettes'); + $this->assertEquals('http://www.la-grange.net/2014/08/03/4668-noisettes', $url->getAbsoluteUrl('http://www.la-grange.net/')); + + $url = new Url('http://www.google.fr/../bla'); + $this->assertEquals('http://www.google.fr/../bla', $url->getAbsoluteUrl('http://www.google.fr/')); + + $url = new Url('http://www.google.fr/'); + $this->assertEquals('http://www.google.fr/', $url->getAbsoluteUrl('http://www.google.fr/')); + + $url = new Url('//www.google.fr/search'); + $this->assertEquals('http://www.google.fr/search', $url->getAbsoluteUrl('//www.google.fr/')); + + $url = new Url('//www.google.fr/search'); + $this->assertEquals('http://www.google.fr/search', $url->getAbsoluteUrl()); + + $url = new Url('/path'); + $this->assertEquals('http://www.google.fr/path', $url->getAbsoluteUrl('http://www.google.fr/')); + + $url = new Url('/path#test'); + $this->assertEquals('http://www.google.fr/path#test', $url->getAbsoluteUrl('http://www.google.fr/')); + + $url = new Url('anything'); + $this->assertEquals('http://www.google.fr/anything', $url->getAbsoluteUrl('http://www.google.fr/')); + + $url = new Url('index.php?foo=bar&test=1'); + $this->assertEquals('http://www.google.fr/index.php?foo=bar&test=1', $url->getAbsoluteUrl('http://www.google.fr/')); + + $url = new Url('index.php?foo=bar&test=1'); + $this->assertEquals('', $url->getAbsoluteUrl()); + + $url = new Url('https://127.0.0.1:8000/here/test?v=3'); + $this->assertEquals('https://127.0.0.1:8000/here/test?v=3', $url->getAbsoluteUrl()); + + $url = new Url('http://www.lofibucket.com/articles/oscilloscope_quake.html'); + $this->assertEquals('http://www.lofibucket.com/articles/oscilloscope_quake.html', $url->getAbsoluteUrl()); + + $url = new Url('test?v=3'); + $this->assertEquals('https://127.0.0.1:8000/here/test?v=3', $url->getAbsoluteUrl('https://127.0.0.1:8000/here/')); + } + + public function testIsRelativePath() + { + $url = new Url(''); + $this->assertTrue($url->isRelativePath()); + + $url = new Url('http://google.fr'); + $this->assertTrue($url->isRelativePath()); + + $url = new Url('filename.json'); + $this->assertTrue($url->isRelativePath()); + + $url = new Url('folder/filename.json'); + $this->assertTrue($url->isRelativePath()); + + $url = new Url('/filename.json'); + $this->assertFalse($url->isRelativePath()); + + $url = new Url('/folder/filename.json'); + $this->assertFalse($url->isRelativePath()); + } + + public function testGetBasePath() + { + $url = new Url('img/quakescope.jpg'); + $this->assertEquals('/img/', $url->getBasePath()); + + $url = new Url('http://foo/img/quakescope.jpg'); + $this->assertEquals('/img/', $url->getBasePath()); + + $url = new Url('http://foo/bar.html'); + $this->assertEquals('/', $url->getBasePath()); + + $url = new Url('http://foo/bar'); + $this->assertEquals('/', $url->getBasePath()); + + $url = new Url('http://foo/bar/'); + $this->assertEquals('/bar/', $url->getBasePath()); + + $url = new Url('http://website/subfolder/img/foo.png'); + $this->assertEquals('/subfolder/img/', $url->getBasePath()); + } + + public function testResolve() + { + // relative link + $this->assertEquals( + 'http://miniflux.net/assets/img/favicon.png', + Url::resolve('assets/img/favicon.png', 'http://miniflux.net') + ); + + // relative link + HTTPS + $this->assertEquals( + 'https://miniflux.net/assets/img/favicon.png', + Url::resolve('assets/img/favicon.png', 'https://miniflux.net') + ); + + // absolute link + $this->assertEquals( + 'http://miniflux.net/assets/img/favicon.png', + Url::resolve('/assets/img/favicon.png', 'http://miniflux.net') + ); + + // absolute link + HTTPS + $this->assertEquals( + 'https://miniflux.net/assets/img/favicon.png', + Url::resolve('/assets/img/favicon.png', 'https://miniflux.net') + ); + + // Protocol relative link + $this->assertEquals( + 'http://google.com/assets/img/favicon.png', + Url::resolve('//google.com/assets/img/favicon.png', 'http://miniflux.net') + ); + + // Protocol relative link + HTTPS + $this->assertEquals( + 'https://google.com/assets/img/favicon.png', + Url::resolve('//google.com/assets/img/favicon.png', 'https://miniflux.net') + ); + + // URL same fqdn + $this->assertEquals( + 'http://miniflux.net/assets/img/favicon.png', + Url::resolve('http://miniflux.net/assets/img/favicon.png', 'https://miniflux.net') + ); + + // URL different fqdn + $this->assertEquals( + 'https://www.google.com/assets/img/favicon.png', + Url::resolve('https://www.google.com/assets/img/favicon.png', 'https://miniflux.net') + ); + + // HTTPS URL + $this->assertEquals( + 'https://miniflux.net/assets/img/favicon.png', + Url::resolve('https://miniflux.net/assets/img/favicon.png', 'https://miniflux.net') + ); + + // empty string on missing website parameter + $this->assertEquals( + '', + Url::resolve('favicon.png', '') + ); + + // website only on missing icon parameter + $this->assertEquals( + 'https://miniflux.net/', + Url::resolve('', 'https://miniflux.net') + ); + + // empty string on missing website and icon parameter + $this->assertEquals( + '', + Url::resolve('', '') + ); + } +} |