
    Mhď                        d dl Z d dlZd dlmZ d dlZd dlZd dlZd dlZd dlm	Z	 d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlmZmZmZ d dlmZ d dlmZmZmZmZmZ d dlmZ d dlmZ d d	l m!Z! d d
l"m#Z#m$Z$ d dlm%Z% d dl&m'Z'm(Z(m)Z)m*Z* d dl+m,Z, d dl-m.Z.m/Z/m0Z0 d dl1m2Z2m3Z3  G d de/          Z4 G d de/          Z5 G d de/          Z6 G d de/          Z7 G d de/          Z8 G d de/          Z9 G d de/          Z: G d de/          Z; G d  d!e/          Z< G d" d#e/          Z= G d$ d%e/          Z> G d& d'e/          Z? G d( d)e/          Z@ G d* d+e/          ZA G d, d-e/          ZB G d. d/e/          ZC G d0 d1e'          ZD G d2 d3ejE                  ZF G d4 d5ejE                  ZG G d6 d7ejE                  ZH G d8 d9ejE                  ZI G d: d;ejE                  ZJ G d< d=ejE                  ZKdS )>    N)closing)BytesIO)utf8
native_str
to_unicode)gen)HTTPRequestHTTPResponse_RequestProxy	HTTPError
HTTPClient)
HTTPServer)IOLoop)IOStream)gen_logapp_log)netutil)AsyncHTTPTestCasebind_unused_portgen_test	ExpectLog)ignore_deprecation)ApplicationRequestHandlerurl)format_timestampHTTPHeadersc                       e Zd Zd ZdS )HelloWorldHandlerc                     |                      dd          }|                     dd           |                     d|z             d S )NnameworldContent-Type
text/plainz	Hello %s!)get_argument
set_headerfinish)selfr!   s     \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/tornado/test/httpclient_test.pygetzHelloWorldHandler.get%   sH      11555K$&'''''    N__name__
__module____qualname__r*    r+   r)   r   r   $   s#        ( ( ( ( (r+   r   c                       e Zd Zd ZdS )PostHandlerc                     |                      d|                     d          d|                     d                     d S )NzPost arg1: arg1z, arg2: arg2)r'   r%   r(   s    r)   postzPostHandler.post,   sT      (((($*;*;F*C*C*CE	
 	
 	
 	
 	
r+   Nr-   r.   r/   r7   r0   r+   r)   r2   r2   +   #        
 
 
 
 
r+   r2   c                       e Zd Zd ZdS )
PutHandlerc                 n    |                      d           |                      | j        j                   d S )Nz
Put body: writerequestbodyr6   s    r)   putzPutHandler.put4   s1    

<   

4<$%%%%%r+   N)r-   r.   r/   rA   r0   r+   r)   r;   r;   3   #        & & & & &r+   r;   c                       e Zd Zd ZdS )RedirectHandlerc           	          |                      d           |                     |                     d          t          |                     dd                               d S )Nzredirects can have bodies toor   status302)rF   )r>   redirectr%   intr6   s    r)   preparezRedirectHandler.prepare:   se    

2333e$$S1B1B8U1S1S-T-T 	 	
 	
 	
 	
 	
r+   Nr-   r.   r/   rJ   r0   r+   r)   rD   rD   9   r9   r+   rD   c                       e Zd Zd ZdS )RedirectWithoutLocationHandlerc                 X    |                      d           |                                  d S )N-  )
set_statusr'   r6   s    r)   rJ   z&RedirectWithoutLocationHandler.prepareB   s%    r+   NrK   r0   r+   r)   rM   rM   A   s#            r+   rM   c                   .    e Zd Zej        d             ZdS )ChunkHandlerc              #      K   |                      d           |                                  t          j        d          V  |                      d           d S )Nasdf{Gz?qwer)r>   flushr   sleepr6   s    r)   r*   zChunkHandler.getI   sQ      

6

ioo

6r+   N)r-   r.   r/   r   	coroutiner*   r0   r+   r)   rR   rR   H   s/        ]  ]  r+   rR   c                       e Zd Zd ZdS )AuthHandlerc                 P    |                      | j        j        d                    d S )NAuthorization)r'   r?   headersr6   s    r)   r*   zAuthHandler.getS   s$    DL(9:::::r+   Nr,   r0   r+   r)   r[   r[   R   s#        ; ; ; ; ;r+   r[   c                       e Zd Zd ZdS )CountdownHandlerc                     t          |          }|dk    r.|                     |                     d|dz
                       d S |                     d           d S )Nr   	countdown   Zero)rI   rH   reverse_urlr>   )r(   counts     r)   r*   zCountdownHandler.getX   sZ    E

199MM$**;	BBCCCCCJJvr+   Nr,   r0   r+   r)   r`   r`   W   s#            r+   r`   c                       e Zd Zd ZdS )EchoPostHandlerc                 D    |                      | j        j                   d S Nr=   r6   s    r)   r7   zEchoPostHandler.posta   s    

4<$%%%%%r+   Nr8   r0   r+   r)   rh   rh   `   s#        & & & & &r+   rh   c                       e Zd Zd ZdS )UserAgentHandlerc                 l    |                      | j        j                            dd                     d S )N
User-AgentzUser agent not set)r>   r?   r^   r*   r6   s    r)   r*   zUserAgentHandler.getf   s0    

4<'++L:NOOPPPPPr+   Nr,   r0   r+   r)   rl   rl   e   s(        Q Q Q Q Qr+   rl   c                       e Zd Zd Zd ZdS )ContentLength304Handlerc                 \    |                      d           |                     dd           d S )N0  Content-Length*   )rP   r&   r6   s    r)   r*   zContentLength304Handler.getk   s/    ("-----r+   c                     d S rj   r0   r6   s    r)   _clear_representation_headersz5ContentLength304Handler._clear_representation_headerso   s	     	r+   N)r-   r.   r/   r*   rv   r0   r+   r)   rp   rp   j   s2        . . .    r+   rp   c                       e Zd Zd ZdS )PatchHandlerc                 D    |                      | j        j                   dS )z=Return the request payload - so we can check it is being keptNr=   r6   s    r)   patchzPatchHandler.patchv   s    

4<$%%%%%r+   N)r-   r.   r/   rz   r0   r+   r)   rx   rx   u   rB   r+   rx   c                   H    e Zd Zej        dz   Zd ZexZxZxZxZ	xZ
xZxZZdS )AllMethodsHandler)OTHERc                 `    | j         j        J |                     | j         j                   d S rj   )r?   methodr>   r6   s    r)   r   zAllMethodsHandler.method~   s0    |"...

4<&'''''r+   N)r-   r.   r/   r   SUPPORTED_METHODSr   r*   headr7   rA   deleteoptionsrz   otherr0   r+   r)   r|   r|   {   sW        &8:E( ( ( BHGCG$GGGfGwGr+   r|   c                       e Zd Zd ZdS )SetHeaderHandlerc                     t          |                     d          | j        j        d                   D ]\  }}|                     ||           d S )Nkv)zipget_argumentsr?   	argumentsr&   )r(   r   r   s      r)   r*   zSetHeaderHandler.get   sZ     **3//1G1LMM 	" 	"DAqOOAq!!!!	" 	"r+   Nr,   r0   r+   r)   r   r      s#        " " " " "r+   r   c                       e Zd ZddZdS )InvalidGzipHandlerreturnNc                 F   |                      dd           |                      dd           d                    d t          d          D                       d d         }t          j        |                                d	
          dz   }|                     |           d S )Nr#   r$   Content-Encodinggzip c              3   "   K   | ]
}d | dV  dS )zHello World 
Nr0   ).0is     r)   	<genexpr>z)InvalidGzipHandler.get.<locals>.<genexpr>   s.      AA+a+++AAAAAAr+   i(#  i;F    )compresslevel    )r&   joinranger   compressencoder>   )r(   textr@   s      r)   r*   zInvalidGzipHandler.get   s    555*F333 wwAAU4[[AAAAA'6'J}T[[]]!<<<vE

4r+   )r   Nr,   r0   r+   r)   r   r      s(        	 	 	 	 	 	r+   r   c                       e Zd Zd ZdS )HeaderEncodingHandlerc                 v    |                      | j        j        d                             d                     d S )NFoo	ISO8859-1)r'   r?   r^   r   r6   s    r)   r*   zHeaderEncodingHandler.get   s2    DL(/66{CCDDDDDr+   Nr,   r0   r+   r)   r   r      s(        E E E E Er+   r   c                      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d Zd Zd Zd Zed             Zd Zd Zed             Zd Zed             Z ed             Z!ed             Z"ed              Z#ed!             Z$d" Z%d# Z&d$ Z'd% Z(d& Z)d' Z*ed(             Z+d) Z,d*S )+HTTPClientCommonTestCasec                    t          t          dt                    t          dt                    t          dt                    t          dt
                    t          dt                    t          dt                    t          dt                    t          dt          d	
          t          dt                    t          dt                    t          dt                    t          dt                    t          dt                    t          dt                    t          dt                     t          dt"                    gd          S )N/hello/postz/putz	/redirect/redirect_without_location/chunk/authz/countdown/([0-9]+)rb   )r!   	/echopost/user_agent/304_with_content_length/all_methods/patchz/set_header/invalid_gzip/header-encodingT)r   )r   r   r   r2   r;   rD   rM   rR   r[   r`   rh   rl   rp   r|   rx   r   r   r   r6   s    r)   get_appz HTTPClientCommonTestCase.get_app   s   H/00G[))FJ''K1102PQQHl++G[)))+;+NNNK11M#344.0GHHN$566Hl++M#344O%788&(=>>!$ '
 
 
 	
