X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=tests%2FWallabag%2FCoreBundle%2FController%2FIgnoreOriginInstanceRuleControllerTest.php;fp=tests%2FWallabag%2FCoreBundle%2FController%2FIgnoreOriginInstanceRuleControllerTest.php;h=9783cd251ff1779d9a34b00ec04b00b14f96de00;hb=7408a6cb687959eac6bc7a2ed370695bbf88b6d6;hp=0000000000000000000000000000000000000000;hpb=b22eb276232b5c15a6fbadc9dd10144e709faec3;p=github%2Fwallabag%2Fwallabag.git diff --git a/tests/Wallabag/CoreBundle/Controller/IgnoreOriginInstanceRuleControllerTest.php b/tests/Wallabag/CoreBundle/Controller/IgnoreOriginInstanceRuleControllerTest.php new file mode 100644 index 00000000..9783cd25 --- /dev/null +++ b/tests/Wallabag/CoreBundle/Controller/IgnoreOriginInstanceRuleControllerTest.php @@ -0,0 +1,148 @@ +logInAs('admin'); + $client = $this->getClient(); + + $crawler = $client->request('GET', '/ignore-origin-instance-rules/'); + + $this->assertSame(200, $client->getResponse()->getStatusCode()); + + $body = $crawler->filter('body')->extract(['_text'])[0]; + + $this->assertContains('ignore_origin_instance_rule.description', $body); + $this->assertContains('ignore_origin_instance_rule.list.create_new_one', $body); + } + + public function testIgnoreOriginInstanceRuleCreationEditionDeletion() + { + $this->logInAs('admin'); + $client = $this->getClient(); + + // Creation + $crawler = $client->request('GET', '/ignore-origin-instance-rules/new'); + + $this->assertSame(200, $client->getResponse()->getStatusCode()); + + $body = $crawler->filter('body')->extract(['_text'])[0]; + + $this->assertContains('ignore_origin_instance_rule.new_ignore_origin_instance_rule', $body); + $this->assertContains('ignore_origin_instance_rule.form.back_to_list', $body); + + $form = $crawler->filter('button[id=ignore_origin_instance_rule_save]')->form(); + + $data = [ + 'ignore_origin_instance_rule[rule]' => 'host = "foo.example.com"', + ]; + + $client->submit($form, $data); + + $this->assertSame(302, $client->getResponse()->getStatusCode()); + + $crawler = $client->followRedirect(); + + $this->assertContains('flashes.ignore_origin_instance_rule.notice.added', $crawler->filter('body')->extract(['_text'])[0]); + + // Edition + $editLink = $crawler->filter('div[id=content] table a')->last()->link(); + + $crawler = $client->click($editLink); + + $this->assertSame(200, $client->getResponse()->getStatusCode()); + + $this->assertContains('foo.example.com', $crawler->filter('form[name=ignore_origin_instance_rule] input[type=text]')->extract(['value'])[0]); + + $body = $crawler->filter('body')->extract(['_text'])[0]; + + $this->assertContains('ignore_origin_instance_rule.edit_ignore_origin_instance_rule', $body); + $this->assertContains('ignore_origin_instance_rule.form.back_to_list', $body); + + $form = $crawler->filter('button[id=ignore_origin_instance_rule_save]')->form(); + + $data = [ + 'ignore_origin_instance_rule[rule]' => 'host = "bar.example.com"', + ]; + + $client->submit($form, $data); + + $this->assertSame(302, $client->getResponse()->getStatusCode()); + + $crawler = $client->followRedirect(); + + $this->assertContains('flashes.ignore_origin_instance_rule.notice.updated', $crawler->filter('body')->extract(['_text'])[0]); + + $editLink = $crawler->filter('div[id=content] table a')->last()->link(); + + $crawler = $client->click($editLink); + + $this->assertSame(200, $client->getResponse()->getStatusCode()); + + $this->assertContains('bar.example.com', $crawler->filter('form[name=ignore_origin_instance_rule] input[type=text]')->extract(['value'])[0]); + + $deleteForm = $crawler->filter('body')->selectButton('ignore_origin_instance_rule.form.delete')->form(); + + $client->submit($deleteForm, []); + + $this->assertSame(302, $client->getResponse()->getStatusCode()); + + $crawler = $client->followRedirect(); + + $this->assertContains('flashes.ignore_origin_instance_rule.notice.deleted', $crawler->filter('body')->extract(['_text'])[0]); + } + + public function dataForIgnoreOriginInstanceRuleCreationFail() + { + return [ + [ + [ + 'ignore_origin_instance_rule[rule]' => 'foo = "bar"', + ], + [ + 'The variable', + 'does not exist.', + ], + ], + [ + [ + 'ignore_origin_instance_rule[rule]' => '_all != "none"', + ], + [ + 'The operator', + 'does not exist.', + ], + ], + ]; + } + + /** + * @dataProvider dataForIgnoreOriginInstanceRuleCreationFail + */ + public function testIgnoreOriginInstanceRuleCreationFail($data, $messages) + { + $this->logInAs('admin'); + $client = $this->getClient(); + + $crawler = $client->request('GET', '/ignore-origin-instance-rules/new'); + + $this->assertSame(200, $client->getResponse()->getStatusCode()); + + $form = $crawler->filter('button[id=ignore_origin_instance_rule_save]')->form(); + + $crawler = $client->submit($form, $data); + + $this->assertSame(200, $client->getResponse()->getStatusCode()); + + $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); + + foreach ($messages as $message) { + $this->assertContains($message, $body[0]); + } + } +}