Andrew M. Kuchling | cdec8c7 | 2000-08-19 15:21:12 +0000 | [diff] [blame] | 1 | # Simple test suite for Cookie.py |
| 2 | |
Thomas Wouters | 89f507f | 2006-12-13 04:49:30 +0000 | [diff] [blame] | 3 | from test.test_support import run_unittest, run_doctest |
| 4 | import unittest |
Andrew M. Kuchling | cdec8c7 | 2000-08-19 15:21:12 +0000 | [diff] [blame] | 5 | import Cookie |
| 6 | |
Andrew M. Kuchling | 4464432 | 2002-12-29 16:45:06 +0000 | [diff] [blame] | 7 | import warnings |
| 8 | warnings.filterwarnings("ignore", |
| 9 | ".* class is insecure.*", |
| 10 | DeprecationWarning) |
| 11 | |
Thomas Wouters | 89f507f | 2006-12-13 04:49:30 +0000 | [diff] [blame] | 12 | class CookieTests(unittest.TestCase): |
| 13 | # Currently this only tests SimpleCookie |
| 14 | def test_basic(self): |
| 15 | cases = [ |
| 16 | { 'data': 'chips=ahoy; vienna=finger', |
| 17 | 'dict': {'chips':'ahoy', 'vienna':'finger'}, |
| 18 | 'repr': "<SimpleCookie: chips='ahoy' vienna='finger'>", |
| 19 | 'output': 'Set-Cookie: chips=ahoy\nSet-Cookie: vienna=finger', |
| 20 | }, |
Andrew M. Kuchling | cdec8c7 | 2000-08-19 15:21:12 +0000 | [diff] [blame] | 21 | |
Thomas Wouters | 89f507f | 2006-12-13 04:49:30 +0000 | [diff] [blame] | 22 | { 'data': 'keebler="E=mc2; L=\\"Loves\\"; fudge=\\012;"', |
| 23 | 'dict': {'keebler' : 'E=mc2; L="Loves"; fudge=\012;'}, |
| 24 | 'repr': '''<SimpleCookie: keebler='E=mc2; L="Loves"; fudge=\\n;'>''', |
| 25 | 'output': 'Set-Cookie: keebler="E=mc2; L=\\"Loves\\"; fudge=\\012;"', |
| 26 | }, |
Andrew M. Kuchling | 8b94b1c | 2001-02-21 01:17:54 +0000 | [diff] [blame] | 27 | |
Thomas Wouters | 89f507f | 2006-12-13 04:49:30 +0000 | [diff] [blame] | 28 | # Check illegal cookies that have an '=' char in an unquoted value |
| 29 | { 'data': 'keebler=E=mc2', |
| 30 | 'dict': {'keebler' : 'E=mc2'}, |
| 31 | 'repr': "<SimpleCookie: keebler='E=mc2'>", |
| 32 | 'output': 'Set-Cookie: keebler=E=mc2', |
| 33 | } |
| 34 | ] |
Andrew M. Kuchling | cdec8c7 | 2000-08-19 15:21:12 +0000 | [diff] [blame] | 35 | |
Thomas Wouters | 89f507f | 2006-12-13 04:49:30 +0000 | [diff] [blame] | 36 | for case in cases: |
| 37 | C = Cookie.SimpleCookie() |
| 38 | C.load(case['data']) |
| 39 | self.assertEqual(repr(C), case['repr']) |
| 40 | self.assertEqual(C.output(sep='\n'), case['output']) |
Guido van Rossum | cc2b016 | 2007-02-11 06:12:03 +0000 | [diff] [blame] | 41 | for k, v in sorted(case['dict'].items()): |
Thomas Wouters | 89f507f | 2006-12-13 04:49:30 +0000 | [diff] [blame] | 42 | self.assertEqual(C[k].value, v) |
Andrew M. Kuchling | cdec8c7 | 2000-08-19 15:21:12 +0000 | [diff] [blame] | 43 | |
Thomas Wouters | 89f507f | 2006-12-13 04:49:30 +0000 | [diff] [blame] | 44 | def test_load(self): |
| 45 | C = Cookie.SimpleCookie() |
| 46 | C.load('Customer="WILE_E_COYOTE"; Version=1; Path=/acme') |
Andrew M. Kuchling | cdec8c7 | 2000-08-19 15:21:12 +0000 | [diff] [blame] | 47 | |
Thomas Wouters | 89f507f | 2006-12-13 04:49:30 +0000 | [diff] [blame] | 48 | self.assertEqual(C['Customer'].value, 'WILE_E_COYOTE') |
| 49 | self.assertEqual(C['Customer']['version'], '1') |
| 50 | self.assertEqual(C['Customer']['path'], '/acme') |
Moshe Zadka | 514a102 | 2000-08-19 15:57:33 +0000 | [diff] [blame] | 51 | |
Thomas Wouters | 89f507f | 2006-12-13 04:49:30 +0000 | [diff] [blame] | 52 | self.assertEqual(C.output(['path']), |
| 53 | 'Set-Cookie: Customer="WILE_E_COYOTE"; Path=/acme') |
| 54 | self.assertEqual(C.js_output(), """ |
| 55 | <script type="text/javascript"> |
| 56 | <!-- begin hiding |
| 57 | document.cookie = "Customer="WILE_E_COYOTE"; Path=/acme; Version=1"; |
| 58 | // end hiding --> |
| 59 | </script> |
| 60 | """) |
| 61 | self.assertEqual(C.js_output(['path']), """ |
| 62 | <script type="text/javascript"> |
| 63 | <!-- begin hiding |
| 64 | document.cookie = "Customer="WILE_E_COYOTE"; Path=/acme"; |
| 65 | // end hiding --> |
| 66 | </script> |
| 67 | """) |
Moshe Zadka | 514a102 | 2000-08-19 15:57:33 +0000 | [diff] [blame] | 68 | |
Thomas Wouters | 89f507f | 2006-12-13 04:49:30 +0000 | [diff] [blame] | 69 | def test_quoted_meta(self): |
| 70 | # Try cookie with quoted meta-data |
| 71 | C = Cookie.SimpleCookie() |
| 72 | C.load('Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"') |
| 73 | self.assertEqual(C['Customer'].value, 'WILE_E_COYOTE') |
| 74 | self.assertEqual(C['Customer']['version'], '1') |
| 75 | self.assertEqual(C['Customer']['path'], '/acme') |
Tim Peters | eb26f95 | 2001-04-06 21:20:58 +0000 | [diff] [blame] | 76 | |
Thomas Wouters | 89f507f | 2006-12-13 04:49:30 +0000 | [diff] [blame] | 77 | def test_main(): |
| 78 | run_unittest(CookieTests) |
| 79 | run_doctest(Cookie) |
| 80 | |
| 81 | if __name__ == '__main__': |
| 82 | test_main() |