| 
									
										
										
										
											2000-08-19 15:21:12 +00:00
										 |  |  | # Simple test suite for Cookie.py | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-10-29 19:51:16 +00:00
										 |  |  | from test.test_support import run_unittest, run_doctest | 
					
						
							|  |  |  | import unittest | 
					
						
							| 
									
										
										
										
											2000-08-19 15:21:12 +00:00
										 |  |  | import Cookie | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-12-29 16:45:06 +00:00
										 |  |  | import warnings | 
					
						
							|  |  |  | warnings.filterwarnings("ignore", | 
					
						
							|  |  |  |                         ".* class is insecure.*", | 
					
						
							|  |  |  |                         DeprecationWarning) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-10-29 19:51:16 +00:00
										 |  |  | class CookieTests(unittest.TestCase): | 
					
						
							|  |  |  |     # Currently this only tests SimpleCookie | 
					
						
							|  |  |  |     def test_basic(self): | 
					
						
							|  |  |  |         cases = [ | 
					
						
							|  |  |  |             { 'data': 'chips=ahoy; vienna=finger', | 
					
						
							|  |  |  |               'dict': {'chips':'ahoy', 'vienna':'finger'}, | 
					
						
							|  |  |  |               'repr': "<SimpleCookie: chips='ahoy' vienna='finger'>", | 
					
						
							|  |  |  |               'output': 'Set-Cookie: chips=ahoy\nSet-Cookie: vienna=finger', | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             { 'data': 'keebler="E=mc2; L=\\"Loves\\"; fudge=\\012;"', | 
					
						
							|  |  |  |               'dict': {'keebler' : 'E=mc2; L="Loves"; fudge=\012;'}, | 
					
						
							|  |  |  |               'repr': '''<SimpleCookie: keebler='E=mc2; L="Loves"; fudge=\\n;'>''', | 
					
						
							|  |  |  |               'output': 'Set-Cookie: keebler="E=mc2; L=\\"Loves\\"; fudge=\\012;"', | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             # Check illegal cookies that have an '=' char in an unquoted value | 
					
						
							|  |  |  |             { 'data': 'keebler=E=mc2', | 
					
						
							|  |  |  |               'dict': {'keebler' : 'E=mc2'}, | 
					
						
							|  |  |  |               'repr': "<SimpleCookie: keebler='E=mc2'>", | 
					
						
							|  |  |  |               'output': 'Set-Cookie: keebler=E=mc2', | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         ] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         for case in cases: | 
					
						
							|  |  |  |             C = Cookie.SimpleCookie() | 
					
						
							|  |  |  |             C.load(case['data']) | 
					
						
							|  |  |  |             self.assertEqual(repr(C), case['repr']) | 
					
						
							|  |  |  |             self.assertEqual(C.output(sep='\n'), case['output']) | 
					
						
							|  |  |  |             for k, v in sorted(case['dict'].iteritems()): | 
					
						
							|  |  |  |                 self.assertEqual(C[k].value, v) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_load(self): | 
					
						
							|  |  |  |         C = Cookie.SimpleCookie() | 
					
						
							|  |  |  |         C.load('Customer="WILE_E_COYOTE"; Version=1; Path=/acme') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self.assertEqual(C['Customer'].value, 'WILE_E_COYOTE') | 
					
						
							|  |  |  |         self.assertEqual(C['Customer']['version'], '1') | 
					
						
							|  |  |  |         self.assertEqual(C['Customer']['path'], '/acme') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self.assertEqual(C.output(['path']), | 
					
						
							|  |  |  |             'Set-Cookie: Customer="WILE_E_COYOTE"; Path=/acme') | 
					
						
							|  |  |  |         self.assertEqual(C.js_output(), """
 | 
					
						
							|  |  |  |         <script type="text/javascript"> | 
					
						
							|  |  |  |         <!-- begin hiding | 
					
						
							|  |  |  |         document.cookie = "Customer="WILE_E_COYOTE"; Path=/acme; Version=1"; | 
					
						
							|  |  |  |         // end hiding --> | 
					
						
							|  |  |  |         </script> | 
					
						
							|  |  |  |         """)
 | 
					
						
							|  |  |  |         self.assertEqual(C.js_output(['path']), """
 | 
					
						
							|  |  |  |         <script type="text/javascript"> | 
					
						
							|  |  |  |         <!-- begin hiding | 
					
						
							|  |  |  |         document.cookie = "Customer="WILE_E_COYOTE"; Path=/acme"; | 
					
						
							|  |  |  |         // end hiding --> | 
					
						
							|  |  |  |         </script> | 
					
						
							|  |  |  |         """)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_quoted_meta(self): | 
					
						
							|  |  |  |         # Try cookie with quoted meta-data | 
					
						
							|  |  |  |         C = Cookie.SimpleCookie() | 
					
						
							|  |  |  |         C.load('Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"') | 
					
						
							|  |  |  |         self.assertEqual(C['Customer'].value, 'WILE_E_COYOTE') | 
					
						
							|  |  |  |         self.assertEqual(C['Customer']['version'], '1') | 
					
						
							|  |  |  |         self.assertEqual(C['Customer']['path'], '/acme') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def test_main(): | 
					
						
							|  |  |  |     run_unittest(CookieTests) | 
					
						
							|  |  |  |     run_doctest(Cookie) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == '__main__': | 
					
						
							|  |  |  |     test_main() |