| <testcase> |
| <info> |
| <keywords> |
| HTTP |
| HTTP GET |
| cookies |
| shared cookies |
| </keywords> |
| </info> |
| |
| # Server-side |
| <reply> |
| <data1> |
| HTTP/1.1 200 OK |
| Date: Tue, 09 Nov 2010 14:49:00 GMT |
| Server: test-server/fake |
| Content-Type: text/html |
| Set-Cookie: test1=one; domain=foo.com; expires=Sat Feb 2 11:56:27 GMT 2030 |
| Set-Cookie: test2=two; domain=host.foo.com; expires=Sat Feb 2 11:56:27 GMT 2030 |
| Set-Cookie: test3=three; domain=foo.com; expires=Sat Feb 2 11:56:27 GMT 2030 |
| Content-Length: 29 |
| |
| run 1: set cookie 1, 2 and 3 |
| </data1> |
| <data2> |
| HTTP/1.1 200 OK |
| Date: Tue, 09 Nov 2010 14:49:01 GMT |
| Server: test-server/fake |
| Content-Type: text/html |
| Set-Cookie: test4=four; domain=host.foo.com; expires=Sat Feb 2 11:56:27 GMT 2030 |
| Set-Cookie: test5=five; domain=host.foo.com; expires=Sat Feb 2 11:56:27 GMT 2030 |
| Content-Length: 26 |
| |
| run 2: set cookie 4 and 5 |
| </data2> |
| <data3> |
| HTTP/1.1 200 OK |
| Date: Tue, 09 Nov 2010 14:49:02 GMT |
| Server: test-server/fake |
| Content-Type: text/html |
| Funny-head: yesyes |
| Set-Cookie: test4=overwritten4; domain=host.foo.com; expires=Sat May 5 GMT 11:56:27 2035 |
| Set-Cookie: test1=overwritten1; domain=foo.com; expires=Thu Mar 3 GMT 11:56:27 2033 |
| Set-Cookie: test6=six; domain=.www.host.foo.com; expires=Thu Mar 3 GMT 11:56:27 2033 |
| Set-Cookie: test6=six_more; expires=Thu Mar 3 GMT 11:56:27 2033 |
| Content-Type: text/html |
| Content-Length: 73 |
| |
| run 3: overwrite cookie 1 and 4, set cookie 6 with and without tailmatch |
| </data3> |
| </reply> |
| |
| # Client-side |
| <client> |
| <server> |
| http |
| </server> |
| # don't run this with the threaded-resolver or c-ares since the events might |
| # trigger in a different order! |
| <features> |
| !threaded-resolver |
| !c-ares |
| </features> |
| <name> |
| HTTP with shared cookie list (and dns cache) |
| </name> |
| # Explicitly set the time zone to a known good one, in case the user is |
| # using one of the 'right' zones that take into account leap seconds |
| # which causes the cookie expiry times to be different. |
| <setenv> |
| TZ=GMT |
| </setenv> |
| <tool> |
| lib%TESTNUMBER |
| </tool> |
| <command> |
| http://%HOSTIP:%HTTPPORT/%TESTNUMBER |
| </command> |
| </client> |
| |
| # Verify data after the test has been "shot" |
| <verify> |
| <stdout> |
| GLOBAL_INIT |
| SHARE_INIT |
| CURLSHOPT_LOCKFUNC |
| CURLSHOPT_UNLOCKFUNC |
| CURLSHOPT_USERDATA |
| CURL_LOCK_DATA_COOKIE |
| CURL_LOCK_DATA_DNS |
| CURLOPT_SHARE |
| lock: share [Pigs in space]: 0 |
| unlock: share [Pigs in space]: 1 |
| CURLOPT_COOKIELIST injected_and_clobbered |
| lock: cookie [Pigs in space]: 2 |
| unlock: cookie [Pigs in space]: 3 |
| CURLOPT_COOKIELIST ALL |
| lock: cookie [Pigs in space]: 4 |
| unlock: cookie [Pigs in space]: 5 |
| CURLOPT_COOKIELIST session |
| lock: cookie [Pigs in space]: 6 |
| unlock: cookie [Pigs in space]: 7 |
| CURLOPT_COOKIELIST injected |
| lock: cookie [Pigs in space]: 8 |
| unlock: cookie [Pigs in space]: 9 |
| CURLOPT_COOKIELIST SESS |
| lock: cookie [Pigs in space]: 10 |
| unlock: cookie [Pigs in space]: 11 |
| CLEANUP |
| lock: cookie [Pigs in space]: 12 |
| unlock: cookie [Pigs in space]: 13 |
| lock: share [Pigs in space]: 14 |
| unlock: share [Pigs in space]: 15 |
| *** run 1 |
| CURLOPT_SHARE |
| lock: share [Pigs in space]: 16 |
| unlock: share [Pigs in space]: 17 |
| PERFORM |
| lock: cookie [Pigs in space]: 18 |
| unlock: cookie [Pigs in space]: 19 |
| lock: dns [Pigs in space]: 20 |
| unlock: dns [Pigs in space]: 21 |
| lock: dns [Pigs in space]: 22 |
| unlock: dns [Pigs in space]: 23 |
| lock: cookie [Pigs in space]: 24 |
| unlock: cookie [Pigs in space]: 25 |
| lock: cookie [Pigs in space]: 26 |
| unlock: cookie [Pigs in space]: 27 |
| lock: cookie [Pigs in space]: 28 |
| unlock: cookie [Pigs in space]: 29 |
| lock: cookie [Pigs in space]: 30 |
| unlock: cookie [Pigs in space]: 31 |
| run 1: set cookie 1, 2 and 3 |
| lock: dns [Pigs in space]: 32 |
| unlock: dns [Pigs in space]: 33 |
| lock: dns [Pigs in space]: 34 |
| unlock: dns [Pigs in space]: 35 |
| CLEANUP |
| lock: cookie [Pigs in space]: 36 |
| unlock: cookie [Pigs in space]: 37 |
| lock: share [Pigs in space]: 38 |
| unlock: share [Pigs in space]: 39 |
| *** run 2 |
| CURLOPT_SHARE |
| lock: share [Pigs in space]: 40 |
| unlock: share [Pigs in space]: 41 |
| PERFORM |
| lock: cookie [Pigs in space]: 42 |
| unlock: cookie [Pigs in space]: 43 |
| lock: dns [Pigs in space]: 44 |
| unlock: dns [Pigs in space]: 45 |
| lock: cookie [Pigs in space]: 46 |
| unlock: cookie [Pigs in space]: 47 |
| lock: cookie [Pigs in space]: 48 |
| unlock: cookie [Pigs in space]: 49 |
| lock: cookie [Pigs in space]: 50 |
| unlock: cookie [Pigs in space]: 51 |
| run 2: set cookie 4 and 5 |
| lock: dns [Pigs in space]: 52 |
| unlock: dns [Pigs in space]: 53 |
| lock: dns [Pigs in space]: 54 |
| unlock: dns [Pigs in space]: 55 |
| CLEANUP |
| lock: cookie [Pigs in space]: 56 |
| unlock: cookie [Pigs in space]: 57 |
| lock: share [Pigs in space]: 58 |
| unlock: share [Pigs in space]: 59 |
| *** run 3 |
| CURLOPT_SHARE |
| lock: share [Pigs in space]: 60 |
| unlock: share [Pigs in space]: 61 |
| CURLOPT_COOKIEJAR |
| CURLOPT_COOKIELIST FLUSH |
| lock: cookie [Pigs in space]: 62 |
| unlock: cookie [Pigs in space]: 63 |
| PERFORM |
| lock: dns [Pigs in space]: 64 |
| unlock: dns [Pigs in space]: 65 |
| lock: cookie [Pigs in space]: 66 |
| unlock: cookie [Pigs in space]: 67 |
| lock: cookie [Pigs in space]: 68 |
| unlock: cookie [Pigs in space]: 69 |
| lock: cookie [Pigs in space]: 70 |
| unlock: cookie [Pigs in space]: 71 |
| lock: cookie [Pigs in space]: 72 |
| unlock: cookie [Pigs in space]: 73 |
| lock: cookie [Pigs in space]: 74 |
| unlock: cookie [Pigs in space]: 75 |
| run 3: overwrite cookie 1 and 4, set cookie 6 with and without tailmatch |
| lock: dns [Pigs in space]: 76 |
| unlock: dns [Pigs in space]: 77 |
| lock: dns [Pigs in space]: 78 |
| unlock: dns [Pigs in space]: 79 |
| CLEANUP |
| lock: cookie [Pigs in space]: 80 |
| unlock: cookie [Pigs in space]: 81 |
| lock: share [Pigs in space]: 82 |
| unlock: share [Pigs in space]: 83 |
| CURLOPT_SHARE |
| lock: share [Pigs in space]: 84 |
| unlock: share [Pigs in space]: 85 |
| CURLOPT_COOKIELIST ALL |
| lock: cookie [Pigs in space]: 86 |
| unlock: cookie [Pigs in space]: 87 |
| CURLOPT_COOKIEJAR |
| CURLOPT_COOKIELIST RELOAD |
| lock: cookie [Pigs in space]: 88 |
| unlock: cookie [Pigs in space]: 89 |
| lock: cookie [Pigs in space]: 90 |
| unlock: cookie [Pigs in space]: 91 |
| loaded cookies: |
| ----------------- |
| www.host.foo.com FALSE / FALSE 1993463787 test6 six_more |
| .www.host.foo.com TRUE / FALSE 1993463787 test6 six |
| .host.foo.com TRUE / FALSE 1896263787 test5 five |
| .host.foo.com TRUE / FALSE 2061978987 test4 overwritten4 |
| .foo.com TRUE / FALSE 1896263787 test3 three |
| .host.foo.com TRUE / FALSE 1896263787 test2 two |
| .foo.com TRUE / FALSE 1993463787 test1 overwritten1 |
| .host.foo.com TRUE / FALSE 1896263787 injected yes |
| ----------------- |
| try SHARE_CLEANUP... |
| lock: share [Pigs in space]: 92 |
| unlock: share [Pigs in space]: 93 |
| SHARE_CLEANUP failed, correct |
| CLEANUP |
| lock: cookie [Pigs in space]: 94 |
| unlock: cookie [Pigs in space]: 95 |
| lock: share [Pigs in space]: 96 |
| unlock: share [Pigs in space]: 97 |
| SHARE_CLEANUP |
| lock: share [Pigs in space]: 98 |
| unlock: share [Pigs in space]: 99 |
| GLOBAL_CLEANUP |
| </stdout> |
| <file name="log/jar%TESTNUMBER" mode="text"> |
| # Netscape HTTP Cookie File |
| # https://curl.se/docs/http-cookies.html |
| # This file was generated by libcurl! Edit at your own risk. |
| |
| www.host.foo.com FALSE / FALSE 1993463787 test6 six_more |
| .www.host.foo.com TRUE / FALSE 1993463787 test6 six |
| .host.foo.com TRUE / FALSE 1896263787 test5 five |
| .host.foo.com TRUE / FALSE 2061978987 test4 overwritten4 |
| .foo.com TRUE / FALSE 1896263787 test3 three |
| .host.foo.com TRUE / FALSE 1896263787 test2 two |
| .foo.com TRUE / FALSE 1993463787 test1 overwritten1 |
| .host.foo.com TRUE / FALSE 1896263787 injected yes |
| </file> |
| </verify> |
| </testcase> |