[FrameworkBundle] Add tests to prove functional testing works with simultaneous clients.

This commit is contained in:
Drak 2011-12-16 16:10:50 +05:45
parent ff0412a2bd
commit ce66548782

View File

@ -64,6 +64,59 @@ class SessionTest extends WebTestCase
$this->assertContains('No flash was set.', $crawler->text());
}
/**
* See if two separate insulated clients can run without
* polluting eachother's session data.
*
* @dataProvider getConfigs
*/
public function testTwoClients($config)
{
// start first client
$client1 = $this->createClient(array('test_case' => 'Session', 'root_config' => $config));
$client1->insulate();
// start second client
$client2 = $this->createClient(array('test_case' => 'Session', 'root_config' => $config));
$client2->insulate();
// new session, so no name set.
$crawler1 = $client1->request('GET', '/session');
$this->assertContains('You are new here and gave no name.', $crawler1->text());
// set name of client1
$crawler1 = $client1->request('GET', '/session/client1');
$this->assertContains('Hello client1, nice to meet you.', $crawler1->text());
// no session for client2
$crawler2 = $client2->request('GET', '/session');
$this->assertContains('You are new here and gave no name.', $crawler2->text());
// remember name client2
$crawler2 = $client2->request('GET', '/session/client2');
$this->assertContains('Hello client2, nice to meet you.', $crawler2->text());
// prove remembered name of client1
$crawler1 = $client1->request('GET', '/session');
$this->assertContains('Welcome back client1, nice to meet you.', $crawler1->text());
// prove remembered name of client2
$crawler2 = $client2->request('GET', '/session');
$this->assertContains('Welcome back client2, nice to meet you.', $crawler2->text());
// clear client1
$crawler1 = $client1->request('GET', '/session_logout');
$this->assertContains('Session cleared.', $crawler1->text());
// prove client1 data is cleared
$crawler1 = $client1->request('GET', '/session');
$this->assertContains('You are new here and gave no name.', $crawler1->text());
// prove remembered name of client2 remains untouched.
$crawler2 = $client2->request('GET', '/session');
$this->assertContains('Welcome back client2, nice to meet you.', $crawler2->text());
}
public function getConfigs()
{
return array(