assertEquals('http://http.com', $reader->prependScheme('http.com')); $this->assertEquals('http://boo.com', $reader->prependScheme('boo.com')); $this->assertEquals('http://google.com', $reader->prependScheme('http://google.com')); $this->assertEquals('https://google.com', $reader->prependScheme('https://google.com')); } /** * @group online */ public function testDownloadHTTP() { $reader = new Reader; $feed = $reader->download('http://wordpress.org/news/feed/')->getContent(); $this->assertNotEmpty($feed); } /** * @group online */ public function testDownloadHTTPS() { $reader = new Reader; $feed = $reader->download('https://wordpress.org/news/feed/')->getContent(); $this->assertNotEmpty($feed); } /** * @group online */ public function testDownloadCache() { $reader = new Reader; $resource = $reader->download('http://linuxfr.org/robots.txt'); $this->assertTrue($resource->isModified()); $lastModified = $resource->getLastModified(); $etag = $resource->getEtag(); $reader = new Reader; $resource = $reader->download('http://linuxfr.org/robots.txt', $lastModified, $etag); $this->assertFalse($resource->isModified()); } public function testDetectFormat() { $reader = new Reader; $this->assertEquals('Rss20', $reader->detectFormat(file_get_contents('tests/fixtures/podbean.xml'))); $reader = new Reader; $this->assertEquals('Rss20', $reader->detectFormat(file_get_contents('tests/fixtures/jeux-linux.fr.xml'))); $reader = new Reader; $this->assertEquals('Rss20', $reader->detectFormat(file_get_contents('tests/fixtures/sametmax.xml'))); $reader = new Reader; $this->assertEquals('Rss92', $reader->detectFormat(file_get_contents('tests/fixtures/rss_0.92.xml'))); $reader = new Reader; $this->assertEquals('Rss91', $reader->detectFormat(file_get_contents('tests/fixtures/rss_0.91.xml'))); $reader = new Reader; $this->assertEquals('Rss10', $reader->detectFormat(file_get_contents('tests/fixtures/planete-jquery.xml'))); $reader = new Reader; $this->assertEquals('Rss20', $reader->detectFormat(file_get_contents('tests/fixtures/rss2sample.xml'))); $reader = new Reader; $this->assertEquals('Atom', $reader->detectFormat(file_get_contents('tests/fixtures/atomsample.xml'))); $reader = new Reader; $this->assertEquals('Rss20', $reader->detectFormat(file_get_contents('tests/fixtures/cercle.psy.xml'))); $reader = new Reader; $this->assertEquals('Rss20', $reader->detectFormat(file_get_contents('tests/fixtures/ezrss.it'))); $content = ' '; $reader = new Reader; $this->assertEquals('Rss20', $reader->detectFormat($content)); } public function testFindRssFeed() { $reader = new Reader; $html = '

boo

'; $feeds = $reader->find('http://miniflux.net/', $html); $this->assertEquals(array('http://miniflux.net/feed'), $feeds); } public function testFindAtomFeed() { $reader = new Reader; $html = '

boo

'; $feeds = $reader->find('http://miniflux.net/', $html); $this->assertEquals(array('http://miniflux.net/feed'), $feeds); } public function testFindFeedNotInHead() { $reader = new Reader; $html = '

boo

'; $feeds = $reader->find('http://miniflux.net/', $html); $this->assertEquals(array('http://miniflux.net/feed'), $feeds); } public function testFindNoFeedPresent() { $reader = new Reader; $html = '

boo

'; $feeds = $reader->find('http://miniflux.net/', $html); $this->assertEquals(array(), $feeds); } public function testFindIgnoreUnknownType() { $reader = new Reader; $html = '

boo

'; $feeds = $reader->find('http://miniflux.net/', $html); $this->assertEquals(array(), $feeds); } public function testFindIgnoreTypeInOtherAttribute() { $reader = new Reader; $html = '

boo

'; $feeds = $reader->find('http://miniflux.net/', $html); $this->assertEquals(array(), $feeds); } public function testFindWithOtherAttributesPresent() { $reader = new Reader; $html = '

boo

'; $feeds = $reader->find('http://miniflux.net/', $html); $this->assertEquals(array('http://miniflux.net/feed'), $feeds); } public function testFindMultipleFeeds() { $reader = new Reader; $html = '

boo

'; $feeds = $reader->find('http://www.cnn.com/services/rss/', $html); $this->assertEquals( array( 'http://rss.cnn.com/rss/edition.rss', 'http://rss.cnn.com/rss/edition_connecttheworld.rss', 'http://rss.cnn.com/rss/edition_worldsportblog.rss' ), $feeds ); } public function testFindWithInvalidHTML() { $reader = new Reader; $html = '!DOCTYPE html html head link type="application/rss+xml" href="http://miniflux.net/feed" /head body /p boo /p body /html'; $feeds = $reader->find('http://miniflux.net/', ''); $this->assertEquals(array(), $feeds); } public function testFindWithHtmlParamEmptyString() { $reader = new Reader; $feeds = $reader->find('http://miniflux.net/', ''); $this->assertEquals(array(), $feeds); } /** * @group online */ public function testDiscover() { $reader = new Reader; $client = $reader->discover('http://www.universfreebox.com/'); $this->assertEquals('http://www.universfreebox.com/backend.php', $client->getUrl()); $this->assertInstanceOf('PicoFeed\Parser\Rss20', $reader->getParser($client->getUrl(), $client->getContent(), $client->getEncoding())); $reader = new Reader; $client = $reader->discover('http://planete-jquery.fr'); $this->assertInstanceOf('PicoFeed\Parser\Rss10', $reader->getParser($client->getUrl(), $client->getContent(), $client->getEncoding())); $reader = new Reader; $client = $reader->discover('http://cabinporn.com/'); $this->assertEquals('http://cabinporn.com/rss', $client->getUrl()); $this->assertInstanceOf('PicoFeed\Parser\Rss20', $reader->getParser($client->getUrl(), $client->getContent(), $client->getEncoding())); $reader = new Reader; $client = $reader->discover('http://linuxfr.org/'); $this->assertEquals('http://linuxfr.org/news.atom', $client->getUrl()); $this->assertInstanceOf('PicoFeed\Parser\Atom', $reader->getParser($client->getUrl(), $client->getContent(), $client->getEncoding())); } public function testGetParserUsesHTTPEncoding() { $reader = new Reader; $parser = $reader->getParser('http://blah', file_get_contents('tests/fixtures/cercle.psy.xml'), 'iso-8859-1'); $feed = $parser->execute(); $this->assertInstanceOf('PicoFeed\Parser\Rss20', $parser); $this->assertNotEmpty($feed->items); } public function testGetParserUsesSiteURL() { $reader = new Reader; $parser = $reader->getParser('http://groovehq.com/', file_get_contents('tests/fixtures/groovehq.xml'), ''); $feed = $parser->execute(); $this->assertEquals('http://groovehq.com/articles.xml', $feed->getFeedUrl()); } public function testFeedsReportedAsNotWorking() { $reader = new Reader; $parser = $reader->getParser('http://blah', file_get_contents('tests/fixtures/ezrss.it'), ''); $feed = $parser->execute(); $this->assertNotEmpty($feed->items); } }