split off property proxy
[m6w6/ext-http] / phpunit / RequestTest.php
index 56053ee148d5a487db4ee7d091a5a1f20874ac88..0072714c4c953789cd389da55125afd242ba3e76 100644 (file)
@@ -28,13 +28,26 @@ class RequestTest extends PHPUnit_Framework_TestCase
     protected $r;
 
     function setUp() {
-        $this->r = (new http\Client\Factory)->createClient();
+               $f = new http\Client\Factory;
+        $this->r = $f->createClient();
         $this->r->setOptions(
             array(
                 "connecttimeout"    => 30,
                 "timeout"           => 300,
             )
         );
+        $this->r->setOptions(
+               array(
+                       "timeout" => 600
+               )
+        );
+        $this->assertEquals(
+               array(
+                       "connecttimeout" => 30,
+                       "timeout" => 600,
+               ),
+               $this->r->getOptions()
+        );
     }
 
     function testClone() {
@@ -43,25 +56,32 @@ class RequestTest extends PHPUnit_Framework_TestCase
     }
 
     function testObserver() {
-        $this->r->attach(new ProgressObserver1);
-        $this->r->attach(new ProgressObserver2);
+               $test = $this;
+        $this->r->attach($o1 = new ProgressObserver1);
+        $this->r->attach($o2 = new ProgressObserver2);
         $this->r->attach(
-            new CallbackObserver(
-                function ($r) {
+            $o3 = new CallbackObserver(
+                function ($r) use ($test) {
                     $p = (array) $r->getProgress();
-                    $this->assertArrayHasKey("started", $p);
-                    $this->assertArrayHasKey("finished", $p);
-                    $this->assertArrayHasKey("dlnow", $p);
-                    $this->assertArrayHasKey("ulnow", $p);
-                    $this->assertArrayHasKey("dltotal", $p);
-                    $this->assertArrayHasKey("ultotal", $p);
-                    $this->assertArrayHasKey("info", $p);
+                    $test->assertArrayHasKey("started", $p);
+                    $test->assertArrayHasKey("finished", $p);
+                    $test->assertArrayHasKey("dlnow", $p);
+                    $test->assertArrayHasKey("ulnow", $p);
+                    $test->assertArrayHasKey("dltotal", $p);
+                    $test->assertArrayHasKey("ultotal", $p);
+                    $test->assertArrayHasKey("info", $p);
                 }
             )
         );
         $this->r->setRequest(new http\Client\Request("GET", "http://dev.iworks.at/ext-http/"))->send(null);
         $this->assertRegexp("/(\.-)+/", $this->r->pi);
         $this->assertCount(3, $this->r->getObservers());
+        $this->r->detach($o1);
+        $this->assertCount(2, $this->r->getObservers());
+        $this->r->detach($o2);
+        $this->assertCount(1, $this->r->getObservers());
+        $this->r->detach($o3);
+        $this->assertCount(0, $this->r->getObservers());
     }
 
     function testCookies() {
@@ -73,7 +93,27 @@ class RequestTest extends PHPUnit_Framework_TestCase
         $this->assertNotContains("Cookie", (string) $this->r->getRequestMessage());
         $this->r->send(null);
         $this->assertContains("Cookie", (string) $this->r->getRequestMessage());
-        $this->assertCount(2, $this->r->getResponseMessage()->getCookies());
+        $cookies = $this->r->getResponseMessage()->getCookies(0, array("extra"));
+        $this->assertCount(2, $cookies);
+        foreach ($cookies as $cookie) {
+               if ($cookie->getCookie("perm")) {
+                       $this->assertTrue(0 < $cookie->getExpires());
+               }
+               if ($cookie->getCookie("temp")) {
+                       $this->assertEquals(-1, $cookie->getExpires());
+               }
+        }
+        $this->r->send(new http\Client\Request("GET", "http://dev.iworks.at/ext-http/.cookie1.php"));
+        $cookies = $this->r->getResponseMessage()->getCookies(0, array("bar"));
+        $this->assertCount(1, $cookies);
+        $cookies = $cookies[0];
+        $this->assertEquals(array("bar"=>"foo"), $cookies->getExtras());
+        $this->assertEquals(array("foo"=>"bar"), $cookies->getCookies());
+        $cookies = $this->r->getResponseMessage()->getCookies(0, array("foo"));
+        $this->assertCount(1, $cookies);
+        $cookies = $cookies[0];
+        $this->assertEquals(array("foo"=>"bar","bar"=>"foo"), $cookies->getCookies());
+        $this->assertEquals(array(), $cookies->getExtras());
     }
 
     function testResetCookies() {
@@ -92,6 +132,23 @@ class RequestTest extends PHPUnit_Framework_TestCase
         $this->r->send(null);
         $this->assertNotEquals($c, array_map($f, $this->r->getResponseMessage()->getCookies()));
     }
+    
+    function testSsl() {
+       $this->r->setRequest(new http\Client\Request("GET", "https://twitter.com/"));
+       $this->r->setSslOptions(array("verify_peer" => true));
+       $this->r->addSslOptions(array("verify_host" => 2));
+       $this->assertEquals(
+               array(
+                       "verify_peer" => true,
+                       "verify_host" => 2,
+               ),
+               $this->r->getSslOptions()
+       );
+       $this->r->send();
+       $ti = $this->r->getTransferInfo();
+       $this->assertArrayHasKey("ssl_engines", $ti);
+       $this->assertGreaterThan(0, count($ti["ssl_engines"])); 
+    }
 
     function testHistory() {
         $body = new http\Message\Body;