r+   c                     d}|                      dd|          }|                     |j        d           |                     |j        |           d S )Ns   some patch datar   PATCHr   r@      fetchassertEqualcoder@   )r(   r@   responses      r)   test_patch_receives_payloadz4HTTPClientCommonTestCase.test_patch_receives_payload   sT    !::hwT:BB,,,-----r+   c                    |                      d          }|                     |j        d           |                     |j        d         d           |                     |j        d           |j        J |                     t          |j                  d           |                      d          }|                     |j        d           d S )	Nr   r   r#   r$      Hello world!r   z/hello?name=Bens
   Hello Ben!)r   r   r   r^   r@   request_timerI   r(   r   s     r)   test_hello_worldz)HTTPClientCommonTestCase.test_hello_world   s    ::h'',,,).9<HHH888$000X233Q777::/0066666r+   c                     g }|                      d|j                  }|                     |dg           |                     |j                   d S )Nr   streaming_callbackr   )r   appendr   assertFalser@   )r(   chunksr   s      r)   test_streaming_callbackz0HTTPClientCommonTestCase.test_streaming_callback   sS    ::h6=:II/!2333'''''r+   c                     |                      ddd          }|                     |j        d           |                     |j        d           d S )Nr   POSTzarg1=foo&arg2=barr   r   s   Post arg1: foo, arg2: barr   r   s     r)   	test_postz"HTTPClientCommonTestCase.test_post   sQ    ::gf;N:OO,,,(DEEEEEr+   c                    |                      d          }|                     |j        d           g }|                      d|j                  }|                     |ddg           |                     |j                   d S )Nr      asdfqwerr      asdf   qwer)r   r   r@   r   r   )r(   r   r   s      r)   test_chunkedz%HTTPClientCommonTestCase.test_chunked   s~    ::h''444::h6=:II'7!3444'''''r+   c                     t                      \  }}t          |          5  t          j         fd            }t	          j        ||                                d|z            }|                                                      |j	        d            j
                            |                                           d d d            d S # 1 swxY w Y   d S )Nc              3     K   t          |           }|                    d          V }d|vr                    d           |                    d                    dd                    V  |                                 d S )N   

   HTTP/1.requires HTTP/1.xs7   HTTP/1.1 200 OK
