]>
Commit | Line | Data |
---|---|---|
4710c53d | 1 | # Simple test suite for Cookie.py\r |
2 | \r | |
3 | from test.test_support import run_unittest, run_doctest, check_warnings\r | |
4 | import unittest\r | |
5 | import Cookie\r | |
6 | \r | |
7 | \r | |
8 | class CookieTests(unittest.TestCase):\r | |
9 | # Currently this only tests SimpleCookie\r | |
10 | def test_basic(self):\r | |
11 | cases = [\r | |
12 | { 'data': 'chips=ahoy; vienna=finger',\r | |
13 | 'dict': {'chips':'ahoy', 'vienna':'finger'},\r | |
14 | 'repr': "<SimpleCookie: chips='ahoy' vienna='finger'>",\r | |
15 | 'output': 'Set-Cookie: chips=ahoy\nSet-Cookie: vienna=finger',\r | |
16 | },\r | |
17 | \r | |
18 | { 'data': 'keebler="E=mc2; L=\\"Loves\\"; fudge=\\012;"',\r | |
19 | 'dict': {'keebler' : 'E=mc2; L="Loves"; fudge=\012;'},\r | |
20 | 'repr': '''<SimpleCookie: keebler='E=mc2; L="Loves"; fudge=\\n;'>''',\r | |
21 | 'output': 'Set-Cookie: keebler="E=mc2; L=\\"Loves\\"; fudge=\\012;"',\r | |
22 | },\r | |
23 | \r | |
24 | # Check illegal cookies that have an '=' char in an unquoted value\r | |
25 | { 'data': 'keebler=E=mc2',\r | |
26 | 'dict': {'keebler' : 'E=mc2'},\r | |
27 | 'repr': "<SimpleCookie: keebler='E=mc2'>",\r | |
28 | 'output': 'Set-Cookie: keebler=E=mc2',\r | |
29 | }\r | |
30 | ]\r | |
31 | \r | |
32 | for case in cases:\r | |
33 | C = Cookie.SimpleCookie()\r | |
34 | C.load(case['data'])\r | |
35 | self.assertEqual(repr(C), case['repr'])\r | |
36 | self.assertEqual(C.output(sep='\n'), case['output'])\r | |
37 | for k, v in sorted(case['dict'].iteritems()):\r | |
38 | self.assertEqual(C[k].value, v)\r | |
39 | \r | |
40 | def test_load(self):\r | |
41 | C = Cookie.SimpleCookie()\r | |
42 | C.load('Customer="WILE_E_COYOTE"; Version=1; Path=/acme')\r | |
43 | \r | |
44 | self.assertEqual(C['Customer'].value, 'WILE_E_COYOTE')\r | |
45 | self.assertEqual(C['Customer']['version'], '1')\r | |
46 | self.assertEqual(C['Customer']['path'], '/acme')\r | |
47 | \r | |
48 | self.assertEqual(C.output(['path']),\r | |
49 | 'Set-Cookie: Customer="WILE_E_COYOTE"; Path=/acme')\r | |
50 | self.assertEqual(C.js_output(), r"""\r | |
51 | <script type="text/javascript">\r | |
52 | <!-- begin hiding\r | |
53 | document.cookie = "Customer=\"WILE_E_COYOTE\"; Path=/acme; Version=1";\r | |
54 | // end hiding -->\r | |
55 | </script>\r | |
56 | """)\r | |
57 | self.assertEqual(C.js_output(['path']), r"""\r | |
58 | <script type="text/javascript">\r | |
59 | <!-- begin hiding\r | |
60 | document.cookie = "Customer=\"WILE_E_COYOTE\"; Path=/acme";\r | |
61 | // end hiding -->\r | |
62 | </script>\r | |
63 | """)\r | |
64 | \r | |
65 | # loading 'expires'\r | |
66 | C = Cookie.SimpleCookie()\r | |
67 | C.load('Customer="W"; expires=Wed, 01-Jan-2010 00:00:00 GMT')\r | |
68 | self.assertEqual(C['Customer']['expires'],\r | |
69 | 'Wed, 01-Jan-2010 00:00:00 GMT')\r | |
70 | C = Cookie.SimpleCookie()\r | |
71 | C.load('Customer="W"; expires=Wed, 01-Jan-98 00:00:00 GMT')\r | |
72 | self.assertEqual(C['Customer']['expires'],\r | |
73 | 'Wed, 01-Jan-98 00:00:00 GMT')\r | |
74 | \r | |
75 | def test_extended_encode(self):\r | |
76 | # Issue 9824: some browsers don't follow the standard; we now\r | |
77 | # encode , and ; to keep them from tripping up.\r | |
78 | C = Cookie.SimpleCookie()\r | |
79 | C['val'] = "some,funky;stuff"\r | |
80 | self.assertEqual(C.output(['val']),\r | |
81 | 'Set-Cookie: val="some\\054funky\\073stuff"')\r | |
82 | \r | |
83 | def test_quoted_meta(self):\r | |
84 | # Try cookie with quoted meta-data\r | |
85 | C = Cookie.SimpleCookie()\r | |
86 | C.load('Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"')\r | |
87 | self.assertEqual(C['Customer'].value, 'WILE_E_COYOTE')\r | |
88 | self.assertEqual(C['Customer']['version'], '1')\r | |
89 | self.assertEqual(C['Customer']['path'], '/acme')\r | |
90 | \r | |
91 | def test_main():\r | |
92 | run_unittest(CookieTests)\r | |
93 | with check_warnings(('.+Cookie class is insecure; do not use it',\r | |
94 | DeprecationWarning)):\r | |
95 | run_doctest(Cookie)\r | |
96 | \r | |
97 | if __name__ == '__main__':\r | |
98 | test_main()\r |