]> git.immae.eu Git - github/wallabag/wallabag.git/blame - src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php
Add test on RegistrationConfirmedListener
[github/wallabag/wallabag.git] / src / Wallabag / CoreBundle / Tests / Controller / ConfigControllerTest.php
CommitLineData
4d85d7e9
J
1<?php
2
3namespace Wallabag\CoreBundle\Tests\Controller;
4
769e19dc 5use Wallabag\CoreBundle\Tests\WallabagCoreTestCase;
4d85d7e9 6
769e19dc 7class ConfigControllerTest extends WallabagCoreTestCase
4d85d7e9
J
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
d9085c63
J
28 $this->assertCount(1, $crawler->filter('button[id=config_save]'));
29 $this->assertCount(1, $crawler->filter('button[id=change_passwd_save]'));
c844dc0c 30 $this->assertCount(1, $crawler->filter('button[id=update_user_save]'));
371ac69a
J
31 $this->assertCount(1, $crawler->filter('button[id=new_user_save]'));
32 $this->assertCount(1, $crawler->filter('button[id=rss_config_save]'));
4d85d7e9
J
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
d9085c63 44 $form = $crawler->filter('button[id=config_save]')->form();
4d85d7e9
J
45
46 $data = array(
75e9d1df 47 'config[theme]' => 0,
4d85d7e9
J
48 'config[items_per_page]' => '30',
49 'config[language]' => 'fr_FR',
50 );
51
52 $client->submit($form, $data);
53
54 $this->assertEquals(302, $client->getResponse()->getStatusCode());
55
56 $crawler = $client->followRedirect();
57
32da2a70 58 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text')));
4d85d7e9
J
59 $this->assertContains('Config saved', $alert[0]);
60 }
61
62 public function dataForUpdateFailed()
63 {
64 return array(
65 array(array(
75e9d1df 66 'config[theme]' => 0,
4d85d7e9
J
67 'config[items_per_page]' => '',
68 'config[language]' => 'fr_FR',
69 )),
70 array(array(
75e9d1df 71 'config[theme]' => 0,
4d85d7e9
J
72 'config[items_per_page]' => '12',
73 'config[language]' => '',
74 )),
75 );
76 }
77
78 /**
79 * @dataProvider dataForUpdateFailed
80 */
81 public function testUpdateFailed($data)
82 {
83 $this->logInAs('admin');
84 $client = $this->getClient();
85
86 $crawler = $client->request('GET', '/config');
87
88 $this->assertEquals(200, $client->getResponse()->getStatusCode());
89
d9085c63 90 $form = $crawler->filter('button[id=config_save]')->form();
4d85d7e9
J
91
92 $crawler = $client->submit($form, $data);
93
94 $this->assertEquals(200, $client->getResponse()->getStatusCode());
95
96 $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(array('_text')));
97 $this->assertContains('This value should not be blank', $alert[0]);
98 }
d9085c63
J
99
100 public function dataForChangePasswordFailed()
101 {
102 return array(
103 array(
104 array(
4ab58dcf 105 'change_passwd[old_password]' => 'material',
d9085c63
J
106 'change_passwd[new_password][first]' => '',
107 'change_passwd[new_password][second]' => '',
108 ),
c0d9eba0 109 'Wrong value for your current password',
d9085c63
J
110 ),
111 array(
112 array(
113 'change_passwd[old_password]' => 'mypassword',
114 'change_passwd[new_password][first]' => '',
115 'change_passwd[new_password][second]' => '',
116 ),
c0d9eba0 117 'This value should not be blank',
d9085c63
J
118 ),
119 array(
120 array(
121 'change_passwd[old_password]' => 'mypassword',
122 'change_passwd[new_password][first]' => 'hop',
123 'change_passwd[new_password][second]' => '',
124 ),
c0d9eba0 125 'The password fields must match',
d9085c63
J
126 ),
127 array(
128 array(
129 'change_passwd[old_password]' => 'mypassword',
130 'change_passwd[new_password][first]' => 'hop',
131 'change_passwd[new_password][second]' => 'hop',
132 ),
e4977b8a 133 'Password should by at least',
d9085c63
J
134 ),
135 );
136 }
137
138 /**
139 * @dataProvider dataForChangePasswordFailed
140 */
141 public function testChangePasswordFailed($data, $expectedMessage)
142 {
143 $this->logInAs('admin');
144 $client = $this->getClient();
145
146 $crawler = $client->request('GET', '/config');
147
148 $this->assertEquals(200, $client->getResponse()->getStatusCode());
149
150 $form = $crawler->filter('button[id=change_passwd_save]')->form();
151
152 $crawler = $client->submit($form, $data);
153
154 $this->assertEquals(200, $client->getResponse()->getStatusCode());
155
156 $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(array('_text')));
157 $this->assertContains($expectedMessage, $alert[0]);
158 }
159
160 public function testChangePassword()
161 {
162 $this->logInAs('admin');
163 $client = $this->getClient();
164
165 $crawler = $client->request('GET', '/config');
166
167 $this->assertEquals(200, $client->getResponse()->getStatusCode());
168
169 $form = $crawler->filter('button[id=change_passwd_save]')->form();
170
171 $data = array(
172 'change_passwd[old_password]' => 'mypassword',
173 'change_passwd[new_password][first]' => 'mypassword',
174 'change_passwd[new_password][second]' => 'mypassword',
175 );
176
177 $client->submit($form, $data);
178
179 $this->assertEquals(302, $client->getResponse()->getStatusCode());
180
181 $crawler = $client->followRedirect();
182
32da2a70 183 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text')));
d9085c63
J
184 $this->assertContains('Password updated', $alert[0]);
185 }
c0d9eba0
J
186
187 public function dataForUserFailed()
188 {
189 return array(
190 array(
191 array(
c844dc0c
J
192 'update_user[name]' => '',
193 'update_user[email]' => '',
c0d9eba0 194 ),
3f7a6290 195 'Please enter an email',
c0d9eba0
J
196 ),
197 array(
198 array(
c844dc0c
J
199 'update_user[name]' => '',
200 'update_user[email]' => 'test',
c0d9eba0 201 ),
3f7a6290 202 'The email is not valid',
c0d9eba0
J
203 ),
204 );
205 }
206
207 /**
208 * @dataProvider dataForUserFailed
209 */
210 public function testUserFailed($data, $expectedMessage)
211 {
212 $this->logInAs('admin');
213 $client = $this->getClient();
214
215 $crawler = $client->request('GET', '/config');
216
217 $this->assertEquals(200, $client->getResponse()->getStatusCode());
218
c844dc0c 219 $form = $crawler->filter('button[id=update_user_save]')->form();
c0d9eba0
J
220
221 $crawler = $client->submit($form, $data);
222
223 $this->assertEquals(200, $client->getResponse()->getStatusCode());
224
225 $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(array('_text')));
226 $this->assertContains($expectedMessage, $alert[0]);
227 }
228
229 public function testUserUpdate()
230 {
231 $this->logInAs('admin');
232 $client = $this->getClient();
233
234 $crawler = $client->request('GET', '/config');
235
236 $this->assertEquals(200, $client->getResponse()->getStatusCode());
237
c844dc0c 238 $form = $crawler->filter('button[id=update_user_save]')->form();
c0d9eba0
J
239
240 $data = array(
c844dc0c
J
241 'update_user[name]' => 'new name',
242 'update_user[email]' => 'admin@wallabag.io',
c0d9eba0
J
243 );
244
245 $client->submit($form, $data);
246
247 $this->assertEquals(302, $client->getResponse()->getStatusCode());
248
249 $crawler = $client->followRedirect();
250
32da2a70 251 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text')));
c0d9eba0
J
252 $this->assertContains('Information updated', $alert[0]);
253 }
e4977b8a
J
254
255 public function dataForNewUserFailed()
256 {
257 return array(
258 array(
259 array(
260 'new_user[username]' => '',
fcb1fba5
NL
261 'new_user[plainPassword][first]' => '',
262 'new_user[plainPassword][second]' => '',
e4977b8a
J
263 'new_user[email]' => '',
264 ),
3f7a6290 265 'Please enter a username',
e4977b8a
J
266 ),
267 array(
268 array(
3f7a6290 269 'new_user[username]' => 'a',
fcb1fba5
NL
270 'new_user[plainPassword][first]' => 'mypassword',
271 'new_user[plainPassword][second]' => 'mypassword',
e4977b8a
J
272 'new_user[email]' => '',
273 ),
3f7a6290 274 'The username is too short',
e4977b8a
J
275 ),
276 array(
277 array(
278 'new_user[username]' => 'wallace',
fcb1fba5
NL
279 'new_user[plainPassword][first]' => 'mypassword',
280 'new_user[plainPassword][second]' => 'mypassword',
e4977b8a
J
281 'new_user[email]' => 'test',
282 ),
3f7a6290 283 'The email is not valid',
e4977b8a 284 ),
c844dc0c
J
285 array(
286 array(
287 'new_user[username]' => 'admin',
fcb1fba5
NL
288 'new_user[plainPassword][first]' => 'wallacewallace',
289 'new_user[plainPassword][second]' => 'wallacewallace',
c844dc0c
J
290 'new_user[email]' => 'wallace@wallace.me',
291 ),
3f7a6290 292 'The username is already used',
c844dc0c 293 ),
fcb1fba5
NL
294 array(
295 array(
296 'new_user[username]' => 'wallace',
297 'new_user[plainPassword][first]' => 'mypassword1',
298 'new_user[plainPassword][second]' => 'mypassword2',
299 'new_user[email]' => 'wallace@wallace.me',
300 ),
301 'This value is not valid',
302 ),
e4977b8a
J
303 );
304 }
305
306 /**
307 * @dataProvider dataForNewUserFailed
308 */
309 public function testNewUserFailed($data, $expectedMessage)
310 {
311 $this->logInAs('admin');
312 $client = $this->getClient();
313
314 $crawler = $client->request('GET', '/config');
315
316 $this->assertEquals(200, $client->getResponse()->getStatusCode());
317
318 $form = $crawler->filter('button[id=new_user_save]')->form();
319
320 $crawler = $client->submit($form, $data);
321
322 $this->assertEquals(200, $client->getResponse()->getStatusCode());
323
324 $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(array('_text')));
325 $this->assertContains($expectedMessage, $alert[0]);
326 }
327
328 public function testNewUserCreated()
329 {
330 $this->logInAs('admin');
331 $client = $this->getClient();
332
333 $crawler = $client->request('GET', '/config');
334
335 $this->assertEquals(200, $client->getResponse()->getStatusCode());
336
337 $form = $crawler->filter('button[id=new_user_save]')->form();
338
339 $data = array(
340 'new_user[username]' => 'wallace',
fcb1fba5
NL
341 'new_user[plainPassword][first]' => 'wallace1',
342 'new_user[plainPassword][second]' => 'wallace1',
e4977b8a
J
343 'new_user[email]' => 'wallace@wallace.me',
344 );
345
346 $client->submit($form, $data);
347
348 $this->assertEquals(302, $client->getResponse()->getStatusCode());
349
350 $crawler = $client->followRedirect();
351
32da2a70 352 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text')));
e4977b8a 353 $this->assertContains('User "wallace" added', $alert[0]);
0f30f48b
JB
354
355 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
356 $user = $em
357 ->getRepository('WallabagCoreBundle:User')
358 ->findOneByUsername('wallace');
359
360 $this->assertTrue(false !== $user);
361 $this->assertTrue($user->isEnabled());
e4977b8a 362 }
371ac69a
J
363
364 public function testRssUpdateResetToken()
365 {
366 $this->logInAs('admin');
367 $client = $this->getClient();
368
369 // reset the token
370 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
371 $user = $em
372 ->getRepository('WallabagCoreBundle:User')
373 ->findOneByUsername('admin');
374
375 if (!$user) {
376 $this->markTestSkipped('No user found in db.');
377 }
378
379 $config = $user->getConfig();
380 $config->setRssToken(null);
381 $em->persist($config);
382 $em->flush();
383
384 $crawler = $client->request('GET', '/config');
385
386 $this->assertEquals(200, $client->getResponse()->getStatusCode());
387
388 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
389 $this->assertContains('You need to generate a token first.', $body[0]);
390
391 $client->request('GET', '/generate-token');
392 $this->assertEquals(302, $client->getResponse()->getStatusCode());
393
394 $crawler = $client->followRedirect();
395
396 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(array('_text')));
397 $this->assertNotContains('You need to generate a token first.', $body[0]);
398 }
399
400 public function testGenerateTokenAjax()
401 {
402 $this->logInAs('admin');
403 $client = $this->getClient();
404
405 $client->request(
406 'GET',
407 '/generate-token',
408 array(),
409 array(),
410 array('HTTP_X-Requested-With' => 'XMLHttpRequest')
411 );
412
413 $this->assertEquals(200, $client->getResponse()->getStatusCode());
9744e971 414 $content = json_decode($client->getResponse()->getContent(), true);
371ac69a
J
415 $this->assertArrayHasKey('token', $content);
416 }
417
418 public function testRssUpdate()
419 {
420 $this->logInAs('admin');
421 $client = $this->getClient();
422
423 $crawler = $client->request('GET', '/config');
424
425 if (500 == $client->getResponse()->getStatusCode()) {
426 var_export($client->getResponse()->getContent());
427 die();
428 }
429
430 $this->assertEquals(200, $client->getResponse()->getStatusCode());
431
432 $form = $crawler->filter('button[id=rss_config_save]')->form();
433
434 $data = array(
435 'rss_config[rss_limit]' => 12,
436 );
437
438 $client->submit($form, $data);
439
440 $this->assertEquals(302, $client->getResponse()->getStatusCode());
441
442 $crawler = $client->followRedirect();
443
444 $this->assertGreaterThan(1, $alert = $crawler->filter('div.messages.success')->extract(array('_text')));
445 $this->assertContains('RSS information updated', $alert[0]);
446 }
447
448 public function dataForRssFailed()
449 {
450 return array(
451 array(
452 array(
453 'rss_config[rss_limit]' => 0,
454 ),
455 'This value should be 1 or more.',
456 ),
457 array(
458 array(
459 'rss_config[rss_limit]' => 1000000000000,
460 ),
461 'This will certainly kill the app',
462 ),
463 );
464 }
465
466 /**
467 * @dataProvider dataForRssFailed
468 */
469 public function testRssFailed($data, $expectedMessage)
470 {
471 $this->logInAs('admin');
472 $client = $this->getClient();
473
474 $crawler = $client->request('GET', '/config');
475
476 $this->assertEquals(200, $client->getResponse()->getStatusCode());
477
478 $form = $crawler->filter('button[id=rss_config_save]')->form();
479
480 $crawler = $client->submit($form, $data);
481
482 $this->assertEquals(200, $client->getResponse()->getStatusCode());
483
484 $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(array('_text')));
485 $this->assertContains($expectedMessage, $alert[0]);
486 }
4d85d7e9 487}