Warning: You are browsing the documentation for Symfony 3.0, which is no longer maintained.
Read the updated version of this page for Symfony 5.3 (the current stable version).
How to Simulate HTTP Authentication in a Functional Test
How to Simulate HTTP Authentication in a Functional Test¶
If your application needs HTTP authentication, pass the username and password
as server variables to
$client = static::createClient(array(), array( 'PHP_AUTH_USER' => 'username', 'PHP_AUTH_PW' => 'pa$$word', ));
You can also override it on a per request basis:
$client->request('DELETE', '/post/12', array(), array(), array( 'PHP_AUTH_USER' => 'username', 'PHP_AUTH_PW' => 'pa$$word', ));
When your application is using a
form_login, you can simplify your tests
by allowing your test configuration to make use of HTTP authentication. This
way you can use the above to authenticate in tests, but still have your users
log in via the normal
form_login. The trick is to include the
key in your firewall, along with the
1 2 3 4 5
# app/config/config_test.yml security: firewalls: your_firewall_name: http_basic: ~
1 2 3 4 5 6
<!-- app/config/config_test.xml --> <security:config> <security:firewall name="your_firewall_name"> <security:http-basic /> </security:firewall> </security:config>
1 2 3 4 5 6 7 8
// app/config/config_test.php $container->loadFromExtension('security', array( 'firewalls' => array( 'your_firewall_name' => array( 'http_basic' => array(), ), ), ));
This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.