Array and string offset access syntax with curly braces is deprecated
[m6w6/ext-http] / tests / client021.phpt
index 1335aaa8ebe80bd9f0c068ea4e3921a1d54b229a..702685dd125f6efb8c30b976d9f2c9a4d1271195 100644 (file)
 --TEST--
 client cookies
 --SKIPIF--
-<?php 
+<?php
 include "skipif.inc";
 skip_client_test();
 ?>
 --FILE--
-<?php 
+<?php
 
 include "helper/server.inc";
 
 echo "Test\n";
 
+function dump() {
+       global $tmpfile, $section;
+       printf("# %s\n", $section);
+       foreach (file($tmpfile) as $line) {
+               if ($line[0] === "#" || $line === "\n") {
+                       continue;
+               }
+               printf("%s:\t%s", $tmpfile, $line);
+       }
+}
+
+function send_and_check($client, $cmp) {
+       global $section, $request;
+       $client->requeue($request)->send();
+       foreach ($client->getResponse()->getCookies() as $list) {
+               foreach ($list->getCookies() as $name => $value) {
+                       if ($cmp[$name] != $value) {
+                               printf("# %s\nExpected %s=%s, got %s\n",
+                                       $section, $name, $cmp[$name], $value);
+                       }
+               }
+       }
+       #dump();
+}
+
 $tmpfile = tempnam(sys_get_temp_dir(), "cookie.");
 $request = new http\Client\Request("GET", "http://localhost");
-$request->setOptions(array("cookiestore" => $tmpfile));
 
