mò
­fIc           @   s  d  Z  d k Z d k Z d k Z d k l Z d k l Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ	 d f  d	 „  ƒ  YZ
 d
 „  Z d „  Z d „  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ e d „ Z e d j o e d e ƒ n d S(   s   Tests for cookielib.py.N(   s   TestCase(   s   test_supportt   DateTimeTestsc           B   s,   t  Z d „  Z d „  Z d „  Z d „  Z RS(   Nc         C   sß   d k  l } d } d d } |  i | | ƒ d ƒ |  i | | | ƒ d ƒ |  i | | d | ƒ d ƒ |  i | | d	 | ƒ d
 ƒ | ƒ  } | d ƒ } x: | | f D], } |  i	 t
 i d | ƒ d | | f ƒ q« Wd  S(   N(   s	   time2isozix+À<i   i  s   2002-04-19 14:36:40Zs   2002-04-20 14:36:40Zi   s   2002-04-21 14:36:40Zi   s   2002-04-22 14:36:40Zi ¡ s!   ^\d{4}-\d\d-\d\d \d\d:\d\d:\d\dZ$s   bad time2isoz format: %s %s(   t	   cookielibt	   time2isozt   baset   dayt   selft   assertEqualst   azt   bzt   textt   assert_t   ret   search(   R   R	   R   R   R   R   R   (    (    t0   /mit/python/lib/python2.4/test/test_cookielib.pyt   test_time2isoz   s    
	 c      	      s_   d k  l ‰  ‡  d †  } |  i | d ƒ d ƒ |  i | d ƒ d ƒ |  i | d ƒ d ƒ d  S(   N(   s	   http2timec            s   t  i ˆ  |  ƒ ƒ d  S(   Ni   (   t   timet   gmtimet	   http2timeR	   (   R	   (   R   (    R   t
   parse_date   s    s   01 Jan 2001iÑ  i   i    f0.0s	   03-Feb-20iä  i   i   s	   03-Feb-98iÎ  (   iÑ  i   i   i    i    f0.0(   iä  i   i   i    i    f0.0(   iÎ  i   i   i    i    f0.0(   R   R   R   R   R   (   R   R   R   (    (   R   R   t   test_http2time   s
    c         C   s  d k  l } l }	 d d d d d d d d	 d
 d d d d g } d } |	 | ƒ } d } |  i | | d | | | f ƒ x„ | D]| } | | ƒ }
 | | i ƒ  ƒ } | | i ƒ  ƒ } |  i |
 | j o | j o
 | j n d | |
 | | | f ƒ q Wd  S(   N(   s	   http2times	   time2isozs   Thu, 03 Feb 1994 00:00:00 GMTs    Thursday, 03-Feb-94 00:00:00 GMTs"   Thursday, 03-Feb-1994 00:00:00 GMTs   03 Feb 1994 00:00:00 GMTs   03-Feb-94 00:00:00 GMTs   03-Feb-1994 00:00:00 GMTs   03-Feb-1994 00:00 GMTs   03-Feb-1994 00:00s	   03-Feb-94s   03-Feb-1994s   03 Feb 1994s     03   Feb   1994  0:00  s     03-Feb-1994  i€>P-s   1994-02-03 00:00:00Zs   %s  =>  '%s' (%s)s   '%s'  =>  %s, %s, %s (%s)(   R   R   R   t   testst   test_tt   resultt   expectedR   R   t   st   tt   lowert   t2t   uppert   t3R
   (   R   R   R   R   R   R   R   R   R   R   R   (    (    R   t   test_http2time_formats)   s    - ,c      
   C   sl   d k  l } xX d d d d d d d d	 d
 d g
 D]2 } |  i | | ƒ d  j d | | | ƒ f ƒ q2 Wd  S(   N(   s	   http2timet    t   Garbages   Mandag 16. September 1996s
   01-00-1980s
   01-13-1980s
   00-01-1980s
   32-01-1980s   01-01-1980 25:00:00s   01-01-1980 00:61:00s   01-01-1980 00:00:62s,   http2time(%s) is not None
http2time(test) %s(   R   R   t   testR   R
   t   None(   R   R!   R   (    (    R   t   test_http2time_garbageP   s
    % (   t   __name__t
   __module__R   R   R   R#   (    (    (    R   R    	   s   			't   HeaderTestsc           B   s5   t  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   Nc         C   sS   d k  l } d
 d d g g } x- d d	 g D] } |  i | | g ƒ | ƒ q, Wd  S(   N(   s   parse_ns_headerst   foot   bart   expiresl   d9W t   versiont   0s)   foo=bar; expires=01 Jan 2040 22:23:32 GMTs+   foo=bar; expires="01 Jan 2040 22:23:32 GMT"(   s   fooR(   (   s   expiresl   d9W (   s   versionR+   (   R   t   parse_ns_headersR   t   hdrR   R   (   R   R   R,   R-   (    (    R   t   test_parse_ns_headersf   s
     c         C   s?   d k  l } d } d d g g } |  i | | g ƒ | ƒ d  S(	   N(   s   parse_ns_headerss    expires=01 Jan 2040 22:23:32 GMTR)   s   01 Jan 2040 22:23:32 GMTR*   R+   (   s   expiress   01 Jan 2040 22:23:32 GMT(   s   versionR+   (   R   R,   R-   R   R   R   (   R   R   R,   R-   (    (    R   t#   test_parse_ns_headers_special_namesq   s    c         C   sO   d k  l } | d d g g ƒ } |  i | d ƒ |  i | g  g ƒ d ƒ d  S(	   N(   s   join_header_wordsR'   R(   t   bazs   foo; bar=bazR   (   s   fooN(   s   barR0   (   R   t   join_header_wordsR"   t   joinedR   R   (   R   R2   R1   (    (    R   t   test_join_header_words{   s    c   	      C   s,  d k  l } d d t f g g f d d d f g g f d d t f g g f d d d f g g f d d d f g g f d	 d d f g g f d
 d d f d d f g g f d d d f d d f g g f d d d f g g f d d d f d d f g g f d d t f d t f d t f g g f d d t f g d t f g d t f g g f d d t f d d f g d d f g d d f g d d f g g f g } x | D]‡ \ } } y | | g ƒ } WnE d  k } d  k } | i ƒ  } | i
 t | ƒ d | i ƒ  } n X|  i | | d | | | f ƒ qWd  S(   N(   s   split_header_wordsR'   s   foo=barR(   s	      foo   s
      foo=   R   s      foo=s      foo=   ; s      foo=   ; bar= baz R0   s   foo=bar bar=bazs   foo= bar=bazs   bar=bazs   foo=bar;bar=bazs   foo bar bazs   a, b, ct   at   bt   cs(   foo; bar=baz, spam=, foo="\,\;\"", bar= t   spams   ,;"s    (error -- traceback follows)

%ss:   
When parsing: '%s'
Expected:     '%s'
Got:          '%s'
(   R   t   split_header_wordsR"   R   t   argt   expectR   t	   tracebackt   StringIOt   ft	   print_exct   getvalueR   R   (	   R   R=   R<   R;   R8   R   R:   R9   R   (    (    R   t   test_split_header_wordsƒ   s    ÿ Š c         C   s™   d k  l } l } d d d d d d d d  d! d" d# d$ d% g } xR | D]J \ } } | | g ƒ } | | ƒ } |  i	 | | d | | | | f ƒ qG Wd  S(&   N(   s   split_header_wordss   join_header_wordsR'   s   foo=bars	      foo   s   foo=s   foo=""s   foo=bar bar=bazs   foo=bar; bar=bazs   foo=bar;bar=bazs   foo bar bazs   foo; bar; bazs   foo="\"" bar="\\"s   foo="\""; bar="\\"s	   foo,,,bars   foo, bars   foo=bar,bar=bazs   foo=bar, bar=bazs   text/html; charset=iso-8859-1s   text/html; charset="iso-8859-1"s)   foo="bar"; port="80,81"; discard, bar=bazs'   foo=bar; port="80,81"; discard, bar=bazs   Basic realm="\"foo\\\\bar\""s   Basic; realm="\"foo\\\\bar\""sM   
When parsing: '%s'
Expected:     '%s'
Got:          '%s'
Input was:    '%s'
(   s   foos   foo(   s   foo=bars   foo=bar(   s	      foo   s   foo(   s   foo=s   foo=""(   s   foo=bar bar=bazs   foo=bar; bar=baz(   s   foo=bar;bar=bazs   foo=bar; bar=baz(   s   foo bar bazs   foo; bar; baz(   s   foo="\"" bar="\\"s   foo="\""; bar="\\"(   s	   foo,,,bars   foo, bar(   s   foo=bar,bar=bazs   foo=bar, bar=baz(   s   text/html; charset=iso-8859-1s   text/html; charset="iso-8859-1"(   s)   foo="bar"; port="80,81"; discard, bar=bazs'   foo=bar; port="80,81"; discard, bar=baz(   s   Basic realm="\"foo\\\\bar\""s   Basic; realm="\"foo\\\\bar\""(
   R   R8   R1   R   R9   R:   t   inputt   resR   R   (   R   R   RB   R8   R:   R9   RA   R1   (    (    R   t   test_roundtrip§   s    - (   R$   R%   R.   R/   R3   R@   RC   (    (    (    R   R&   e   s
   		
		$t   FakeResponsec           B   s    t  Z g  d  d „ Z d „  Z RS(   Nc         C   sI   d k  } d k } | i d i | ƒ ƒ } | i | ƒ |  _ | |  _	 d S(   sD   
        headers: list of RFC822-style 'Key: value' strings
        Ns   
(
   t	   mimetoolsR<   t   joint   headersR=   t   MessageR   t   _headerst   urlt   _url(   R   RG   RJ   RE   R=   R<   (    (    R   t   __init__Ì   s
     c         C   s   |  i S(   N(   R   RI   (   R   (    (    R   t   infoÔ   s    (   R$   R%   R"   RL   RM   (    (    (    R   RD   Ë   s   c         G   s   t  |  | | d ƒ S(   Ns   Set-Cookie2(   t	   _interactt	   cookiejarRJ   t   set_cookie_hdrs(   RO   RJ   RP   (    (    R   t   interact_2965Ö   s    c         G   s   t  |  | | d ƒ S(   Ns
   Set-Cookie(   RN   RO   RJ   RP   (   RO   RJ   RP   (    (    R   t   interact_netscapeÙ   s    c   
      C   s‰   d k  l } | | ƒ } |  i | ƒ | i d d ƒ } g  }	 x% | D] } |	 i d | | f ƒ qE Wt |	 | ƒ } |  i | | ƒ | S(   sD   Perform a single request / response cycle, returning Cookie: header.(   s   Requestt   CookieR   s   %s: %sN(   t   urllib2t   RequestRJ   t   reqRO   t   add_cookie_headert
   get_headert
   cookie_hdrRG   RP   R-   t   appendt   hdr_nameRD   RB   t   extract_cookies(
   RO   RJ   RP   R[   R-   RB   RV   RU   RY   RG   (    (    R   RN   Ü   s      t   FileCookieJarTestsc           B   s   t  Z d „  Z d „  Z RS(   Nc         C   sÕ   d k  l } t i } | ƒ  } t | d d ƒ |  i | i	 d d d i
 d  ƒ z3 | i | d t ƒ| ƒ  } | i | d t ƒWd  y t i | ƒ Wn t j
 o n XX|  i | i	 d d d i
 d  ƒ d  S(   N(   s   LWPCookieJars   http://www.acme.com/t   boos   www.acme.comt   /t   ignore_discard(   R   t   LWPCookieJart   test_supportt   TESTFNt   filenameR6   RR   R   t   assertEqualt   _cookiest   valueR"   t   savet   Truet   loadt   ost   unlinkt   OSError(   R   R6   Rd   Ra   (    (    R   t   test_lwp_valueless_cookieë   s    		"	   c   	      C   s  d k  l } l } l } t i } xi | | f D][ } | ƒ  } y | i	 d d ƒ Wn( t
 j
 o } |  i | i t
 ƒ q/ X|  i d ƒ q/ WzV t | d ƒ } | i d ƒ x3 | | f D]% } | ƒ  } |  i | | i	 | ƒ qº WWd  y t i | ƒ Wn t j
 o n XXd  S(   N(   s   LWPCookieJars   MozillaCookieJars	   LoadErrorRd   sA   for this test to work, a file with this filename should not exists%   expected IOError for invalid filenamet   ws   oops
(   R   Ra   t   MozillaCookieJart	   LoadErrorRb   Rc   Rd   t   cookiejar_classR6   Rj   t   IOErrort   excR   Re   t	   __class__t   failt   openR=   t   writet   assertRaisesRk   Rl   Rm   (	   R   R6   Rt   Rq   Rp   R=   Rd   Ra   Rr   (    (    R   t   test_bad_magicû   s,    	 	 	   (   R$   R%   Rn   Rz   (    (    (    R   R]   ê   s   	t   CookieTestsc           B   s  t  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d	 „  Z
 d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   Nc   	      C   sC  d  k  } d  k } | i ƒ  } xd d t f d d t f d d t f d d t f d d t f d d t f d d t f d	 d
 t f d	 d t f d	 d t f d	 d t f d d t f d d t f d d t f d d t f d d t f g D]V \ } } } | i	 | ƒ } | i | | ƒ } | o |  i | ƒ qå |  i | ƒ qå Wd  S(   Ns   http://foo.bar.com/s   blah.coms   rhubarb.blah.coms   rhubarb.foo.bar.coms   .foo.bar.coms   foo.bar.coms   .bar.comt   coms   http://foo.com/s   rhubarb.foo.coms   .foo.coms   foo.coms   http://foo/s   rhubarb.foos   .fooR'   s	   foo.locals   .local(   R   RT   t   DefaultCookiePolicyt   polt   FalseRi   RJ   t   domaint   okRU   t   requestt   domain_return_okt   rR   R
   (	   R   R€   R   RJ   R‚   RT   R~   R„   R   (    (    R   t   test_domain_return_okD  s    Ç  c         C   s€  d k  l } l } t i } | | ƒ } t | d d ƒ t | d d ƒ | i d d d } |  i | i d  j ƒ |  i | i d ƒ | i d d d } |  i | i d  j ƒ |  i | i d ƒ |  i | | ƒ d	 ƒ t | ƒ } | i d
 t d t ƒ z& | | ƒ } | i d
 t d t ƒ Wd  t i | i ƒ X|  i t | ƒ t i d t d t | ƒ ƒ |  i t | d ƒ d ƒ d  S(   N(   s   MozillaCookieJars   lwp_cookie_strs   http://www.acme.com/t   eggss   "spam"; path=/foo/s   www.acme.comR_   s   /foo/s   "spam"sJ   "spam"; path="/foo/"; domain="www.acme.com"; path_spec; discard; version=0t   ignore_expiresR`   s   path_specified=%ss   http://www.acme.com/foo/s   "spam"; eggs(   R   Rp   t   lwp_cookie_strRb   Rc   Rd   R6   RR   Rf   t   cookieR   R
   Rg   R"   R   t   namet   reprt   old_strRh   Ri   t   revertRk   Rl   R   t   subR   (   R   R6   Rp   Rˆ   Rd   R‰   RŒ   (    (    R   t   test_missing_valuec  s0    	 
c         C   sá  d k  l } l } | ƒ  } t | d d ƒ t | d d ƒ t | d d ƒ t | d d ƒ t | d d ƒ | i d	 d
 d } |  i | i	 d	 ƒ |  i
 | i ƒ |  i | i | ƒ |  i
 | i ƒ |  i
 | i d ƒ o | i d ƒ ƒ | i d d
 d } |  i | i	 d ƒ |  i
 | i ƒ |  i | i d ƒ |  i
 | i ƒ | i d d
 d } |  i
 | i d  j ƒ |  i
 | i ƒ | i d d
 d } | i d d
 d } |  i
 | i d  j ƒ |  i
 | i d  j ƒ d  S(   N(   s	   CookieJars   DEFAULT_HTTP_PORTs   http://www.acme.com/s0   spam=eggs; DoMain=.acme.com; port; blArgh="feep"s   ni=ni; port=80,8080s   http://www.acme.com:80/s   nini=nis   foo=bar; expires=s-   spam=eggs; expires="Foo Bar 25 33:22:11 3022"s	   .acme.comR_   R7   t   blArght   blarghs   www.acme.comt   nis   80,8080t   niniR'   (   R   t	   CookieJart   DEFAULT_HTTP_PORTR6   RR   Rf   R‰   R   R   R€   R
   t   domain_specifiedt   portt   port_specifiedt   has_nonstandard_attrR"   R'   R7   R)   (   R   R6   R”   R7   R‰   R•   R'   (    (    R   t   test_ns_parser…  s4    		'c         C   sq   d k  l } | ƒ  } t | d d ƒ t | d d ƒ | i d d } |  i d | j ƒ |  i d | j ƒ d  S(	   N(   s	   CookieJars   http://www.acme.com/s   expires=eggss   version=eggs; spam=eggss   www.acme.comR_   R)   R*   (   R   R”   R6   RR   Rf   t   cookiesR   R
   (   R   R”   R6   R›   (    (    R   t   test_ns_parser_special_namesª  s    	c         C   s³  d k  l } l } | ƒ  } | t i ƒ  d ƒ } t | d d | ƒ |  i t	 | ƒ d ƒ | t i ƒ  d ƒ } t | d d | ƒ t | d ƒ } |  i t	 | ƒ d ƒ |  i d | j o
 d | j ƒ t | d d	 | ƒ t | d d
 | ƒ |  i t	 | ƒ d ƒ t | d d | ƒ t | d d | ƒ t | d ƒ } |  i t	 | ƒ d ƒ t | d d ƒ |  i t	 | ƒ d ƒ | i ƒ  |  i t	 | ƒ d ƒ |  i d | j ƒ d  S(   N(   s   time2netscapes	   CookieJari  s   http://www.acme.com/s   spam="bar"; expires=%si   s   foo="eggs"; expires=%ss
   spam="bar"R'   s   eggs="bar"; expires=%ss   bar="bar"; expires=%si   s!   eggs="bar"; expires=%s; max-age=0s    bar="bar"; max-age=0; expires=%ss   http://www.rhubarb.net/s   whum="fizz"i   (   R   t   time2netscapeR”   R6   R   t   futureRR   R   R   t   lent   nowt   hR
   t   clear_session_cookies(   R   R6   R”   R¡   Rž   R   R    (    (    R   t   test_expires·  s,    	 
c         C   sÊ  d k  l } l } | d t ƒ } | | ƒ } t | d d ƒ |  i d | i	 d j ƒ | | ƒ } t | d d ƒ |  i d | i	 d j ƒ | | ƒ } t | d	 d ƒ |  i d
 | i	 d j ƒ | | ƒ } t | d d ƒ |  i d | i	 d j ƒ | ƒ  } t
 | d d ƒ |  i d | i	 d j ƒ | ƒ  } t
 | d d ƒ |  i d | i	 d j ƒ | ƒ  } t
 | d	 d ƒ |  i d | i	 d j ƒ | ƒ  } t
 | d d ƒ |  i d | i	 d j ƒ d  S(   N(   s	   CookieJars   DefaultCookiePolicyt   rfc2965s   http://www.acme.com/s   spam="bar"; Version="1"R_   s   www.acme.coms   http://www.acme.com/blahs   eggs="bar"; Version="1"s    http://www.acme.com/blah/rhubarbs   /blah/s!   http://www.acme.com/blah/rhubarb/s   /blah/rhubarb/s
   spam="bar"s
   eggs="bar"s   /blahs   /blah/rhubarb(   R   R”   R}   Ri   R~   R6   RQ   R   R
   Rf   RR   (   R   R}   R6   R”   R~   (    (    R   t   test_default_pathß  s8    						c         C   se   d k  l } d d d d d d d d d d d g } x* | D]" \ } } |  i | | ƒ | ƒ q; Wd  S(   N(   s   escape_paths   /foo%2f/bars   /foo%2F/bars
   /foo%%/bars   /fo%19o/bars   /fo%7do/bars   /fo%7Do/bars	   /foo/bar&s	   /foo//bars	   ~/foo/bars	   /foo/bars   /foo%19/bars	   /}foo/bars   /%7Dfoo/baru   /foo/barê¯s   /foo/bar%EA%AF%8D(   s   /foo%2f/bars   /foo%2F/bar(   s   /foo%2F/bars   /foo%2F/bar(   s
   /foo%%/bars
   /foo%%/bar(   s   /fo%19o/bars   /fo%19o/bar(   s   /fo%7do/bars   /fo%7Do/bar(   s	   /foo/bar&s	   /foo/bar&(   s	   /foo//bars	   /foo//bar(   s	   ~/foo/bars	   ~/foo/bar(   s	   /foo/bars   /foo%19/bar(   s	   /}foo/bars   /%7Dfoo/bar(   u   /foo/barê¯s   /foo/bar%EA%AF%8D(   R   t   escape_patht   casesR9   R   R   R   (   R   R   R§   R¦   R9   (    (    R   t   test_escape_path	  s
    ' c         C   s„   d k  l } d k l } | d ƒ } |  i | | ƒ d ƒ | d ƒ } |  i | | ƒ d ƒ | d ƒ } |  i | | ƒ d ƒ d  S(	   N(   s   Request(   s   request_pathsS   http://www.example.com/rheum/rhaponicum;foo=bar;sing=song?apples=pears&spam=eggs#nis=   /rheum/rhaponicum;foo=bar;sing=song?apples=pears&spam=eggs#nisA   http://www.example.com/rheum/rhaponicum?apples=pears&spam=eggs#nis+   /rheum/rhaponicum?apples=pears&spam=eggs#nis   http://www.example.comR_   (   RT   RU   R   t   request_pathRV   R   R   (   R   RV   RU   R©   (    (    R   t   test_request_path!  s    c         C   s†   d k  l } d k l } l } | d d h  d d <ƒ} |  i | | ƒ d ƒ | d d h  d d <ƒ} |  i | | ƒ | ƒ d  S(	   N(   s   Request(   s   request_ports   DEFAULT_HTTP_PORTs   http://www.acme.com:1234/RG   t   Hosts   www.acme.com:4321t   1234s   http://www.acme.com/(   RT   RU   R   t   request_portR•   RV   R   R   (   R   RV   R­   RU   R•   (    (    R   t   test_request_port2  s    c         C   sâ   d k  l } d k l } | d d h  d d <ƒ} |  i | | ƒ d ƒ | d d h  d d	 <ƒ} |  i | | ƒ d
 ƒ | d d h  d d
 <ƒ} |  i | | ƒ d
 ƒ | d d h  d d <ƒ} |  i | | ƒ d
 ƒ d  S(   N(   s   Request(   s   request_hosts   http://1.1.1.1/RG   R«   s   www.acme.com:80s   1.1.1.1s   http://www.acme.com/s   irrelevant.coms   www.acme.coms   /resource.htmls&   http://www.acme.com:2345/resource.htmls   www.acme.com:5432(   RT   RU   R   t   request_hostRV   R   R   (   R   R¯   RV   RU   (    (    R   t   test_request_host<  s    c         C   s¯   d k  l } |  i | d ƒ ƒ |  i | d ƒ ƒ |  i | d ƒ ƒ |  i | d ƒ ƒ |  i | d ƒ ƒ |  i | d ƒ ƒ |  i | d ƒ ƒ |  i | d	 ƒ ƒ d  S(
   N(   s   is_HDNs   foo.bar.coms   1foo2.3bar4.5coms   192.168.1.1R   t   .s   .foo.bar.coms   ..foos   foo.(   R   t   is_HDNR   R
   (   R   R²   (    (    R   t   test_is_HDNS  s    c         C   sÁ   d k  l } |  i | d ƒ d ƒ |  i | d ƒ d ƒ |  i | d ƒ d ƒ |  i | d ƒ d ƒ |  i | d ƒ d ƒ |  i | d ƒ d ƒ |  i | d	 ƒ d	 ƒ |  i | d
 ƒ d
 ƒ d  S(   N(   s   reachs   www.acme.coms	   .acme.coms   acme.coms
   acme.locals   .locals   .comR±   R   s   192.168.0.1(   R   t   reachR   R   (   R   R´   (    (    R   t
   test_reach^  s    c         C   sÑ  d k  l } l } |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d	 ƒ ƒ |  i | d	 d ƒ ƒ |  i | d
 d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ |  i | d d ƒ ƒ d  S(   N(   s   domain_matchs   user_domain_matchs   192.168.1.1s   .168.1.1s   x.y.coms   x.Y.coms   .Y.coms   Y.coms	   a.b.c.coms   .c.coms   example.locals   .locals	   blah.blahR   s   .rhubarb.rhubarbs   acme.coms	   .acme.coms   rhubarb.acme.coms   www.rhubarb.acme.coms   y.coms   .y.coms   .comR|   t   ms   .mR±   (   R   t   domain_matcht   user_domain_matchR   R
   (   R   R¸   R·   (    (    R   t   test_domain_matchi  s@    c         C   s@   d k  l } | ƒ  } t | d d ƒ |  i t | ƒ d ƒ d  S(   N(   s	   CookieJars   http://www.nasty.com/s)   foo=bar; domain=friendly.org; Version="1"i    (   R   R”   R6   RQ   R   R   RŸ   (   R   R”   R6   (    (    R   t   test_wrong_domainŽ  s
    		c         C   s±  d k  l } l } | ƒ  } t | d d ƒ |  i t | ƒ d ƒ |  i | i d d d i	 d ƒ |  i t | d ƒ d ƒ |  i t | d	 ƒ d ƒ | d
 | i
 ƒ } | i | ƒ |  i t | d	 ƒ d ƒ t | d d ƒ t | d d ƒ |  i t | ƒ d ƒ |  i | i d d d i	 d ƒ |  i | i d d d i	 d ƒ |  i t | d ƒ d ƒ t | d d ƒ |  i t | ƒ d ƒ t | d d ƒ |  i t | ƒ d ƒ d  S(   N(   s	   CookieJars   DefaultCookiePolicys   http://foo.net/s   ns=bari   s   foo.netR_   t   nsR(   s   http://www.foo.net/t   strict_ns_domainR   s   http://foo.net/foo/s   spam1=eggs; domain=foo.nets   http://foo.net/foo/bar/s   spam2=eggs; domain=.foo.neti   s   .foo.nets   /foot   spam1R†   s   /foo/bart   spam2s   spam2=eggs; spam1=eggs; ns=bars   nini="ni"; domain=.nets   http://foo.co.uks   nasty=trick; domain=.co.uki   (   R   R”   R}   R6   RR   R   R   RŸ   Rf   Rg   t   DomainStrictNonDomainR~   t
   set_policy(   R   R}   R6   R”   R~   (    (    R   t   test_two_component_domain_ns™  s4    	"		c         C   s±  d k  l } l } | d t ƒ } | | ƒ } t | d d ƒ |  i t	 | ƒ d ƒ |  i | i
 d d d i d	 ƒ |  i t | d ƒ d
 ƒ |  i t | d ƒ d ƒ t | d d ƒ |  i t	 | ƒ d ƒ |  i t | d ƒ d
 ƒ t | d d ƒ |  i | i
 d d d i d ƒ |  i t	 | ƒ d ƒ |  i t | d ƒ d
 ƒ |  i t | d ƒ d ƒ t | d d ƒ |  i t	 | ƒ d ƒ t | d d ƒ |  i t	 | ƒ d ƒ d  S(   N(   s	   CookieJars   DefaultCookiePolicyR¤   s   http://foo.net/s   foo=bar; Version="1"i   s   foo.netR_   R'   R(   s   $Version=1; foo=bars   http://www.foo.net/R   s   http://foo.net/foos1   spam=eggs; domain=foo.net; path=/foo; Version="1"s   http://www.foo.net/foo/s&   spam=eggs; domain=foo.net; Version="1"s   .foo.nets   /foo/R7   R†   i   s   http://foo.net/foo/s(   $Version=1; spam=eggs; $Domain="foo.net"s#   ni="ni"; domain=".net"; Version="1"s   http://foo.co.uk/s'   nasty=trick; domain=.co.uk; Version="1"i   (   R   R”   R}   Ri   R~   R6   RQ   R   R   RŸ   Rf   Rg   (   R   R}   R6   R”   R~   (    (    R   t!   test_two_component_domain_rfc2965Ë  s:    "				c   	      C   sŒ  d k  l } l } d k l } | d | d d g d d g ƒ ƒ } | d ƒ } d	 g } t | d ƒ } | i
 | | ƒ |  i t | ƒ d
 ƒ | d ƒ } t | d ƒ } | i
 | | ƒ |  i t | ƒ d ƒ | d ƒ } t | d ƒ } | i
 | | ƒ |  i t | ƒ d ƒ | d ƒ } t | d ƒ } | i | | ƒ } | i | d
 ƒ |  i t | ƒ d ƒ | i | ƒ |  i | i d ƒ ƒ d  S(   N(   s	   CookieJars   DefaultCookiePolicy(   s   Requestt   policyt   blocked_domainss   acme.comt   allowed_domainss   www.acme.coms   http://acme.com/s*   Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/i    s   http://www.acme.com/i   s   http://www.coyote.com/i   RS   (   R   R”   R}   RT   RU   R6   RV   RG   RD   RB   R\   R   R   RŸ   t   make_cookiesR›   t
   set_cookieRW   R
   t
   has_header(	   R   R}   R6   R”   RB   RV   RU   R›   RG   (    (    R   t   test_domain_allowù  s0    	c         C   s  d k  l } l } d k l } | d t d d g ƒ }
 | d |
 ƒ } d g }	 | d ƒ } t
 |	 d ƒ } | i | | ƒ |  i t | ƒ d	 ƒ |
 i d
 g ƒ } | i | | ƒ |  i t | ƒ d ƒ | i ƒ  | d ƒ } t
 |	 d ƒ } | i | | ƒ |  i t | ƒ d ƒ | d ƒ } | i | ƒ |  i | i d ƒ o | i d ƒ ƒ | i ƒ  |
 i d g ƒ | i | | ƒ |  i t | ƒ d ƒ | d ƒ } t
 |	 d ƒ } | i | | ƒ } | i | d	 ƒ |  i t | ƒ d ƒ | i | ƒ |  i | i d ƒ ƒ d  S(   N(   s	   CookieJars   DefaultCookiePolicy(   s   RequestR¤   RÄ   s	   .acme.comRÃ   s*   Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/s   http://www.acme.com/i    s   acme.comi   s   http://www.roadrunner.net/RS   t   Cookie2i   (   R   R”   R}   RT   RU   Ri   R~   R6   RG   RV   RD   RB   R\   R   R   RŸ   t   set_blocked_domainst   pt   clearRW   R
   RÈ   RÆ   R›   RÇ   (   R   R}   R6   R”   RÌ   RB   RV   RU   R›   RG   R~   (    (    R   t   test_domain_block  s>    	
&
c   
      C   s  d k  l } l } xû t t f D]í }	 xä d D]Ü } | ƒ  } |	 o | d t ƒ } t	 } d } n | d t ƒ } t } d } | i | ƒ d } | | | d | | f ƒ | | | d | | f ƒ |  i | i d	 d
 d i d ƒ |  i | i d	 d
 d i d ƒ q- Wq  Wd  S(   N(   s	   CookieJars   DefaultCookiePolicyt    R   R¤   s   ; Version=1s   http://www.acme.com/s   foo1=bar%s%ss   foo2=bar%s; secure%ss   www.acme.comR_   t   foo1s#   non-secure cookie registered securet   foo2s#   secure cookie registered non-secure(   RÏ   R   (   R   R”   R}   Ri   R   R»   t
   whitespaceR6   R~   RR   t   intt   vsRQ   RÀ   RJ   R   R
   Rf   t   secure(
   R   R}   R6   R”   RÒ   RÓ   R~   RÔ   RJ   R»   (    (    R   t   test_secureF  s*      	
c         C   s^   d k  l } l } | d | d t ƒ ƒ } t | d d ƒ t | d ƒ } |  i | d ƒ d  S(   N(   s	   CookieJars   DefaultCookiePolicyRÃ   R¤   s   http://www.acme.com/s   foo=\b"a"r; Version=1s   $Version=1; foo=\\b\"a\"r(	   R   R”   R}   Ri   R6   RQ   R¡   R   R   (   R   R}   R6   R”   R¡   (    (    R   t   test_quote_cookie_value_  s
    c         C   s”   d k  l } l } d k l } d } | | d t ƒ ƒ } t | | d ƒ | | ƒ } |  i t | ƒ d ƒ | i | ƒ |  i | i d ƒ ƒ d  S(   N(   s	   CookieJars   DefaultCookiePolicy(   s   Requests   http://www.acme.comR¤   s   foo=bar; Version=1i   RS   (   R   R”   R}   RT   RU   RJ   Ri   R6   RQ   RV   R   R   RŸ   RW   R
   RÈ   (   R   R}   R6   R”   RJ   RV   RU   (    (    R   t   test_missing_final_slashf  s    c         C   sû   d k  l } l } | d t ƒ } | | ƒ } d } t | | d ƒ t | | ƒ } |  i
 d | j d ƒ | | ƒ } d } t | | d ƒ t | | ƒ } |  i
 d | j d	 ƒ | | ƒ } d } t | | d
 ƒ t | | ƒ } |  i
 d | j d	 ƒ d  S(   N(   s	   CookieJars   DefaultCookiePolicyR¤   s   http://foo.bar.com/s   spam=eggs; Version=1t   Domains*   absent domain returned with domain presents%   spam=eggs; Version=1; Domain=.bar.coms   $Domain=".bar.com"s   domain not returneds$   spam=eggs; Version=1; Domain=bar.coms   $Domain="bar.com"(   R   R”   R}   Ri   R~   R6   RJ   RQ   R¡   R   R
   (   R   R}   R6   R”   RJ   R¡   R~   (    (    R   t   test_domain_mirrorr  s$    c         C   s´   d k  l } l } | d t ƒ } | | ƒ } d } t | | d ƒ t | | ƒ } |  i
 d | j d ƒ | | ƒ } d } t | | d ƒ t | | ƒ } |  i
 d | j d	 ƒ d  S(
   N(   s	   CookieJars   DefaultCookiePolicyR¤   s   http://foo.bar.com/s   spam=eggs; Version=1t   Paths&   absent path returned with path presents   spam=eggs; Version=1; Path=/s	   $Path="/"s   path not returned(   R   R”   R}   Ri   R~   R6   RJ   RQ   R¡   R   R
   (   R   R}   R6   R”   RJ   R¡   R~   (    (    R   t   test_path_mirror‹  s    c         C   sH  d k  l } l } | d t ƒ } | | ƒ } d } t | | d ƒ t | | ƒ } |  i
 d | j d ƒ | | ƒ } d } t | | d ƒ t | | ƒ } |  i
 t i d | ƒ d	 ƒ | | ƒ } d } t | | d
 ƒ t | | ƒ } |  i
 d | j d ƒ | | ƒ } d } t | | d ƒ t | | ƒ } |  i
 d | j d ƒ d  S(   N(   s	   CookieJars   DefaultCookiePolicyR¤   s   http://foo.bar.com/s   spam=eggs; Version=1t   Ports&   absent port returned with port presents   spam=eggs; Version=1; Ports   \$Port([^=]|$)s-   port with no value not returned with no values   spam=eggs; Version=1; Port="80"s
   $Port="80"s5   port with single value not returned with single values$   spam=eggs; Version=1; Port="80,8080"s   $Port="80,8080"s;   port with multiple values not returned with multiple values(   R   R”   R}   Ri   R~   R6   RJ   RQ   R¡   R   R
   R   R   (   R   R}   R6   R”   RJ   R¡   R~   (    (    R   t   test_port_mirror  s4    c         C   sg   d k  l } l } | | d t ƒ ƒ } d } t | | d ƒ t | | ƒ } |  i	 d | j d ƒ d  S(   N(   s	   CookieJars   DefaultCookiePolicyR¤   s   http://foo.bar.com/sf   spam=eggs; Version=1; Comment="does anybody read these?"; CommentURL="http://foo.bar.net/comment.html"t   Comments:   Comment or CommentURL cookie-attributes returned to server(
   R   R”   R}   Ri   R6   RJ   RQ   R¡   R   R
   (   R   R}   R6   R”   RJ   R¡   (    (    R   t   test_no_return_comment¿  s    c         C   s€  d k  l } l } l } | | d t ƒ ƒ }	 t |	 d d ƒ t |	 d d ƒ t |	 d d ƒ t |	 d d ƒ t |	 d	 d
 ƒ d d d d d g } d d d d d g } d d d d d g }
 d d d d d g } x§ t d ƒ D]™ } d } xŠ |	 D]‚ } |  i t | | ƒ ƒ |  i | i | | ƒ |  i | i | | ƒ |  i | i |
 | ƒ |  i | i | | ƒ | d } qò Wqß Wd  S(   N(   s	   CookieJars   Cookies   DefaultCookiePolicyR¤   s   http://blah.spam.org/se   foo=eggs; Version=1; Comment="does anybody read these?"; CommentURL="http://foo.bar.net/comment.html"s   http://www.acme.com/blah/s   spam=bar; secures   foo=bar; secure; Version=1s   foo=bar; path=/; Version=1s   http://www.sol.noss   bang=wallop; version=1; domain=".sol.no"; port="90,100, 80,8080"; max-age=100; Comment = "Just kidding! (\"|\\\\) "i   i    t   bangR'   R7   s   .sol.nos   blah.spam.orgs   www.acme.comR_   s   /blahs   /blah/i   (   R   R”   RS   R}   Ri   t   csRQ   RR   t   versionst   namest   domainst   pathst   ranget   iR6   R   R
   t
   isinstanceR   R*   RŠ   R€   t   path(   R   R}   Ræ   R6   R”   Rè   Rã   RS   Rä   Râ   Rå   (    (    R   t   test_Cookie_iteratorÌ  s2    			  c         C   s™   d k  l } |  i | d g ƒ d d d d g g ƒ |  i | d
 g ƒ d d d g g ƒ |  i | d g ƒ d d g g ƒ |  i | d g ƒ g  ƒ d  S(   N(   s   parse_ns_headerss   foo=bar; path=/; domainR'   R(   Rê   R_   R€   R*   R+   s)   foo=bar; expires=Foo Bar 12 33:22:11 2000R)   R   (   s   foos   bar(   s   pathR_   (   s   domainN(   s   versionR+   (   s   foos   bar(   s   expiresN(   s   versionR+   (   s   fooN(   s   versionR+   (   R   R,   R   R   R"   (   R   R,   (    (    R   R.   î  s    c         C   s˜   d „  } xH d g d g d g d g g D]( } | | ƒ } |  i t | ƒ d ƒ q( Wd g } | | ƒ } | i d d	 d
 } |  i | i	 d  j ƒ d  S(   Nc         C   sR   d k  l } d k l } | ƒ  } | d ƒ } t |  d ƒ } | i	 | | ƒ | S(   N(   s	   CookieJar(   s   Requests   http://www.example.com/(
   R   R”   RT   RU   R6   RV   RD   RG   R„   R\   (   RG   R6   R”   RV   RU   R„   (    (    R   t   cookiejar_from_cookie_headers  s    	s   Set-Cookie: s   Set-Cookie2: s-   Set-Cookie2: a=foo; path=/; Version=1; domains   Set-Cookie: b=foo; max-age=oopsi    s3   Set-Cookie: c=foo; expires=Foo Bar 12 33:22:11 2000s   www.example.comR_   R6   (   Rì   RG   R6   R   R   RŸ   Rf   R‰   R
   R)   R"   (   R   R6   RG   R‰   Rì   (    (    R   t   test_bad_cookie_header  s    	
 	(   R$   R%   R…   R   Rš   Rœ   R£   R¥   R¨   Rª   R®   R°   R³   Rµ   R¹   Rº   RÁ   RÂ   RÉ   RÎ   RÖ   R×   RØ   RÚ   RÜ   RÞ   Rà   Rë   R.   Rí   (    (    (    R   R{     s8   /		"	%		(	*			
				%		2	.	"	+						"		"	t   LWPCookieTestsc           B   st   t  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d	 „  Z
 d
 „  Z d „  Z d „  Z RS(   Nc   
      C   s6  d k  l } l } d k l } t i ƒ  d d }	 g  } | | d t	 ƒ ƒ } | d d h  d d	 <ƒ} | i d
 |	 ƒ t | d ƒ } | i | | ƒ | d ƒ } | i | ƒ |  i | i d ƒ d ƒ |  i | i d ƒ d ƒ | i d ƒ t | d ƒ } | i | | ƒ | d ƒ } | i | ƒ | i d ƒ } |  i d | j o
 d | j ƒ | i d ƒ t | d ƒ } | i | | ƒ | d ƒ } | i | ƒ | i d ƒ } |  i d | j o d | j o
 d | j ƒ | d ƒ } | i | ƒ | i d ƒ } |  i d | j o d | j o | i d ƒ ƒ d  S(   N(   s	   CookieJars   DefaultCookiePolicy(   s   Requesti    i   R¤   s   http://www.acme.com:80/RG   R«   s   www.acme.com:80sV   Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/ ; expires=Wednesday, 09-Nov-%d 23:12:40 GMTs   http://www.acme.com/RS   s   CUSTOMER=WILE_E_COYOTERÊ   s   $Version="1"s4   Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/s   http://www.acme.com/foo/bars    PART_NUMBER=ROCKET_LAUNCHER_0001s%   Set-Cookie: SHIPPING=FEDEX; path=/foos   http://www.acme.coms   SHIPPING=FEDEXs   http://www.acme.com/foo/s   SHIPPING=FEDEX;(   R   R”   R}   RT   RU   R   t	   localtimet   year_plus_oneRG   Ri   R6   RV   RZ   RD   RB   R\   RW   R   Re   RX   R¡   R
   t
   startswith(
   R   R}   R6   R”   RB   RV   RU   RG   R¡   Rð   (    (    R   t   test_netscape_example_1&  s@    & -c         C   sþ   d k  l } d k l } | ƒ  } g  } | d ƒ } | i d ƒ t | d ƒ } | i
 | | ƒ | d ƒ } | i | ƒ |  i | i d ƒ d ƒ | i d ƒ t | d ƒ } | i
 | | ƒ | d ƒ } | i | ƒ |  i t i d	 | i d ƒ ƒ ƒ d  S(
   N(   s	   CookieJar(   s   Requests   http://www.acme.com/s4   Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/RS   s    PART_NUMBER=ROCKET_LAUNCHER_0001s6   Set-Cookie: PART_NUMBER=RIDING_ROCKET_0023; path=/ammos   http://www.acme.com/ammosB   PART_NUMBER=RIDING_ROCKET_0023;\s*PART_NUMBER=ROCKET_LAUNCHER_0001(   R   R”   RT   RU   R6   RG   RV   RZ   RD   RB   R\   RW   R   R   RX   R
   R   R   (   R   R6   R”   RB   RV   RU   RG   (    (    R   t   test_netscape_example_2„  s&    	c         C   s	  d k  l } l } | | d t ƒ ƒ } t | d d ƒ } |  i | ƒ t | d d ƒ } |  i t	 i
 d | ƒ ƒ t | d d	 ƒ } |  i t	 i
 d
 | ƒ ƒ |  i t	 i
 d | ƒ ƒ |  i t	 i
 d | ƒ ƒ t | d ƒ } |  i t	 i
 d | ƒ o
 d | j ƒ d  S(   N(   s	   CookieJars   DefaultCookiePolicyR¤   s   http://www.acme.com/acme/logins3   Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"s!   http://www.acme.com/acme/pickitems=   Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"s=   ^\$Version="?1"?; Customer="?WILE_E_COYOTE"?; \$Path="/acme"$s!   http://www.acme.com/acme/shippings+   Shipping="FedEx"; Version="1"; Path="/acme"s   ^\$Version="?1"?;s7   Part_Number="?Rocket_Launcher_0001"?;\s*\$Path="\/acme"s-   Customer="?WILE_E_COYOTE"?;\s*\$Path="\/acme"s    http://www.acme.com/acme/processs%   Shipping="?FedEx"?;\s*\$Path="\/acme"t   WILE_E_COYOTE(   R   R”   R}   Ri   R6   RQ   R‰   R   R
   R   R   (   R   R}   R6   R”   R‰   (    (    R   t   test_ietf_example_1º  s$    				
		

c         C   s–   d k  l } l } | | d t ƒ ƒ } t | d d d ƒ t | d ƒ } |  i t	 i
 d | ƒ ƒ t | d ƒ } |  i d	 | j o
 d
 | j ƒ d  S(   N(   s	   CookieJars   DefaultCookiePolicyR¤   s&   http://www.acme.com/acme/ammo/specifics=   Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"s@   Part_Number="Riding_Rocket_0023"; Version="1"; Path="/acme/ammo"s!   http://www.acme.com/acme/ammo/...s(   Riding_Rocket_0023.*Rocket_Launcher_0001s   http://www.acme.com/acme/parts/t   Rocket_Launcher_0001t   Riding_Rocket_0023(   R   R”   R}   Ri   R6   RQ   R‰   R   R
   R   R   (   R   R}   R6   R”   R‰   (    (    R   t   test_ietf_example_2-  s    	c   	      C   sz  d k  l } l } | d t ƒ } | d | ƒ } d } t | d d ƒ } |  i
 | ƒ t | d d ƒ } |  i t | ƒ d ƒ t | d	 d
 ƒ } |  i t | ƒ d ƒ t | d	 d ƒ } |  i t | ƒ d ƒ t | d d ƒ } |  i t | ƒ d ƒ t | d d ƒ } |  i t | ƒ d ƒ t | d d ƒ } |  i t | ƒ d ƒ t | d d ƒ } |  i t | ƒ d ƒ t | d d ƒ } |  i t | ƒ d ƒ t | d d ƒ } |  i t | ƒ d ƒ t | d d ƒ } |  i t | ƒ d ƒ t i } zE | i | d t ƒt | ƒ } | d | ƒ } | i | d t ƒWd  y t i | ƒ Wn t j
 o n XX|  i | t | ƒ ƒ d  S(   N(   s   DefaultCookiePolicys   LWPCookieJarR¤   RÃ   s   max-age=3600s   http://www.acme.coms!   foo=bar; domain=".com"; version=1s'   ping=pong; domain="acme.com"; version=1i   s   http://www.a.acme.coms'   whiz=bang; domain="acme.com"; version=1s,   wow=flutter; domain=".a.acme.com"; version=1i   s   http://125.125.125.125s*   zzzz=ping; domain="125.125.125"; version=1s   http://www.sol.nos6   blah=rhubarb; domain=".sol.no"; path="/foo"; version=1s   http://www.sol.no/foo/bars3   bing=bong; domain=".sol.no"; path="/foo"; version=1i   s5   whiz=ffft; domain=".sol.no"; port="90,100"; version=1ss   bang=wallop; version=1; domain=".sol.no"; port="90,100, 80,8080"; max-age=100; Comment = "Just kidding! (\"|\\\\) "i   s9   foo9=bar; version=1; domain=".sol.no"; port; max-age=100;i   s   http://www.sol.no/<oo/s"   foo8=bar; version=1; path="/%3coo"i   R`   (   R   R}   Ra   Ri   R~   R6   t   max_ageRQ   R‰   R   R
   R   RŸ   Rb   Rc   Rd   Rh   R‹   t   oldRj   Rk   Rl   Rm   (	   R   R}   Rù   R6   Rú   Rd   R~   R‰   Ra   (    (    R   t   test_rejectione  sb    																								   c         C   s²   d k  l } l } | | d t ƒ ƒ } t | d d ƒ t | d d ƒ } t i d t i	 ƒ } |  i d | j o | i | ƒ ƒ t | d	 ƒ } |  i | ƒ t | d
 ƒ } d  S(   N(   s	   CookieJars   DefaultCookiePolicyR¤   s1   http://www.acme.com/foo%2f%25/%3c%3c%0Anew%E5/%E5s   foo  =   bar; version    =   1s+   http://www.acme.com/foo%2f%25/<<%0anewå/æøås    bar=baz; path="/foo/"; version=1s   ^\$version=\"?1\"?s   foo=bars)   http://www.acme.com/foo/%25/<<%0anewå/æøåu   http://www.acme.com/Ã¼(   R   R”   R}   Ri   R6   RQ   R‰   R   t   compilet   It
   version_reR   R
   R   (   R   R}   R6   R”   R‰   Rþ   (    (    R   t   test_url_encodingÂ  s    			#c   	         sV  d k  l ‰ l ‰  t i ƒ  d d } t i ‰ ˆ ˆ d ˆ  d t	 ƒ ƒ} t | d d ƒ t | d d ƒ t | d d	 ƒ d
 | f } t | d d | ƒ t | d d | ƒ t | d d | ƒ ‡  ‡ ‡ d †  } | | t	 ƒ } |  i t | ƒ d ƒ |  i d t | ƒ j ƒ | | t ƒ } |  i t | ƒ d ƒ |  i d t | ƒ j ƒ d  S(   N(   s   MozillaCookieJars   DefaultCookiePolicyi    i   RÃ   R¤   s   http://www.acme.com/s    foo1=bar; max-age=100; Version=1s4   foo2=bar; port="80"; max-age=100; Discard; Version=1s   foo3=bar; secure; Version=1s   expires=09-Nov-%d 23:12:40 GMTs   http://www.foo.com/s   fooa=bar; %ss   foob=bar; Domain=.foo.com; %ss    fooc=bar; Domain=www.foo.com; %sc            sk   z< |  i d | ƒ ˆ ˆ ˆ  d t ƒ ƒ } | i d | ƒ Wd  y t	 i
 ˆ ƒ Wn t j
 o n XX| S(   NR`   R¤   (   t   cjRh   R`   Rp   Rd   R}   Ri   t   new_cRj   Rk   Rl   Rm   (   R   R`   R  (   R}   Rp   Rd   (    R   t   save_and_restoreð  s       i   s   name='foo1', value='bar'i   (   R   Rp   R}   R   Rï   Rð   Rb   Rc   Rd   Ri   R6   RQ   R)   RR   R  R  R   R   RŸ   R
   R‹   R   (	   R   R}   R6   Rp   R)   Rd   R  R  Rð   (    (   R}   Rp   Rd   R   t   test_mozillaØ  s0    						c         C   sÜ   d k  l } d k l } | ƒ  } g  } | d ƒ } | i d ƒ t | d ƒ } | i
 | | ƒ | i d ƒ t | d ƒ } | i
 | | ƒ | d ƒ } | i | ƒ |  i d | i d ƒ j o d	 | i d ƒ j ƒ d  S(
   N(   s	   CookieJar(   s   Requests   http://foo.bar.acme.com/foos4   Set-Cookie: Customer=WILE_E_COYOTE; domain=.acme.coms   http://www.acme.com/foos4   Set-Cookie: PART_NUMBER=3,4; domain=foo.bar.acme.coms   PART_NUMBER=3,4RS   s   Customer=WILE_E_COYOTE(   R   R”   RT   RU   R6   RG   RV   RZ   RD   RB   R\   RW   R   R
   RX   (   R   R6   R”   RB   RV   RU   RG   (    (    R   t   test_netscape_misc  s    	c         C   s¦   d k  l } l } | | d t ƒ ƒ } t | d d ƒ t | d d ƒ } |  i d | j ƒ t | d d ƒ t | d ƒ } |  i d | j o t	 | ƒ d	 j ƒ d  S(
   N(   s	   CookieJars   DefaultCookiePolicyR¤   s   http://example/s#   foo1=bar; PORT; Discard; Version=1;s$   foo2=bar; domain=".local"; Version=1s   foo1=bars   foo3=bar; Version=1s   foo2=bari   (
   R   R”   R}   Ri   R6   RQ   R‰   R   R
   RŸ   (   R   R}   R6   R”   R‰   (    (    R   t   test_intranet_domains_2965  s    			c         C   s¯   d k  l } l } | | d t ƒ ƒ } t | d d ƒ t | d d ƒ } |  i t	 | ƒ d ƒ |  i
 d | j ƒ t | d ƒ } |  i
 d | j ƒ |  i t	 | ƒ d ƒ d  S(   N(   s	   CookieJars   DefaultCookiePolicyR¤   s   http://example/s   foo1=bars   foo2=bar; domain=.locali   s   foo2=bar(   R   R”   R}   R   R6   RR   R‰   R   R   RŸ   R
   (   R   R}   R6   R‰   R”   (    (    R   t   test_intranet_domains_ns-  s    		c         C   s  d k  l } l } d k l } | | d t ƒ ƒ } g  } | d ƒ } | i	 d ƒ t
 | d ƒ } | i | | ƒ | d ƒ } | i | ƒ |  i | i d ƒ d ƒ |  i | i d ƒ d	 ƒ | d
 ƒ } | i | ƒ |  i | i d ƒ d ƒ |  i | i d ƒ d	 ƒ d  S(   N(   s	   CookieJars   DefaultCookiePolicy(   s   RequestR¤   s   http://www.ants.com/s,   Set-Cookie: JSESSIONID=ABCDERANDOM123; Path=RS   s   JSESSIONID=ABCDERANDOM123RÊ   s   $Version="1"s   http://www.ants.com:8080(   R   R”   R}   RT   RU   Ri   R6   RG   RV   RZ   RD   RB   R\   RW   R   R   RX   (   R   R}   R6   R”   RB   RV   RU   RG   (    (    R   t   test_empty_path;  s$    	c         C   s‡  d k  l } d k l } t i ƒ  d d }
 | d ƒ } g  } | i	 d ƒ | i	 d |
 ƒ | i	 d |
 ƒ | i	 d	 ƒ | i	 d
 ƒ t
 | d ƒ } | ƒ  } | i | | ƒ h  d d <d d <d d <d d <} x- | D]% } d | i }	 | |	 d | |	 <qâ W| i ƒ  x- | D]% } d | i }	 | |	 d | |	 <qW|  i | d | d j p | d d j p | d d j ƒ d  S(   N(   s	   CookieJar(   s   Requesti    i   s"   http://www.perlmeister.com/scriptss$   Set-Cookie: s1=session;Path=/scriptssW   Set-Cookie: p1=perm; Domain=.perlmeister.com;Path=/;expires=Fri, 02-Feb-%d 23:24:20 GMTs>   Set-Cookie: p2=perm;Path=/;expires=Fri, 02-Feb-%d 23:24:20 GMTs<   Set-Cookie: s2=session;Path=/scripts;Domain=.perlmeister.coms2   Set-Cookie2: s3=session;Version=1;Discard;Path="/"t   session_aftert
   perm_aftert   session_beforet   perm_befores	   %s_befores   %s_after(   R   R”   RT   RU   R   Rï   Rð   RV   RG   RZ   RD   RB   R6   R\   t   counterR‰   Rg   t   keyR¢   R   R
   (   R   R6   R  R”   RB   RV   RU   RG   R‰   R  Rð   (    (    R   t   test_session_cookies]  s0    	* 
 (   R$   R%   Rò   Ró   Rõ   Rø   Rû   Rÿ   R  R  R  R  R  R  (    (    (    R   Rî   #  s   	^	6	s	8	]		+				"c         C   s*   d k  l } t i t t t t t ƒ d  S(   N(   s	   test_sets(	   R!   t	   test_setsRb   t   run_unittestR    R&   R{   R]   Rî   (   t   verboseR  (    (    R   t	   test_mainŒ  s    	t   __main__R  (   t   __doc__R   Rk   R   t   unittestt   TestCaseR!   Rb   R    R&   RD   RQ   RR   RN   R]   R{   Rî   R"   R  R$   Ri   (   Rb   RN   RR   R]   R&   Rî   R  R   R  R{   R   RQ   RD   R    Rk   (    (    R   t   ?   s(   \f			+ÿ ÿ ÿ ÿ ÿ k