Transfer-Encoding: chunked

1
1
1
2
0

   
   
r   
read_untilskipTestr>   replacecloseconnaddressstreamrequest_datar(   s       r)   accept_callbackzDHTTPClientCommonTestCase.test_chunked_close.<locals>.accept_callback   s       "$%+%6%6{%C%CCC\11MM"5666ll
 Gw      r+   http://127.0.0.1:%d/s   12)r   r   r   rY   r   add_accept_handlerr   rethrowr   r@   io_loopremove_handlerfilenor(   sockportr   resps   `    r)   test_chunked_closez+HTTPClientCommonTestCase.test_chunked_close   s    &''
dT]] 	7 	7]    ]0 &t_===::4t;<<DLLNNNTY...L''666?	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   B CCCc                 h    |                      |                     ddd          j        d           d S )Nr   Aladdinopen sesameauth_usernameauth_password"   Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==r   r   r@   r6   s    r)   test_basic_authz(HTTPClientCommonTestCase.test_basic_auth  sG    JJy   1		
 	
 	
 	
 	
r+   c                 j    |                      |                     dddd          j        d           d S )Nr   r   r   basic)r   r   	auth_moder   r   r6   s    r)   test_basic_auth_explicit_modez6HTTPClientCommonTestCase.test_basic_auth_explicit_mode  sN    JJ'+!	   
 1	
 	
 	
 	
 	
r+   c                     |                      |                     ddd          j        d           t          j        dd          }|                      |                     d|d          j        d	           d S )
Nr   testu   123£r   s   Basic dGVzdDoxMjPCow==NFDu   joséu   səcrəts   Basic am9zw6k6c8mZY3LJmXQ=)r   r   r@   unicodedata	normalize)r(   usernames     r)   test_basic_auth_unicodez0HTTPClientCommonTestCase.test_basic_auth_unicode  s    JJwfGJLLQ%	
 	
 	
 (88JJwhjJQQV)	
 	
 	
 	
 	
r+   c           	         t          t          dd          5  |                     t          t          f          5  |                     ddddd	           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nzuncaught exceptionFrequiredr   r   r   rT   T)r   r   r   raise_error)r   r   assertRaises
ValueErrorr   r   r6   s    r)   test_unsupported_auth_modez3HTTPClientCommonTestCase.test_unsupported_auth_mode+  s    w 4uEEE 	 	""J	#:;;  

"+"/$ $                  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s4   "A9A!A9!A%	%A9(A%	)A99A= A=c                    |                      dd          }|                     d|j                   |                     |j        d                             d                     |                      d          }|                     d|j                   |                     |j                            d                     |                     d	|j                   d S )
Nz/countdown/2Ffollow_redirects.  Locationz/countdown/1r   z/countdown/0s   Zero)r   r   r   
assertTruer^   endswitheffective_urlr@   r   s     r)   test_follow_redirectz-HTTPClientCommonTestCase.test_follow_redirect9  s    ::nu:EEhm,,,(4==nMMNNN::n--hm,,,.77GGHHH(-00000r+   c                 j    |                      dd          }|                     d|j                   d S )Nr   Tr  rO   r   r   r   r   s     r)   test_redirect_without_locationz7HTTPClientCommonTestCase.test_redirect_without_locationC  s8    :::T:RR
 	hm,,,,,r+   c                 l    |                      ddd          }|                     |j        d           d S )N/redirect?url=/put&status=307PUThellor      Put body: hellor   r   r@   r   s     r)   test_redirect_put_with_bodyz4HTTPClientCommonTestCase.test_redirect_put_with_bodyK  sB    ::+E  
 
 	(:;;;;;r+   c                 l    |                      ddd          }|                     |j        d           d S )Nr  r  Tr   allow_nonstandard_methodss
   Put body: r  r   s     r)   test_redirect_put_without_bodyz7HTTPClientCommonTestCase.test_redirect_put_without_bodyQ  sC    ::+&*  
 

 	66666r+   c                 4   dD ]}d|z  }|                      |dd          }|                     d|j                   dD ]q}|                      ||d	          }|d
