X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=src%2FWallabag%2FCoreBundle%2FTests%2FController%2FConfigControllerTest.php;h=7b32354f8b61822af84d72d1a6056063fd753910;hb=a7f1921f7db312b5def3839393357f443dcbb52c;hp=9b1a0986e9067b87dd5b7839d78cc0580f023465;hpb=e4977b8a866f84f65f08c55c050a62f40170fdbf;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php index 9b1a0986..7b32354f 100644 --- a/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php +++ b/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php @@ -2,9 +2,9 @@ namespace Wallabag\CoreBundle\Tests\Controller; -use Wallabag\CoreBundle\Tests\WallabagTestCase; +use Wallabag\CoreBundle\Tests\WallabagCoreTestCase; -class ConfigControllerTest extends WallabagTestCase +class ConfigControllerTest extends WallabagCoreTestCase { public function testLogin() { @@ -27,7 +27,9 @@ class ConfigControllerTest extends WallabagTestCase $this->assertCount(1, $crawler->filter('button[id=config_save]')); $this->assertCount(1, $crawler->filter('button[id=change_passwd_save]')); - $this->assertCount(1, $crawler->filter('button[id=user_save]')); + $this->assertCount(1, $crawler->filter('button[id=update_user_save]')); + $this->assertCount(1, $crawler->filter('button[id=new_user_save]')); + $this->assertCount(1, $crawler->filter('button[id=rss_config_save]')); } public function testUpdate() @@ -42,9 +44,9 @@ class ConfigControllerTest extends WallabagTestCase $form = $crawler->filter('button[id=config_save]')->form(); $data = array( - 'config[theme]' => 'baggy', + 'config[theme]' => 0, 'config[items_per_page]' => '30', - 'config[language]' => 'fr_FR', + 'config[language]' => 'en', ); $client->submit($form, $data); @@ -53,7 +55,7 @@ class ConfigControllerTest extends WallabagTestCase $crawler = $client->followRedirect(); - $this->assertGreaterThan(1, $alert = $crawler->filter('div.flash-notice')->extract(array('_text'))); + $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); $this->assertContains('Config saved', $alert[0]); } @@ -61,14 +63,9 @@ class ConfigControllerTest extends WallabagTestCase { return array( array(array( - 'config[theme]' => 'baggy', + 'config[theme]' => 0, 'config[items_per_page]' => '', - 'config[language]' => 'fr_FR', - )), - array(array( - 'config[theme]' => 'baggy', - 'config[items_per_page]' => '12', - 'config[language]' => '', + 'config[language]' => 'en', )), ); } @@ -100,7 +97,7 @@ class ConfigControllerTest extends WallabagTestCase return array( array( array( - 'change_passwd[old_password]' => 'baggy', + 'change_passwd[old_password]' => 'material', 'change_passwd[new_password][first]' => '', 'change_passwd[new_password][second]' => '', ), @@ -178,7 +175,7 @@ class ConfigControllerTest extends WallabagTestCase $crawler = $client->followRedirect(); - $this->assertGreaterThan(1, $alert = $crawler->filter('div.flash-notice')->extract(array('_text'))); + $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); $this->assertContains('Password updated', $alert[0]); } @@ -187,27 +184,17 @@ class ConfigControllerTest extends WallabagTestCase return array( array( array( - 'user[username]' => '', - 'user[name]' => '', - 'user[email]' => '', + 'update_user[name]' => '', + 'update_user[email]' => '', ), - 'This value should not be blank.', + 'Please enter an email', ), array( array( - 'user[username]' => 'ad', - 'user[name]' => '', - 'user[email]' => '', + 'update_user[name]' => '', + 'update_user[email]' => 'test', ), - 'This value is too short.', - ), - array( - array( - 'user[username]' => 'admin', - 'user[name]' => '', - 'user[email]' => 'test', - ), - 'This value is not a valid email address.', + 'The email is not valid', ), ); } @@ -224,7 +211,7 @@ class ConfigControllerTest extends WallabagTestCase $this->assertEquals(200, $client->getResponse()->getStatusCode()); - $form = $crawler->filter('button[id=user_save]')->form(); + $form = $crawler->filter('button[id=update_user_save]')->form(); $crawler = $client->submit($form, $data); @@ -243,12 +230,11 @@ class ConfigControllerTest extends WallabagTestCase $this->assertEquals(200, $client->getResponse()->getStatusCode()); - $form = $crawler->filter('button[id=user_save]')->form(); + $form = $crawler->filter('button[id=update_user_save]')->form(); $data = array( - 'user[username]' => 'admin', - 'user[name]' => 'new name', - 'user[email]' => 'admin@wallabag.io', + 'update_user[name]' => 'new name', + 'update_user[email]' => 'admin@wallabag.io', ); $client->submit($form, $data); @@ -257,7 +243,7 @@ class ConfigControllerTest extends WallabagTestCase $crawler = $client->followRedirect(); - $this->assertGreaterThan(1, $alert = $crawler->filter('div.flash-notice')->extract(array('_text'))); + $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); $this->assertContains('Information updated', $alert[0]); } @@ -267,34 +253,47 @@ class ConfigControllerTest extends WallabagTestCase array( array( 'new_user[username]' => '', - 'new_user[password]' => '', + 'new_user[plainPassword][first]' => '', + 'new_user[plainPassword][second]' => '', 'new_user[email]' => '', ), - 'This value should not be blank.', + 'Please enter a username', ), array( array( - 'new_user[username]' => 'ad', - 'new_user[password]' => '', + 'new_user[username]' => 'a', + 'new_user[plainPassword][first]' => 'mypassword', + 'new_user[plainPassword][second]' => 'mypassword', 'new_user[email]' => '', ), - 'This value is too short.', + 'The username is too short', ), array( array( 'new_user[username]' => 'wallace', - 'new_user[password]' => '', + 'new_user[plainPassword][first]' => 'mypassword', + 'new_user[plainPassword][second]' => 'mypassword', 'new_user[email]' => 'test', ), - 'This value is not a valid email address.', + 'The email is not valid', + ), + array( + array( + 'new_user[username]' => 'admin', + 'new_user[plainPassword][first]' => 'wallacewallace', + 'new_user[plainPassword][second]' => 'wallacewallace', + 'new_user[email]' => 'wallace@wallace.me', + ), + 'The username is already used', ), array( array( 'new_user[username]' => 'wallace', - 'new_user[password]' => 'admin', + 'new_user[plainPassword][first]' => 'mypassword1', + 'new_user[plainPassword][second]' => 'mypassword2', 'new_user[email]' => 'wallace@wallace.me', ), - 'Password should by at least', + 'This value is not valid', ), ); } @@ -334,7 +333,8 @@ class ConfigControllerTest extends WallabagTestCase $data = array( 'new_user[username]' => 'wallace', - 'new_user[password]' => 'wallace1', + 'new_user[plainPassword][first]' => 'wallace1', + 'new_user[plainPassword][second]' => 'wallace1', 'new_user[email]' => 'wallace@wallace.me', ); @@ -344,7 +344,194 @@ class ConfigControllerTest extends WallabagTestCase $crawler = $client->followRedirect(); - $this->assertGreaterThan(1, $alert = $crawler->filter('div.flash-notice')->extract(array('_text'))); + $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); $this->assertContains('User "wallace" added', $alert[0]); + + $em = $client->getContainer()->get('doctrine.orm.entity_manager'); + $user = $em + ->getRepository('WallabagUserBundle:User') + ->findOneByUsername('wallace'); + + $this->assertTrue(false !== $user); + $this->assertTrue($user->isEnabled()); + } + + public function testRssUpdateResetToken() + { + $this->logInAs('admin'); + $client = $this->getClient(); + + // reset the token + $em = $client->getContainer()->get('doctrine.orm.entity_manager'); + $user = $em + ->getRepository('WallabagUserBundle:User') + ->findOneByUsername('admin'); + + if (!$user) { + $this->markTestSkipped('No user found in db.'); + } + + $config = $user->getConfig(); + $config->setRssToken(null); + $em->persist($config); + $em->flush(); + + $crawler = $client->request('GET', '/config'); + + $this->assertEquals(200, $client->getResponse()->getStatusCode()); + + $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text'))); + $this->assertContains('You need to generate a token first.', $body[0]); + + $client->request('GET', '/generate-token'); + $this->assertEquals(302, $client->getResponse()->getStatusCode()); + + $crawler = $client->followRedirect(); + + $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text'))); + $this->assertNotContains('You need to generate a token first.', $body[0]); + } + + public function testGenerateTokenAjax() + { + $this->logInAs('admin'); + $client = $this->getClient(); + + $client->request( + 'GET', + '/generate-token', + array(), + array(), + array('HTTP_X-Requested-With' => 'XMLHttpRequest') + ); + + $this->assertEquals(200, $client->getResponse()->getStatusCode()); + $content = json_decode($client->getResponse()->getContent(), true); + $this->assertArrayHasKey('token', $content); + } + + public function testRssUpdate() + { + $this->logInAs('admin'); + $client = $this->getClient(); + + $crawler = $client->request('GET', '/config'); + + if (500 == $client->getResponse()->getStatusCode()) { + var_export($client->getResponse()->getContent()); + die(); + } + + $this->assertEquals(200, $client->getResponse()->getStatusCode()); + + $form = $crawler->filter('button[id=rss_config_save]')->form(); + + $data = array( + 'rss_config[rss_limit]' => 12, + ); + + $client->submit($form, $data); + + $this->assertEquals(302, $client->getResponse()->getStatusCode()); + + $crawler = $client->followRedirect(); + + $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); + $this->assertContains('RSS information updated', $alert[0]); + } + + public function dataForRssFailed() + { + return array( + array( + array( + 'rss_config[rss_limit]' => 0, + ), + 'This value should be 1 or more.', + ), + array( + array( + 'rss_config[rss_limit]' => 1000000000000, + ), + 'This will certainly kill the app', + ), + ); + } + + /** + * @dataProvider dataForRssFailed + */ + public function testRssFailed($data, $expectedMessage) + { + $this->logInAs('admin'); + $client = $this->getClient(); + + $crawler = $client->request('GET', '/config'); + + $this->assertEquals(200, $client->getResponse()->getStatusCode()); + + $form = $crawler->filter('button[id=rss_config_save]')->form(); + + $crawler = $client->submit($form, $data); + + $this->assertEquals(200, $client->getResponse()->getStatusCode()); + + $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(array('_text'))); + $this->assertContains($expectedMessage, $alert[0]); + } + + public function testTaggingRuleCreation() + { + $this->logInAs('admin'); + $client = $this->getClient(); + + $crawler = $client->request('GET', '/config'); + + $this->assertTrue($client->getResponse()->isSuccessful()); + + $form = $crawler->filter('button[id=tagging_rule_save]')->form(); + + $data = array( + 'tagging_rule[rule]' => 'readingTime <= 3', + 'tagging_rule[tags]' => 'short reading', + ); + + $client->submit($form, $data); + + $this->assertEquals(302, $client->getResponse()->getStatusCode()); + + $crawler = $client->followRedirect(); + + $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); + $this->assertContains('Tagging rules updated', $alert[0]); + + $deleteLink = $crawler->filter('.delete')->last()->link(); + + $crawler = $client->click($deleteLink); + $this->assertEquals(302, $client->getResponse()->getStatusCode()); + + $crawler = $client->followRedirect(); + $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); + $this->assertContains('Tagging rule deleted', $alert[0]); + } + + public function dataForTaggingRuleFailed() + { + return array( + array( + array( + 'rss_config[rule]' => 'unknownVar <= 3', + 'rss_config[tags]' => 'cool tag', + ), + 'The variable « unknownVar » does not exist.', + ), + array( + array( + 'rss_config[rule]' => 'length(domainName) <= 42', + 'rss_config[tags]' => 'cool tag', + ), + 'The operator « length » does not exist.', + ), + ); } }