
    0hhW                         S SK r S SKrS SKrS SKJr  S SKrS SKJr  S SKJ	r	   " S S\R                  \	5      r " S S\R                  5      rS	 r\S
:X  a  \R                  " 5         gg)    N)cookies)support)ExtraAssertionsc                       \ rS rSrS rS rS r\R                  " S5      S 5       r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS rS rS rSrg)CookieTests   c           
         SSSS.SSS.SS	S
0SSS.SS	S0SSS.SSS0SSS.SSSSSS.SSR                  S5      S./nU H  n[        R                  " 5       nUR                  US   5        U R	                  [        U5      US    5        U R	                  UR                  SS!9US"   5        [        US#   R                  5       5       H#  u  pEU R	                  X4   R                  U5        M%     M     g )$Nzchips=ahoy; vienna=fingerahoyfinger)chipsviennaz,<SimpleCookie: chips='ahoy' vienna='finger'>z0Set-Cookie: chips=ahoy
Set-Cookie: vienna=finger)datadictreproutputz)keebler="E=mc2; L=\"Loves\"; fudge=\012;"keeblerzE=mc2; L="Loves"; fudge=
;z5<SimpleCookie: keebler='E=mc2; L="Loves"; fudge=\n;'>z5Set-Cookie: keebler="E=mc2; L=\"Loves\"; fudge=\012;"zkeebler=E=mc2zE=mc2z<SimpleCookie: keebler='E=mc2'>zSet-Cookie: keebler=E=mc2zkey:term=value:termzkey:termz
value:termz%<SimpleCookie: key:term='value:term'>zSet-Cookie: key:term=value:termza=b; c=[; d=r; f=hb[rh)acdfz'<SimpleCookie: a='b' c='[' d='r' f='h'>
)zSet-Cookie: a=bzSet-Cookie: c=[zSet-Cookie: d=rzSet-Cookie: f=hr   r   )sepr   r   )
joinr   SimpleCookieloadassertEqualr   r   sorteditemsvalue)selfcasescaseCkvs         ?/opt/python-3.13.8/usr/lib/python3.13/test/test_http_cookies.py
test_basicCookieTests.test_basic   s+   0$x8CJL
 D"ABQQS %'*624 , <0<8: - cs<A)) % 	