v r)|                     t          |          |j                   G|                     |j        t          |          dg           r|                      |d          }|                     d|j                   |                     d|j                   dD ]}d}dD ]B}|                      ||d	          }|                     |t          |j                             C|                      |d          }|                     d|j                   |                     d|j                   d S )N)rO   r  i/  z$/redirect?url=/all_methods&status=%dr   r+   r   s   GET)GETOPTIONSr  DELETETr   )rO   r  HEADr   r   )i3  i4  z%/redirect?url=/all_methods&status=307)r$  r%  r   r  r&  )r   r   r@   r   assertInr   r   )r(   rF   r   r   r   s        r)   test_method_after_redirectz3HTTPClientCommonTestCase.test_method_after_redirectZ  s   % 	- 	-F86AC::c&s:;;DVTY/// > E Ezz#fPTzUUZ''$$T&\\49====MM$)d6llF-CDDDD ::c&:11DS$),,,S$),,,, ! 	- 	-F9CE @ @zz#fPTzUU  DI)>)>????::c&:11DS$),,,S$),,,,	- 	-r+   c                     |                      d                              dd          }|                     |          }|                     dt	          j        d          z   |j                   d S )Nr   zhttp://zhttp://me:secret@s   Basic s	   me:secret)get_urlr   r   r   base64	b64encoder@   )r(   r   r   s      r)   test_credentials_in_urlz0HTTPClientCommonTestCase.test_credentials_in_urlx  sa    ll7##++I7JKK::c??V%5l%C%CCX]SSSSSr+   c                 X   d}t          j        d          }|                     dd|ddi          }|                     |j        d         d	           |                     |j        t          |                     |                     dd|ddi          }|                     |j        d         d
           |                     |j        |           |                     dd|ddid          }|                     |j        d         d
           |                     |j        |           d S )N   és   e9r   r   r#   zapplication/blah)r   r@   r^   rs   21foo)r   r@   r^   
user_agent)binasciia2b_hexr   r   r^   r@   r   )r(   unicode_body	byte_bodyr   s       r)   test_body_encodingz+HTTPClientCommonTestCase.test_body_encoding}  sW   $U++	 ::#%78	  
 
 	)*:;SAAA\(:(:;;; ::#%78	  
 
 	)*:;SAAA	222 ::#%78  
 
 	)*:;SAAA	22222r+   c                    |                      d          }|                     t          |j                  t                     |                     t          |j        d                   t                     |                     t          |j                  t                     |                     t          |j	                  t                     d S )Nr   r#   )
r   r   typer@   bytesr^   strr   rI   r  r   s     r)   
test_typesz#HTTPClientCommonTestCase.test_types  s    ::h''hm,,e444h.~>??EEEhm,,c222h455s;;;;;r+   c                    |                      ddddi          }|                     |j        d         d           |                     |j        d           |                     t          |j                  d           t          j        d	|j        
          }|                     |	                                d           d S )Nr   FzAccept-Encodingr   )decompress_responser^   r   r   "   r)modefileobj)
r   r   r^   assertNotEqualr@   lenr   GzipFilebufferread)r(   r   fs      r)   	test_gzipz"HTTPClientCommonTestCase.test_gzip  s     ::%:KV9T  
 
 	)*<=vFFFHM;777 	X]++R000MsHO<<<;/////r+   c                 0   t          t          dd          5  	 |                     d          }|                     |j        d           |                     |j        d d         d           n# t          $ r Y nw xY wd d d            d S # 1 swxY w Y   d S )Nz*(Uncaught exception|Exception in callback)Fr  r   r      s   Hello World 0
)r   r   r   r   r   r@   r   r   s     r)   test_invalid_gzipz*HTTPClientCommonTestCase.test_invalid_gzip  s     AE
 
 
 	 	::o66  444  ss!35GHHHH   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   BAA.-B.
A;8B:A;;BBBc                     g i g fd} fd}                      d||                                t                    d                                d         d                                dd	g           d S )
Nc                 "   |                      d          rd S |                      d          r                    |            d S | dk    rD|                     dd          \  }}|                                |                                <   d S d S )NzHTTP/1.1 101HTTP/z
:rc   )
startswithr   splitstriplower)header_liner   r   
first_liner^   s      r)   header_callbackzFHTTPClientCommonTestCase.test_header_callback.<locals>.header_callback  s    %%n55 /''00 /!!+.....&&"((a001%&WWYY		""" '&r+   c                 j                         d         d                               |            d S )Nzcontent-typeztext/html; charset=UTF-8)r   r   )chunkr   r^   r(   s    r)   r   zIHTTPClientCommonTestCase.test_header_callback.<locals>.streaming_callback  s9     W^46PQQQMM%     r+   r   )rZ  r   rc   r   zHTTP/[0-9]\.[0-9] 200.*
r   r   )r   r   rG  assertRegex)r(   rZ  r   r   rY  r^   s   `  @@@r)   test_header_callbackz-HTTPClientCommonTestCase.test_header_callback  s    
	/ 	/ 	/ 	/ 	/ 	/	! 	! 	! 	! 	! 	! 	! 	

+1 	 	
 	
 	

 	Z!Z888A(FGGG'7!344444r+   c                     t                      fd}|                     d|                                           D ]3\  }}|                     ||                                k    ||f           4d S )Nc                 `    |                      d          rd S                     |            d S )NrR  )rT  
parse_line)liner^   s    r)   rZ  zTHTTPClientCommonTestCase.test_header_callback_to_parse_line.<locals>.header_callback  s6    w'' t$$$$$r+   r   )rZ  )r   r   get_allr  rV  )r(   rZ  r   r   r^   s       @r)   "test_header_callback_to_parse_linez;HTTPClientCommonTestCase.test_header_callback_to_parse_line  s    
 --	% 	% 	% 	% 	% 	

