X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=tests%2FWallabag%2FCoreBundle%2FController%2FRssControllerTest.php;fp=tests%2FWallabag%2FCoreBundle%2FController%2FRssControllerTest.php;h=fb6fe06a60e039400d7be97910c685ddd47d055c;hb=23634d5d842dabcf5d7475e2becb7e127824239e;hp=0000000000000000000000000000000000000000;hpb=891a026e31ad54ca90b70f6026f23260cfadb7fd;p=github%2Fwallabag%2Fwallabag.git diff --git a/tests/Wallabag/CoreBundle/Controller/RssControllerTest.php b/tests/Wallabag/CoreBundle/Controller/RssControllerTest.php new file mode 100644 index 00000000..fb6fe06a --- /dev/null +++ b/tests/Wallabag/CoreBundle/Controller/RssControllerTest.php @@ -0,0 +1,126 @@ +loadXML($xml); + + $xpath = new \DOMXpath($doc); + + if (null === $nb) { + $this->assertGreaterThan(0, $xpath->query('//item')->length); + } else { + $this->assertEquals($nb, $xpath->query('//item')->length); + } + + $this->assertEquals(1, $xpath->query('/rss')->length); + $this->assertEquals(1, $xpath->query('/rss/channel')->length); + + foreach ($xpath->query('//item') as $item) { + $this->assertEquals(1, $xpath->query('title', $item)->length); + $this->assertEquals(1, $xpath->query('source', $item)->length); + $this->assertEquals(1, $xpath->query('link', $item)->length); + $this->assertEquals(1, $xpath->query('guid', $item)->length); + $this->assertEquals(1, $xpath->query('pubDate', $item)->length); + $this->assertEquals(1, $xpath->query('description', $item)->length); + } + } + + public function dataForBadUrl() + { + return [ + [ + '/admin/YZIOAUZIAO/unread.xml', + ], + [ + '/wallace/YZIOAUZIAO/starred.xml', + ], + [ + '/wallace/YZIOAUZIAO/archives.xml', + ], + ]; + } + + /** + * @dataProvider dataForBadUrl + */ + public function testBadUrl($url) + { + $client = $this->getClient(); + + $client->request('GET', $url); + + $this->assertEquals(404, $client->getResponse()->getStatusCode()); + } + + public function testUnread() + { + $client = $this->getClient(); + $em = $client->getContainer()->get('doctrine.orm.entity_manager'); + $user = $em + ->getRepository('WallabagUserBundle:User') + ->findOneByUsername('admin'); + + $config = $user->getConfig(); + $config->setRssToken('SUPERTOKEN'); + $config->setRssLimit(2); + $em->persist($config); + $em->flush(); + + $client->request('GET', '/admin/SUPERTOKEN/unread.xml'); + + $this->assertEquals(200, $client->getResponse()->getStatusCode()); + + $this->validateDom($client->getResponse()->getContent(), 2); + } + + public function testStarred() + { + $client = $this->getClient(); + $em = $client->getContainer()->get('doctrine.orm.entity_manager'); + $user = $em + ->getRepository('WallabagUserBundle:User') + ->findOneByUsername('admin'); + + $config = $user->getConfig(); + $config->setRssToken('SUPERTOKEN'); + $config->setRssLimit(1); + $em->persist($config); + $em->flush(); + + $client = $this->getClient(); + $client->request('GET', '/admin/SUPERTOKEN/starred.xml'); + + $this->assertEquals(200, $client->getResponse()->getStatusCode(), 1); + + $this->validateDom($client->getResponse()->getContent()); + } + + public function testArchives() + { + $client = $this->getClient(); + $em = $client->getContainer()->get('doctrine.orm.entity_manager'); + $user = $em + ->getRepository('WallabagUserBundle:User') + ->findOneByUsername('admin'); + + $config = $user->getConfig(); + $config->setRssToken('SUPERTOKEN'); + $config->setRssLimit(null); + $em->persist($config); + $em->flush(); + + $client = $this->getClient(); + $client->request('GET', '/admin/SUPERTOKEN/archive.xml'); + + $this->assertEquals(200, $client->getResponse()->getStatusCode()); + + $this->validateDom($client->getResponse()->getContent()); + } +}