From 143835b6b21ee4c7ba4c351916a3d014e2827f98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Fri, 7 Nov 2014 00:10:51 +0100 Subject: [PATCH] create first round of tests for login --- Tests/Controller/LoginControllerTest.php | 44 +++++++++++++++++++ .../App/Resources/views/base.html.twig | 13 ++++++ 2 files changed, 57 insertions(+) create mode 100644 Tests/Fixtures/App/Resources/views/base.html.twig diff --git a/Tests/Controller/LoginControllerTest.php b/Tests/Controller/LoginControllerTest.php index c0b6e7faf..682cadf3b 100644 --- a/Tests/Controller/LoginControllerTest.php +++ b/Tests/Controller/LoginControllerTest.php @@ -3,6 +3,7 @@ namespace Chill\MainBundle\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; +use Symfony\Component\HttpFoundation\Response; class LoginControllerTest extends WebTestCase { @@ -10,7 +11,50 @@ class LoginControllerTest extends WebTestCase { $client = static::createClient(); + //load login page and submit form $crawler = $client->request('GET', '/login'); + $this->assertTrue($client->getResponse()->isSuccessful()); + + $buttonCrawlerNode = $crawler->selectButton('Login'); + $form = $buttonCrawlerNode->form(); + + $client->submit($form, array( + '_username' => 'center a_social', + '_password' => 'password' + )); + + //the response is a redirection + $this->assertTrue($client->getResponse()->isRedirect()); + + //the response is not a login page, but on a new page + $this->assertNotRegExp('/\/login$/', $client->getResponse() + ->headers + ->get('location')); + + //on the home page, there must be a logout link + $client->followRedirects(true); + $crawler = $client->request('GET', '/'); + + $this->assertRegExp('/center a_social/', $client->getResponse() + ->getContent()); + $logoutLinkFilter = $crawler->filter('a:contains("Logout")'); + + //check there is > 0 logout link + $this->assertGreaterThan(0, $logoutLinkFilter->count()); + + //click on logout link + $client->followRedirects(false); + $client->click($crawler->selectLink('Logout')->link()); + + $this->assertTrue($client->getResponse()->isRedirect()); + $client->followRedirect(); #redirect to login page + + //check we are back on login page + $this->assertRegExp('/\/login$/', $client->getResponse() + ->headers + ->get('location')); + + } } diff --git a/Tests/Fixtures/App/Resources/views/base.html.twig b/Tests/Fixtures/App/Resources/views/base.html.twig new file mode 100644 index 000000000..bafd28d3b --- /dev/null +++ b/Tests/Fixtures/App/Resources/views/base.html.twig @@ -0,0 +1,13 @@ + + + + + {% block title %}Welcome!{% endblock %} + {% block stylesheets %}{% endblock %} + + + + {% block body %}{% endblock %} + {% block javascripts %}{% endblock %} + +