8_
===OO%% 	4 	4DAqOOANQF3333	4 	4r+   c              #   J  K   t          dd          }| j                            d|          }	 |                    |                     d                    V }|                     |j        d           |                                 d S # |                                 w xY w)NTestDefaultUserAgentF)r5  
allow_ipv6T)force_instancedefaultsr   s   TestDefaultUserAgent)dicthttp_client	__class__r   r,  r   r@   r   )r(   ri  clientr   s       r)   test_configure_defaultsz0HTTPClientCommonTestCase.test_configure_defaults  s      #9eLLL!++4(+SS	#\\$,,}*E*EFFFFHX],CDDDLLNNNNNFLLNNNNs   AB B"c                     dD ]c}t           t          fD ]R} |            }||d<   |                     d|          }|                     |j        dd|j        d|d|           Sdd S )	N)MyUserAgent   MyUserAgentrn   r   r^   rq  z	response=z, value=z, container=)rj  r   r   r   r@   )r(   value	containerr^   r   s        r)   test_header_typesz*HTTPClientCommonTestCase.test_header_types  s    
 5 
	 
	E"K0 	 		#)++(-%zz-zAA  I"Nyyy%%%4   		
	 
	r+   c                 ,    t                      \  }}t          |          5  t          j         fd            }t	          j        ||           	                      d|z            }|                                                      |j	        d         d            j
                            |                                           n1#  j
                            |                                           w xY w	 d d d            d S # 1 swxY w Y   d S )Nc              3     K   t          |           }|                    d          V }d|vr                    d           |                    d                    dd                    V  |                                 d S )Nr   r   r   s2   HTTP/1.1 200 OK
X-XSS-Protection: 1;
	mode=block

