- $client->submit($form, $data);
-
- $this->assertEquals(200, $client->getResponse()->getStatusCode());
- $this->assertContains('No user found with this email', $client->getResponse()->getContent());
- }
-
- /**
- * @depends testForgotPassword
- *
- * Instead of using collector which slow down the test suite
- * http://symfony.com/doc/current/cookbook/email/testing.html
- *
- * Use a different way where Swift store email as file
- */
- public function testSubmitForgotPassword($parameters)
- {
- $form = $parameters['form'];
- $client = $parameters['client'];
-
- $spoolDir = $client->getKernel()->getContainer()->getParameter('swiftmailer.spool.default.file.path');
-
- // cleanup pool dir
- $filesystem = new Filesystem();
- $filesystem->remove($spoolDir);
-
- // to use `getCollector` since `collect: false` in config_test.yml
- $client->enableProfiler();
-
- $data = array(
- 'forgot_password[email]' => 'bobby@wallabag.org',
- );
-
- $client->submit($form, $data);
-
- $this->assertEquals(302, $client->getResponse()->getStatusCode());
-
- $crawler = $client->followRedirect();
-
- $this->assertContains('An email has been sent to', $client->getResponse()->getContent());
-
- // find every files (ie: emails) inside the spool dir except hidden files
- $finder = new Finder();
- $finder
- ->in($spoolDir)
- ->ignoreDotFiles(true)
- ->files();
-
- $this->assertCount(1, $finder, 'Only one email has been sent');
-
- foreach ($finder as $file) {
- $message = unserialize(file_get_contents($file));
-
- $this->assertInstanceOf('Swift_Message', $message);
- $this->assertEquals('Reset Password', $message->getSubject());
- $this->assertEquals('no-reply@wallabag.org', key($message->getFrom()));
- $this->assertEquals('bobby@wallabag.org', key($message->getTo()));
- $this->assertContains(
- 'To reset your password - please visit',
- $message->getBody()
- );