7&
P D$$&AFF4< T!Wd6l3QXX$X/h@tF|1134  Q/ 5     c                    SSS.SSS.SSS.SS	S.S
SS.SSS./nU H  nU R                  US   S9   [        R                  " 5       nUR                  US   5        US   R	                  S5      S   nU R                  XC5        U R                  X4   R                  S5      US   5        S S S 5        M     g ! , (       d  f       M  = f)Nz3key=value; expires=Saturday, 01-Jan-83 00:00:00 GMTz Saturday, 01-Jan-83 00:00:00 GMT)r   r   z1key=value; expires=Friday, 19-Nov-82 16:59:30 GMTzFriday, 19-Nov-82 16:59:30 GMTz1key=value; expires=Sunday, 06-Nov-94 08:49:37 GMTzSunday, 06-Nov-94 08:49:37 GMTz4key=value; expires=Wednesday, 09-Nov-94 08:49:37 GMTz!Wednesday, 09-Nov-94 08:49:37 GMTz1key=value; expires=Friday, 11-Nov-94 08:49:37 GMTzFriday, 11-Nov-94 08:49:37 GMTz1key=value; expires=Monday, 14-Nov-94 08:49:37 GMTzMonday, 14-Nov-94 08:49:37 GMTr   )r   =r   expiresr   )subTestr   r   r   splitassertInr    get)r$   
test_casesr&   r'   cookie_names        r*    test_obsolete_rfc850_date_format,CookieTests.test_obsolete_rfc850_date_format?   s     N<
 L: L: O=
 L:
 L:5

@ D4<0((*tF|$ #6l005a8 k-  !3!3I!>XO 10 00s   A8B77
C	c                    / SQnU Hd  u  p#U R                  U5         [        R                  " 5       nUR                  U5        U R	                  US   R
                  U5        S S S 5        Mf     g ! , (       d  f       Mx  = f)N))za="b=\""b=")za="b=\\"b=\)za="b=\="zb==)za="b=\n"zb=n)z
a="b=\042"r:   )z
a="b=\134"r;   )z
a="b=\377"u   b=ÿ)z
a="b=\400"zb=400)z	a="b=\42"zb=42)za="b=\\042"zb=\042)za="b=\\134"zb=\134)z
a="b=\\\""b=\")za="b=\\\042"r<   )za="b=\134\""r<   )za="b=\134\042"r<   r   )r1   r   r   r   r    r#   )r$   r%   encodeddecodedr'   s        r*   test_unquoteCookieTests.test_unquotem   sd    
" !&Gg&((*w  3w7 '& !&&&s   AA00
A?	cpuc                    SnS H  nU R                  U5         SX!-  -   S-   n[        R                  " 5       nUR                  U5        US   R                  nU R                  US S S5        U R                  USS  S	5        U R                  [        U5      US-   5        S S S 5        M     g ! , (       d  f       M  = f)
Ni@B )z\\z\134za="b=z;"r      r;   z\;)r1   r   r   r   r#   r    len)r$   nr=   r   r'   r#   s         r*   test_unquote_largeCookieTests.test_unquote_large   s    %Gg&*T1((*t#  rF3  rsU3  UQU3 '& &&&s   BB..
B=	c                    [         R                  " 5       nUR                  S5        U R                  US   R                  S5        U R                  US   S   S5        U R                  US   S   S5        U R                  UR                  S/5      S5        U R                  UR                  5       S	5        U R                  UR                  S/5      S
5        g )Nz/Customer="WILE_E_COYOTE"; Version=1; Path=/acmeCustomerWILE_E_COYOTEversion1path/acme0Set-Cookie: Customer="WILE_E_COYOTE"; Path=/acme
        <script type="text/javascript">
        <!-- begin hiding
        document.cookie = "Customer=\"WILE_E_COYOTE\"; Path=/acme; Version=1";
        // end hiding -->
        </script>
        
        <script type="text/javascript">
        <!-- begin hiding
        document.cookie = "Customer=\"WILE_E_COYOTE\"; Path=/acme";
        // end hiding -->
        </script>
        r   r   r   r    r#   r   	js_outputr$   r'   s     r*   	test_loadCookieTests.test_load   s      "	@A:,,o>:y137:v.86(+>	@ ) 	 	fX. 1 	r-   c                 |    [         R                  " 5       nSUS'   U R                  UR                  S/5      S5        g )Nzsome,funky;stuffvalz(Set-Cookie: val="some\054funky\073stuff"r   r   r    r   rU   s     r*   test_extended_encode CookieTests.test_extended_encode   s9       "%%5'*8	:r-   c                    [         R                  " S5      nSUS   S'   U R                  UR                  5       S5        [         R                  " 5       nUR	                  S5        U R                  US   S   S5        [         R                  " 5       nUR	                  S5        U R                  US   S   S	5        [         R                  " S5      nS
US   S'   U R                  UR                  5       S5        g )NCustomer="WILE_E_COYOTE"r   rJ   r0   GMTz3Customer="W"; expires=Wed, 01 Jan 2010 00:00:00 GMTzWed, 01 Jan 2010 00:00:00 GMTz1Customer="W"; expires=Wed, 01 Jan 98 00:00:00 GMTzWed, 01 Jan 98 00:00:00 GMT
   max-agez0Set-Cookie: Customer="WILE_E_COYOTE"; Max-Age=10)r   r   assertEndsWithr   r   r    rU   s     r*   test_special_attrsCookieTests.test_special_attrs   s      !;<#$*i AHHJ.   "	DE:y18	:  "	BC:y16	8   !;<#%*i K	Mr-   c                     [         R                  " S5      nSUS   S'   SUS   S'   U R                  UR                  5       S5        g )Nr^   TrJ   securehttponlyz6Set-Cookie: Customer="WILE_E_COYOTE"; HttpOnly; SecurerZ   rU   s     r*   test_set_secure_httponly_attrs*CookieTests.test_set_secure_httponly_attrs   sI      !;<"&*h$(*j!D	Fr-   c                 t   / SQnU H  nU R                  US9   [        R                  " S5      nX#S   S'   U R                  UR	                  5       SU-  5        [        R                  " 5       nUR                  SU-  5        U R                  US   S   U5        S S S 5        M     g ! , (       d  f       M  = f)N)StrictLaxstrictlax)rY   r^   rJ   samesitez1Set-Cookie: Customer="WILE_E_COYOTE"; SameSite=%sz%Customer="WILL_E_COYOTE"; SameSite=%s)r1   r   r   r    r   r   )r$   samesite_valuesrY   r'   s       r*   test_samesite_attrsCookieTests.test_samesite_attrs   s    <"C#&(()CD,/*j)  G#MO ((*>DE  :z!:C@ '& #&&s   BB((