r   r   r   r   s       r)   r   zIHTTPClientCommonTestCase.test_multi_line_headers.<locals>.accept_callback  s      !$%+%6%6{%C%CCC\11MM"5666ll
 Gw 	 	 	 	 	 r+   r   zX-XSS-Protectionz1; mode=block)r   r   r   rY   r   r   r   r   r   r^   r   r   r   r   s   `    r)   test_multi_line_headersz0HTTPClientCommonTestCase.test_multi_line_headers  sM    &''
dT]] 	; 	;]    ]" &t_===;zz"84"?@@  .@!A?SSS++DKKMM::::++DKKMM:::::5	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s*   -D	AC
-D	
.C88D		DDc              #      K   | j                             |                     d          ddi          V }|                     |j        d                    d                     d S )Nr   r   u   bärrr  r   )rk  r   r,  r   r@   r   r   s     r)   test_header_encodingz-HTTPClientCommonTestCase.test_header_encoding2  ss      )//LL+,,x 0 
 
 
 
 	(D(DEEEEEr+   c                     |                      d          }|                     |j        d           |                     |j        d         d           d S )Nr   rr   rs   42)r   r   r   r^   r   s     r)   test_304_with_content_lengthz5HTTPClientCommonTestCase.test_304_with_content_length<  sS    
 ::899,,,)*:;TBBBBBr+   c              #      K   | j                             |                     d                    V }|                     |j        d           d S Nr   r   rk  r   r,  r   r@   r   s     r)   test_future_interfacez.HTTPClientCommonTestCase.test_future_interfaceE  sL      )//X0F0FGGGG88888r+   c              #     K   |                      t                    5 }| j                            |                     d                    V  d d d            n# 1 swxY w Y   |j        J |j        j        J |                     |j        j        d           |                     |j        j        j        d           d S N	/notfound  )	r	  r   rk  r   r,  	exceptionr   r   r   )r(   contexts     r)   test_future_http_errorz/HTTPClientCommonTestCase.test_future_http_errorJ  s     y)) 	DW"((k)B)BCCCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D ,,, )555*/555*38#>>>>>s   0AA Ac              #      K   | j                             |                     d          d          V }|                     |j        d           d S )Nr  F)r  r  )rk  r   r,  r   r   r   s     r)   test_future_http_error_no_raisez8HTTPClientCommonTestCase.test_future_http_error_no_raiseS  s^      )//LL%%5 0 
 
 
 
 	,,,,,r+   c              #   ~  K   |                      d          }| j                            |          V }|                     |j        j        |           |                     t          |j        t                               | j                            |j                  V }|                     |j	        d           d S r  )
r,  rk  r   r   r?   r   r  
isinstancer	   r@   )r(   r   r   	response2s       r)    test_reuse_request_from_responsez9HTTPClientCommonTestCase.test_reuse_request_from_responseZ  s       ll8$$)//4444)-s333
8#3[AABBB*001ABBBB	99999r+   c              #     K   |                      d          }t          |d          }| j                            |          V }|                     |j        d           |                     t          t          f          5 }t          |d          }| j                            |          V  d d d            n# 1 swxY w Y   | 	                    dt          |j                             d S )Nr   z	127.0.0.1network_interfacer   znot-interface-or-ip)r,  r	   rk  r   r   r   r	  r
  r   r)  r>  r  )r(   r   r?   r   r  s        r)   test_bind_source_ipz,HTTPClientCommonTestCase.test_bind_source_ipg  s      ll8$$c[AAA)//8888,,,
I677 	27!#9NOOOG"((11111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	+S1B-C-CDDDDDs   .B;;B?B?c                    dD ]A}|                      d|          }|                     |j        t          |                     BdD ]B}|                      d|d          }|                     |j        t          |                     C|                      dd          }|                     |j        d           |                      ddd	
          }|                     |j        d           d S )Nr$  r&  r%  r   r(  r   r  r   r+   r   r'  r}   Tr   s   OTHER)r   r   r@   r   )r(   r   r   s      r)   test_all_methodsz)HTTPClientCommonTestCase.test_all_methodss  s    2 	: 	:Fzz.z@@HX]DLL9999. 	: 	:Fzz.czJJHX]DLL9999::nV:<<,,,::7d  
 
 	11111r+   c                    dD ]}|                      t                    5 }|                     d|d           d d d            n# 1 swxY w Y   |                     dt	          |j                             |                     d|d          }|                     |j        d           dD ]}|                      t                    5 }|                     d|d	d
           d d d            n# 1 swxY w Y   |                     dt	          |j                             |dk    r5|                     d|d	dd           |                     |j        d           d S )Nr  r   T)r   r  zmust not be Noner   r   r  r   )r   r@   r  zmust be Noner$  )r   r@   r!  r  )r	  r
  r   r)  r>  r  r   r   )r(   r   r  r   s       r)   test_body_sanity_checksz0HTTPClientCommonTestCase.test_body_sanity_checks  s   . 	- 	-F"":.. L'

>&d
KKKL L L L L L L L L L L L L L LMM,c'2C.D.DEEE::v   D TY,,,, 3 	1 	1F"":.. '

"6T                   MM.#g.?*@*@AAA 

"! .2 $       C000#	1 	1s#   AA	A		C//C3	6C3	c                     |                      ddd          }|                                 |                     |j        d           d S )Nz/redirect?status=307&url=/putr  s   hellor   r  )r   r   r   r@   r   s     r)   test_put_307z%HTTPClientCommonTestCase.test_put_307  sT    ::+E  
 
 	(:;;;;;r+   c                     |                      d          }|                                 |                     |j        d         t	          d                     d S )Nz/set_header?k=foo&v=%E9r   r1  )r   r   r   r^   r   r   s     r)   test_non_ascii_headerz.HTTPClientCommonTestCase.test_non_ascii_header  sR    ::788)%0*X2F2FGGGGGr+   c                 ^   t          j                     }|                     d          }|                                 |                     |j                   |j        J |                     |j        d           |                     |j        d           |                     |j                   |j        J |                     t          |j        |z
            d           |j	        
                                D ]/\  }}|                     d|cxk    odk     nc d| d|            0d S )Nr   r   g      ?z
time_info[z] out of bounds: )timer   r   assertIsNotNoner   assertGreaterEqual
assertLess
start_timeabs	time_infoitemsr  )r(   r  r   r   r   s        r)   test_response_timesz,HTTPClientCommonTestCase.test_response_times  s@    Y[[
::h''X2333$000 5q999-s333 	X0111"...H/*<==sCCC&,,.. 	P 	PDAqOOALLLLSLLLL*Nq*N*N1*N*NOOOO	P 	Pr+   c                 4   |                      dd          }|                     |j        d           |                      dd          }|                     |j        d           |                      ddd          }|                     |j        d           d S )Nr   r   )connect_timeoutr   )request_timeout)r  r  r  r   s     r)   test_zero_timeoutz*HTTPClientCommonTestCase.test_zero_timeout  s    ::h:::,,,::h:::,,,::h1:MM,,,,,r+   c              #   p  K   | j                             |                     d                    }|                     |                                           t          t          d          5 }t          d          D ]!}t          j	        d          V  |j
        r n"d d d            d S # 1 swxY w Y   d S )Nz/404z$Exception after Future was cancelledd   rU   )rk  r   r,  r  cancelr   r   r   r   rX   logged_stack)r(   futelr   s       r)   test_error_after_cancelz0HTTPClientCommonTestCase.test_error_after_cancel  s      $$T\\&%9%9::

%%%w FGG 	2
 3ZZ  ioo%%%? E	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ,2B++B/2B/c                    dD ]\  }}|                      |d          5  |                     t                    5  |                     dd|i           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                      |d          5  |                     t                    5  |                     d|di           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )N))zfoobar:cr)zfoo
bar:lf)z	foo
bar:crlfrs  )r!   positionr   r4  rr  key)subTestr	  r
  r   )r(   headerr!   s      r)   test_header_crlfz)HTTPClientCommonTestCase.test_header_crlf  sJ   
 
	B 
	BLFD
 4':: B B&&z22 B BJJx%JAAAB B B B B B B B B B B B B B BB B B B B B B B B B B B B B B 4%88 B B&&z22 B BJJx&%JAAAB B B B B B B B B B B B B B BB B B B B B B B B B B B B B B
	B 
	Bsj   A7A A7 A$$A7'A$(A77A;	>A;	C14CC1CC1!C"C11C5	8C5	N)-r-   r.   r/   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r"  r*  r/  r:  r?  rL  rO  r^  rd  r   rn  ru  rx  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r0   r+   r)   r   r      s       
 
 
.. . .	7 	7 	7( ( (F F F
( ( (#7 #7 #7J
 
 
	
 	
 	

 
 
  1 1 1- - -< < <7 7 7- - -<T T T
"3 "3 "3H< < <0 0 0"  5 5 5>4 4 4"   X  "; ; ;@ F F XFC C C 9 9 X9 ? ? X? - - X- 
: 
: X
: 	E 	E X	E2 2 21 1 1`< < <H H HP P P(- - -   XB B B B Br+   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )RequestProxyTestc                     t          t          dd          t                                }|                     |j        d           d S )Nhttp://example.com/r4  )r5  )r   r	   rj  r   r5  r(   proxys     r)   test_request_setz!RequestProxyTest.test_request_set  sI    -%@@@$&&
 
 	)511111r+   c                     t          t          d          t          d                    }|                     |j        d           d S )Nr  r4  r  )r   r	   rj  r   r  r  s     r)   test_default_setz!RequestProxyTest.test_default_set  sK    -..u0M0M0M
 
 	0%88888r+   c                     t          t          dd          t          d                    }|                     |j        d           d S )Nr  r4  )
