3 class CookieTest
extends PHPUnit_Framework_TestCase
{
15 $this->assertEquals($a, $c->toArray());
16 $this->assertEquals($a, $o->toArray());
19 function testExpiresAsDate() {
21 $c = new http\
Cookie(array("expires" => $d->format(DateTime
::RFC1123
)));
22 $this->assertEquals($d->format("U"), $c->getExpires());
25 function testNumeric() {
26 $c = new http\
Cookie("1=%20; 2=%22; 3=%5D", 0, array(2));
27 $this->assertEquals("1=%20; 3=%5D; 2=%22; ", (string) $c);
31 $c = new http\
Cookie("1=%20; 2=%22; e3=%5D", http\Cookie
::PARSE_RAW
, array(2));
32 $this->assertEquals("1=%2520; e3=%255D; 2=%2522; ", (string) $c);
35 function testSimple() {
36 $orig = new http\
Cookie("key=value");
38 $same = new http\
Cookie($copy);
39 $even = new http\
Cookie($same->toArray());
40 foreach (array($orig, $copy) as $c) {
41 $this->assertEquals("value", $c->getCookie("key"));
42 $this->assertEquals(-1, $c->getExpires());
43 $this->assertEquals(0, $c->getFlags());
44 $this->assertEquals(null, $c->getPath());
45 $this->assertEquals(null, $c->getDomain());
46 $this->assertEquals(array(), $c->getExtras());
47 $this->assertEquals(array("key" => "value"), $c->getCookies());
48 $this->assertEquals("key=value; ", $c->toString());
68 function testExpires() {
69 $c = new http\
Cookie("this=expires; expires=Tue, 24 Jan 2012 10:35:32 +0100");
70 $this->assertEquals("expires", $c->getCookie("this"));
71 $this->assertEquals(1327397732, $c->getExpires());
75 $this->assertEquals(-1, $o->getExpires());
76 $this->assertNotEquals(-1, $c->getExpires());
78 $this->assertEquals($t, $o->getExpires());
79 $this->assertNotEquals($t, $c->getExpires());
82 "this=expires; expires=%s; ",
83 date_create("@$t")->format("D, d M Y H:i:s \\G\\M\\T")
90 $c = new http\
Cookie("this=has a path; path=/down; ");
91 $this->assertEquals("has a path", $c->getCookie("this"));
92 $this->assertEquals("this=has%20a%20path; path=/down; ", (string)$c);
93 $this->assertEquals("/down", $c->getPath());
97 $this->assertEquals(null, $o->getPath());
98 $this->assertNotEquals(null, $c->getPath());
100 $this->assertEquals($p, $o->getPath());
101 $this->assertNotEquals($p, $c->getPath());
102 $this->assertEquals("this=has%20a%20path; path=$p; ", $o->toString());
105 function testDomain() {
106 $c = new http\
Cookie("this=has a domain; domain=.example.com; ");
107 $this->assertEquals("has a domain", $c->getCookie("this"));
108 $this->assertEquals("this=has%20a%20domain; domain=.example.com; ", (string)$c);
109 $this->assertEquals(".example.com", $c->getDomain());
111 $d = "sub.example.com";
113 $this->assertEquals(null, $o->getDomain());
114 $this->assertNotEquals(null, $c->getDomain());
116 $this->assertEquals($d, $o->getDomain());
117 $this->assertNotEquals($d, $c->getDomain());
118 $this->assertEquals("this=has%20a%20domain; domain=$d; ", $o->toString());
121 function testFlags() {
122 $c = new http\
Cookie("icanhas=flags; secure; httpOnly");
123 $this->assertEquals(http\Cookie
::SECURE
, $c->getFlags() & http\Cookie
::SECURE
, "secure");
124 $this->assertEquals(http\Cookie
::HTTPONLY
, $c->getFlags() & http\Cookie
::HTTPONLY
, "httpOnly");
125 $c->setFlags($c->getFlags() ^ http\Cookie
::SECURE
);
126 $this->assertEquals(0, $c->getFlags() & http\Cookie
::SECURE
, "secure");
127 $this->assertEquals(http\Cookie
::HTTPONLY
, $c->getFlags() & http\Cookie
::HTTPONLY
, "httpOnly");
128 $c->setFlags($c->getFlags() ^ http\Cookie
::HTTPONLY
);
129 $this->assertEquals(0, $c->getFlags() & http\Cookie
::SECURE
, "secure");
130 $this->assertEquals(0, $c->getFlags() & http\Cookie
::HTTPONLY
, "httpOnly");
131 $this->assertEquals("icanhas=flags; ", $c->toString());
132 $c->setFlags(http\Cookie
::SECURE|http\Cookie
::HTTPONLY
);
133 $this->assertEquals("icanhas=flags; secure; httpOnly; ", $c->toString());
136 function testExtras() {
137 $c = new http\
Cookie("c1=v1; e0=1; e2=2; c2=v2", 0, array("e0", "e1", "e2"));
138 $this->assertEquals(array("c1"=>"v1", "c2"=>"v2"), $c->getCookies());
139 $this->assertEquals(array("e0"=>"1", "e2"=>"2"), $c->getExtras());
140 $c->addExtra("e1", 1);
142 $c->setExtra("e3", 123);
143 $this->assertEquals(123, $c->getExtra("e3"));
145 $this->assertEquals(array("e2"=>"2", "e1"=>1), $c->getExtras());
146 $this->assertEquals("c1=v1; c2=v2; e2=2; e1=1; ", $c->toString());
147 $c->addExtras(array("e3"=>3, "e4"=>4));
148 $this->assertEquals(array("e2"=>"2", "e1"=>1, "e3"=>3, "e4"=>4), $c->getExtras());
149 $this->assertEquals("c1=v1; c2=v2; e2=2; e1=1; e3=3; e4=4; ", $c->toString());
150 $c->setExtras(array("e"=>"x"));
151 $this->assertEquals(array("e"=>"x"), $c->getExtras());
152 $this->assertEquals("c1=v1; c2=v2; e=x; ", $c->toString());
154 $this->assertEquals(array(), $c->getExtras());
155 $this->assertEquals("c1=v1; c2=v2; ", $c->toString());
158 function testCookies() {
159 $c = new http\
Cookie("e0=1; c1=v1; e2=2; c2=v2", 0, array("c0", "c1", "c2"));
160 $this->assertEquals(array("c1"=>"v1", "c2"=>"v2"), $c->getExtras());
161 $this->assertEquals(array("e0"=>"1", "e2"=>"2"), $c->getCookies());
162 $c->addCookie("e1", 1);
164 $c->setCookie("e3", 123);
165 $this->assertEquals(123, $c->getCookie("e3"));
167 $this->assertEquals(array("e2"=>"2", "e1"=>1), $c->getCookies());
168 $this->assertEquals("e2=2; e1=1; c1=v1; c2=v2; ", $c->toString());
169 $c->addCookies(array("e3"=>3, "e4"=>4));
170 $this->assertEquals(array("e2"=>"2", "e1"=>1, "e3"=>3, "e4"=>4), $c->getCookies());
171 $this->assertEquals("e2=2; e1=1; e3=3; e4=4; c1=v1; c2=v2; ", $c->toString());
172 $c->setCookies(array("e"=>"x"));
173 $this->assertEquals(array("e"=>"x"), $c->getCookies());
174 $this->assertEquals("e=x; c1=v1; c2=v2; ", $c->toString());
176 $this->assertEquals(array(), $c->getCookies());
177 $this->assertEquals("c1=v1; c2=v2; ", $c->toString());