aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag/CoreBundle/Tests/Controller
diff options
context:
space:
mode:
Diffstat (limited to 'src/Wallabag/CoreBundle/Tests/Controller')
-rw-r--r--src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php28
-rw-r--r--src/Wallabag/CoreBundle/Tests/Controller/RssControllerTest.php6
-rw-r--r--src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php201
3 files changed, 24 insertions, 211 deletions
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php
index 3407fc5e..3da5e8b7 100644
--- a/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php
+++ b/src/Wallabag/CoreBundle/Tests/Controller/ConfigControllerTest.php
@@ -258,7 +258,8 @@ class ConfigControllerTest extends WallabagCoreTestCase
258 array( 258 array(
259 array( 259 array(
260 'new_user[username]' => '', 260 'new_user[username]' => '',
261 'new_user[password]' => '', 261 'new_user[plainPassword][first]' => '',
262 'new_user[plainPassword][second]' => '',
262 'new_user[email]' => '', 263 'new_user[email]' => '',
263 ), 264 ),
264 'Please enter a username', 265 'Please enter a username',
@@ -266,7 +267,8 @@ class ConfigControllerTest extends WallabagCoreTestCase
266 array( 267 array(
267 array( 268 array(
268 'new_user[username]' => 'a', 269 'new_user[username]' => 'a',
269 'new_user[password]' => 'mypassword', 270 'new_user[plainPassword][first]' => 'mypassword',
271 'new_user[plainPassword][second]' => 'mypassword',
270 'new_user[email]' => '', 272 'new_user[email]' => '',
271 ), 273 ),
272 'The username is too short', 274 'The username is too short',
@@ -274,7 +276,8 @@ class ConfigControllerTest extends WallabagCoreTestCase
274 array( 276 array(
275 array( 277 array(
276 'new_user[username]' => 'wallace', 278 'new_user[username]' => 'wallace',
277 'new_user[password]' => 'mypassword', 279 'new_user[plainPassword][first]' => 'mypassword',
280 'new_user[plainPassword][second]' => 'mypassword',
278 'new_user[email]' => 'test', 281 'new_user[email]' => 'test',
279 ), 282 ),
280 'The email is not valid', 283 'The email is not valid',
@@ -282,11 +285,21 @@ class ConfigControllerTest extends WallabagCoreTestCase
282 array( 285 array(
283 array( 286 array(
284 'new_user[username]' => 'admin', 287 'new_user[username]' => 'admin',
285 'new_user[password]' => 'wallacewallace', 288 'new_user[plainPassword][first]' => 'wallacewallace',
289 'new_user[plainPassword][second]' => 'wallacewallace',
286 'new_user[email]' => 'wallace@wallace.me', 290 'new_user[email]' => 'wallace@wallace.me',
287 ), 291 ),
288 'The username is already used', 292 'The username is already used',
289 ), 293 ),
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 ),
290 ); 303 );
291 } 304 }
292 305
@@ -325,7 +338,8 @@ class ConfigControllerTest extends WallabagCoreTestCase
325 338
326 $data = array( 339 $data = array(
327 'new_user[username]' => 'wallace', 340 'new_user[username]' => 'wallace',
328 'new_user[password]' => 'wallace1', 341 'new_user[plainPassword][first]' => 'wallace1',
342 'new_user[plainPassword][second]' => 'wallace1',
329 'new_user[email]' => 'wallace@wallace.me', 343 'new_user[email]' => 'wallace@wallace.me',
330 ); 344 );
331 345
@@ -340,7 +354,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
340 354
341 $em = $client->getContainer()->get('doctrine.orm.entity_manager'); 355 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
342 $user = $em 356 $user = $em
343 ->getRepository('WallabagCoreBundle:User') 357 ->getRepository('WallabagUserBundle:User')
344 ->findOneByUsername('wallace'); 358 ->findOneByUsername('wallace');
345 359
346 $this->assertTrue(false !== $user); 360 $this->assertTrue(false !== $user);
@@ -355,7 +369,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
355 // reset the token 369 // reset the token
356 $em = $client->getContainer()->get('doctrine.orm.entity_manager'); 370 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
357 $user = $em 371 $user = $em
358 ->getRepository('WallabagCoreBundle:User') 372 ->getRepository('WallabagUserBundle:User')
359 ->findOneByUsername('admin'); 373 ->findOneByUsername('admin');
360 374
361 if (!$user) { 375 if (!$user) {
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/RssControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/RssControllerTest.php
index b7c162a7..45a74c43 100644
--- a/src/Wallabag/CoreBundle/Tests/Controller/RssControllerTest.php
+++ b/src/Wallabag/CoreBundle/Tests/Controller/RssControllerTest.php
@@ -64,7 +64,7 @@ class RssControllerTest extends WallabagCoreTestCase
64 $client = $this->getClient(); 64 $client = $this->getClient();
65 $em = $client->getContainer()->get('doctrine.orm.entity_manager'); 65 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
66 $user = $em 66 $user = $em
67 ->getRepository('WallabagCoreBundle:User') 67 ->getRepository('WallabagUserBundle:User')
68 ->findOneByUsername('admin'); 68 ->findOneByUsername('admin');
69 69
70 $config = $user->getConfig(); 70 $config = $user->getConfig();
@@ -85,7 +85,7 @@ class RssControllerTest extends WallabagCoreTestCase
85 $client = $this->getClient(); 85 $client = $this->getClient();
86 $em = $client->getContainer()->get('doctrine.orm.entity_manager'); 86 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
87 $user = $em 87 $user = $em
88 ->getRepository('WallabagCoreBundle:User') 88 ->getRepository('WallabagUserBundle:User')
89 ->findOneByUsername('admin'); 89 ->findOneByUsername('admin');
90 90
91 $config = $user->getConfig(); 91 $config = $user->getConfig();
@@ -107,7 +107,7 @@ class RssControllerTest extends WallabagCoreTestCase
107 $client = $this->getClient(); 107 $client = $this->getClient();
108 $em = $client->getContainer()->get('doctrine.orm.entity_manager'); 108 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
109 $user = $em 109 $user = $em
110 ->getRepository('WallabagCoreBundle:User') 110 ->getRepository('WallabagUserBundle:User')
111 ->findOneByUsername('admin'); 111 ->findOneByUsername('admin');
112 112
113 $config = $user->getConfig(); 113 $config = $user->getConfig();
diff --git a/src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php b/src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php
deleted file mode 100644
index 759ef01b..00000000
--- a/src/Wallabag/CoreBundle/Tests/Controller/SecurityControllerTest.php
+++ /dev/null
@@ -1,201 +0,0 @@
1<?php
2
3namespace Wallabag\CoreBundle\Tests\Controller;
4
5use Symfony\Component\Filesystem\Filesystem;
6use Symfony\Component\Finder\Finder;
7use Wallabag\CoreBundle\Tests\WallabagCoreTestCase;
8
9class SecurityControllerTest extends WallabagCoreTestCase
10{
11 public function testLogin()
12 {
13 $client = $this->getClient();
14
15 $crawler = $client->request('GET', '/new');
16
17 $this->assertEquals(302, $client->getResponse()->getStatusCode());
18 $this->assertContains('login', $client->getResponse()->headers->get('location'));
19 }
20
21 public function testLoginFail()
22 {
23 $client = $this->getClient();
24
25 $crawler = $client->request('GET', '/login');
26
27 $form = $crawler->filter('button[type=submit]')->form();
28 $data = array(
29 '_username' => 'admin',
30 '_password' => 'admin',
31 );
32
33 $client->submit($form, $data);
34
35 $this->assertEquals(302, $client->getResponse()->getStatusCode());
36 $this->assertContains('login', $client->getResponse()->headers->get('location'));
37
38 $crawler = $client->followRedirect();
39
40 $this->assertContains('Bad credentials', $client->getResponse()->getContent());
41 }
42
43 public function testRedirectionAfterLogin()
44 {
45 $client = $this->getClient();
46 $client->followRedirects();
47
48 $crawler = $client->request('GET', '/config');
49
50 $form = $crawler->filter('button[type=submit]')->form();
51
52 $data = array(
53 '_username' => 'admin',
54 '_password' => 'mypassword',
55 );
56
57 $client->submit($form, $data);
58
59 $this->assertContains('RSS', $client->getResponse()->getContent());
60 }
61
62 public function testForgotPassword()
63 {
64 $client = $this->getClient();
65
66 $crawler = $client->request('GET', '/forgot-password');
67
68 $this->assertEquals(200, $client->getResponse()->getStatusCode());
69
70 $this->assertContains('Forgot password', $client->getResponse()->getContent());
71
72 $form = $crawler->filter('button[type=submit]');
73
74 $this->assertCount(1, $form);
75
76 return array(
77 'form' => $form->form(),
78 'client' => $client,
79 );
80 }
81
82 /**
83 * @depends testForgotPassword
84 */
85 public function testSubmitForgotPasswordFail($parameters)
86 {
87 $form = $parameters['form'];
88 $client = $parameters['client'];
89
90 $data = array(
91 'forgot_password[email]' => 'material',
92 );
93
94 $client->submit($form, $data);
95
96 $this->assertEquals(200, $client->getResponse()->getStatusCode());
97 $this->assertContains('No user found with this email', $client->getResponse()->getContent());
98 }
99
100 /**
101 * @depends testForgotPassword
102 *
103 * Instead of using collector which slow down the test suite
104 * http://symfony.com/doc/current/cookbook/email/testing.html
105 *
106 * Use a different way where Swift store email as file
107 */
108 public function testSubmitForgotPassword($parameters)
109 {
110 $form = $parameters['form'];
111 $client = $parameters['client'];
112
113 $spoolDir = $client->getKernel()->getContainer()->getParameter('swiftmailer.spool.default.file.path');
114
115 // cleanup pool dir
116 $filesystem = new Filesystem();
117 $filesystem->remove($spoolDir);
118
119 // to use `getCollector` since `collect: false` in config_test.yml
120 $client->enableProfiler();
121
122 $data = array(
123 'forgot_password[email]' => 'bobby@wallabag.org',
124 );
125
126 $client->submit($form, $data);
127
128 $this->assertEquals(302, $client->getResponse()->getStatusCode());
129
130 $crawler = $client->followRedirect();
131
132 $this->assertContains('An email has been sent to', $client->getResponse()->getContent());
133
134 // find every files (ie: emails) inside the spool dir except hidden files
135 $finder = new Finder();
136 $finder
137 ->in($spoolDir)
138 ->ignoreDotFiles(true)
139 ->files();
140
141 $this->assertCount(1, $finder, 'Only one email has been sent');
142
143 foreach ($finder as $file) {
144 $message = unserialize(file_get_contents($file));
145
146 $this->assertInstanceOf('Swift_Message', $message);
147 $this->assertEquals('Reset Password', $message->getSubject());
148 $this->assertEquals('no-reply@wallabag.org', key($message->getFrom()));
149 $this->assertEquals('bobby@wallabag.org', key($message->getTo()));
150 $this->assertContains(
151 'To reset your password - please visit',
152 $message->getBody()
153 );
154 }
155 }
156
157 public function testReset()
158 {
159 $client = $this->getClient();
160 $user = $client->getContainer()
161 ->get('doctrine.orm.entity_manager')
162 ->getRepository('WallabagCoreBundle:User')
163 ->findOneByEmail('bobby@wallabag.org');
164
165 $crawler = $client->request('GET', '/forgot-password/'.$user->getConfirmationToken());
166
167 $this->assertEquals(200, $client->getResponse()->getStatusCode());
168 $this->assertCount(2, $crawler->filter('input[type=password]'));
169 $this->assertCount(1, $form = $crawler->filter('button[type=submit]'));
170 $this->assertCount(1, $form);
171
172 $data = array(
173 'change_passwd[new_password][first]' => 'mypassword',
174 'change_passwd[new_password][second]' => 'mypassword',
175 );
176
177 $client->submit($form->form(), $data);
178
179 $this->assertEquals(302, $client->getResponse()->getStatusCode());
180 $this->assertContains('login', $client->getResponse()->headers->get('location'));
181 }
182
183 public function testResetBadToken()
184 {
185 $client = $this->getClient();
186
187 $client->request('GET', '/forgot-password/UIZOAU29UE902IEPZO');
188
189 $this->assertEquals(404, $client->getResponse()->getStatusCode());
190 }
191
192 public function testCheckEmailWithoutEmail()
193 {
194 $client = $this->getClient();
195
196 $client->request('GET', '/forgot-password/check-email');
197
198 $this->assertEquals(302, $client->getResponse()->getStatusCode());
199 $this->assertContains('forgot-password', $client->getResponse()->headers->get('location'));
200 }
201}