B7	c                     [         R                  " 5       nUR                  S5        U R                  US   S   5        U R                  US   S   5        g )Nzeggs=scrambled; Path=/baconeggsrg   rf   )r   r   r   assertFalserU   s     r*   )test_secure_httponly_false_if_not_present5CookieTests.test_secure_httponly_false_if_not_present   sK      "	,-6:./68,-r-   c                     [         R                  " 5       nUR                  S5        U R                  US   S   5        U R                  US   S   5        g )Nz-eggs=scrambled; httponly; secure; Path=/baconrt   rg   rf   )r   r   r   
assertTruerU   s     r*   $test_secure_httponly_true_if_present0CookieTests.test_secure_httponly_true_if_present   sG      "	>?&	*-.&	(+,r-   c                    [         R                  " 5       nUR                  S5        U R                  US   S   5        U R                  US   S   5        U R	                  US   S   S5        U R	                  US   S   S5        g )Nz5eggs=scrambled; httponly=foo; secure=bar; Path=/baconrt   rg   rf   foobar)r   r   r   ry   r    rU   s     r*   'test_secure_httponly_true_if_have_value3CookieTests.test_secure_httponly_true_if_have_value   s}       "	FG&	*-.&	(+, 	6:.668,e4r-   c                     [         R                  " 5       nUR                  S5        U R                  UR	                  5       S5        g )Nz=eggs  =  scrambled  ;  secure  ;  path  =  bar   ; foo=foo   zASet-Cookie: eggs=scrambled; Path=bar; Secure
Set-Cookie: foo=foo)r   r   r   r    r   rU   s     r*   test_extra_spacesCookieTests.test_extra_spaces   s7      "	NOQ	Sr-   c                    [         R                  " 5       nUR                  S5        U R                  US   R                  S5        U R                  US   S   S5        U R                  US   S   S5        U R                  UR                  S/5      S5        U R                  UR                  5       S	5        U R                  UR                  S/5      S
5        g )Nz3Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rU   s     r*   test_quoted_metaCookieTests.test_quoted_meta   s      "	DE:,,o>:y137:v.86(+K	M ) 	 	fX. 1 	r-   c                     [         R                  " 5       nS HO  nUR                  U5        U R                  [	        U5      0 5        U R                  UR                  5       S5        MQ     g )N)
z]foo=xz[foo=xz
blah]foo=xz
blah[foo=xzSet-Cookie: foo=barzSet-Cookie: foozfoo=bar; bazzbaz; foo=barzsecure;foo=barzVersion=1;foo=bar )r   r   r   r    r   r   )r$   r'   ss      r*   test_invalid_cookies CookieTests.test_invalid_cookies  sS      "9A FF1IT!Wb)QXXZ,9r-   c           	         SnSU-  n[         R                  " 5       nUR                  U5        U R                  UR	                  5       U5        [        [        R                  S-   5       Hc  nU R                  US9   [        R                  " [        R                  " X4S95      nU R                  UR	                  5       U5        S S S 5        Me     g ! , (       d  f       Mw  = f)Nz/Customer="WILE_E_COYOTE"; Path=/acme; Version=1zSet-Cookie: %s   proto)protocol)r   r   r   r    r   rangepickleHIGHEST_PROTOCOLr1   loadsdumps)r$   rawdataexpected_outputr'   r   C1s         r*   test_pickleCookieTests.test_pickle!  s    C*W4  "	w_5622Q67EE*\\&,,q"AB  o> +* 8**s   <A	C
C!	c                     Sn[         R                  " 5       nU R                  [         R                  5         UR	                  U5        S S S 5        g ! , (       d  f       g = f)Nz
a=b; c,d=e)r   r   assertRaisesCookieErrorr   )r$   r   r'   s      r*   test_illegal_charsCookieTests.test_illegal_chars.  s@      "w223FF7O 433s   A
A c                     [         R                  " 5       nSUS'   U R                  [        US   5      S5        SUS   S'   U R                  [        US   5      S5        g )N   ©r}   zSet-Cookie: foo="\251"u
   comment ©commentz.Set-Cookie: foo="\251"; Comment="comment \251")r   r   r    str)r$   r   s     r*   test_comment_quoting CookieTests.test_comment_quoting4  s\      "'%QuX(AB:%%M>	