-server("cookie.inc", function($port) use($request) {
+$section = "distinct clients";
+
+server("cookie.inc", function($port) use($request, $tmpfile) {
+       $request->setOptions(array("port" => $port));
+       $client = new http\Client;
+       send_and_check($client, ["counter" => 1]);
+});
+server("cookie.inc", function($port) use($request, $tmpfile) {
+       $request->setOptions(array("port" => $port));
+       $client = new http\Client;
+       send_and_check($client, ["counter" => 1]);
+});
+server("cookie.inc", function($port) use($request, $tmpfile) {
        $request->setOptions(array("port" => $port));
        $client = new http\Client;
-       echo $client->requeue($request)->send()->getResponse();
-       echo $client->requeue($request)->send()->getResponse();
-       echo $client->requeue($request)->send()->getResponse();
+       send_and_check($client, ["counter" => 1]);
+});
+
+$section = "reusing curl handles";
+
+server("cookie.inc", function($port) use($request, $tmpfile) {
+       $request->setOptions(array("port" => $port));
+       $client = new http\Client("curl", "test");
+       send_and_check($client, ["counter" => 1]);
+});
+server("cookie.inc", function($port) use($request, $tmpfile) {
+       $request->setOptions(array("port" => $port));
+       $client = new http\Client("curl", "test");
+       send_and_check($client, ["counter" => 2]);
+});
+server("cookie.inc", function($port) use($request, $tmpfile) {
+       $request->setOptions(array("port" => $port));
+       $client = new http\Client("curl", "test");
+       send_and_check($client, ["counter" => 3]);
 });
 
-server("cookie.inc", function($port) use($request) {
+$section = "distict client with persistent cookies";
+
+$request->setOptions(array("cookiestore" => $tmpfile));
+
+server("cookie.inc", function($port) use($request, $tmpfile) {
        $request->setOptions(array("port" => $port));
        $client = new http\Client;
-       echo $client->requeue($request)->send()->getResponse();
-       echo $client->requeue($request)->send()->getResponse();
-       echo $client->requeue($request)->send()->getResponse();
+       send_and_check($client, ["counter" => 1]);
+       send_and_check($client, ["counter" => 2]);
+       send_and_check($client, ["counter" => 3]);
 });
+server("cookie.inc", function($port) use($request, $tmpfile) {
+       $request->setOptions(array("port" => $port));
+       $client = new http\Client;
+       send_and_check($client, ["counter" => 4]);
+       send_and_check($client, ["counter" => 5]);
+       send_and_check($client, ["counter" => 6]);
+});
+
+$section = "distinct client with persistent cookies, but session cookies removed";
 
-server("cookie.inc", function($port) use($request) {
+server("cookie.inc", function($port) use($request, $tmpfile) {
        $request->setOptions(array("port" => $port, "cookiesession" => true));
        $client = new http\Client;
-       echo $client->requeue($request)->send()->getResponse();
-       echo $client->requeue($request)->send()->getResponse();
-       echo $client->requeue($request)->send()->getResponse();
+       send_and_check($client, ["counter" => 1]);
+       send_and_check($client, ["counter" => 1]);
+       send_and_check($client, ["counter" => 1]);
 });
 
-server("cookie.inc", function($port) use($request) {
+$section = "distinct client with persistent cookies, and session cookies kept";
+
+server("cookie.inc", function($port) use($request, $tmpfile) {
        $request->setOptions(array("port" => $port, "cookiesession" => false));
        $client = new http\Client;
-       echo $client->requeue($request)->send()->getResponse();
-       echo $client->requeue($request)->send()->getResponse();
-       echo $client->requeue($request)->send()->getResponse();
+       send_and_check($client, ["counter" => 2]);
+       send_and_check($client, ["counter" => 3]);
+       send_and_check($client, ["counter" => 4]);
+});
+
+$section = "reusing curl handles without persistent cookies and disabling cookie_share";
+
+$c = new http\Client("curl", "test");
+$c->configure(array("share_cookies" => false));
+$c = null;
+$request->setOptions(array("cookiestore" => null));
+
+server("cookie.inc", function($port) use($request, $tmpfile) {
+       $request->setOptions(array("port" => $port));
+       $client = new http\Client("curl", "test");
+       send_and_check($client, ["counter" => 1]);
 });
+server("cookie.inc", function($port) use($request, $tmpfile) {
+       $request->setOptions(array("port" => $port));
+       $client = new http\Client("curl", "test");
+       send_and_check($client, ["counter" => 1]);
+});
+server("cookie.inc", function($port) use($request, $tmpfile) {
+       $request->setOptions(array("port" => $port));
+       $client = new http\Client("curl", "test");
+       send_and_check($client, ["counter" => 1]);
+});
+
 
 unlink($tmpfile);
 
@@ -54,52 +145,4 @@ unlink($tmpfile);
 ===DONE===
 --EXPECT--
 Test
-HTTP/1.1 200 OK
-Set-Cookie: counter=1;
-Etag: ""
-X-Original-Transfer-Encoding: chunked
-HTTP/1.1 200 OK
-Set-Cookie: counter=2;
-Etag: ""
-X-Original-Transfer-Encoding: chunked
-HTTP/1.1 200 OK
-Set-Cookie: counter=3;
-Etag: ""
-X-Original-Transfer-Encoding: chunked
-HTTP/1.1 200 OK
-Set-Cookie: counter=4;
-Etag: ""
-X-Original-Transfer-Encoding: chunked
-HTTP/1.1 200 OK
-Set-Cookie: counter=5;
-Etag: ""
-X-Original-Transfer-Encoding: chunked
-HTTP/1.1 200 OK
-Set-Cookie: counter=6;
-Etag: ""
-X-Original-Transfer-Encoding: chunked
-HTTP/1.1 200 OK
-Set-Cookie: counter=1;
-Etag: ""
-X-Original-Transfer-Encoding: chunked
-HTTP/1.1 200 OK
-Set-Cookie: counter=1;
-Etag: ""
-X-Original-Transfer-Encoding: chunked
-HTTP/1.1 200 OK
-Set-Cookie: counter=1;
-Etag: ""
-X-Original-Transfer-Encoding: chunked
-HTTP/1.1 200 OK
-Set-Cookie: counter=2;
-Etag: ""
-X-Original-Transfer-Encoding: chunked
-HTTP/1.1 200 OK
-Set-Cookie: counter=3;
-Etag: ""
-X-Original-Transfer-Encoding: chunked
-HTTP/1.1 200 OK
-Set-Cookie: counter=4;
-Etag: ""
-X-Original-Transfer-Encoding: chunked
 ===DONE===