X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=tests%2Fclient021.phpt;h=702685dd125f6efb8c30b976d9f2c9a4d1271195;hp=c31afd0c3e9e705efddb83b358834c031d01e711;hb=531e6007bd10cbda6e1e96a9c27228086d85c5a9;hpb=343738ad56eb70017704fdac57cf0d74da3d0f2e diff --git a/tests/client021.phpt b/tests/client021.phpt index c31afd0..702685d 100644 --- a/tests/client021.phpt +++ b/tests/client021.phpt @@ -12,57 +12,132 @@ include "helper/server.inc"; echo "Test\n"; -function dump($f) { - return; - readfile($f); +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"); + +$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; + 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]); +}); + +$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(); -#dump($tmpfile); - echo $client->requeue($request)->send()->getResponse(); -#dump($tmpfile); - echo $client->requeue($request)->send()->getResponse(); -#dump($tmpfile); + 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; - echo $client->requeue($request)->send()->getResponse(); -#dump($tmpfile); - echo $client->requeue($request)->send()->getResponse(); -#dump($tmpfile); - echo $client->requeue($request)->send()->getResponse(); -#dump($tmpfile); + 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, $tmpfile) { $request->setOptions(array("port" => $port, "cookiesession" => true)); $client = new http\Client; - echo $client->requeue($request)->send()->getResponse(); -dump($tmpfile); - echo $client->requeue($request)->send()->getResponse(); -dump($tmpfile); - echo $client->requeue($request)->send()->getResponse(); -dump($tmpfile); + send_and_check($client, ["counter" => 1]); + send_and_check($client, ["counter" => 1]); + send_and_check($client, ["counter" => 1]); }); +$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(); -dump($tmpfile); - echo $client->requeue($request)->send()->getResponse(); -dump($tmpfile); - echo $client->requeue($request)->send()->getResponse(); -dump($tmpfile); + 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); @@ -70,54 +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=== ---XFAIL-- -TBD