r-    N)__name__
__module____qualname____firstlineno__r+   r7   r?   r   requires_resourcerG   rV   r[   rc   rh   rq   rv   rz   r   r   r   r   r   r   r   __static_attributes__r   r-   r*   r   r      s}    /0b,P\80 u%
4 &
42:M.FA.-
5S2	-?
r-   r   c                   Z    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)MorselTestsi?  zTests for the Morsel object.c                    [         R                  " 5       nU R                  UR                  5        U R                  UR                  5        U R                  UR
                  5        U R                  UR                  5       [         R                  R                  R                  5       5        UR                  5        H  u  p#U R                  USU5        M     g Nr   )
r   MorselassertIsNonekeyr#   coded_valuer    keys	_reservedr"   )r$   morselr   rY   s       r*   test_defaultsMorselTests.test_defaultsB  s    !&**%&,,'&,,-(@(@(E(E(GHHCS"c* 'r-   c                    [         R                  " 5       nUR                   H*  nU R                  UR	                  U5      5        SU-  X'   M,     UR                   H  nU R                  X   SU-  5        M     SR                  5        H2  nU R                  [         R                  UR                  USU-  5        M4     g )N%s_valuezthe holy hand grenade)
r   r   r   ry   isReservedKeyr    r2   r   r   __setitem__)r$   Mis      r*   test_reserved_keysMorselTests.test_reserved_keysK  s    NNAOOAOOA./>AD  AQT:>2  )..0Ag11mmQ
Q@ 1r-   c           	         [         R                  " 5       nUR                   H6  nU R                  [         R                  UR
                  USU-  SU-  5        M8     SR                  5        H  nSUS'   UR                  USU-  SU-  5        U R                  UR                  U5        U R                  UR                  SU-  5        U R                  UR                  SU-  5        U R                  UR                  5       SU< SSU-  < S	35        S
U< SSU-  < S3nU R                  UR                  5       U5        M     S H6  nU R                  [         R                  UR
                  USU-  SU-  5        M8     g )Nr   z(thou cast _the- !holy! ^hand| +*grenade~z/foorN   z%s_valz%s_coded_valzSet-Cookie: r/   z; Path=/fooz^
        <script type="text/javascript">
        <!-- begin hiding
        document.cookie = "zB; Path=/foo";
        // end hiding -->
        </script>
        )zfoo barzfoo@bar)r   r   r   r   r   setr2   r    r   r#   r   r   rT   )r$   r   r   expected_js_outputs       r*   test_setterMorselTests.test_setterZ  sQ   NNAg11eeQ
