source: trunk/server/www/vendors/simpletest/test/cookies_test.php @ 6

Last change on this file since 6 was 6, checked in by sander, 11 years ago

Added SimpleTest? test framework

File size: 9.4 KB
Line 
1<?php
2// $Id: cookies_test.php 1506 2007-05-07 00:58:03Z lastcraft $
3require_once(dirname(__FILE__) . '/../autorun.php');
4require_once(dirname(__FILE__) . '/../cookies.php');
5
6class TestOfCookie extends UnitTestCase {
7   
8    function testCookieDefaults() {
9        $cookie = new SimpleCookie("name");
10        $this->assertFalse($cookie->getValue());
11        $this->assertEqual($cookie->getPath(), "/");
12        $this->assertIdentical($cookie->getHost(), false);
13        $this->assertFalse($cookie->getExpiry());
14        $this->assertFalse($cookie->isSecure());
15    }
16   
17    function testCookieAccessors() {
18        $cookie = new SimpleCookie(
19                "name",
20                "value",
21                "/path",
22                "Mon, 18 Nov 2002 15:50:29 GMT",
23                true);
24        $this->assertEqual($cookie->getName(), "name");
25        $this->assertEqual($cookie->getValue(), "value");
26        $this->assertEqual($cookie->getPath(), "/path/");
27        $this->assertEqual($cookie->getExpiry(), "Mon, 18 Nov 2002 15:50:29 GMT");
28        $this->assertTrue($cookie->isSecure());
29    }
30   
31    function testFullHostname() {
32        $cookie = new SimpleCookie("name");
33        $this->assertTrue($cookie->setHost("host.name.here"));
34        $this->assertEqual($cookie->getHost(), "host.name.here");
35        $this->assertTrue($cookie->setHost("host.com"));
36        $this->assertEqual($cookie->getHost(), "host.com");
37    }
38   
39    function testHostTruncation() {
40        $cookie = new SimpleCookie("name");
41        $cookie->setHost("this.host.name.here");
42        $this->assertEqual($cookie->getHost(), "host.name.here");
43        $cookie->setHost("this.host.com");
44        $this->assertEqual($cookie->getHost(), "host.com");
45        $this->assertTrue($cookie->setHost("dashes.in-host.com"));
46        $this->assertEqual($cookie->getHost(), "in-host.com");
47    }
48   
49    function testBadHosts() {
50        $cookie = new SimpleCookie("name");
51        $this->assertFalse($cookie->setHost("gibberish"));
52        $this->assertFalse($cookie->setHost("host.here"));
53        $this->assertFalse($cookie->setHost("host..com"));
54        $this->assertFalse($cookie->setHost("..."));
55        $this->assertFalse($cookie->setHost("host.com."));
56    }
57   
58    function testHostValidity() {
59        $cookie = new SimpleCookie("name");
60        $cookie->setHost("this.host.name.here");
61        $this->assertTrue($cookie->isValidHost("host.name.here"));
62        $this->assertTrue($cookie->isValidHost("that.host.name.here"));
63        $this->assertFalse($cookie->isValidHost("bad.host"));
64        $this->assertFalse($cookie->isValidHost("nearly.name.here"));
65    }
66   
67    function testPathValidity() {
68        $cookie = new SimpleCookie("name", "value", "/path");
69        $this->assertFalse($cookie->isValidPath("/"));
70        $this->assertTrue($cookie->isValidPath("/path/"));
71        $this->assertTrue($cookie->isValidPath("/path/more"));
72    }
73   
74    function testSessionExpiring() {
75        $cookie = new SimpleCookie("name", "value", "/path");
76        $this->assertTrue($cookie->isExpired(0));
77    }
78   
79    function testTimestampExpiry() {
80        $cookie = new SimpleCookie("name", "value", "/path", 456);
81        $this->assertFalse($cookie->isExpired(0));
82        $this->assertTrue($cookie->isExpired(457));
83        $this->assertFalse($cookie->isExpired(455));
84    }
85   
86    function testDateExpiry() {
87        $cookie = new SimpleCookie(
88                "name",
89                "value",
90                "/path",
91                "Mon, 18 Nov 2002 15:50:29 GMT");
92        $this->assertTrue($cookie->isExpired("Mon, 18 Nov 2002 15:50:30 GMT"));
93        $this->assertFalse($cookie->isExpired("Mon, 18 Nov 2002 15:50:28 GMT"));
94    }
95   
96    function testAging() {
97        $cookie = new SimpleCookie("name", "value", "/path", 200);
98        $cookie->agePrematurely(199);
99        $this->assertFalse($cookie->isExpired(0));
100        $cookie->agePrematurely(2);
101        $this->assertTrue($cookie->isExpired(0));
102    }
103}
104
105class TestOfCookieJar extends UnitTestCase {
106   
107    function testAddCookie() {
108        $jar = new SimpleCookieJar();
109        $jar->setCookie("a", "A");
110        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/')), array('a=A'));
111    }
112   
113    function testHostFilter() {
114        $jar = new SimpleCookieJar();
115        $jar->setCookie('a', 'A', 'my-host.com');
116        $jar->setCookie('b', 'B', 'another-host.com');
117        $jar->setCookie('c', 'C');
118        $this->assertEqual(
119                $jar->selectAsPairs(new SimpleUrl('my-host.com')),
120                array('a=A', 'c=C'));
121        $this->assertEqual(
122                $jar->selectAsPairs(new SimpleUrl('another-host.com')),
123                array('b=B', 'c=C'));
124        $this->assertEqual(
125                $jar->selectAsPairs(new SimpleUrl('www.another-host.com')),
126                array('b=B', 'c=C'));
127        $this->assertEqual(
128                $jar->selectAsPairs(new SimpleUrl('new-host.org')),
129                array('c=C'));
130        $this->assertEqual(
131                $jar->selectAsPairs(new SimpleUrl('/')),
132                array('a=A', 'b=B', 'c=C'));
133    }
134   
135    function testPathFilter() {
136        $jar = new SimpleCookieJar();
137        $jar->setCookie('a', 'A', false, '/path/');
138        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/')), array());
139        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/elsewhere')), array());
140        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/path/')), array('a=A'));
141        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/path')), array('a=A'));
142        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/pa')), array());
143        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/path/here')), array('a=A'));
144    }
145   
146    function testPathFilterDeeply() {
147        $jar = new SimpleCookieJar();
148        $jar->setCookie('a', 'A', false, '/path/more_path/');
149        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/path/')), array());
150        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/path')), array());
151        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/pa')), array());
152        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/path/more_path/')), array('a=A'));
153        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/path/more_path/and_more')), array('a=A'));
154        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/path/not_here/')), array());
155    }
156   
157    function testMultipleCookieWithDifferentPathsButSameName() {
158        $jar = new SimpleCookieJar();
159        $jar->setCookie('a', 'abc', false, '/');
160        $jar->setCookie('a', '123', false, '/path/here/');
161        $this->assertEqual(
162                $jar->selectAsPairs(new SimpleUrl('/')),
163                array('a=abc'));
164        $this->assertEqual(
165                $jar->selectAsPairs(new SimpleUrl('my-host.com/')),
166                array('a=abc'));
167        $this->assertEqual(
168                $jar->selectAsPairs(new SimpleUrl('my-host.com/path/')),
169                array('a=abc'));
170        $this->assertEqual(
171                $jar->selectAsPairs(new SimpleUrl('my-host.com/path/here')),
172                array('a=abc', 'a=123'));
173        $this->assertEqual(
174                $jar->selectAsPairs(new SimpleUrl('my-host.com/path/here/there')),
175                array('a=abc', 'a=123'));
176    }
177   
178    function testOverwrite() {
179        $jar = new SimpleCookieJar();
180        $jar->setCookie('a', 'abc', false, '/');
181        $jar->setCookie('a', 'cde', false, '/');
182        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/')), array('a=cde'));
183    }
184   
185    function testClearSessionCookies() {
186        $jar = new SimpleCookieJar();
187        $jar->setCookie('a', 'A', false, '/');
188        $jar->restartSession();
189        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/')), array());
190    }
191   
192    function testExpiryFilterByDate() {
193        $jar = new SimpleCookieJar();
194        $jar->setCookie('a', 'A', false, '/', 'Wed, 25-Dec-02 04:24:20 GMT');
195        $jar->restartSession("Wed, 25-Dec-02 04:24:19 GMT");
196        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/')), array('a=A'));
197        $jar->restartSession("Wed, 25-Dec-02 04:24:21 GMT");
198        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/')), array());
199    }
200   
201    function testExpiryFilterByAgeing() {
202        $jar = new SimpleCookieJar();
203        $jar->setCookie('a', 'A', false, '/', 'Wed, 25-Dec-02 04:24:20 GMT');
204        $jar->restartSession("Wed, 25-Dec-02 04:24:19 GMT");
205        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/')), array('a=A'));
206        $jar->agePrematurely(2);
207        $jar->restartSession("Wed, 25-Dec-02 04:24:19 GMT");
208        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/')), array());
209    }
210   
211    function testCookieClearing() {
212        $jar = new SimpleCookieJar();
213        $jar->setCookie('a', 'abc', false, '/');
214        $jar->setCookie('a', '', false, '/');
215        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/')), array('a='));
216    }
217   
218    function testCookieClearByLoweringDate() {
219        $jar = new SimpleCookieJar();
220        $jar->setCookie('a', 'abc', false, '/', 'Wed, 25-Dec-02 04:24:21 GMT');
221        $jar->setCookie('a', 'def', false, '/', 'Wed, 25-Dec-02 04:24:19 GMT');
222        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/')), array('a=def'));
223        $jar->restartSession('Wed, 25-Dec-02 04:24:20 GMT');
224        $this->assertEqual($jar->selectAsPairs(new SimpleUrl('/')), array());
225    }
226}
227?>
Note: See TracBrowser for help on using the repository browser.