
XSc        
   @   s  d  d k  l Z d  d k l Z d  d k l Z d  d k l Z d  d k Z d  d k l	 Z	 d  d k l
 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 e i  f d     YZ! d e i  f d      YZ" d! e i  f d"     YZ# d# e# f d$     YZ$ d% e# f d&     YZ% d'   Z& d( e i  f d)     YZ' d S(*   i(   t	   timedelta(   t   cookies(   t   text_(   t   eq_N(   t   native_(   t   PY3c          C   s#   t  i   }  t t |   d  d  S(   Ns   <Cookie: []>(   R   t   CookieR   t   repr(   t   c(    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_cookie_empty
   s    c          C   s`   t  i d  }  t |  i    } t t |  d  t | d i d  t | d i d  d  S(   Ns   dismiss-top=6i   i    s   dismiss-topt   6(   R   R   t   listt   valuesR   t   lent   namet   value(   R   t   vals(    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_cookie_one_value   s
    c          C   so   t  i d  }  t |  i    } t t |  d  t | d i d  t | d i d  t  i d  }  d  S(   Ns   dismiss-top=6;i   i    s   dismiss-topR
   (   R   R   R   R   R   R   R   R   (   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt(   test_cookie_one_value_with_trailing_semi   s    c           C   s#   t  t t i d   d g  d  S(   Ns   x=\040t   xt    (   R   R   (   R   R   R   t   parse_cookie(    (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_cookie_escaped_unquoted   s    c             sg   t  i d  }  d     t   f d   |  i   D  } t | h d d 6d d 6d d	 6d
 d 6 d  S(   NsL   dismiss-top=6; CP=null*, PHPSESSID=0a539d42abc001cdc762809248d4beed, a="42,"c         S   s   |  i  d   S(   t   ascii(   t   decode(   t   v(    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   <lambda>#   s    c         3   s4   x- |  ]& \ } }   |    | i   f Vq Wd  S(   N(   R   (   t   .0t   kR   (   t   d(    s1   /home/chrism/projects/webob/tests/test_cookies.pys	   <genexpr>$   s   	 s   42,t   as   null*t   CPt    0a539d42abc001cdc762809248d4beedt	   PHPSESSIDR
   s   dismiss-top(   R   R   t   dictt   itemsR   (   R   t   c_dict(    (   R   s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_cookie_complex    s    	"c          C   s&   t  i d  }  t |  i   d  d  S(   NsL   dismiss-top=6; CP=null*, PHPSESSID=0a539d42abc001cdc762809248d4beed, a="42,"sO   CP=null*; PHPSESSID=0a539d42abc001cdc762809248d4beed; a="42\054"; dismiss-top=6(   R   R   R   t	   serialize(   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_cookie_complex_serialize+   s    c          C   sM   t  i d  }  t |  i    } t t |  d  t |  d d d  d  S(   Ns   a=1; Secure=truei   R   t   securet   true(   R   R   R   R   R   R   (   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_cookie_load_multiple2   s    c          C   s@   t  i   }  d |  t d  <t |  d _ t |  i   d  d  S(   Nt   bart   foos   foo=bar; secure(   R   R   R   t   TrueR(   R   R&   (   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_cookie_secure8   s    c          C   s:   t  i   }  d |  d <t |  d _ t |  i   d  d  S(   NR+   R,   s   foo=bar; HttpOnly(   R   R   R-   t   httponlyR   R&   (   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_cookie_httponly>   s    
c          C   sR   t  i d  }  d |  j p t  t  i d  }  t t |  i    d g  d  S(   Ns*   dismiss-top=6; CP=null*; $version=42; a=42s   $versions   $reserved=42; a=$42R   (   R   R   t   AssertionErrorR   R   t   keys(   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_cookie_reserved_keysD   s    c          C   s   t  t i d  d  t  t i t d   d  t  t i d  d  t i t d d   }  t i d  } t  |  |  d S(   s  
        Testing webob.cookies.serialize_cookie_date.
        Missing scenarios:
            * input value is an str, should be returned verbatim
            * input value is an int, should be converted to timedelta and we
              should continue the rest of the process
    s   Tue, 04-Jan-2011 13:43:50 GMTt   secondsi
   N(   R   R   t   serialize_cookie_dateR   t   NoneR    (   t   cdate_deltat	   cdate_int(    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_serialize_cookie_dateJ   s    c           C   s8  t  t i d  d  t  t i d  d  t  t i d  d  t  t i d  d  t  t i d  d  t  t i d  d  t  t i d  d  t  t i d  d  t  t i d	  d  t  t i d  d	  t  t i d
  d  t  t i d  d
  t  t i d  d  t  t i d  d  d  S(   Ns   "hello worlds   hello worlds   "hello world"s   "\""t   "s   "\042"s   "\\"s   \s   "\134"s   "\377"s   s	   "a\"\377"s   a"s   "a\042\377"(   R   R   t   _unquotet   _value_quote(    (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_ch_unquote[   s    c          C   s-   t  i   }  d |  d <t t |   d  d  S(   Nt   1s   La Peñai    (   R   R   R   R   (   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_cookie_invalid_namex   s    
c          C   s8   t  i d d  }  d |  _ |  i   } t | d  d  S(   Nt   bleht   blahs   Tue, 04-Jan-2011 13:43:50 GMTs0   bleh=blah; expires=Tue, 04-Jan-2011 13:43:50 GMT(   R   t   Morselt   expiresR&   R   (   t   morselt   result(    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt"   test_morsel_serialize_with_expires}   s    	c          C   s;   d d  k  }  |  i d  } t i |  } t | d  d  S(   NiiQ t
   7464960000(   t   datetimeR    R   t   serialize_max_ageR   (   RH   t   valRE   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt    test_serialize_max_age_timedelta   s    c          C   s&   d }  t  i |   } t | d  d  S(   NiQ t   86400(   R   RI   R   (   RJ   RE   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_serialize_max_age_int   s    c          C   s&   d }  t  i |   } t | d  d  S(   NRL   (   R   RI   R   (   RJ   RE   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_serialize_max_age_str   s    c          C   s0   t  i   }  d |  d <t |  i t  d  d  S(   Ns   ";,"R   s   x="\042\073\054\042"(   R   R   R   R&   R-   (   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_escape_comma_semi_dquote   s    
c          C   sA   d }  t  i |   } t | d i d  t | d i d  d  S(   Ns7   x="\"\073\054\""; expires=Sun, 12-Jun-2011 23:16:01 GMTR   s   ";,"s   Sun, 12-Jun-2011 23:16:01 GMT(   R   R   R   R   RC   (   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_parse_qmark_in_val   s    c          C   s/   t  i d d  }  t |   } t | d  d  S(   NR   t   bs   <Morsel: a='b'>(   R   RB   R   R   (   R   RE   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_morsel_repr   s    c          C   s*   d d k  l }  t |  d d  t  d  S(   Ni(   t   strings_differt   test1t   test(   t
   webob.utilRS   R   R-   (   RS   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_strings_differ   s    t   TestRequestCookiesc           B   s  e  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 e p d   Z d   Z d   Z n d   Z d   Z d   Z d   Z d   Z RS(   c         C   s   d d k  l } | |  S(   Ni(   t   RequestCookies(   t   webob.cookiesRY   (   t   selft   environRY   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   _makeOne   s    c         C   sR   h  } |  i  |  } |  i | i d  d   | d } |  i | h  d f  d  S(   NR   s   webob._parsed_cookiest    (   R]   t   assertEqualt   getR6   (   R[   R\   t   instt   parsed(    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt6   test_get_no_cache_key_in_environ_no_http_cookie_header   s
    
c         C   s   d } h | d 6} |  i  |  } |  i | i d  d  | d d } |  i | d d  |  i | d d  |  i | d |  d  S(	   Ns   a=1; b=2t   HTTP_COOKIER   R>   s   webob._parsed_cookiesi    RQ   t   2(   R]   R_   R`   (   R[   t   headerR\   Ra   Rb   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt7   test_get_no_cache_key_in_environ_has_http_cookie_header   s    c         C   s_   h h  d f d 6} |  i  |  } |  i | i d  d   | d } |  i | h  d f  d  S(   NR^   s   webob._parsed_cookiesR   (   R]   R_   R`   R6   (   R[   R\   Ra   Rb   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt3   test_get_cache_key_in_environ_no_http_cookie_header   s
    
c         C   s   d } h | d 6h  d f d 6} |  i  |  } |  i | i d  d  | d d } |  i | d d  |  i | d d	  |  i | d |  d  S(
   Ns   a=1; b=2Rd   R^   s   webob._parsed_cookiesR   R>   i    RQ   Re   (   R]   R_   R`   (   R[   Rf   R\   Ra   Rb   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt4   test_get_cache_key_in_environ_has_http_cookie_header   s    c         C   s5   h  } |  i  |  } |  i | i d d  d  d  S(   NR   R^   (   R]   R_   R`   (   R[   R\   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_get_missing_with_default   s    c         C   s,   |  i  h   } |  i t | i d  d  d  S(   Ni   (   R]   t   assertRaisest	   TypeErrort   __setitem__R6   (   R[   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt$   test___setitem__name_not_string_type   s    c         C   s;   t  d d  } |  i h   } |  i t | i | d  d  S(   Ns   La Peñas   utf-8t   abc(   R   R]   Rk   Rl   Rm   (   R[   R   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt,   test___setitem__name_not_encodeable_to_ascii   s    c         C   s2   d } |  i  h   } |  i t | i | d  d  S(   Ns   $aRo   (   R]   Rk   Rl   Rm   (   R[   R   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt&   test___setitem__name_not_rfc2109_valid   s    c         C   s,   |  i  h   } |  i t | i d d   d  S(   NR   (   R]   Rk   t
   ValueErrorRm   R6   (   R[   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt%   test___setitem__value_not_string_type   s    c         C   sJ   t  d d  } | i d  } |  i h   } |  i t | i d |  d  S(   Ns   La Peñas   utf-8s   utf-16R   (   R   t   encodeR]   Rk   Rr   Rm   (   R[   R   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt*   test___setitem__value_not_utf_8_decodeable   s    c         C   sF   t  d d  } h  } |  i |  } | | d <|  i | d d  d  S(   Ns   La Peñas   utf-8R   Rd   s   a="La Pe\303\261a"(   R   R]   R_   (   R[   R   R\   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt*   test__setitem__success_no_existing_headers   s
    
c         C   sM   t  d d  } h d d 6} |  i |  } | | d <|  i | d d  d  S(   Ns   La Peñas   utf-8s   a=1; b=2Rd   R   s   a=1; b=2; c="La Pe\303\261a"(   R   R]   R_   (   R[   R   R\   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test__setitem__success_append   s    
c         C   s\   h d d 6} |  i  |  } d | d <|  i | d d  d | d <|  i | d d  d  S(	   Ns   a=1; b="La Pe\303\261a"; c=3Rd   Ro   RQ   s   a=1; b=abc; c=3t   4R   s   a=1; b=abc; c=4(   R]   R_   (   R[   R\   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test__setitem__success_replace   s    

c         C   s?   h  } |  i  |  } |  i t | i d  |  i | h   d  S(   NR   (   R]   Rk   t   KeyErrort   __delitem__R_   (   R[   R\   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt"   test__delitem__fail_no_http_cookie  s    c         C   sM   h d d 6} |  i  |  } |  i t | i d  |  i | h d d 6 d  S(   NR^   Rd   R   (   R]   Rk   Rz   R{   R_   (   R[   R\   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt$   test__delitem__fail_with_http_cookie	  s    c         C   sN   h d d 6} |  i  |  } | d =|  i | d d  |  i | i h   d  S(   Ns   a=1Rd   R   R^   (   R]   R_   t   _cache(   R[   R\   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test__delitem__success  s
    c         C   sK   h d d 6} |  i  |  } |  i t t | i     d d d g  d  S(   Ns   a=1; b="La Pe\303\261a"; c=3Rd   R   RQ   R   (   R]   R_   t   sortedR   R2   (   R[   R\   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt	   test_keys  s    c         C   sZ   t  d d  } h d d 6} |  i |  } |  i t t | i     d d | g  d  S(   Ns   La Peñas   utf-8s   a=1; b="La Pe\303\261a"; c=3Rd   R>   t   3(   R   R]   R_   R   R   R   (   R[   RJ   R\   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_values  s    c         C   s`   t  d d  } h d d 6} |  i |  } |  i t t | i     d
 d | f d g  d  S(   Ns   La Peñas   utf-8s   a=1; b="La Pe\303\261a"; c=3Rd   R   R>   RQ   R   R   (   R   R>   (   R   R   (   R   R]   R_   R   R   R#   (   R[   RJ   R\   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt
   test_items!  s
    c         C   sK   h d d 6} |  i  |  } |  i t t | i     d d d g  d  S(   Ns   a=1; b="La Pe\303\261a"; c=3Rd   R   RQ   R   (   R]   R_   R   R   t   iterkeys(   R[   R\   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_iterkeys)  s    c         C   sZ   t  d d  } h d d 6} |  i |  } |  i t t | i     d d | g  d  S(   Ns   La Peñas   utf-8s   a=1; b="La Pe\303\261a"; c=3Rd   R>   R   (   R   R]   R_   R   R   t
   itervalues(   R[   RJ   R\   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_itervalues.  s    c         C   s`   t  d d  } h d d 6} |  i |  } |  i t t | i     d
 d | f d g  d  S(   Ns   La Peñas   utf-8s   a=1; b="La Pe\303\261a"; c=3Rd   R   R>   RQ   R   R   (   R   R>   (   R   R   (   R   R]   R_   R   R   t	   iteritems(   R[   RJ   R\   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_iteritems4  s
    c         C   sF   h d d 6} |  i  |  } |  i d | j  |  i d | j  d  S(   Ns   a=1Rd   R   RQ   (   R]   t
   assertTruet   assertFalse(   R[   R\   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test___contains__;  s    c         C   sK   h d d 6} |  i  |  } |  i t t t |    d d d g  d  S(   Ns   a=1; b=2; c=3Rd   R   RQ   R   (   R]   R_   R   R   t   iter(   R[   R\   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test___iter__A  s    c         C   sS   h d d 6} |  i  |  } |  i t |  d  | d =|  i t |  d  d  S(   Ns   a=1; b=2; c=3Rd   i   R   i   (   R]   R_   R   (   R[   R\   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test___len__F  s
    c         C   sW   h d d 6} |  i  |  } | i   |  i | d d  |  i | i d  d   d  S(   Ns   a=1; b=2; c=3Rd   R^   R   (   R]   t   clearR_   R`   R6   (   R[   R\   Ra   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt
   test_clearM  s
    
c         C   sX   h d d 6} |  i  |  } t |  } |  i | i d   |  i | i d   d  S(   Ns   a=1; b=2; c=3Rd   s(   <RequestCookies (dict-like) with values t   >(   R]   R   R   t
   startswitht   endswith(   R[   R\   Ra   t   r(    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test___repr__T  s    
(   t   __name__t
   __module__R]   Rc   Rg   Rh   Ri   Rj   Rn   Rp   Rq   Rs   Ru   Rv   Rw   Ry   R|   R}   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyRX      s:   			
		
																					t   CookieMakeCookiec           B   s5   e  Z d    Z d   Z d   Z d   Z d   Z RS(   c         K   s    d d k  l } | | | |  S(   Ni(   t   make_cookie(   RZ   R   (   R[   R   R   t   kwR   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   makeOne^  s    c         C   sU   |  i  d d d d } |  i d | j  |  i d | j  |  i d | j  d  S(   Nt   test_cookieR   t   max_agei  s   test_cookie=values   Max-Age=500;RC   (   R   R   (   R[   t   cookie(    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_make_cookie_max_ageb  s    c         C   sn   d d k  l } |  i d d d | d d  } |  i d | j  |  i d	 | j  |  i d
 | j  d  S(   Ni(   R    R   R   R   R4   i  s   test_cookie=values   Max-Age=500;RC   (   RH   R    R   R   (   R[   R    R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt"   test_make_cookie_max_age_timedeltai  s    c         C   sB   |  i  d d d d } |  i d | j  |  i d | j  d  S(   NR   R   t   commentt   lolwhys   test_cookie=values   Comment=lolwhy(   R   R   (   R[   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_make_cookie_commentr  s    c         C   sB   |  i  d d d d } |  i d | j  |  i d | j  d  S(   NR   R   t   paths   /foo/bar/bazs   test_cookie=values   Path=/foo/bar/baz(   R   R   (   R[   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_make_cookie_pathx  s    (   R   R   R   R   R   R   R   (    (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyR   ]  s
   					t   CommonCookieProfilec           B   s   e  Z d    Z d   Z RS(   c         K   sA   d t  f d     Y} | |   } |   | _ t   | i _ | S(   Nt   Dummyc           B   s   e  Z d    Z RS(   c         [   s   |  i  i |   d  S(   N(   t   __dict__t   update(   R[   t   kwargs(    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   __init__  s    (   R   R   R   (    (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyR     s   (   t   objectt   responseR   t
   headerlist(   R[   R   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   makeDummyRequest  s
    c         C   s2   |  i  d t    } d | i d <t   | _ | S(   NR\   s   www.example.nett	   HTTP_HOST(   R   R"   R\   R   (   R[   t   request(    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   makeOneRequest  s    (   R   R   R   R   (    (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyR   ~  s   		t   CookieProfileTestc           B   s8   e  Z d  d  Z d   Z d   Z d   Z d   Z RS(   t   unsc         K   sQ   d | j o | d } | d =n |  i    } d d k l } | | |  |  S(   NR   i(   t   CookieProfile(   R   RZ   R   (   R[   R   R   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyR     s    
c         C   s6   |  i    } d d k l } |  i t | |   d  S(   Ni(   R   (   R   RZ   R   R   t
   isinstance(   R[   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_cookie_creation  s    c         C   sa   |  i    } | i d  } x? | D]7 } |  i | d i d   |  i d | d j  q" Wd  S(   NRU   i   R   s   uns="";(   R   t   get_headersR   R   R   (   R[   R   t   cookie_list(    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_cookie_name  s     c         C   s3   d d k  l } | d  } |  i t | i  d  S(   Ni(   R   R   (   RZ   R   Rk   Rr   t	   get_value(   R[   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_cookie_no_request  s    c         C   sE   d t  f d     Y} |  i d |    } |  i | i   d   d  S(   Nt   RaisingSerializerc           B   s   e  Z d    Z RS(   c         S   s   t  d   d  S(   NR,   (   Rr   (   R[   RJ   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   loads  s    (   R   R   R   (    (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyR     s   t
   serializer(   R   R   R_   R   R6   (   R[   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt,   test_get_value_serializer_raises_value_error  s    (   R   R   R   R   R   R   R   (    (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyR     s
   
				t   SignedCookieProfileTestc           B   s   e  Z d  d d 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(   t   seekritt   saltyR   c         K   sW   d | j o | d } | d =n |  i    } d d k l } | | | | |  |  S(   NR   i(   t   SignedCookieProfile(   R   RZ   R   (   R[   t   secrett   saltR   R   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyR     s    
c         C   sa   |  i    } | i d  } x? | D]7 } |  i | d i d   |  i d | d j  q" Wd  S(   NRU   i   R   s   uns="";(   R   R   R   R   R   (   R[   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyR     s     c         C   sM   |  i    } | i d  d d } x% | D] } |  i d | d j  q( Wd  S(   NR   i    s
   Max-Age=0;i   (   R   R   R6   R   (   R[   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_cookie_expire  s
     c         C   sd   |  i    } | i d d d } x< | D]4 } |  i d | d j  |  i d | d j  q( Wd  S(   NRU   R   i<   s   Max-Age=60;i   s   expires=(   R   R   R   (   R[   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_cookie_max_age  s     c         C   s5   |  i    } | i d  } |  i t | t   d  S(   NRU   (   R   R   R   R   R   (   R[   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_cookie_raw  s    c         C   sJ   |  i    } |  i d |  } | i | i d  } |  i | | i  d  S(   NR   RU   (   R   R   t   set_cookiesR   R_   (   R[   R   R   t   ret(    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_set_cookie  s    c         C   s,   |  i    } | i   } |  i d  |  d  S(   N(   R   R   R_   R6   (   R[   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_no_cookie  s    c         C   sK   |  i    } d | i d <|  i d |  } | i   } |  i | d  d  S(   Ns^   FLIoEwZcKG6ITQSqbYcUNnPljwOcGNs25JRVCSoZcx_uX-OA1AhssA-CNeVKpWksQa0ktMhuQDdjzmDwgzbptiJ0ZXN0IgR   R   RU   (   R   R   R   R   R_   (   R[   R   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_with_cookies  s
    c         C   sK   |  i    } d | i d <|  i d |  } | i   } |  i | d   d  S(   Nsd   gAJVBHRlc3RxAS4KjKfwGmCkliC4ba99rWUdpy_{}riHzK7MQFPsbSgYTgALHaSHrRkd3lyE8c4w5ruxAKOyj2h5oF69Ix7ERZv_R   R   (   R   R   R   R   R_   R6   (   R[   R   R   RJ   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt#   test_with_bad_cookie_invalid_base64  s
    c         C   sQ   |  i    } d | i d <|  i d d d |  } | i   } |  i | d   d  S(   Ns`   InRlc3QiFLIoEwZcKG6ITQSqbYcUNnPljwOcGNs25JRVCSoZcx/uX+OA1AhssA+CNeVKpWksQa0ktMhuQDdjzmDwgzbptg==R   R   s   sekrit!R   (   R   R   R   R   R_   R6   (   R[   R   R   RJ   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt&   test_with_bad_cookie_invalid_signature	  s
    c         C   sz   |  i  d d  } | i d  } t } x) | D]! } d | d j o
 t } q. q. W|  i |  |  i t |  d  d  S(   Nt   domainss   testing.example.netRU   s   Domain=testing.example.neti   (   s   testing.example.net(   R   R   t   FalseR-   R   R_   R   (   R[   R   R   t   passed(    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_with_domain  s     c         C   s   |  i  d d
  } | i d  } d } xL | D]D } d | d j o | d 7} n d | d j o | d 7} q. q. W|  i | d	  |  i t |  d	  d  S(   NR   s   testing.example.nets   testing2.example.netRU   i    s   Domain=testing.example.neti   s   Domain=testing2.example.neti   (   s   testing.example.nets   testing2.example.net(   R   R   R_   R   (   R[   R   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_with_domains!  s    		 c         C   sM   |  i  d t  } | i d  } x% | D] } |  i d | d j  q( Wd  S(   NR(   RU   s   ; securei   (   R   R-   R   R   (   R[   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_flag_secure2  s
     c         C   sM   |  i  d t  } | i d  } x% | D] } |  i d | d j  q( Wd  S(   NR/   RU   s
   ; HttpOnlyi   (   R   R-   R   R   (   R[   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_flag_http_only9  s
     c         C   s0   |  i    } d d } |  i t | i |  d  S(   NR   i   (   R   Rk   Rr   R   (   R[   R   t
   longstring(    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_cookie_length@  s    
c         C   s-   d d } |  i  d |  } | i d  d  S(   NR   i   R   RU   (   R   R   (   R[   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_very_long_keyF  s    
(   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyR     s    																c      	   C   s   d d  k  } d d  k } d d  k } d d k l } d d k l } | | p d d  | |  d  } | | i |   }	 | i | |	 |  i	   }
 | i
 |
 |	  i d  S(   Ni(   t   sha1(   t   bytes_R^   s   utf-8t   =(   t   hmact   base64t   jsont   hashlibR   t   webob.compatR   t   dumpst   newt   digestt   urlsafe_b64encodet   rstrip(   R   R   t   dataR   R   R   R   R   t   salted_secrett   cstructt   sig(    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyR&   L  s    #t   SignedSerializerTestc           B   sJ   e  Z d  d  Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   R   c         K   s&   d d k  l } | | | d | | S(   Ni(   t   SignedSerializert   hashalg(   RZ   R   (   R[   R   R   R   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyR   X  s    c         C   s;   |  i  d d  } |  i | i d  t d d d   d  S(   NR   R   RU   (   R   R_   R   R&   (   R[   t   ser(    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_serialize\  s    c         C   s;   |  i  d d  } |  i | i t d d d   d  d  S(   NR   R   RU   (   R   R_   R   R&   (   R[   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_deserialized  s    c         C   sJ   d i  d  } |  i | d  } |  i | i t | d d   d  d  S(   Ns   αβγδs   utf-8R   RU   (   R   R   R_   R   R&   (   R[   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_with_highorder_secretl  s
    c         C   sJ   d i  d  } |  i d |  } |  i | i t d | d   d  d  S(   Ns   αβγδs   utf-8R   RU   (   R   R   R_   R   R&   (   R[   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_with_highorder_saltu  s
    c         C   sJ   d } |  i  | i d  d  } |  i | i t | d d   d  d  S(   Ns   La Peñas   latin-1R   RU   (   R   R   R_   R   R&   (   R[   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_with_latin1_secret  s
    c         C   sJ   d } |  i  d | i d   } |  i | i t d | d   d  d  S(   Ns   La PeñaR   s   latin-1RU   (   R   R   R_   R   R&   (   R[   R   R   (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   test_with_latin1_salt  s
    (	   R   R   R   R   R   R   R   R   R   (    (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyR   W  s   					
	
((   RH   R    t   webobR   R   R   t
   nose.toolsR   t   unittestR   R   R	   R   R   R   R%   R'   R*   R.   R0   R3   R9   R=   R?   RF   RK   RM   RN   RO   RP   RR   RW   t   TestCaseRX   R   R   R   R   R&   R   (    (    (    s1   /home/chrism/projects/webob/tests/test_cookies.pyt   <module>   sD   																					!'	