
    5\hP                         d dl Z d dlZd dlZd dlmZ d dlZd dlmZ  G d dej                  Z	 G d dej                  Z
d Zed	k    r ej                     dS dS )
    N)cookies)supportc                       e Zd Zd Zd Z ej        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S )CookieTestsc           
      <   ddddddddd	d
iddddd	diddddddiddddddddddd                     d          dg}|D ]}t          j                    }|                    |d                    |                     t          |          |d                     |                     |                    d!          |d"                    t          |d#                                                   D ]&\  }}|                     ||         j	        |           'd S )$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.11.14/usr/lib/python3.11/test/test_http_cookies.py
test_basiczCookieTests.test_basic   s   0$x88CJL L
 D"ABQQS S %'*624 4 , <0<8: : - cs<<A)) %  	
 
7&
P  	0 	0D$&&AFF4<   T!WWd6l333QXX$X//h@@@tF|113344 0 01  1Q////0	0 	0    c                 
   g d}|D ]{\  }}|                      |          5  t          j                    }|                    |           |                     |d         j        |           d d d            n# 1 swxY w Y   |d S )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   )subTestr   r   r   r   r!   )r"   r#   encodeddecodedr%   s        r(   test_unquotezCookieTests.test_unquote>   s    
 
 
" !& 	8 	8GWg&& 8 8(**w  3w7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	8 	8s   A
A77A;	>A;	cpuc                    d}dD ]}|                      |          5  d||z  z   dz   }t          j                    }|                    |           |d         j        }|                     |d d         d           |                     |dd          d	           |                     t          |          |dz              d d d            n# 1 swxY w Y   d S )
Ni@B )z\\z\134za="b=z;"r      r-   z\;)r/   r   r   r   r!   r   len)r"   nr0   r   r%   r!   s         r(   test_unquote_largezCookieTests.test_unquote_largeV   s   % 	4 	4Gg&& 4 4*T1(**t#  rrF333  rssU333  UQU3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	4 	4s   B#CC	C	c                    t          j                    }|                    d           |                     |d         j        d           |                     |d         d         d           |                     |d         d         d           |                     |                    dg          d           |                     |                                d	           |                     |                    dg          d
           d S )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_loadzCookieTests.test_loadc   s    ""	@AAA:,o>>>:y13777:v.8886(++>	@ 	@ 	@ ) 	 	 	 	fX.. 1 	 	 	 	 	r*   c                     t          j                    }d|d<   |                     |                    dg          d           d S )Nzsome,funky;stuffvalz(Set-Cookie: val="some\054funky\073stuff"r   r   r   r   rF   s     r(   test_extended_encodez CookieTests.test_extended_encode|   sP      ""%%5'**8	: 	: 	: 	: 	:r*   c                 n   t          j        d          }d|d         d<   |                     |                                                    d                     t          j                    }|                    d           |                     |d         d         d           t          j                    }|                    d           |                     |d         d         d	           t          j        d          }d
|d         d<   |                     |                                d           d S )NCustomer="WILE_E_COYOTE"r   r;   expires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   
assertTruer   endswithr   r   rF   s     r(   test_special_attrszCookieTests.test_special_attrs   s.    !;<<#$*i 

++E22333  ""	DEEE:y18	: 	: 	: ""	BCCC:y16	8 	8 	8  !;<<#%*i K	M 	M 	M 	M 	Mr*   c                     t          j        d          }d|d         d<   d|d         d<   |                     |                                d           d S )NrM   Tr;   securehttponlyz6Set-Cookie: Customer="WILE_E_COYOTE"; HttpOnly; SecurerJ   rF   s     r(   test_set_secure_httponly_attrsz*CookieTests.test_set_secure_httponly_attrs   sc     !;<<"&*h$(*j!D	F 	F 	F 	F 	Fr*   c                    g d}|D ]}|                      |          5  t          j        d          }||d         d<   |                     |                                d|z             t          j                    }|                    d|z             |                     |d         d         |           d d d            n# 1 swxY w Y   d S )N)StrictLaxstrictlax)rI   rM   r;   samesitez1Set-Cookie: Customer="WILE_E_COYOTE"; SameSite=%sz%Customer="WILL_E_COYOTE"; SameSite=%s)r/   r   r   r   r   r   )r"   samesite_valuesrI   r%   s       r(   test_samesite_attrszCookieTests.test_samesite_attrs   s8   <<<" 		A 		AC#&& A A()CDD,/*j)  G#MO O O (**>DEEE  :z!:C@@@A A A A A A A A A A A A A A A		A 		As   BCC	
C	c                     t          j                    }|                    d           |                     |d         d                    |                     |d         d                    d S )Nzeggs=scrambled; Path=/baconeggsrW   rV   )r   r   r   assertFalserF   s     r(   )test_secure_httponly_false_if_not_presentz5CookieTests.test_secure_httponly_false_if_not_present   sc     ""	,---6:.///68,-----r*   c                     t          j                    }|                    d           |                     |d         d                    |                     |d         d                    d S )Nz-eggs=scrambled; httponly; secure; Path=/baconrb   rW   rV   )r   r   r   rR   rF   s     r(   $test_secure_httponly_true_if_presentz0CookieTests.test_secure_httponly_true_if_present   s_     ""	>???&	*-...&	(+,,,,,r*   c                 b   t          j                    }|                    d           |                     |d         d                    |                     |d         d                    |                     |d         d         d           |                     |d         d         d           d S )Nz5eggs=scrambled; httponly=foo; secure=bar; Path=/baconrb   rW   rV   foobar)r   r   r   rR   r   rF   s     r(   'test_secure_httponly_true_if_have_valuez3CookieTests.test_secure_httponly_true_if_have_value   s      ""	FGGG&	*-...&	(+,,, 	6:.66668,e44444r*   c                     t          j                    }|                    d           |                     |                                d           d S )Nz=eggs  =  scrambled  ;  secure  ;  path  =  bar   ; foo=foo   zASet-Cookie: eggs=scrambled; Path=bar; Secure
Set-Cookie: foo=foo)r   r   r   r   r   rF   s     r(   test_extra_spaceszCookieTests.test_extra_spaces   sW     ""	NOOOQ	S 	S 	S 	S 	Sr*   c                    t          j                    }|                    d           |                     |d         j        d           |                     |d         d         d           |                     |d         d         d           |                     |                    dg          d           |                     |                                d	           |                     |                    dg          d
           d S )Nz3Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rF   s     r(   test_quoted_metazCookieTests.test_quoted_meta   s    ""	DEEE:,o>>>:y13777:v.8886(++K	M 	M 	M ) 	 	 	 	fX.. 1 	 	 	 	 	r*   c                     t          j                    }dD ]b}|                    |           |                     t	          |          i            |                     |                                d           cd S )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_cookiesz CookieTests.test_invalid_cookies   sy     ""9 	- 	-A FF1IIIT!WWb)))QXXZZ,,,,	- 	-r*   c                    d}d|z  }t          j                    }|                    |           |                     |                                |           t          t          j        dz             D ]}|                     |          5  t          j	        t          j
        ||                    }|                     |                                |           d d d            n# 1 swxY w Y   d S )Nz/Customer="WILE_E_COYOTE"; Path=/acme; Version=1zSet-Cookie: %s   proto)protocol)r   r   r   r   r   rangepickleHIGHEST_PROTOCOLr/   loadsdumps)r"   rawdataexpected_outputr%   rv   C1s         r(   test_picklezCookieTests.test_pickle   s   C*W4 ""	w_55562Q677 	? 	?EE** ? ?\&,q5"A"A"ABB  o>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	? 	?s   AC))C-	0C-	c                     d}t          j                    }|                     t           j                  5  |                    |           d d d            d S # 1 swxY w Y   d S )Nz