Q
QH  <AACA AfIEE!X\>A#56QUUA&QWWhl3Q]]NQ,>?
23^a5GHJ .1$"& Q[[],>?% D& (Ag11eeQ
Q
QH (r-   c                 r   [         R                  " 5       nU R                  [        5         SUl        S S S 5        U R                  [        5         SUl        S S S 5        U R                  [        5         SUl        S S S 5        g ! , (       d  f       NY= f! , (       d  f       NE= f! , (       d  f       g = fr   )r   r   r   AttributeErrorr   r#   r   r$   r   s     r*   test_set_propertiesMorselTests.test_set_propertiesy  sw    !~.FJ /~.FL /~.!#F /.	 /.....s#   BB5B(
B
B%(
B6c                 &   SnSSSSS.n[         R                  " 5       nUR                  U5        UR                  " U6   [         R                  " 5       nUR                  U5        UR                  " U6   U R	                  X4:H  5        U R                  X4:g  5        SnU Hx  nU R                  U5         [         R                  " 5       nUR                  U5        UR                  " U6   U R                  X4:H  5        U R	                  X4:g  5        S S S 5        Mz     [         R                  " 5       nUR                  U5        UR                  " U6   SUS	'   U R                  X4:H  5        U R	                  X4:g  5        U R                  [         R                  " 5       S
:H  5        U R	                  [         R                  " 5       S
:g  5        U R                  [         R                  " 5       S:H  5        U R	                  [         R                  " 5       S:g  5        [        [         R                  " 5       R                  5       5      nU R                  [         R                  " 5       U:H  5        U R	                  [         R                  " 5       U:g  5        [         R                  " 5       nUR                  " U6   UR                  U5        U R	                  U[        U5      :H  5        U R                  U[        U5      :g  5        g ! , (       d  f       GMr  = f)N)r   r#   "value"/r}   example.com   )rN   r   domainrL   ))r   r#   mismatch)r   r   r   )r   r#   r   r~   r   r   r   )
r   r   updater   ry   ru   r1   listr"   r   )	r$   	base_caseattribsmorsel_amorsel_br%   case_br"   r   s	            r*   test_eqMorselTests.test_eq  sL   /	#	
 >># i >># i ,--.

 Ff%">>+(f%  !56 45 &%  >># i #-.,- 	)Q./(A-.)R/0(B./W^^%++-.)U23(E12 !

Ig$v,./4</09 &%s   2AL  
L	c                    [         R                  " 5       nUR                  SSS5        UR                  SSS.5        UR	                  5       nU R                  U[         R                  5        U R                  X5        U R                  X5        [        R                  " U5      nU R                  U[         R                  5        U R                  X5        U R                  X5        g )Nr}   r~   bazr   rL   r   )r   r   r   r   copyassertIsInstanceassertIsNotr    )r$   r   r   s      r*   	test_copyMorselTests.test_copy  s    >>#UE5)
 	 ==?h7,,99X&h7,,r-   c                 j   [         R                  " 5       nSUS'   U R                  US   S5        SUS'   U R                  US   S5        SUS'   U R                  US   S5        U R                  [         R                  5         S	US
'   S S S 5        U R                  S
U5        g ! , (       d  f       N!= f)Nr   r0   r   VersionrL   r   DOMAINr   r#   invalid)r   r   r    r   r   assertNotInr   s     r*   test_setitemMorselTests.test_setitem  s    !y	*A.y	*A.(x)=9w223 'F9 4F+ 43s   B$$
B2c                 Z   [         R                  " 5       nUR                  SSS.5        U R                  UR	                  SS5      S5        U R                  US   S5        U R                  UR	                  SS5      S5        U R                  US	   S5        U R                  UR	                  S
S5      S5        U R                  US   S5        U R                  [         R                  5         UR	                  SS5        S S S 5        U R                  SU5        g ! , (       d  f       N!= f)Nr   r   )r   rL   r0   r#   r   r   r   rL   r   r   r   )r   r   r   r    
setdefaultr   r   r   r   s     r*   test_setdefaultMorselTests.test_setdefault  s    !#
 	
 	**9g>C	*B/**9a8!<	*A.**8W=}M)=9w223i1 4F+ 43s   .D
D*c                    SSSS.n[         R                  " 5       nUR                  U5        U R                  US   S5        U R                  US   S5        U R                  US   S5        [         R                  " 5       nUR                  [	        UR                  5       5      5        U R                  US   S5        U R                  US   S5        U R                  US   S5        [         R                  " 5       nUR                  S UR                  5        5       5        U R                  US   S5        U R                  US   S5        U R                  US   S5        U R                  [         R                  5         UR                  S	S
05        S S S 5        U R                  S	U5        U R                  [        UR                  5        U R                  [        UR                  S5        g ! , (       d  f       Nb= f)Nr   r   r   )r0   r   r   r0   rL   r   c              3   ,   #    U  H
  u  pX4v   M     g 7fNr   ).0r(   r)   s      r*   	<genexpr>*MorselTests.test_update.<locals>.<genexpr>  s     9qfs   r   r#   r   )
r   r   r   r    r   r"   r   r   r   	TypeError)r$   r   r   s      r*   test_updateMorselTests.test_update  s   AG!g	*A.	*A.)=9!d7==?+,	*A.	*A.)=9!999	*A.	*A.)=9w223MM9g./ 4F+)V]]3)V]]A6	 43s   G11
G?c                    [         R                  " 5       nUR                  SSS5        UR                  SSS.5        [	        [
        R                  S-   5       H  nU R                  US9   [
        R                  " [
        R                  " X5      5      nU R                  U[         R                  5        U R                  X15        U R                  [        U5      [        U5      5        S S S 5        M     g ! , (       d  f       M  = f)Nr}   r~   r   r   r   r   r   )r   r   r   r   r   r   r   r1   r   r   r   r    r   )r$   r   r   r   s       r*   r   MorselTests.test_pickle  s    >>#UE5)
 	 622Q67EE*!<<X(EF%%h?  4  XH>	 +* 8**s   +B C88
D	c           	         [         R                  " 5       nU R                  [        U5      S5        U R                  [	        U5      S5        UR                  SSS5        U R                  [        U5      S5        U R                  [	        U5      S5        UR                  SS	S
SSSS.5        U R                  [        U5      S5        U R                  [	        U5      S5        SUS'   SUS'   U R                  [        U5      S5        U R                  [	        U5      S5        [         R                  " 5       nUR                  SSS5        SUS'   U R                  [        U5      S5        U R                  [	        U5      S5        g )Nz<Morsel: None=None>zSet-Cookie: None=Noner   rY   	coded_valz<Morsel: key=coded_val>zSet-Cookie: key=coded_valr   r}   r   r   r   )rN   r   r   ra   rf   rL   zV<Morsel: key=coded_val; Comment=foo; Domain=example.com; Max-Age=0; Path=/; Version=1>zXSet-Cookie: key=coded_val; Comment=foo; Domain=example.com; Max-Age=0; Path=/; Version=1Trf   rg   zh<Morsel: key=coded_val; Comment=foo; Domain=example.com; HttpOnly; Max-Age=0; Path=/; Secure; Version=1>zjSet-Cookie: key=coded_val; Comment=foo; Domain=example.com; HttpOnly; Max-Age=0; Path=/; Secure; Version=1r0   zA<Morsel: key=coded_val; expires=\w+, \d+ \w+ \d+ \d+:\d+:\d+ \w+>zCSet-Cookie: key=coded_val; expires=\w+, \d+ \w+ \d+ \d+:\d+:\d+ \w+)r   r   r    r   r   r   r   assertRegexr   s     r*   	test_reprMorselTests.test_repr  su   !f'<=V&=>

5%-f'@AV&AB#
 	 	f0	1 	V/	0  xzfB	C 	VA	B !

5%-yf=	> 	V<	=r-   r   N)r   r   r   r   __doc__r   r   r   r   r   r   r   r   r   r   r   r   r   r-   r*   r   r   ?  s?    &+@H>$21h-",,$76?&=r-   r   c                 X    UR                  [        R                  " [        5      5        U$ r   )addTestdoctestDocTestSuiter   )loadertestspatterns      r*   
load_testsr  8  s    	MM'&&w/0Lr-   __main__)r   unittestr  httpr   r   testr   test.support.testcaser   TestCaser   r   r  r   mainr   r-   r*   <module>r     se          1p
(##_ p
f	v=(## v=r
 zMMO r-   