proxy_hostbar)r   r	   rj  r   r  r  s     r)   test_both_setzRequestProxyTest.test_both_set  sQ    -%@@@$RWBXBXBX
 
 	)511111r+   c                     t          t          d          t                                }|                     |j                   d S Nr  )r   r	   rj  assertIsNoner   r  s     r)   test_neither_setz!RequestProxyTest.test_neither_set  s;    k*?@@$&&II%-.....r+   c                     t          t          d          t                                }|                     t                    5  |j         d d d            d S # 1 swxY w Y   d S r  )r   r	   rj  r	  AttributeErrorr4  r  s     r)   test_bad_attributez#RequestProxyTest.test_bad_attribute  s    k*?@@$&&II~.. 	 	II	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA Ac                 t    t          t          d          d           }|                     |j                   d S r  )r   r	   r  r   r  s     r)   test_defaults_nonez#RequestProxyTest.test_defaults_none  s7    k*?@@$GG%-.....r+   N)	r-   r.   r/   r  r  r  r  r  r  r0   r+   r)   r  r    sn        2 2 29 9 92 2 2/ / /  
/ / / / /r+   r  c                       e Zd Zd ZdS )HTTPResponseTestCasec                     t          t          d          dt                                }t          |          }|                     |                    d                     |                     d|           d S )Nhttp://example.comr   )rI  zHTTPResponse(zcode=200)r
   r	   r   r>  r  rT  r)  )r(   r   ss      r)   test_strzHTTPResponseTestCase.test_str  so    ,--s799
 
 
 MM_55666j!$$$$$r+   N)r-   r.   r/   r  r0   r+   r)   r  r    s#        % % % % %r+   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )SyncHTTPClientTestc                 L    t          d           _        t          j                    t          j         fd             fd}t          j        |           _         j                                         	                                 t                       _        d S )NF)make_currentc                      t                      \  } _        t          dt          fg          }t	          |          _        j                            |                                             d S )N/)r   r   r   r   r   server
add_socketset)r   appeventr(   s     r)   init_serverz-SyncHTTPClientTest.setUp.<locals>.init_server+  s^    .00OD$)%67899C$S//DKK""4(((IIKKKKKr+   c                  n    j                                         j                                          d S rj   )server_iolooprun_syncstart)r  r(   s   r)   r  z'SyncHTTPClientTest.setUp.<locals>.start3  s5    ''444$$&&&&&r+   )target)r   r  	threadingEventr   rY   Threadserver_threadr  waitr   rk  )r(   r  r  r  s   ` @@r)   setUpzSyncHTTPClientTest.setUp'  s    #777!!		 	 	 	 	 
		' 	' 	' 	' 	' 	' '-U;;;  """

%<<r+   c                       fd} j                             |            j                                          j                                          j                             d           d S )Nc                      j                                          t          j        fd            } j                            |            d S )Nc               3      K   j                                         V  t          d          D ]} d V  j                                         d S )N   )r  close_all_connectionsr   r  stop)r   r(   s    r)   	slow_stopzCSyncHTTPClientTest.tearDown.<locals>.stop_server.<locals>.slow_stopF  s^      k7799999 q  AEEEE"'')))))r+   )r  r  r   rY   r  add_callback)r  r(   s    r)   stop_serverz0SyncHTTPClientTest.tearDown.<locals>.stop_server>  s]    K ]* * * * ]* ++I66666r+   T)all_fds)r  r  r  r   rk  r   )r(   r  s   ` r)   tearDownzSyncHTTPClientTest.tearDown=  s    	7 	7 	7 	7 	7& 	''444!!!      .....r+   c                     d| j         |fz  S )Nzhttp://127.0.0.1:%d%s)r   )r(   paths     r)   r,  zSyncHTTPClientTest.get_urlV  s    &$)T):::r+   c                     | j                             |                     d                    }|                     d|j                   d S )Nr  r   r  r   s     r)   test_sync_clientz#SyncHTTPClientTest.test_sync_clientY  sB    #))$,,s*;*;<<(-88888r+   c                    |                      t                    5 }| j                            |                     d                     d d d            n# 1 swxY w Y   |                     |j        j        d           d S r  )r	  r   rk  r   r,  r   r  r   )r(   	assertions     r)   test_sync_client_errorz)SyncHTTPClientTest.test_sync_client_error]  s     y)) 	>Y""4<<#<#<===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>,1377777s   .AAAN)r-   r.   r/   r  r  r,  r  r  r0   r+   r)   r  r  &  s_        ( ( (,/ / /2; ; ;9 9 98 8 8 8 8r+   r  c                       e Zd Zd ZdS )SyncHTTPClientSubprocessTestc                 $   t          j        t          j        ddgt           j        t           j        dd          }|j        r0t          d           t          t          |j                             |j        r| 	                    d           d S d S )Nz-czMfrom tornado.httpclient import HTTPClient; f = lambda: None; c = HTTPClient()T   )stdoutstderrchecktimeoutzSTDOUT:z%subprocess produced unexpected output)

