diff options
Diffstat (limited to 'tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php')
-rw-r--r-- | tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php | 652 |
1 files changed, 652 insertions, 0 deletions
diff --git a/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php b/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php new file mode 100644 index 00000000..7193f9b0 --- /dev/null +++ b/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php | |||
@@ -0,0 +1,652 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Tests\Wallabag\CoreBundle\Controller; | ||
4 | |||
5 | use Tests\Wallabag\CoreBundle\WallabagCoreTestCase; | ||
6 | |||
7 | class ConfigControllerTest extends WallabagCoreTestCase | ||
8 | { | ||
9 | public function testLogin() | ||
10 | { | ||
11 | $client = $this->getClient(); | ||
12 | |||
13 | $client->request('GET', '/new'); | ||
14 | |||
15 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
16 | $this->assertContains('login', $client->getResponse()->headers->get('location')); | ||
17 | } | ||
18 | |||
19 | public function testIndex() | ||
20 | { | ||
21 | $this->logInAs('admin'); | ||
22 | $client = $this->getClient(); | ||
23 | |||
24 | $crawler = $client->request('GET', '/config'); | ||
25 | |||
26 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
27 | |||
28 | $this->assertCount(1, $crawler->filter('button[id=config_save]')); | ||
29 | $this->assertCount(1, $crawler->filter('button[id=change_passwd_save]')); | ||
30 | $this->assertCount(1, $crawler->filter('button[id=update_user_save]')); | ||
31 | $this->assertCount(1, $crawler->filter('button[id=new_user_save]')); | ||
32 | $this->assertCount(1, $crawler->filter('button[id=rss_config_save]')); | ||
33 | } | ||
34 | |||
35 | public function testUpdate() | ||
36 | { | ||
37 | $this->logInAs('admin'); | ||
38 | $client = $this->getClient(); | ||
39 | |||
40 | $crawler = $client->request('GET', '/config'); | ||
41 | |||
42 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
43 | |||
44 | $form = $crawler->filter('button[id=config_save]')->form(); | ||
45 | |||
46 | $data = [ | ||
47 | 'config[theme]' => 'baggy', | ||
48 | 'config[items_per_page]' => '30', | ||
49 | 'config[reading_speed]' => '0.5', | ||
50 | 'config[language]' => 'en', | ||
51 | ]; | ||
52 | |||
53 | $client->submit($form, $data); | ||
54 | |||
55 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
56 | |||
57 | $crawler = $client->followRedirect(); | ||
58 | |||
59 | $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(['_text'])); | ||
60 | $this->assertContains('flashes.config.notice.config_saved', $alert[0]); | ||
61 | } | ||
62 | |||
63 | public function testChangeReadingSpeed() | ||
64 | { | ||
65 | $this->logInAs('admin'); | ||
66 | $client = $this->getClient(); | ||
67 | |||
68 | $crawler = $client->request('GET', '/unread/list'); | ||
69 | $form = $crawler->filter('button[id=submit-filter]')->form(); | ||
70 | $dataFilters = [ | ||
71 | 'entry_filter[readingTime][right_number]' => 22, | ||
72 | 'entry_filter[readingTime][left_number]' => 22, | ||
73 | ]; | ||
74 | $crawler = $client->submit($form, $dataFilters); | ||
75 | $this->assertCount(1, $crawler->filter('div[class=entry]')); | ||
76 | |||
77 | // Change reading speed | ||
78 | $crawler = $client->request('GET', '/config'); | ||
79 | $form = $crawler->filter('button[id=config_save]')->form(); | ||
80 | $data = [ | ||
81 | 'config[reading_speed]' => '2', | ||
82 | ]; | ||
83 | $client->submit($form, $data); | ||
84 | |||
85 | // Is the entry still available via filters? | ||
86 | $crawler = $client->request('GET', '/unread/list'); | ||
87 | $form = $crawler->filter('button[id=submit-filter]')->form(); | ||
88 | $crawler = $client->submit($form, $dataFilters); | ||
89 | $this->assertCount(0, $crawler->filter('div[class=entry]')); | ||
90 | |||
91 | // Restore old configuration | ||
92 | $crawler = $client->request('GET', '/config'); | ||
93 | $form = $crawler->filter('button[id=config_save]')->form(); | ||
94 | $data = [ | ||
95 | 'config[reading_speed]' => '0.5', | ||
96 | ]; | ||
97 | $client->submit($form, $data); | ||
98 | } | ||
99 | |||
100 | public function dataForUpdateFailed() | ||
101 | { | ||
102 | return [ | ||
103 | [[ | ||
104 | 'config[theme]' => 'baggy', | ||
105 | 'config[items_per_page]' => '', | ||
106 | 'config[language]' => 'en', | ||
107 | ]], | ||
108 | ]; | ||
109 | } | ||
110 | |||
111 | /** | ||
112 | * @dataProvider dataForUpdateFailed | ||
113 | */ | ||
114 | public function testUpdateFailed($data) | ||
115 | { | ||
116 | $this->logInAs('admin'); | ||
117 | $client = $this->getClient(); | ||
118 | |||
119 | $crawler = $client->request('GET', '/config'); | ||
120 | |||
121 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
122 | |||
123 | $form = $crawler->filter('button[id=config_save]')->form(); | ||
124 | |||
125 | $crawler = $client->submit($form, $data); | ||
126 | |||
127 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
128 | |||
129 | $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(['_text'])); | ||
130 | $this->assertContains('This value should not be blank', $alert[0]); | ||
131 | } | ||
132 | |||
133 | public function dataForChangePasswordFailed() | ||
134 | { | ||
135 | return [ | ||
136 | [ | ||
137 | [ | ||
138 | 'change_passwd[old_password]' => 'material', | ||
139 | 'change_passwd[new_password][first]' => '', | ||
140 | 'change_passwd[new_password][second]' => '', | ||
141 | ], | ||
142 | 'validator.password_wrong_value', | ||
143 | ], | ||
144 | [ | ||
145 | [ | ||
146 | 'change_passwd[old_password]' => 'mypassword', | ||
147 | 'change_passwd[new_password][first]' => '', | ||
148 | 'change_passwd[new_password][second]' => '', | ||
149 | ], | ||
150 | 'This value should not be blank', | ||
151 | ], | ||
152 | [ | ||
153 | [ | ||
154 | 'change_passwd[old_password]' => 'mypassword', | ||
155 | 'change_passwd[new_password][first]' => 'hop', | ||
156 | 'change_passwd[new_password][second]' => '', | ||
157 | ], | ||
158 | 'validator.password_must_match', | ||
159 | ], | ||
160 | [ | ||
161 | [ | ||
162 | 'change_passwd[old_password]' => 'mypassword', | ||
163 | 'change_passwd[new_password][first]' => 'hop', | ||
164 | 'change_passwd[new_password][second]' => 'hop', | ||
165 | ], | ||
166 | 'validator.password_too_short', | ||
167 | ], | ||
168 | ]; | ||
169 | } | ||
170 | |||
171 | /** | ||
172 | * @dataProvider dataForChangePasswordFailed | ||
173 | */ | ||
174 | public function testChangePasswordFailed($data, $expectedMessage) | ||
175 | { | ||
176 | $this->logInAs('admin'); | ||
177 | $client = $this->getClient(); | ||
178 | |||
179 | $crawler = $client->request('GET', '/config'); | ||
180 | |||
181 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
182 | |||
183 | $form = $crawler->filter('button[id=change_passwd_save]')->form(); | ||
184 | |||
185 | $crawler = $client->submit($form, $data); | ||
186 | |||
187 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
188 | |||
189 | $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(['_text'])); | ||
190 | $this->assertContains($expectedMessage, $alert[0]); | ||
191 | } | ||
192 | |||
193 | public function testChangePassword() | ||
194 | { | ||
195 | $this->logInAs('admin'); | ||
196 | $client = $this->getClient(); | ||
197 | |||
198 | $crawler = $client->request('GET', '/config'); | ||
199 | |||
200 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
201 | |||
202 | $form = $crawler->filter('button[id=change_passwd_save]')->form(); | ||
203 | |||
204 | $data = [ | ||
205 | 'change_passwd[old_password]' => 'mypassword', | ||
206 | 'change_passwd[new_password][first]' => 'mypassword', | ||
207 | 'change_passwd[new_password][second]' => 'mypassword', | ||
208 | ]; | ||
209 | |||
210 | $client->submit($form, $data); | ||
211 | |||
212 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
213 | |||
214 | $crawler = $client->followRedirect(); | ||
215 | |||
216 | $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(['_text'])); | ||
217 | $this->assertContains('flashes.config.notice.password_updated', $alert[0]); | ||
218 | } | ||
219 | |||
220 | public function dataForUserFailed() | ||
221 | { | ||
222 | return [ | ||
223 | [ | ||
224 | [ | ||
225 | 'update_user[name]' => '', | ||
226 | 'update_user[email]' => '', | ||
227 | ], | ||
228 | 'fos_user.email.blank', | ||
229 | ], | ||
230 | [ | ||
231 | [ | ||
232 | 'update_user[name]' => '', | ||
233 | 'update_user[email]' => 'test', | ||
234 | ], | ||
235 | 'fos_user.email.invalid', | ||
236 | ], | ||
237 | ]; | ||
238 | } | ||
239 | |||
240 | /** | ||
241 | * @dataProvider dataForUserFailed | ||
242 | */ | ||
243 | public function testUserFailed($data, $expectedMessage) | ||
244 | { | ||
245 | $this->logInAs('admin'); | ||
246 | $client = $this->getClient(); | ||
247 | |||
248 | $crawler = $client->request('GET', '/config'); | ||
249 | |||
250 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
251 | |||
252 | $form = $crawler->filter('button[id=update_user_save]')->form(); | ||
253 | |||
254 | $crawler = $client->submit($form, $data); | ||
255 | |||
256 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
257 | |||
258 | $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(['_text'])); | ||
259 | $this->assertContains($expectedMessage, $alert[0]); | ||
260 | } | ||
261 | |||
262 | public function testUserUpdate() | ||
263 | { | ||
264 | $this->logInAs('admin'); | ||
265 | $client = $this->getClient(); | ||
266 | |||
267 | $crawler = $client->request('GET', '/config'); | ||
268 | |||
269 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
270 | |||
271 | $form = $crawler->filter('button[id=update_user_save]')->form(); | ||
272 | |||
273 | $data = [ | ||
274 | 'update_user[name]' => 'new name', | ||
275 | 'update_user[email]' => 'admin@wallabag.io', | ||
276 | ]; | ||
277 | |||
278 | $client->submit($form, $data); | ||
279 | |||
280 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
281 | |||
282 | $crawler = $client->followRedirect(); | ||
283 | |||
284 | $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(['_text'])); | ||
285 | $this->assertContains('flashes.config.notice.user_updated', $alert[0]); | ||
286 | } | ||
287 | |||
288 | public function dataForNewUserFailed() | ||
289 | { | ||
290 | return [ | ||
291 | [ | ||
292 | [ | ||
293 | 'new_user[username]' => '', | ||
294 | 'new_user[plainPassword][first]' => '', | ||
295 | 'new_user[plainPassword][second]' => '', | ||
296 | 'new_user[email]' => '', | ||
297 | ], | ||
298 | 'fos_user.username.blank', | ||
299 | ], | ||
300 | [ | ||
301 | [ | ||
302 | 'new_user[username]' => 'a', | ||
303 | 'new_user[plainPassword][first]' => 'mypassword', | ||
304 | 'new_user[plainPassword][second]' => 'mypassword', | ||
305 | 'new_user[email]' => '', | ||
306 | ], | ||
307 | 'fos_user.username.short', | ||
308 | ], | ||
309 | [ | ||
310 | [ | ||
311 | 'new_user[username]' => 'wallace', | ||
312 | 'new_user[plainPassword][first]' => 'mypassword', | ||
313 | 'new_user[plainPassword][second]' => 'mypassword', | ||
314 | 'new_user[email]' => 'test', | ||
315 | ], | ||
316 | 'fos_user.email.invalid', | ||
317 | ], | ||
318 | [ | ||
319 | [ | ||
320 | 'new_user[username]' => 'admin', | ||
321 | 'new_user[plainPassword][first]' => 'wallacewallace', | ||
322 | 'new_user[plainPassword][second]' => 'wallacewallace', | ||
323 | 'new_user[email]' => 'wallace@wallace.me', | ||
324 | ], | ||
325 | 'fos_user.username.already_used', | ||
326 | ], | ||
327 | [ | ||
328 | [ | ||
329 | 'new_user[username]' => 'wallace', | ||
330 | 'new_user[plainPassword][first]' => 'mypassword1', | ||
331 | 'new_user[plainPassword][second]' => 'mypassword2', | ||
332 | 'new_user[email]' => 'wallace@wallace.me', | ||
333 | ], | ||
334 | 'validator.password_must_match', | ||
335 | ], | ||
336 | ]; | ||
337 | } | ||
338 | |||
339 | /** | ||
340 | * @dataProvider dataForNewUserFailed | ||
341 | */ | ||
342 | public function testNewUserFailed($data, $expectedMessage) | ||
343 | { | ||
344 | $this->logInAs('admin'); | ||
345 | $client = $this->getClient(); | ||
346 | |||
347 | $crawler = $client->request('GET', '/config'); | ||
348 | |||
349 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
350 | |||
351 | $form = $crawler->filter('button[id=new_user_save]')->form(); | ||
352 | |||
353 | $crawler = $client->submit($form, $data); | ||
354 | |||
355 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
356 | |||
357 | $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(['_text'])); | ||
358 | $this->assertContains($expectedMessage, $alert[0]); | ||
359 | } | ||
360 | |||
361 | public function testNewUserCreated() | ||
362 | { | ||
363 | $this->logInAs('admin'); | ||
364 | $client = $this->getClient(); | ||
365 | |||
366 | $crawler = $client->request('GET', '/config'); | ||
367 | |||
368 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
369 | |||
370 | $form = $crawler->filter('button[id=new_user_save]')->form(); | ||
371 | |||
372 | $data = [ | ||
373 | 'new_user[username]' => 'wallace', | ||
374 | 'new_user[plainPassword][first]' => 'wallace1', | ||
375 | 'new_user[plainPassword][second]' => 'wallace1', | ||
376 | 'new_user[email]' => 'wallace@wallace.me', | ||
377 | ]; | ||
378 | |||
379 | $client->submit($form, $data); | ||
380 | |||
381 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
382 | |||
383 | $crawler = $client->followRedirect(); | ||
384 | |||
385 | $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(['_text'])); | ||
386 | $this->assertContains('flashes.config.notice.user_added', $alert[0]); | ||
387 | |||
388 | $em = $client->getContainer()->get('doctrine.orm.entity_manager'); | ||
389 | $user = $em | ||
390 | ->getRepository('WallabagUserBundle:User') | ||
391 | ->findOneByUsername('wallace'); | ||
392 | |||
393 | $this->assertTrue(false !== $user); | ||
394 | $this->assertTrue($user->isEnabled()); | ||
395 | $this->assertEquals('material', $user->getConfig()->getTheme()); | ||
396 | $this->assertEquals(12, $user->getConfig()->getItemsPerPage()); | ||
397 | $this->assertEquals(50, $user->getConfig()->getRssLimit()); | ||
398 | $this->assertEquals('en', $user->getConfig()->getLanguage()); | ||
399 | $this->assertEquals(1, $user->getConfig()->getReadingSpeed()); | ||
400 | } | ||
401 | |||
402 | public function testRssUpdateResetToken() | ||
403 | { | ||
404 | $this->logInAs('admin'); | ||
405 | $client = $this->getClient(); | ||
406 | |||
407 | // reset the token | ||
408 | $em = $client->getContainer()->get('doctrine.orm.entity_manager'); | ||
409 | $user = $em | ||
410 | ->getRepository('WallabagUserBundle:User') | ||
411 | ->findOneByUsername('admin'); | ||
412 | |||
413 | if (!$user) { | ||
414 | $this->markTestSkipped('No user found in db.'); | ||
415 | } | ||
416 | |||
417 | $config = $user->getConfig(); | ||
418 | $config->setRssToken(null); | ||
419 | $em->persist($config); | ||
420 | $em->flush(); | ||
421 | |||
422 | $crawler = $client->request('GET', '/config'); | ||
423 | |||
424 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
425 | |||
426 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
427 | $this->assertContains('config.form_rss.no_token', $body[0]); | ||
428 | |||
429 | $client->request('GET', '/generate-token'); | ||
430 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
431 | |||
432 | $crawler = $client->followRedirect(); | ||
433 | |||
434 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
435 | $this->assertNotContains('config.form_rss.no_token', $body[0]); | ||
436 | } | ||
437 | |||
438 | public function testGenerateTokenAjax() | ||
439 | { | ||
440 | $this->logInAs('admin'); | ||
441 | $client = $this->getClient(); | ||
442 | |||
443 | $client->request( | ||
444 | 'GET', | ||
445 | '/generate-token', | ||
446 | [], | ||
447 | [], | ||
448 | ['HTTP_X-Requested-With' => 'XMLHttpRequest'] | ||
449 | ); | ||
450 | |||
451 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
452 | $content = json_decode($client->getResponse()->getContent(), true); | ||
453 | $this->assertArrayHasKey('token', $content); | ||
454 | } | ||
455 | |||
456 | public function testRssUpdate() | ||
457 | { | ||
458 | $this->logInAs('admin'); | ||
459 | $client = $this->getClient(); | ||
460 | |||
461 | $crawler = $client->request('GET', '/config'); | ||
462 | |||
463 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
464 | |||
465 | $form = $crawler->filter('button[id=rss_config_save]')->form(); | ||
466 | |||
467 | $data = [ | ||
468 | 'rss_config[rss_limit]' => 12, | ||
469 | ]; | ||
470 | |||
471 | $client->submit($form, $data); | ||
472 | |||
473 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
474 | |||
475 | $crawler = $client->followRedirect(); | ||
476 | |||
477 | $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(['_text'])); | ||
478 | $this->assertContains('flashes.config.notice.rss_updated', $alert[0]); | ||
479 | } | ||
480 | |||
481 | public function dataForRssFailed() | ||
482 | { | ||
483 | return [ | ||
484 | [ | ||
485 | [ | ||
486 | 'rss_config[rss_limit]' => 0, | ||
487 | ], | ||
488 | 'This value should be 1 or more.', | ||
489 | ], | ||
490 | [ | ||
491 | [ | ||
492 | 'rss_config[rss_limit]' => 1000000000000, | ||
493 | ], | ||
494 | 'validator.rss_limit_too_hight', | ||
495 | ], | ||
496 | ]; | ||
497 | } | ||
498 | |||
499 | /** | ||
500 | * @dataProvider dataForRssFailed | ||
501 | */ | ||
502 | public function testRssFailed($data, $expectedMessage) | ||
503 | { | ||
504 | $this->logInAs('admin'); | ||
505 | $client = $this->getClient(); | ||
506 | |||
507 | $crawler = $client->request('GET', '/config'); | ||
508 | |||
509 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
510 | |||
511 | $form = $crawler->filter('button[id=rss_config_save]')->form(); | ||
512 | |||
513 | $crawler = $client->submit($form, $data); | ||
514 | |||
515 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
516 | |||
517 | $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(['_text'])); | ||
518 | $this->assertContains($expectedMessage, $alert[0]); | ||
519 | } | ||
520 | |||
521 | public function testTaggingRuleCreation() | ||
522 | { | ||
523 | $this->logInAs('admin'); | ||
524 | $client = $this->getClient(); | ||
525 | |||
526 | $crawler = $client->request('GET', '/config'); | ||
527 | |||
528 | $this->assertTrue($client->getResponse()->isSuccessful()); | ||
529 | |||
530 | $form = $crawler->filter('button[id=tagging_rule_save]')->form(); | ||
531 | |||
532 | $data = [ | ||
533 | 'tagging_rule[rule]' => 'readingTime <= 3', | ||
534 | 'tagging_rule[tags]' => 'short reading', | ||
535 | ]; | ||
536 | |||
537 | $client->submit($form, $data); | ||
538 | |||
539 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
540 | |||
541 | $crawler = $client->followRedirect(); | ||
542 | |||
543 | $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(['_text'])); | ||
544 | $this->assertContains('flashes.config.notice.tagging_rules_updated', $alert[0]); | ||
545 | |||
546 | $deleteLink = $crawler->filter('.delete')->last()->link(); | ||
547 | |||
548 | $crawler = $client->click($deleteLink); | ||
549 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
550 | |||
551 | $crawler = $client->followRedirect(); | ||
552 | $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(['_text'])); | ||
553 | $this->assertContains('flashes.config.notice.tagging_rules_deleted', $alert[0]); | ||
554 | } | ||
555 | |||
556 | public function dataForTaggingRuleFailed() | ||
557 | { | ||
558 | return [ | ||
559 | [ | ||
560 | [ | ||
561 | 'tagging_rule[rule]' => 'unknownVar <= 3', | ||
562 | 'tagging_rule[tags]' => 'cool tag', | ||
563 | ], | ||
564 | [ | ||
565 | 'The variable', | ||
566 | 'does not exist.', | ||
567 | ], | ||
568 | ], | ||
569 | [ | ||
570 | [ | ||
571 | 'tagging_rule[rule]' => 'length(domainName) <= 42', | ||
572 | 'tagging_rule[tags]' => 'cool tag', | ||
573 | ], | ||
574 | [ | ||
575 | 'The operator', | ||
576 | 'does not exist.', | ||
577 | ], | ||
578 | ], | ||
579 | ]; | ||
580 | } | ||
581 | |||
582 | /** | ||
583 | * @dataProvider dataForTaggingRuleFailed | ||
584 | */ | ||
585 | public function testTaggingRuleCreationFail($data, $messages) | ||
586 | { | ||
587 | $this->logInAs('admin'); | ||
588 | $client = $this->getClient(); | ||
589 | |||
590 | $crawler = $client->request('GET', '/config'); | ||
591 | |||
592 | $this->assertTrue($client->getResponse()->isSuccessful()); | ||
593 | |||
594 | $form = $crawler->filter('button[id=tagging_rule_save]')->form(); | ||
595 | |||
596 | $crawler = $client->submit($form, $data); | ||
597 | |||
598 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
599 | |||
600 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
601 | |||
602 | foreach ($messages as $message) { | ||
603 | $this->assertContains($message, $body[0]); | ||
604 | } | ||
605 | } | ||
606 | |||
607 | public function testDeletingTaggingRuleFromAnOtherUser() | ||
608 | { | ||
609 | $this->logInAs('bob'); | ||
610 | $client = $this->getClient(); | ||
611 | |||
612 | $rule = $client->getContainer()->get('doctrine.orm.entity_manager') | ||
613 | ->getRepository('WallabagCoreBundle:TaggingRule') | ||
614 | ->findAll()[0]; | ||
615 | |||
616 | $crawler = $client->request('GET', '/tagging-rule/delete/'.$rule->getId()); | ||
617 | |||
618 | $this->assertEquals(403, $client->getResponse()->getStatusCode()); | ||
619 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
620 | $this->assertContains('You can not access this tagging rule', $body[0]); | ||
621 | } | ||
622 | |||
623 | public function testDemoMode() | ||
624 | { | ||
625 | $this->logInAs('admin'); | ||
626 | $client = $this->getClient(); | ||
627 | |||
628 | $config = $client->getContainer()->get('craue_config'); | ||
629 | $config->set('demo_mode_enabled', 1); | ||
630 | $config->set('demo_mode_username', 'admin'); | ||
631 | |||
632 | $crawler = $client->request('GET', '/config'); | ||
633 | |||
634 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
635 | |||
636 | $form = $crawler->filter('button[id=change_passwd_save]')->form(); | ||
637 | |||
638 | $data = [ | ||
639 | 'change_passwd[old_password]' => 'mypassword', | ||
640 | 'change_passwd[new_password][first]' => 'mypassword', | ||
641 | 'change_passwd[new_password][second]' => 'mypassword', | ||
642 | ]; | ||
643 | |||
644 | $client->submit($form, $data); | ||
645 | |||
646 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
647 | $this->assertContains('flashes.config.notice.password_not_updated_demo', $client->getContainer()->get('session')->getFlashBag()->get('notice')[0]); | ||
648 | |||
649 | $config->set('demo_mode_enabled', 0); | ||
650 | $config->set('demo_mode_username', 'wallabag'); | ||
651 | } | ||
652 | } | ||