X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FCoreBundle%2FTests%2FController%2FConfigControllerTest.php;h=1aa1a7ed3e9cdca695dca3fdcb7b2257500cd04e;hb=f2e5fdc3666a2a6525b4202ab48df05efeebaf5c;hp=89ca31e2942b3f2288fe5f703d016174953ba9db;hpb=fc73222723c7a0c9b577805d3ef51eb96b124b92;p=github%2Fwallabag%2Fwallabag.git diff --git a/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php index 89ca31e2..1aa1a7ed 100644 --- a/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php +++ b/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php @@ -43,11 +43,12 @@ class ConfigControllerTest extends WallabagCoreTestCase $form = $crawler->filter('button[id=config_save]')->form(); - $data = array( + $data = [ 'config[theme]' => 'baggy', 'config[items_per_page]' => '30', + 'config[reading_speed]' => '0.5', 'config[language]' => 'en', - ); + ]; $client->submit($form, $data); @@ -55,19 +56,19 @@ class ConfigControllerTest extends WallabagCoreTestCase $crawler = $client->followRedirect(); - $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); - $this->assertContains('Config saved', $alert[0]); + $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(['_text'])); + $this->assertContains('flashes.config.notice.config_saved', $alert[0]); } public function dataForUpdateFailed() { - return array( - array(array( + return [ + [[ 'config[theme]' => 'baggy', 'config[items_per_page]' => '', 'config[language]' => 'en', - )), - ); + ]], + ]; } /** @@ -88,46 +89,46 @@ class ConfigControllerTest extends WallabagCoreTestCase $this->assertEquals(200, $client->getResponse()->getStatusCode()); - $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(array('_text'))); + $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(['_text'])); $this->assertContains('This value should not be blank', $alert[0]); } public function dataForChangePasswordFailed() { - return array( - array( - array( + return [ + [ + [ 'change_passwd[old_password]' => 'material', 'change_passwd[new_password][first]' => '', 'change_passwd[new_password][second]' => '', - ), - 'Wrong value for your current password', - ), - array( - array( + ], + 'validator.password_wrong_value', + ], + [ + [ 'change_passwd[old_password]' => 'mypassword', 'change_passwd[new_password][first]' => '', 'change_passwd[new_password][second]' => '', - ), + ], 'This value should not be blank', - ), - array( - array( + ], + [ + [ 'change_passwd[old_password]' => 'mypassword', 'change_passwd[new_password][first]' => 'hop', 'change_passwd[new_password][second]' => '', - ), - 'The password fields must match', - ), - array( - array( + ], + 'validator.password_must_match', + ], + [ + [ 'change_passwd[old_password]' => 'mypassword', 'change_passwd[new_password][first]' => 'hop', 'change_passwd[new_password][second]' => 'hop', - ), - 'Password should by at least', - ), - ); + ], + 'validator.password_too_short', + ], + ]; } /** @@ -148,7 +149,7 @@ class ConfigControllerTest extends WallabagCoreTestCase $this->assertEquals(200, $client->getResponse()->getStatusCode()); - $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(array('_text'))); + $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(['_text'])); $this->assertContains($expectedMessage, $alert[0]); } @@ -163,11 +164,11 @@ class ConfigControllerTest extends WallabagCoreTestCase $form = $crawler->filter('button[id=change_passwd_save]')->form(); - $data = array( + $data = [ 'change_passwd[old_password]' => 'mypassword', 'change_passwd[new_password][first]' => 'mypassword', 'change_passwd[new_password][second]' => 'mypassword', - ); + ]; $client->submit($form, $data); @@ -175,28 +176,28 @@ class ConfigControllerTest extends WallabagCoreTestCase $crawler = $client->followRedirect(); - $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); - $this->assertContains('Password updated', $alert[0]); + $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(['_text'])); + $this->assertContains('flashes.config.notice.password_updated', $alert[0]); } public function dataForUserFailed() { - return array( - array( - array( + return [ + [ + [ 'update_user[name]' => '', 'update_user[email]' => '', - ), - 'Please enter an email', - ), - array( - array( + ], + 'fos_user.email.blank', + ], + [ + [ 'update_user[name]' => '', 'update_user[email]' => 'test', - ), - 'The email is not valid', - ), - ); + ], + 'fos_user.email.invalid', + ], + ]; } /** @@ -217,7 +218,7 @@ class ConfigControllerTest extends WallabagCoreTestCase $this->assertEquals(200, $client->getResponse()->getStatusCode()); - $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(array('_text'))); + $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(['_text'])); $this->assertContains($expectedMessage, $alert[0]); } @@ -232,10 +233,10 @@ class ConfigControllerTest extends WallabagCoreTestCase $form = $crawler->filter('button[id=update_user_save]')->form(); - $data = array( + $data = [ 'update_user[name]' => 'new name', 'update_user[email]' => 'admin@wallabag.io', - ); + ]; $client->submit($form, $data); @@ -243,59 +244,59 @@ class ConfigControllerTest extends WallabagCoreTestCase $crawler = $client->followRedirect(); - $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); - $this->assertContains('Information updated', $alert[0]); + $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(['_text'])); + $this->assertContains('flashes.config.notice.user_updated', $alert[0]); } public function dataForNewUserFailed() { - return array( - array( - array( + return [ + [ + [ 'new_user[username]' => '', 'new_user[plainPassword][first]' => '', 'new_user[plainPassword][second]' => '', 'new_user[email]' => '', - ), - 'Please enter a username', - ), - array( - array( + ], + 'fos_user.username.blank', + ], + [ + [ 'new_user[username]' => 'a', 'new_user[plainPassword][first]' => 'mypassword', 'new_user[plainPassword][second]' => 'mypassword', 'new_user[email]' => '', - ), - 'The username is too short', - ), - array( - array( + ], + 'fos_user.username.short', + ], + [ + [ 'new_user[username]' => 'wallace', 'new_user[plainPassword][first]' => 'mypassword', 'new_user[plainPassword][second]' => 'mypassword', 'new_user[email]' => 'test', - ), - 'The email is not valid', - ), - array( - array( + ], + 'fos_user.email.invalid', + ], + [ + [ '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( + ], + 'fos_user.username.already_used', + ], + [ + [ 'new_user[username]' => 'wallace', 'new_user[plainPassword][first]' => 'mypassword1', 'new_user[plainPassword][second]' => 'mypassword2', 'new_user[email]' => 'wallace@wallace.me', - ), - 'This value is not valid', - ), - ); + ], + 'validator.password_must_match', + ], + ]; } /** @@ -316,7 +317,7 @@ class ConfigControllerTest extends WallabagCoreTestCase $this->assertEquals(200, $client->getResponse()->getStatusCode()); - $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(array('_text'))); + $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(['_text'])); $this->assertContains($expectedMessage, $alert[0]); } @@ -331,12 +332,12 @@ class ConfigControllerTest extends WallabagCoreTestCase $form = $crawler->filter('button[id=new_user_save]')->form(); - $data = array( + $data = [ 'new_user[username]' => 'wallace', 'new_user[plainPassword][first]' => 'wallace1', 'new_user[plainPassword][second]' => 'wallace1', 'new_user[email]' => 'wallace@wallace.me', - ); + ]; $client->submit($form, $data); @@ -344,8 +345,8 @@ class ConfigControllerTest extends WallabagCoreTestCase $crawler = $client->followRedirect(); - $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); - $this->assertContains('User "wallace" added', $alert[0]); + $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(['_text'])); + $this->assertContains('flashes.config.notice.user_added', $alert[0]); $em = $client->getContainer()->get('doctrine.orm.entity_manager'); $user = $em @@ -380,16 +381,16 @@ class ConfigControllerTest extends WallabagCoreTestCase $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]); + $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); + $this->assertContains('config.form_rss.no_token', $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]); + $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); + $this->assertNotContains('config.form_rss.no_token', $body[0]); } public function testGenerateTokenAjax() @@ -400,9 +401,9 @@ class ConfigControllerTest extends WallabagCoreTestCase $client->request( 'GET', '/generate-token', - array(), - array(), - array('HTTP_X-Requested-With' => 'XMLHttpRequest') + [], + [], + ['HTTP_X-Requested-With' => 'XMLHttpRequest'] ); $this->assertEquals(200, $client->getResponse()->getStatusCode()); @@ -417,18 +418,13 @@ class ConfigControllerTest extends WallabagCoreTestCase $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( + $data = [ 'rss_config[rss_limit]' => 12, - ); + ]; $client->submit($form, $data); @@ -436,26 +432,26 @@ class ConfigControllerTest extends WallabagCoreTestCase $crawler = $client->followRedirect(); - $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); - $this->assertContains('RSS information updated', $alert[0]); + $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(['_text'])); + $this->assertContains('flashes.config.notice.rss_updated', $alert[0]); } public function dataForRssFailed() { - return array( - array( - array( + return [ + [ + [ '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', - ), - ); + ], + 'validator.rss_limit_too_hight', + ], + ]; } /** @@ -476,7 +472,7 @@ class ConfigControllerTest extends WallabagCoreTestCase $this->assertEquals(200, $client->getResponse()->getStatusCode()); - $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(array('_text'))); + $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(['_text'])); $this->assertContains($expectedMessage, $alert[0]); } @@ -491,10 +487,10 @@ class ConfigControllerTest extends WallabagCoreTestCase $form = $crawler->filter('button[id=tagging_rule_save]')->form(); - $data = array( + $data = [ 'tagging_rule[rule]' => 'readingTime <= 3', 'tagging_rule[tags]' => 'short reading', - ); + ]; $client->submit($form, $data); @@ -502,8 +498,8 @@ class ConfigControllerTest extends WallabagCoreTestCase $crawler = $client->followRedirect(); - $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text'))); - $this->assertContains('Tagging rules updated', $alert[0]); + $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(['_text'])); + $this->assertContains('flashes.config.notice.tagging_rules_updated', $alert[0]); $deleteLink = $crawler->filter('.delete')->last()->link(); @@ -511,27 +507,104 @@ class ConfigControllerTest extends WallabagCoreTestCase $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]); + $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(['_text'])); + $this->assertContains('flashes.config.notice.tagging_rules_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.', - ), - ); + return [ + [ + [ + 'tagging_rule[rule]' => 'unknownVar <= 3', + 'tagging_rule[tags]' => 'cool tag', + ], + [ + 'The variable', + 'does not exist.', + ], + ], + [ + [ + 'tagging_rule[rule]' => 'length(domainName) <= 42', + 'tagging_rule[tags]' => 'cool tag', + ], + [ + 'The operator', + 'does not exist.', + ], + ], + ]; + } + + /** + * @dataProvider dataForTaggingRuleFailed + */ + public function testTaggingRuleCreationFail($data, $messages) + { + $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(); + + $crawler = $client->submit($form, $data); + + $this->assertEquals(200, $client->getResponse()->getStatusCode()); + + $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); + + foreach ($messages as $message) { + $this->assertContains($message, $body[0]); + } + } + + public function testDeletingTaggingRuleFromAnOtherUser() + { + $this->logInAs('bob'); + $client = $this->getClient(); + + $rule = $client->getContainer()->get('doctrine.orm.entity_manager') + ->getRepository('WallabagCoreBundle:TaggingRule') + ->findAll()[0]; + + $crawler = $client->request('GET', '/tagging-rule/delete/'.$rule->getId()); + + $this->assertEquals(403, $client->getResponse()->getStatusCode()); + $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); + $this->assertContains('You can not access this tagging rule', $body[0]); + } + + public function testDemoMode() + { + $this->logInAs('admin'); + $client = $this->getClient(); + + $config = $client->getContainer()->get('craue_config'); + $config->set('demo_mode_enabled', 1); + $config->set('demo_mode_username', 'admin'); + + $crawler = $client->request('GET', '/config'); + + $this->assertEquals(200, $client->getResponse()->getStatusCode()); + + $form = $crawler->filter('button[id=change_passwd_save]')->form(); + + $data = [ + 'change_passwd[old_password]' => 'mypassword', + 'change_passwd[new_password][first]' => 'mypassword', + 'change_passwd[new_password][second]' => 'mypassword', + ]; + + $client->submit($form, $data); + + $this->assertEquals(302, $client->getResponse()->getStatusCode()); + $this->assertContains('flashes.config.notice.password_not_updated_demo', $client->getContainer()->get('session')->getFlashBag()->get('notice')[0]); + + $config->set('demo_mode_enabled', 0); + $config->set('demo_mode_username', 'wallabag'); } }