subprocessrunsys
executablePIPESTDOUTr  printr   fail)r(   procs     r)   test_destructor_logz0SyncHTTPClientSubprocessTest.test_destructor_logf  s     ~_
 ?$

 

 

 ; 	+)*T[))***; 	?II=>>>>>	? 	?r+   N)r-   r.   r/   r  r0   r+   r)   r  r  e  s#        ? ? ? ? ?r+   r  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	HTTPRequestTestCasec                 f    t          dddi          }|                     |j        ddi           d S )Nr  r4  r  rr  )r	   r   r^   r(   r?   s     r)   test_headersz HTTPRequestTestCase.test_headers  s;    2UENKKK5%.99999r+   c                 p    t          d          }ddi|_        |                     |j        ddi           d S )Nr  r  bazr	   r^   r   r  s     r)   test_headers_setterz'HTTPRequestTestCase.test_headers_setter  s=    233 %.5%.99999r+   c                 h    t          d          }d |_        |                     |j        i            d S )Nr  r  r  s     r)   test_null_headers_setterz,HTTPRequestTestCase.test_null_headers_setter  s5    233"-----r+   c                 x    t          dd          }|                     |j        t          d                     d S )Nr  r4  )r@   )r	   r   r@   r   r  s     r)   	test_bodyzHTTPRequestTestCase.test_body  s9    2???tE{{33333r+   c                     t          d          }d|_        |                     |j        t          d                     d S )Nr  r4  )r	   r@   r   r   r  s     r)   test_body_setterz$HTTPRequestTestCase.test_body_setter  s;    233tE{{33333r+   c                     t           j                             t           j        j                  }t	          d|          }|                     |j        dt          |          i           d S Nr  )if_modified_sincezIf-Modified-Since)datetimenowtimezoneutcr	   r   r^   r   r(   	http_dater?   s      r)   test_if_modified_sincez*HTTPRequestTestCase.test_if_modified_since  si    %))(*;*?@@	2iPPPO13CI3N3NO	
 	
 	
 	
 	
r+   c                    t                      5  t          j                                        }d d d            n# 1 swxY w Y   t          d|          }|                     |j        dt          |          i           d S r"  )r   r$  utcnowr	   r   r^   r   r(  s      r)   'test_if_modified_since_naive_deprecatedz;HTTPRequestTestCase.test_if_modified_since_naive_deprecated  s    !! 	3 	3 )0022I	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	32iPPPO13CI3N3NO	
 	
 	
 	
 	
s   :>>N)
r-   r.   r/   r  r  r  r  r   r*  r-  r0   r+   r)   r  r    s}        : : :: : :
. . .
4 4 44 4 4

 
 

 
 
 
 
r+   r  c                        e Zd Zd Zd Zd ZdS )HTTPErrorTestCasec                     t          d          }t          j        |          }|                     ||           |                     |j        |j                   d S )N  )r   copyassertIsNotr   r   )r(   ee2s      r)   	test_copyzHTTPErrorTestCase.test_copy  sP    cNNYq\\B)))))r+   c                     t          d          }|                     t          |          d           |                     t          |          d           d S )Nr1  HTTP 403: Forbidden)r   r   r>  repr)r(   r4  s     r)   test_plain_errorz"HTTPErrorTestCase.test_plain_error  sM    cNNQ!6777a"788888r+   c                 f   t          t          d          d          }|                     t                    5 }|                                 d d d            n# 1 swxY w Y   |j        }|                     t          |          d           |                     t          |          d           d S )Nr  r1  r8  )	r
   r	   r	  r   r   r  r   r>  r9  )r(   r   cmr4  s       r)   test_error_with_responsez*HTTPErrorTestCase.test_error_with_response  s    K(=>>DDy)) 	RLLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	LQ!6777a"788888s   AA AN)r-   r.   r/   r6  r:  r=  r0   r+   r)   r/  r/    sA        * * *9 9 9
9 9 9 9 9r+   r/  )Lr-  r6  
contextlibr   r2  r   r  r$  ior   r  r
  r  typingr  unittesttornado.escaper   r   r   tornador   tornado.httpclientr	   r
   r   r   r   tornado.httpserverr   tornado.ioloopr   tornado.iostreamr   tornado.logr   r   r   tornado.testingr   r   r   r   tornado.test.utilr   tornado.webr   r   r   tornado.httputilr   r   r   r2   r;   rD   rM   rR   r[   r`   rh   rl   rp   rx   r|   r   r   r   r   TestCaser  r  r  r  r  r/  r0   r+   r)   <module>rN     s                            



        7 7 7 7 7 7 7 7 7 7                    * ) ) ) ) ) ! ! ! ! ! ! % % % % % % ( ( ( ( ( ( ( (       T T T T T T T T T T T T 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 : : : : : : : :( ( ( ( ( ( ( (
 
 
 
 
. 
 
 
& & & & & & & &
 
 
 
 
n 
 
 
    ^       >   ; ; ; ; ;. ; ; ;
    ~   & & & & &n & & &
Q Q Q Q Q~ Q Q Q
    n   & & & & &> & & &H H H H H H H H" " " " "~ " " "
 
 
 
 
 
 
 
E E E E EN E E ET	B T	B T	B T	B T	B0 T	B T	B T	Bn/ / / / /x( / / /B% % % % %8, % % %<8 <8 <8 <8 <8* <8 <8 <8~? ? ? ? ?8#4 ? ? ?<%
 %
 %
 %
 %
(+ %
 %
 %
P9 9 9 9 9) 9 9 9 9 9r+   