/Lib/test/test_cookie.py

http://unladen-swallow.googlecode.com/ · Python · 82 lines · 66 code · 12 blank · 4 comment · 3 complexity · 9600d074e1e865bcfaf637e24a1faa5a MD5 · raw file

  1. # Simple test suite for Cookie.py
  2. from test.test_support import run_unittest, run_doctest
  3. import unittest
  4. import Cookie
  5. import warnings
  6. warnings.filterwarnings("ignore",
  7. ".* class is insecure.*",
  8. DeprecationWarning)
  9. class CookieTests(unittest.TestCase):
  10. # Currently this only tests SimpleCookie
  11. def test_basic(self):
  12. cases = [
  13. { 'data': 'chips=ahoy; vienna=finger',
  14. 'dict': {'chips':'ahoy', 'vienna':'finger'},
  15. 'repr': "<SimpleCookie: chips='ahoy' vienna='finger'>",
  16. 'output': 'Set-Cookie: chips=ahoy\nSet-Cookie: vienna=finger',
  17. },
  18. { 'data': 'keebler="E=mc2; L=\\"Loves\\"; fudge=\\012;"',
  19. 'dict': {'keebler' : 'E=mc2; L="Loves"; fudge=\012;'},
  20. 'repr': '''<SimpleCookie: keebler='E=mc2; L="Loves"; fudge=\\n;'>''',
  21. 'output': 'Set-Cookie: keebler="E=mc2; L=\\"Loves\\"; fudge=\\012;"',
  22. },
  23. # Check illegal cookies that have an '=' char in an unquoted value
  24. { 'data': 'keebler=E=mc2',
  25. 'dict': {'keebler' : 'E=mc2'},
  26. 'repr': "<SimpleCookie: keebler='E=mc2'>",
  27. 'output': 'Set-Cookie: keebler=E=mc2',
  28. }
  29. ]
  30. for case in cases:
  31. C = Cookie.SimpleCookie()
  32. C.load(case['data'])
  33. self.assertEqual(repr(C), case['repr'])
  34. self.assertEqual(C.output(sep='\n'), case['output'])
  35. for k, v in sorted(case['dict'].iteritems()):
  36. self.assertEqual(C[k].value, v)
  37. def test_load(self):
  38. C = Cookie.SimpleCookie()
  39. C.load('Customer="WILE_E_COYOTE"; Version=1; Path=/acme')
  40. self.assertEqual(C['Customer'].value, 'WILE_E_COYOTE')
  41. self.assertEqual(C['Customer']['version'], '1')
  42. self.assertEqual(C['Customer']['path'], '/acme')
  43. self.assertEqual(C.output(['path']),
  44. 'Set-Cookie: Customer="WILE_E_COYOTE"; Path=/acme')
  45. self.assertEqual(C.js_output(), """
  46. <script type="text/javascript">
  47. <!-- begin hiding
  48. document.cookie = "Customer="WILE_E_COYOTE"; Path=/acme; Version=1";
  49. // end hiding -->
  50. </script>
  51. """)
  52. self.assertEqual(C.js_output(['path']), """
  53. <script type="text/javascript">
  54. <!-- begin hiding
  55. document.cookie = "Customer="WILE_E_COYOTE"; Path=/acme";
  56. // end hiding -->
  57. </script>
  58. """)
  59. def test_quoted_meta(self):
  60. # Try cookie with quoted meta-data
  61. C = Cookie.SimpleCookie()
  62. C.load('Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"')
  63. self.assertEqual(C['Customer'].value, 'WILE_E_COYOTE')
  64. self.assertEqual(C['Customer']['version'], '1')
  65. self.assertEqual(C['Customer']['path'], '/acme')
  66. def test_main():
  67. run_unittest(CookieTests)
  68. run_doctest(Cookie)
  69. if __name__ == '__main__':
  70. test_main()