3 namespace Tests\Wallabag\CoreBundle\Controller
;
5 use Tests\Wallabag\CoreBundle\WallabagCoreTestCase
;
7 class IgnoreOriginInstanceRuleControllerTest
extends WallabagCoreTestCase
9 public function testListIgnoreOriginInstanceRule()
11 $this->logInAs('admin');
12 $client = $this->getClient();
14 $crawler = $client->request('GET', '/ignore-origin-instance-rules/');
16 $this->assertSame(200, $client->getResponse()->getStatusCode());
18 $body = $crawler->filter('body')->extract(['_text'])[0];
20 $this->assertContains('ignore_origin_instance_rule.description', $body);
21 $this->assertContains('ignore_origin_instance_rule.list.create_new_one', $body);
24 public function testIgnoreOriginInstanceRuleCreationEditionDeletion()
26 $this->logInAs('admin');
27 $client = $this->getClient();
30 $crawler = $client->request('GET', '/ignore-origin-instance-rules/new');
32 $this->assertSame(200, $client->getResponse()->getStatusCode());
34 $body = $crawler->filter('body')->extract(['_text'])[0];
36 $this->assertContains('ignore_origin_instance_rule.new_ignore_origin_instance_rule', $body);
37 $this->assertContains('ignore_origin_instance_rule.form.back_to_list', $body);
39 $form = $crawler->filter('button[id=ignore_origin_instance_rule_save]')->form();
42 'ignore_origin_instance_rule[rule]' => 'host = "foo.example.com"',
45 $client->submit($form, $data);
47 $this->assertSame(302, $client->getResponse()->getStatusCode());
49 $crawler = $client->followRedirect();
51 $this->assertContains('flashes.ignore_origin_instance_rule.notice.added', $crawler->filter('body')->extract(['_text'])[0]);
54 $editLink = $crawler->filter('div[id=content] table a')->last()->link();
56 $crawler = $client->click($editLink);
58 $this->assertSame(200, $client->getResponse()->getStatusCode());
60 $this->assertContains('foo.example.com', $crawler->filter('form[name=ignore_origin_instance_rule] input[type=text]')->extract(['value'])[0]);
62 $body = $crawler->filter('body')->extract(['_text'])[0];
64 $this->assertContains('ignore_origin_instance_rule.edit_ignore_origin_instance_rule', $body);
65 $this->assertContains('ignore_origin_instance_rule.form.back_to_list', $body);
67 $form = $crawler->filter('button[id=ignore_origin_instance_rule_save]')->form();
70 'ignore_origin_instance_rule[rule]' => 'host = "bar.example.com"',
73 $client->submit($form, $data);
75 $this->assertSame(302, $client->getResponse()->getStatusCode());
77 $crawler = $client->followRedirect();
79 $this->assertContains('flashes.ignore_origin_instance_rule.notice.updated', $crawler->filter('body')->extract(['_text'])[0]);
81 $editLink = $crawler->filter('div[id=content] table a')->last()->link();
83 $crawler = $client->click($editLink);
85 $this->assertSame(200, $client->getResponse()->getStatusCode());
87 $this->assertContains('bar.example.com', $crawler->filter('form[name=ignore_origin_instance_rule] input[type=text]')->extract(['value'])[0]);
89 $deleteForm = $crawler->filter('body')->selectButton('ignore_origin_instance_rule.form.delete')->form();
91 $client->submit($deleteForm, []);
93 $this->assertSame(302, $client->getResponse()->getStatusCode());
95 $crawler = $client->followRedirect();
97 $this->assertContains('flashes.ignore_origin_instance_rule.notice.deleted', $crawler->filter('body')->extract(['_text'])[0]);
100 public function dataForIgnoreOriginInstanceRuleCreationFail()
105 'ignore_origin_instance_rule[rule]' => 'foo = "bar"',
114 'ignore_origin_instance_rule[rule]' => '_all != "none"',
125 * @dataProvider dataForIgnoreOriginInstanceRuleCreationFail
127 public function testIgnoreOriginInstanceRuleCreationFail($data, $messages)
129 $this->logInAs('admin');
130 $client = $this->getClient();
132 $crawler = $client->request('GET', '/ignore-origin-instance-rules/new');
134 $this->assertSame(200, $client->getResponse()->getStatusCode());
136 $form = $crawler->filter('button[id=ignore_origin_instance_rule_save]')->form();
138 $crawler = $client->submit($form, $data);
140 $this->assertSame(200, $client->getResponse()->getStatusCode());
142 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
144 foreach ($messages as $message) {
145 $this->assertContains($message, $body[0]);