Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Symfony2 functional test authentication

I'm trying to set my functional tests up and I'm having problems with getting authenticated. I've read over this guide: http://symfony.com/doc/current/cookbook/testing/http_authentication.html and implemented what they have said to do but I still get stuck on redirecting login. I'm sure this is something trivial but I'm not sure what.

Test Controller

namespace HvH\ClientsBundle\Tests\Controller;

use HvH\ClientsBundle\Controller\ClientsController;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\HeaderBag;
use Symfony\Component\HttpFoundation\Session;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class ClientsControllerTest extends WebTestCase
{

    public function testGetClientsAction()
    {

        $client = static::createClient();

        $client->request(
           '/clients/123456', 
           'GET', 
            array(), /* request params */ 
            array(), /* files */
            array('X-Requested-With' => "XMLHttpRequest", 'PHP_AUTH_USER' => 'testuser', 'PHP_AUTH_PW' => 'testpass')
        );

        print_r($client->getResponse());
        die();
    }
}

congif_test.yml

security:
    firewalls:
        secured_area:
            http_basic:

Result of the request

Symfony\Component\HttpFoundation\RedirectResponse Object
(
    [headers] => Symfony\Component\HttpFoundation\ResponseHeaderBag Object
        (
            [computedCacheControl:protected] => Array
                (
                    [no-cache] => 1
                )

            [cookies:protected] => Array
                (
                    [] => Array
                        (
                            [/] => Array
                                (
                                    [PHPSESSID] => Symfony\Component\HttpFoundation\Cookie Object
                                        (
                                            [name:protected] => PHPSESSID
                                            [value:protected] => 7e3ece541918264de0003e2dcd251833
                                            [domain:protected] => 
                                            [expire:protected] => 1342616045
                                            [path:protected] => /
                                            [secure:protected] => 
                                            [httpOnly:protected] => 
                                        )

                                )

                        )

                )

            [headers:protected] => Array
                (
                    [location] => Array
                        (
                            [0] => http://localhost/login
                        )

                    [cache-control] => Array
                        (
                            [0] => no-cache
                        )

                    [date] => Array
                        (
                            [0] => Wed, 18 Jul 2012 00:54:05 GMT
                        )

                    [content-type] => Array
                        (
                            [0] => text/html
                        )

                    [x-debug-token] => Array
                        (
                            [0] => 5006092d43848
                        )

                )

            [cacheControl:protected] => Array
                (
                )

        )

    [content:protected] => <!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta http-equiv="refresh" content="1;url=http://localhost/login" />

        <title>Redirecting to http://localhost/login</title>
    </head>
    <body>
        Redirecting to <a href="http://localhost/login">http://localhost/login</a>.
    </body>
</html>
    [version:protected] => 1.0
    [statusCode:protected] => 302
    [statusText:protected] => Found
    [charset:protected] => UTF-8
)

Any suggestions on how to get around this?

like image 340
greg Avatar asked Jul 18 '12 00:07

greg


1 Answers

Either use:

$crawler = $client->followRedirect();

or make that client always redirects:

$client->followRedirects();

Related doc: http://symfony.com/doc/current/book/testing.html#redirecting

like image 150
Jakub Zalas Avatar answered Oct 18 '22 20:10

Jakub Zalas