X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=tests%2Fclient021.phpt;h=702685dd125f6efb8c30b976d9f2c9a4d1271195;hp=1335aaa8ebe80bd9f0c068ea4e3921a1d54b229a;hb=531e6007bd10cbda6e1e96a9c27228086d85c5a9;hpb=e867316f1364f589eec67cc684703c874984430b diff --git a/tests/client021.phpt b/tests/client021.phpt index 1335aaa..702685d 100644 --- a/tests/client021.phpt +++ b/tests/client021.phpt @@ -1,52 +1,143 @@ --TEST-- client cookies --SKIPIF-- - --FILE-- -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===