a=b; c,d=e)r   r   assertRaisesCookieErrorr   )r"   r}   r%   s      r(   test_illegal_charszCookieTests.test_illegal_chars   s     ""w233 	 	FF7OOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                     t          j                    }d|d<   |                     t          |d                   d           d|d         d<   |                     t          |d                   d           d S )N   ©rh   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_quotingz CookieTests.test_comment_quoting  sz     ""'%QuX(ABBB:%%MM>	
 	
 	
 	
 	
r*   N)__name__
__module____qualname__r)   r2   r   requires_resourcer9   rG   rK   rT   rX   r`   rd   rf   rj   rl   rn   rr   r   r   r    r*   r(   r   r      s:       /0 /0 /0b8 8 80 Wu%%
4 
4 &%
4  2: : :M M M.F F FA A A. . .- - -
5 
5 
5S S S  2	- 	- 	-? ? ?  
 
 
 
 
r*   r   c                   R    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S )MorselTestsc                    t          j                    }|                     |j                   |                     |j                   |                     |j                   |                     |                                t           j        j                                                   |	                                D ]\  }}|                     |d|           d S Nrp   )
r   MorselassertIsNonekeyr!   coded_valuer   keys	_reservedr    )r"   morselr   rI   s       r(   test_defaultszMorselTests.test_defaults  s    !!&*%%%&,'''&,---(@(E(E(G(GHHH 	+ 	+HCS"c****	+ 	+r*   c                 t   t          j                    }|j        D ]2}|                     |                    |                     d|z  ||<   3|j        D ]!}|                     ||         d|z             "d                                D ],}|                     t           j        |j	        |d|z             -d S )N%s_valuezthe holy hand grenade)
r   r   r   rR   isReservedKeyr   splitr   r   __setitem__)r"   Mis      r(   test_reserved_keyszMorselTests.test_reserved_keys  s    N 	" 	"AOOAOOA..///>AaDD 	3 	3AQqT:>2222(..00 	@ 	@Ag1mQ
Q@ @ @ @	@ 	@r*   c           	         t          j                    }|j        D ]0}|                     t           j        |j        |d|z  d|z             1d                                D ]}d|d<   |                    |d|z  d|z             |                     |j        |           |                     |j	        d|z             |                     |j
        d|z             |                     |                                d|dd|z  d	           d
|dd|z  d}|                     |                                |           dD ]0}|                     t           j        |j        |d|z  d|z             1d S )Nr   z(thou cast _the- !holy! ^hand| +*grenade~z/foor?   z%s_valz%s_coded_valzSet-Cookie: =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   setr   r   r   r!   r   r   rE   )r"   r   r   expected_js_outputs       r(   test_setterzMorselTests.test_setter+  s   N 	H 	HAg1eQ
Q
QH H H H;AACC 	@ 	@A AfIEE!X\>A#5666QUA&&&QWhl333Q]NQ,>???


23!!^a5G5G5GHJ J J J qq.1$$$"& Q[[]],>????' 	H 	HAg1eQ
Q
QH H H H	H 	Hr*   c                    t          j                    }|                     t                    5  d|_        d d d            n# 1 swxY w Y   |                     t                    5  d|_        d d d            n# 1 swxY w Y   |                     t                    5  d|_        d d d            d S # 1 swxY w Y   d S r   )r   r   r   AttributeErrorr   r!   r   r"   r   s     r(   test_set_propertieszMorselTests.test_set_propertiesJ  so   !!~.. 	 	FJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	~.. 	 	FL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	~.. 	$ 	$!#F	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s5   AA	A'A;;A?A? B55B9<B9c                    d}ddddd}t          j                    }|                    |            |j        |  t          j                    }|                    |            |j        |  |                     ||k               |                     ||k               d}|D ]}|                     |          5  t          j                    }|                    |            |j        |  |                     ||k               |                     ||k               d d d            n# 1 swxY w Y   t          j                    }|                    |            |j        |  d|d	<   |                     ||k               |                     ||k               |                     t          j                    d
k               |                     t          j                    d
k               |                     t          j                    dk               |                     t          j                    dk               t          t          j                                                              }|                     t          j                    |k               |                     t          j                    |k               t          j                    } |j        |  |                    |           |                     |t          |          k               |                     |t          |          k               d S )N)r   r!   "value"/rh   example.com   )r?   r   domainr=   ))r   r!   mismatch)r   r   r   )r   r!   r   ri   r   rt   rp   )
r   r   updater   rR   rc   r/   listr    r   )	r"   	base_caseattribsmorsel_amorsel_br#   case_br    r   s	            r(   test_eqzMorselTests.test_eqS  sJ   /	#	
 
 >##   i  >##   i  H,---X-...

  	6 	6Ff%% 6 6">++(((f%%  X!5666H 45556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 >##   i  #X-...H,--- 	))Q.///((A-...))R/000((B.///W^%%++--..))U2333((E1222 !!
Ig$v,,.///4<</00000s   ;A%D,,D0	3D0	c                 
   t          j                    }|                    ddd           |                    ddd           |                                }|                     |t           j                   |                     ||           |                     ||           t	          j        |          }|                     |t           j                   |                     ||           |                     ||           d S )Nrh   ri   bazr   r=   r   )r   r   r   r   copyassertIsInstanceassertIsNotr   )r"   r   r   s      r(   	test_copyzMorselTests.test_copy  s    >##UE5)))
 
 	 	 	 ==??h7778,,,8,,,9X&&h7778,,,8,,,,,r*   c                    t          j                    }d|d<   |                     |d         d           d|d<   |                     |d         d           d|d<   |                     |d         d           |                     t           j                  5  d	|d
<   d d d            n# 1 swxY w Y   |                     d
|           d S )Nr   rN   r   Versionr=   r   DOMAINr   r!   invalid)r   r   r   r   r   assertNotInr   s     r(   test_setitemzMorselTests.test_setitem  s   !!y	*A...y	*A...(x)=999w233 	( 	( 'F9	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(F+++++s   B((B,/B,c                    t          j                    }|                    ddd           |                     |                    dd          d           |                     |d         d           |                     |                    dd          d           |                     |d	         d           |                     |                    d
d          d           |                     |d         d           |                     t           j                  5  |                    dd           d d d            n# 1 swxY w Y   |                     d|           d S )Nr   r   )r   r=   rN   r!   rp   r   rt   r=   r   r   r   )r   r   r   r   
setdefaultr   r   r   r   s     r(   test_setdefaultzMorselTests.test_setdefault  s   !!#
 
 	 	 	
 	**9g>>CCC	*B///**9a88!<<<	*A...**8W==}MMM)=999w233 	2 	2i111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2F+++++s   E  EEc                    dddd}t          j                    }|                    |           |                     |d         d           |                     |d         d           |                     |d         d           t          j                    }|                    t	          |                                                     |                     |d         d           |                     |d         d           |                     |d         d           t          j                    }|                    d |                                D                        |                     |d         d           |                     |d         d           |                     |d         d           |                     t           j                  5  |                    d	d
i           d d d            n# 1 swxY w Y   |                     d	|           |                     t          |j                   |                     t          |j        d           d S )Nrt   r   r   )rN   r   r   rN   r=   r   c              3   $   K   | ]\  }}||fV  d S Nr   ).0r&   r'   s      r(   	<genexpr>z*MorselTests.test_update.<locals>.<genexpr>  s*      99Aq!f999999r*   r   r!   r   )
r   r   r   r   r   r    r   r   r   	TypeError)r"   r   r   s      r(   test_updatezMorselTests.test_update  sY   AGG!!g	*A...	*A...)=999!!d7==??++,,,	*A...	*A...)=999!!99999999	*A...	*A...)=999w233 	0 	0MM9g.///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0F+++)V]333)V]A66666s   G99G= G=c                 >   t          j                    }|                    ddd           |                    ddd           t	          t
          j        dz             D ]}|                     |          5  t          j        t          j	        ||                    }| 
                    |t           j                   |                     ||           |                     t          |          t          |                     d d d            n# 1 swxY w Y   d S )Nrh   ri   r   r   r   rt   ru   )r   r   r   r   rx   ry   rz   r/   r{   r|   r   r   r   )r"   r   rv   r   s       r(   r   zMorselTests.test_pickle  sK   >##UE5)))
 
 	 	 	 62Q677 	? 	?EE** ? ?!<Xu(E(EFF%%h???  8444  XH>>>	? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	? 	?s   7BDD	D	c           	         t          j                    }|                     t          |          d           |                     t	          |          d           |                    ddd           |                     t          |          d           |                     t	          |          d           |                    dd	d
dddd           |                     t          |          d           |                     t	          |          d           d|d<   d|d<   |                     t          |          d           |                     t	          |          d           t          j                    }|                    ddd           d|d<   |                     t          |          d           |                     t	          |          d           d S )Nz<Morsel: None=None>zSet-Cookie: None=Noner   rI   	coded_valz<Morsel: key=coded_val>zSet-Cookie: key=coded_valr   rh   r   r   rt   )r?   r   r   rQ   rV   r=   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=1TrV   rW   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=1rN   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_reprzMorselTests.test_repr  s   !!f'<===V&=>>>

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

5%---yf=	> 	> 	> 	V<	= 	= 	= 	= 	=r*   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r*   r(   r   r     s        &+ + +@ @ @H H H>$ $ $21 21 21h- - -", , ,, , ,$7 7 76? ? ?&= &= &= &= &=r*   r   c                 ^    |                     t          j        t                               |S r   )addTestdoctestDocTestSuiter   )loadertestspatterns      r(   
load_testsr   	  s$    	MM'&w//000Lr*   __main__)r   unittestr   httpr   ry   testr   TestCaser   r   r   r   mainr   r*   r(   <module>r      s                   B
 B
 B
 B
 B
(# B
 B
 B
Jv= v= v= v= v=(# v= v= v=r  
 zHMOOOOO r*   