2011-07-17 24 views
6

No he podido encontrar ninguna documentación sobre esto.¿Cómo hacer pruebas funcionales que requieren autentificación en Symfony 2?

Estoy usando el objeto del cliente para enviar una solicitud a/iniciar sesión, completar el formulario y enviarlo. Eso funciona bien, pero recibo una respuesta 302 a/login, como si las credenciales fueran incorrectas.

En cualquier caso, creo que debe haber al menos una fila en la tabla de sesiones después de la primera solicitud, pero no hay ninguna. ¿Cómo es eso posible?

¿Alguna idea?

Editar: Aquí está el código:

// Go to login page 
    $client = $this->createClient(); 
    $crawler = $client->request('GET', '/login'); 
    $this->assertTrue($crawler->filter('html:contains("Username")')->count() > 0); 

    // Fill in the form and submit it 
    $form = $crawler->selectButton('login')->form(); 
    $form['_username'] = 'admin'; 
    $form['_password'] = 'admin'; 
    $client->submit($form); 
    $this->assertEquals(302,$client->getResponse()->getStatusCode()); 
    $this->assertFalse($client->getResponse()->isRedirect('http://localhost/login')); 

La última aserción falla

+0

¿Puedes mostrar la parte del código que ejecuta esta prueba? – Ibu

+0

@Ibu seguro, ahí está – HappyDeveloper

+0

¿Finalmente ha tenido éxito con esta prueba? Sé que es una posibilidad remota asumiendo que lo recordarás, pero ¿tal vez ...? – mmmm

Respuesta

2

se debe crear una nueva firewal utilizando autenticación básica HTTP:

 
security: 
    ... 
    firewalls: 
     functional_test: 
      pattern: /secure/.* 
      stateless: true 
      http_basic: 
       provider: provider_name 
    ... 

A continuación, crear un cliente de la siguiente manera:

$client = $this->createClient(array(), array(
    'PHP_AUTH_USER' => 'username', 
    'PHP_AUTH_PW' => 'password', 
)); 

Happy coding!

Cuestiones relacionadas