* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace App\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; /** * TODO adjust to actual app * * Functional test that implements a "smoke test" of all the public and secure * URLs of the application. * See http://symfony.com/doc/current/best_practices/tests.html#functional-tests. * * Execute the application tests using this command (requires PHPUnit to be installed): * * $ cd your-symfony-project/ * $ phpunit -c app * * @group integration */ class DefaultControllerTest extends WebTestCase { /** * PHPUnit's data providers allow to execute the same tests repeated times * using a different set of data each time. * See http://symfony.com/doc/current/cookbook/form/unit_testing.html#testing-against-different-sets-of-data. * * @dataProvider getPublicUrls */ public function testPublicUrls($url) { $this->markTestIncomplete(__METHOD__); $client = self::createClient(); $client->request('GET', $url); $this->assertTrue( $client->getResponse()->isSuccessful(), sprintf('The %s public URL loads correctly.', $url) ); } /** * The application contains a lot of secure URLs which shouldn't be * publicly accessible. This tests ensures that whenever a user tries to * access one of those pages, a redirection to the login form is performed. * * @dataProvider getSecureUrls */ public function testSecureUrls($url) { $this->markTestSkipped('No admin URLs for testing'); $client = self::createClient(); $client->request('GET', $url); $this->assertTrue($client->getResponse()->isRedirect()); $this->assertEquals( 'http://localhost/en/login', $client->getResponse()->getTargetUrl(), sprintf('The %s secure URL redirects to the login form.', $url) ); } public function getPublicUrls() { yield ['/']; yield ['/en/login']; } public function getSecureUrls() { yield ['/en/admin/post/']; } }