浏览代码

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

Drak 13 年之前
父节点
当前提交
ce66548782
共有 1 个文件被更改,包括 53 次插入0 次删除
  1. 53 0
      src/Symfony/Bundle/FrameworkBundle/Tests/Functional/SessionTest.php

+ 53 - 0
src/Symfony/Bundle/FrameworkBundle/Tests/Functional/SessionTest.php

@@ -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(