Skip to content

Commit cbb5968

Browse files
committed
feature symfony#19 Added a "smoke test" for the application URLs and moved one test location (javiereguiluz)
This PR was squashed before being merged into the master branch (closes symfony#19). Discussion ---------- Added a "smoke test" for the application URLs and moved one test location This fixes symfony#18 Commits ------- 5c75ed6 Added a "smoke test" for the application URLs and moved one test location
2 parents 4f65c26 + 5c75ed6 commit cbb5968

File tree

3 files changed

+103
-16
lines changed

3 files changed

+103
-16
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace AppBundle\Tests\Controller;
13+
14+
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
15+
use AppBundle\Entity\Post;
16+
17+
/**
18+
* Functional test for the controllers defined inside BlogController.
19+
* See http://symfony.com/doc/current/book/testing.html#functional-tests
20+
*
21+
* Execute the application tests using this command (requires PHPUnit to be installed):
22+
*
23+
* $ cd your-symfony-project/
24+
* $ phpunit -c app
25+
*
26+
*/
27+
class BlogControllerTest extends WebTestCase
28+
{
29+
public function testIndex()
30+
{
31+
$client = static::createClient();
32+
$crawler = $client->request('GET', '/blog/');
33+
34+
$this->assertCount(
35+
Post::NUM_ITEMS,
36+
$crawler->filter('article.post'),
37+
'The homepage displays the right number of posts.'
38+
);
39+
}
40+
}

src/AppBundle/Tests/Controller/DefaultControllerTest.php

Lines changed: 60 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,28 +12,76 @@
1212
namespace AppBundle\Tests\Controller;
1313

1414
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
15-
use AppBundle\Entity\Post;
1615

1716
/**
18-
* Functional test for the DefaultController methods.
19-
* See http://symfony.com/doc/current/book/testing.html#functional-tests
17+
* Functional test that implements a "smoke test" of all the public and secure
18+
* URLs of the application.
19+
* See http://symfony.com/doc/current/best_practices/tests.html#functional-tests.
2020
*
2121
* Execute the application tests using this command (requires PHPUnit to be installed):
22-
* $ cd your-symfony-project/
23-
* $ phpunit -c app
2422
*
25-
* @author Ryan Weaver <weaverryan@gmail.com>
26-
* @author Javier Eguiluz <javier.eguiluz@gmail.com>
23+
* $ cd your-symfony-project/
24+
* $ phpunit -c app
25+
*
2726
*/
2827
class DefaultControllerTest extends WebTestCase
2928
{
30-
public function testIndex()
29+
/**
30+
* PHPUnit's data providers allow to execute the same tests repeated times
31+
* using a different set of data each time.
32+
* See http://symfony.com/doc/current/cookbook/form/unit_testing.html#testing-against-different-sets-of-data.
33+
*
34+
* @dataProvider getPublicUrls
35+
*/
36+
public function testPublicUrls($url)
37+
{
38+
$client = self::createClient();
39+
$client->request('GET', $url);
40+
41+
$this->assertTrue(
42+
$client->getResponse()->isSuccessful(),
43+
sprintf('The %s public URL loads correctly.', $url)
44+
);
45+
}
46+
47+
/**
48+
* The application contains a lot of secure URLs which shouldn't be
49+
* publicly accessible. This tests ensures that whenever a user tries to
50+
* access one of those pages, a redirection to the login form is performed.
51+
*
52+
* @dataProvider getSecureUrls
53+
*/
54+
public function testSecureUrls($url)
3155
{
32-
$client = static::createClient();
33-
$crawler = $client->request('GET', '/blog/');
56+
$client = self::createClient();
57+
$client->request('GET', $url);
3458

35-
$this->assertEquals(Post::NUM_ITEMS, $crawler->filter('article.post')->count(),
36-
'The homepage displayes the right number of posts'
59+
$this->assertTrue($client->getResponse()->isRedirect());
60+
61+
$this->assertEquals(
62+
'http://localhost/login',
63+
$client->getResponse()->getTargetUrl(),
64+
sprintf('The %s secure URL redirects to the login form.', $url)
65+
);
66+
}
67+
68+
public function getPublicUrls()
69+
{
70+
return array(
71+
array('/'),
72+
array('/blog/'),
73+
array('/blog/posts/morbi-tempus-commodo-mattis'),
74+
array('/login'),
75+
);
76+
}
77+
78+
public function getSecureUrls()
79+
{
80+
return array(
81+
array('/admin/post/'),
82+
array('/admin/post/new'),
83+
array('/admin/post/1'),
84+
array('/admin/post/1/edit'),
3785
);
3886
}
3987
}

src/AppBundle/Tests/Utils/SluggerTest.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,10 @@
1818
* See http://symfony.com/doc/current/book/testing.html#unit-tests
1919
*
2020
* Execute the application tests using this command (requires PHPUnit to be installed):
21-
* $ cd your-symfony-project/
22-
* $ phpunit -c app
2321
*
24-
* @author Ryan Weaver <weaverryan@gmail.com>
25-
* @author Javier Eguiluz <javier.eguiluz@gmail.com>
22+
* $ cd your-symfony-project/
23+
* $ phpunit -c app
24+
*
2625
*/
2726
class SluggerTest extends \PHPUnit_Framework_TestCase
2827
{

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy