Ë
    êmxiÈ�  ã                   ó²  — 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jŠ                  «      ZF G d4„ d5ejŠ                  «      ZG G d6„ d7ejŠ                  «      ZH G d8„ d9ejŠ                  «      ZI G d:„ d;ejŠ                  «      ZJ G d<„ d=ejŠ                  «      ZKy)>é    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y)ÚHelloWorldHandlerc                 ót   — | j                  dd«      }| j                  dd«       | j                  d|z  «       y )NÚnameÚworldúContent-Typeú
text/plainz	Hello %s!)Úget_argumentÚ
set_headerÚfinish)Úselfr!   s     úS/home/htdocs/ttos/venv/lib/python3.12/site-packages/tornado/test/httpclient_test.pyÚgetzHelloWorldHandler.get%   s3   € Ø× Ñ  ¨Ó1ˆØ�‰˜¨Ô5Ø�‰�K $Ñ&Õ'ó    N©Ú__name__Ú
__module__Ú__qualname__r*   © r+   r)   r   r   $   s   „ ó(r+   r   c                   ó   — e Zd Zd„ Zy)ÚPostHandlerc                 ón   — | j                  d| j                  d«      ›d| j                  d«      ›�«       y )NzPost arg1: Úarg1z, arg2: Úarg2)r'   r%   ©r(   s    r)   ÚpostzPostHandler.post,   s/   € Ø�Šà× Ñ  Õ(¨$×*;Ñ*;¸FÔ*CðEõ	
r+   N©r-   r.   r/   r7   r0   r+   r)   r2   r2   +   ó   „ ó
r+   r2   c                   ó   — e Zd Zd„ Zy)Ú
PutHandlerc                 óp   — | j                  d«       | j                  | j                  j                  «       y )Nz
Put body: ©ÚwriteÚrequestÚbodyr6   s    r)   ÚputzPutHandler.put4   s$   € Ø�
‰
�<Ô Ø�
‰
�4—<‘<×$Ñ$Õ%r+   N)r-   r.   r/   rA   r0   r+   r)   r;   r;   3   ó   „ ó&r+   r;   c                   ó   — e Zd Zd„ Zy)ÚRedirectHandlerc           	      óœ   — | j                  d«       | j                  | j                  d«      t        | j                  dd«      «      ¬«       y )Nzredirects can have bodies toor   ÚstatusÚ302)rF   )r>   Úredirectr%   Úintr6   s    r)   ÚpreparezRedirectHandler.prepare:   sB   € Ø�
‰
Ð2Ô3Ø�‰Ø×Ñ˜eÓ$¬S°×1BÑ1BÀ8ÈUÓ1SÓ-Tð 	õ 	
r+   N©r-   r.   r/   rJ   r0   r+   r)   rD   rD   9   r9   r+   rD   c                   ó   — e Zd Zd„ Zy)ÚRedirectWithoutLocationHandlerc                 óF   — | j                  d«       | j                  «        y )Né-  )Ú
set_statusr'   r6   s    r)   rJ   z&RedirectWithoutLocationHandler.prepareB   s   € à�‰˜ÔØ�‰�r+   NrK   r0   r+   r)   rM   rM   A   s   „ ór+   rM   c                   ó0   — e Zd Zej                  d„ «       Zy)ÚChunkHandlerc              #   óž   K  — | j                  d«       | j                  «        t        j                  d«      –— | j                  d«       y ­w)NÚasdfç{®Gáz„?Úqwer)r>   Úflushr   Úsleepr6   s    r)   r*   zChunkHandler.getI   s5   è ø€ à�
‰
�6ÔØ�
‰
Œä�i‰i˜‹oÒØ�
‰
�6Õùs   ‚AAN)r-   r.   r/   r   Ú	coroutiner*   r0   r+   r)   rR   rR   H   s   „ Ø‡]�]ñó ñr+   rR   c                   ó   — e Zd Zd„ Zy)ÚAuthHandlerc                 óT   — | j                  | j                  j                  d   «       y )NÚAuthorization)r'   r?   Úheadersr6   s    r)   r*   zAuthHandler.getS   s   € Ø�‰�D—L‘L×(Ñ(¨Ñ9Õ:r+   Nr,   r0   r+   r)   r[   r[   R   s   „ ó;r+   r[   c                   ó   — e Zd Zd„ Zy)ÚCountdownHandlerc                 ó�   — t        |«      }|dkD  r%| j                  | j                  d|dz
  «      «       y | j                  d«       y )Nr   Ú	countdowné   ÚZero)rI   rH   Úreverse_urlr>   )r(   Úcounts     r)   r*   zCountdownHandler.getX   s;   € Ü�E“
ˆØ�1Š9Ø�M‰M˜$×*Ñ*¨;¸À¹	ÓBÕCà�J‰J�vÕr+   Nr,   r0   r+   r)   r`   r`   W   s   „ ór+   r`   c                   ó   — e Zd Zd„ Zy)ÚEchoPostHandlerc                 óN   — | j                  | j                  j                  «       y ©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y)ÚUserAgentHandlerc                 ón   — | j                  | j                  j                  j                  dd«      «       y )Nú
User-AgentzUser agent not set)r>   r?   r^   r*   r6   s    r)   r*   zUserAgentHandler.getf   s&   € Ø�
‰
�4—<‘<×'Ñ'×+Ñ+¨LÐ:NÓOÕPr+   Nr,   r0   r+   r)   rl   rl   e   s   „ óQr+   rl   c                   ó   — e Zd Zd„ Zd„ Zy)ÚContentLength304Handlerc                 óJ   — | j                  d«       | j                  dd«       y )Né0  úContent-Lengthé*   )rP   r&   r6   s    r)   r*   zContentLength304Handler.getk   s   € Ø�‰˜ÔØ�‰Ð(¨"Õ-r+   c                  ó   — y 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   s   „ ò.ór+   rp   c                   ó   — e Zd Zd„ Zy)ÚPatchHandlerc                 óN   — | j                  | j                  j                  «       y)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                   óP   — 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y)ÚAllMethodsHandler)ÚOTHERc                 ó~   — | j                   j                  €J ‚| j                  | j                   j                  «       y rj   )r?   Úmethodr>   r6   s    r)   r   zAllMethodsHandler.method~   s.   € Ø�|‰|×"Ñ"Ð.Ð.Ð.Ø�
‰
�4—<‘<×&Ñ&Õ'r+   N)r-   r.   r/   r   ÚSUPPORTED_METHODSr   r*   Úheadr7   rA   ÚdeleteÚoptionsrz   Úotherr0   r+   r)   r|   r|   {   sD   „ Ø&×8Ñ8¸:ÑEÐò(ð BHÐG€CÐGˆ$ÐG�ÐG˜ÐG˜fÐG wÐG°¹r+   r|   c                   ó   — e Zd Zd„ Zy)ÚSetHeaderHandlerc                 óœ   — t        | j                  d«      | j                  j                  d   «      D ]  \  }}| j	                  ||«       Œ y )NÚkÚv)ÚzipÚget_argumentsr?   Ú	argumentsr&   )r(   rˆ   r‰   s      r)   r*   zSetHeaderHandler.get†   sF   € ô ˜×*Ñ*¨3Ó/°·±×1GÑ1GÈÑ1LÓMò 	"‰DˆAˆqØ�O‰O˜A˜qÕ!ñ	"r+   Nr,   r0   r+   r)   r†   r†   …   s   „ ó"r+   r†   c                   ó   — e Zd Zdd„Zy)ÚInvalidGzipHandlerNc                 ó  — | j                  dd«       | j                  dd«       dj                  d„ t        d«      D «       «      d d }t        j                  |j                  «       d	¬
«      dz   }| j                  |«       y )Nr#   r$   úContent-EncodingÚgzipÚ c              3   ó(   K  — | ]
  }d |› d�–— Œ y­w)zHello World ú
Nr0   )Ú.0Úis     r)   ú	<genexpr>z)InvalidGzipHandler.get.<locals>.<genexpr>•   s   è ø€ ÒA°˜ a S¨Ô+ÑAùs   ‚i(#  i;F é   )Úcompressleveló    )r&   ÚjoinÚranger‘   ÚcompressÚencoder>   )r(   Útextr@   s      r)   r*   zInvalidGzipHandler.getŽ   sg   € à�‰˜¨Ô5Ø�‰Ð*¨FÔ3ð �w‰wÑA´U¸4³[ÔAÓAÀ'À6ÐJˆÜ�}‰}˜TŸ[™[›]¸!Ô<¸vÑEˆØ�
‰
�4Õr+   )ÚreturnNr,   r0   r+   r)   rŽ   rŽ   �   s   „ ô	r+   rŽ   c                   ó   — e Zd Zd„ Zy)ÚHeaderEncodingHandlerc                 ór   — | j                  | j                  j                  d   j                  d«      «       y )NÚFooú	ISO8859-1)r'   r?   r^   rž   r6   s    r)   r*   zHeaderEncodingHandler.get›   s(   € Ø�‰�D—L‘L×(Ñ(¨Ñ/×6Ñ6°{ÓCÕDr+   Nr,   r0   r+   r)   r¢   r¢   š   s   „ óE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„ 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,y*)+Ú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Ü�Gœ[Ó)Ü�FœJÓ'Ü�K¤Ó1ÜÐ0Ô2PÓQÜ�HœlÓ+Ü�Gœ[Ó)ÜÐ)Ô+;À+ÔNÜ�K¤Ó1Ü�MÔ#3Ó4ÜÐ.Ô0GÓHÜ�NÔ$5Ó6Ü�HœlÓ+Ü�MÔ#3Ó4Ü�OÔ%7Ó8ÜÐ&Ô(=Ó>ð!ð$ ô'
ð 	
r+   c                 ó    — d}| j                  dd|¬«      }| j                  |j                  d«       | j                  |j                  |«       y )Ns   some patch datar²   ÚPATCH©r   r@   éÈ   ©ÚfetchÚassertEqualÚcoder@   )r(   r@   Úresponses      r)   Útest_patch_receives_payloadz4HTTPClientCommonTestCase.test_patch_receives_payload¼   sC   € Ø!ˆØ—:‘:˜h¨w¸T�:ÓBˆØ×Ñ˜Ÿ™¨Ô,Ø×Ñ˜Ÿ™¨Õ-r+   c                 ó”  — | j                  d«      }| j                  |j                  d«       | j                  |j                  d   d«       | j                  |j                  d«       |j
                  €J ‚| j                  t        |j
                  «      d«       | j                  d«      }| j                  |j                  d«       y )	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Ø×Ñ˜Ÿ™¨Ô8Ø×$Ñ$Ð0Ð0Ð0Ø×Ñœ˜X×2Ñ2Ó3°QÔ7à—:‘:Ð/Ó0ˆØ×Ñ˜Ÿ™¨Õ6r+   c                 óž   — g }| j                  d|j                  ¬«      }| j                  |dg«       | j                  |j                  «       y )Nr©   ©Ústreaming_callbackrÁ   )r»   Úappendr¼   ÚassertFalser@   )r(   Úchunksr¾   s      r)   Útest_streaming_callbackz0HTTPClientCommonTestCase.test_streaming_callbackÍ   sB   € àˆØ—:‘:˜h¸6¿=¹=�:ÓIˆà×Ñ˜ /Ð!2Ô3Ø×Ñ˜Ÿ™Õ'r+   c                 óœ   — | j                  ddd¬«      }| j                  |j                  d«       | j                  |j                  d«       y )Nrª   ÚPOSTzarg1=foo&arg2=barr¸   r¹   s   Post arg1: foo, arg2: barrº   rÃ   s     r)   Ú	test_postz"HTTPClientCommonTestCase.test_postÕ   s@   € Ø—:‘:˜g¨fÐ;N�:ÓOˆØ×Ñ˜Ÿ™¨Ô,Ø×Ñ˜Ÿ™Ð(DÕEr+   c                 óú   — | j                  d«      }| j                  |j                  d«       g }| j                  d|j                  ¬«      }| j                  |ddg«       | j	                  |j                  «       y )Nr¬   ó   asdfqwerrÆ   ó   asdfó   qwer)r»   r¼   r@   rÈ   rÉ   )r(   r¾   rÊ   s      r)   Útest_chunkedz%HTTPClientCommonTestCase.test_chunkedÚ   sf   € Ø—:‘:˜hÓ'ˆØ×Ñ˜Ÿ™¨Ô4àˆØ—:‘:˜h¸6¿=¹=�:ÓIˆØ×Ñ˜ '¨7Ð!3Ô4Ø×Ñ˜Ÿ™Õ'r+   c                 óŽ  ‡ — t        «       \  }}t        |«      5  t        j                  ˆ fd„«       }t	        j
                  ||«       ‰ j                  d|z  «      }|j                  «        ‰ j                  |j                  d«       ‰ j                  j                  |j                  «       «       d d d «       y # 1 sw Y   y xY w)Nc              3   óÚ   •K  — t        | «      }|j                  d«      –—}d|vr‰j                  d«       |j                  dj	                  dd«      «      –— |j                  «        y ­w)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é   sl   øè ø€ ô " $›�Ø%+×%6Ñ%6°{Ó%CÑC�Ø \Ñ1Ø—M‘MÐ"5Ô6Ø—l‘lð
÷ �GØ˜wóóò ð —‘•ùó   ƒA(A+ú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ä�]‰]óó ðô0 ×&Ñ& t¨_Ô=Ø—:‘:Ð4°tÑ;Ó<ˆDØ�L‰LŒNØ×Ñ˜TŸY™Y¨Ô.Ø�L‰L×'Ñ'¨¯©«Ô6÷?	7÷ 	7ñ 	7ús   šBB;Â;Cc                 ó`   — | j                  | j                  ddd¬«      j                  d«       y )Nr­   ÚAladdinúopen sesame©Úauth_usernameÚauth_passwordó"   Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==©r¼   r»   r@   r6   s    r)   Útest_basic_authz(HTTPClientCommonTestCase.test_basic_auth  s0   € à×ÑØ�J‰JØ yÀð ó ç‰dØ1õ		
r+   c                 ób   — | j                  | j                  dddd¬«      j                  d«       y )Nr­   ró   rô   Úbasic)rö   r÷   Ú	auth_moderø   rù   r6   s    r)   Útest_basic_auth_explicit_modez6HTTPClientCommonTestCase.test_basic_auth_explicit_mode  s7   € Ø×ÑØ�J‰JØØ'Ø+Ø!ð	 ó ÷
 ‰dØ1õ	
r+   c                 óè   — | j                  | j                  ddd¬«      j                  d«       t        j                  dd«      }| j                  | j                  d|d¬«      j                  d	«       y )
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  sh   € à×ÑØ�J‰J�w¨fÀGˆJÓL×QÑQØ%ô	
ô ×(Ñ(¨°Ó8ˆØ×ÑØ�J‰J�w¨hÀjˆJÓQ×VÑVØ)õ	
r+   c           	      óÞ   — t        t        dd¬«      5  | j                  t        t        f«      5  | j                  ddddd¬	«       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)
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+  ss   € ô ”wÐ 4¸uÔEñ 	Ø×"Ñ"¤J´	Ð#:Ó;ñ Ø—
‘
ØØ"+Ø"/Ø$Ø $ð ô ÷÷	ð 	÷ð ú÷	ð 	ús"   “A#¯AÁA#ÁA 	ÁA#Á#A,c                 ó¢  — | j                  dd¬«      }| j                  d|j                  «       | j                  |j                  d   j                  d«      «       | j                  d«      }| j                  d|j                  «       | j                  |j                  j                  d«      «       | j                  d	|j                  «       y )
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�   € Ø—:‘:˜n¸u�:ÓEˆØ×Ñ˜˜hŸm™mÔ,Ø�‰˜×(Ñ(¨Ñ4×=Ñ=¸nÓMÔNà—:‘:˜nÓ-ˆØ×Ñ˜˜hŸm™mÔ,Ø�‰˜×.Ñ.×7Ñ7¸ÓGÔHØ×Ñ˜ (§-¡-Õ0r+   c                 ób   — | j                  dd¬«      }| j                  d|j                  «       y )Nr«   Tr  rO   ©r»   r¼   r½   rÃ   s     r)   Útest_redirect_without_locationz7HTTPClientCommonTestCase.test_redirect_without_locationC  s+   € Ø—:‘:Ð:ÈT�:ÓRˆð
 	×Ñ˜˜hŸm™mÕ,r+   c                 ód   — | j                  ddd¬«      }| j                  |j                  d«       y )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  s3   € Ø—:‘:Ø+°EÀð ó 
ˆð 	×Ñ˜Ÿ™Ð(:Õ;r+   c                 ód   — | j                  ddd¬«      }| j                  |j                  d«       y )Nr  r  T©r   Úallow_nonstandard_methodss
   Put body: r  rÃ   s     r)   Útest_redirect_put_without_bodyz7HTTPClientCommonTestCase.test_redirect_put_without_bodyQ  s4   € à—:‘:Ø+ØØ&*ð ó 
ˆð
 	×Ñ˜Ÿ™¨Õ6r+   c                 ó  — dD ]î  }d|z  }| j                  |dd¬«      }| j                  d|j                  «       dD ]g  }| j                  ||d¬	«      }|d
v r&| j                  t        |«      |j                  «       ŒA| j	                  |j                  t        |«      dg«       Œi | j                  |d¬«      }| j                  d|j
                  «       | j                  d|j                  «       Œð dD ]�  }d}dD ];  }| j                  ||d¬	«      }| j                  |t        |j                  «      «       Œ= | j                  |d¬«      }| j                  d|j
                  «       | j                  d|j                  «       Œ‘ y )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  ss  € à%ò 	-ˆFØ8¸6ÑAˆCØ—:‘:˜c¨&°s�:Ó;ˆDØ×Ñ˜V T§Y¡YÔ/ð >ò E�Ø—z‘z #¨fÐPT�zÓU�Ø˜ZÑ'Ø×$Ñ$¤T¨&£\°4·9±9Õ=à—M‘M $§)¡)¬d°6«l¸FÐ-CÕDðEð —:‘:˜c¨&�:Ó1ˆDØ×Ñ˜S $§)¡)Ô,Ø×Ñ˜S $§)¡)Õ,ð!	-ð& !ò 	-ˆFØ9ˆCØEò @�Ø—z‘z #¨fÐPT�zÓU�Ø× Ñ  ¬°D·I±IÓ)>Õ?ð@ð —:‘:˜c¨&�:Ó1ˆDØ×Ñ˜S $§)¡)Ô,Ø×Ñ˜S $§)¡)Õ,ñ	-r+   c                 óÌ   — | j                  d«      j                  dd«      }| j                  |«      }| j                  dt	        j
                  d«      z   |j                  «       y )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  sO   € Ø�l‰l˜7Ó#×+Ñ+¨IÐ7JÓKˆØ—:‘:˜c“?ˆØ×Ñ˜¤V×%5Ñ%5°lÓ%CÑCÀXÇ]Á]ÕSr+   c                 ó2  — d}t        j                  d«      }| j                  dd|ddi¬«      }| j                  |j                  d   d	«       | j                  |j
                  t        |«      «       | j                  dd|ddi¬«      }| j                  |j                  d   d
«       | j                  |j
                  |«       | j                  dd|ddid¬«      }| j                  |j                  d   d
«       | j                  |j
                  |«       y )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}  s*  € ØˆÜ×$Ñ$ UÓ+ˆ	ð —:‘:ØØØØ#Ð%7Ð8ð	 ó 
ˆð 	×Ñ˜×)Ñ)Ð*:Ñ;¸SÔAØ×Ñ˜Ÿ™¬¨\Ó(:Ô;ð —:‘:ØØØØ#Ð%7Ð8ð	 ó 
ˆð 	×Ñ˜×)Ñ)Ð*:Ñ;¸SÔAØ×Ñ˜Ÿ™¨	Ô2ð —:‘:ØØØØ#Ð%7Ð8Øð ó 
ˆð 	×Ñ˜×)Ñ)Ð*:Ñ;¸SÔAØ×Ñ˜Ÿ™¨	Õ2r+   c                 ót  — | j                  d«      }| j                  t        |j                  «      t        «       | j                  t        |j
                  d   «      t        «       | j                  t        |j                  «      t        «       | j                  t        |j                  «      t        «       y )Nr©   r#   )
r»   r¼   Útyper@   Úbytesr^   Ústrr½   rI   r  rÃ   s     r)   Ú
test_typesz#HTTPClientCommonTestCase.test_types¡  s}   € Ø—:‘:˜hÓ'ˆØ×Ñœ˜hŸm™mÓ,¬eÔ4Ø×Ñœ˜h×.Ñ.¨~Ñ>Ó?ÄÔEØ×Ñœ˜hŸm™mÓ,¬cÔ2Ø×Ñœ˜h×4Ñ4Ó5´sÕ;r+   c                 ór  — | j                  ddddi¬«      }| j                  |j                  d   d«       | j                  |j                  d«       | j                  t        |j                  «      d«       t        j                  d	|j                  ¬
«      }| j                  |j                  «       d«       y )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›   € ð —:‘:Ø¨%Ð:KÈVÐ9Tð ó 
ˆð 	×Ñ˜×)Ñ)Ð*<Ñ=¸vÔFØ×Ñ˜HŸM™M¨;Ô7ð 	×Ñœ˜XŸ]™]Ó+¨RÔ0Ü�M‰M˜s¨H¯O©OÔ<ˆØ×Ñ˜Ÿ™› ;Õ/r+   c                 ó
  — t        t        dd¬«      5  	 | j                  d«      }| j                  |j                  d«       | j                  |j
                  d d d«       d d d «       y # t        $ r Y Œw xY w# 1 sw Y   y xY w)Nz..*Malformed HTTP message.*unconsumed gzip dataFr  r³   r¹   é   s   Hello World 0
)r   r   r»   r¼   r½   r@   r   rÃ   s     r)   Útest_invalid_gzipz*HTTPClientCommonTestCase.test_invalid_gzip¹  s†   € ô ÜÐEÐPUô
ñ 	ðØŸ:™: oÓ6�Ø× Ñ  §¡°Ô4Ø× Ñ  §¡¨s°Ð!3Ð5GÔH÷	ð 	øô ò Ùðú÷	ð 	ús)   “A9•AA*Á*	A6Á3A9Á5A6Á6A9Á9Bc                 óä   ‡ ‡‡‡— g Ši Šg Šˆˆfd„}ˆˆˆ fd„}‰ j                  d||¬«       ‰ j                  t        ‰«      d‰«       ‰ j                  ‰d   d«       ‰ j                  ‰dd	g«       y )
Nc                 óè   •— | j                  d«      ry | j                  d«      r‰j                  | «       y | dk7  r7| j                  dd«      \  }}|j                  «       ‰|j	                  «       <   y y )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Ë  si   ø€ Ø×%Ñ% nÔ5àØ×'Ñ'¨Ô0Ø×!Ñ! +Õ.Ø Ò&Ø"×(Ñ(¨¨aÓ0‘��1Ø%&§W¡W£Y�˜Ÿ™›	Ò"ð 'r+   c                 óR   •— ‰j                  ‰d   d«       ‰j                  | «       y )Nzcontent-typeztext/html; charset=UTF-8)r¼   rÈ   )ÚchunkrÊ   r^   r(   s    €€€r)   rÇ   zIHTTPClientCommonTestCase.test_header_callback.<locals>.streaming_callbackÕ  s'   ø€ ð ×Ñ˜W ^Ñ4Ð6PÔQØ�M‰M˜%Õ r+   r¬   )r[  rÇ   rc   r   zHTTP/[0-9]\.[0-9] 200.*
rÑ   rÒ   )r»   r¼   rH  ÚassertRegex)r(   r[  rÇ   rÊ   rZ  r^   s   `  @@@r)   Útest_header_callbackz-HTTPClientCommonTestCase.test_header_callbackÆ  sz   û€ Øˆ
ØˆØˆõ	/ö	!ð 	�
‰
ØØ+Ø1ð 	ô 	
ð
 	×Ñœ˜Z›¨!¨ZÔ8Ø×Ñ˜ A™Ð(FÔGØ×Ñ˜ '¨7Ð!3Õ4r+   c                 óÄ   ‡— t        «       Šˆfd„}| j                  d|¬«       ‰j                  «       D ]*  \  }}| j                  ||j	                  «       k(  ||f«       Œ, y )Nc                 óL   •— | j                  d«      ry ‰j                  | «       y )NrS  )rU  Ú
parse_line)Úliner^   s    €r)   r[  zTHTTPClientCommonTestCase.test_header_callback_to_parse_line.<locals>.header_callbackì  s    ø€ Ø�‰˜wÔ'àØ×Ñ˜tÕ$r+   r©   )r[  )r   r»   Úget_allr  rW  )r(   r[  rˆ   r‰   r^   s       @r)   Ú"test_header_callback_to_parse_linez;HTTPClientCommonTestCase.test_header_callback_to_parse_lineå  sY   ø€ ô
 “-ˆô	%ð 	�
‰
�8¨_ˆ
Ô=Ø—O‘OÓ%ò 	4‰DˆAˆqØ�O‰O˜A §¡£™N¨Q°¨FÕ3ñ	4r+   c              #   ó(  K  — t        dd¬«      }| j                  j                  d|¬«      }	 |j                  | j	                  d«      «      –—}| j                  |j                  d«       |j                  «        y # |j                  «        w xY w­w)NÚTestDefaultUserAgentF)r6  Ú
allow_ipv6T)Úforce_instanceÚdefaultsr¯   s   TestDefaultUserAgent)ÚdictÚhttp_clientÚ	__class__r»   r-  r¼   r@   rß   )r(   rj  Úclientr¾   s       r)   Útest_configure_defaultsz0HTTPClientCommonTestCase.test_configure_defaultsö  st   è ø€ äÐ#9ÀeÔLˆà×!Ñ!×+Ñ+¸4È(Ð+ÓSˆð	Ø#Ÿ\™\¨$¯,©,°}Ó*EÓFÑFˆHØ×Ñ˜XŸ]™]Ð,CÔDà�L‰L�NøˆF�L‰L�Nüs   ‚+B®>A= Á,BÁ=BÂBc                 óÒ   — dD ]b  }t         t        fD ]Q  } |«       }||d<   | j                  d|¬«      }| j                  |j                  dd|j                  ›d|›d|›�«       ŒS Œd y )	N)ÚMyUserAgentó   MyUserAgentrn   r¯   ©r^   rr  z	response=z, value=z, container=)rk  r   r»   r¼   r@   )r(   ÚvalueÚ	containerr^   rð   s        r)   Útest_header_typesz*HTTPClientCommonTestCase.test_header_types  sr   € ð
 5ò 
	ˆEÜ"¤KÐ0ò 	�	Ù#›+�Ø(-�˜Ñ%Ø—z‘z -¸�zÓA�Ø× Ñ Ø—I‘IÙ"à—y“y¢%©ð4õñ		ñ
	r+   c                 óô  ‡ — t        «       \  }}t        |«      5  t        j                  ˆ fd„«       }t	        j
                  ||«       	 ‰ j                  d|z  «      }|j                  «        ‰ j                  |j                  d   d«       ‰ j                  j                  |j                  «       «       	 d d d «       y # ‰ j                  j                  |j                  «       «       w xY w# 1 sw Y   y xY w)Nc              3   óÚ   •K  — t        | «      }|j                  d«      –—}d|vr‰j                  d«       |j                  dj	                  dd«      «      –— |j                  «        y ­w)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  sj   øè ø€ ä! $›�Ø%+×%6Ñ%6°{Ó%CÑC�Ø \Ñ1Ø—M‘MÐ"5Ô6Ø—l‘lð÷
 �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  sÊ   ø€ ô &Ó'‰
ˆˆdÜ�T‹]ñ 	;ä�]‰]óó ðô" ×&Ñ& t¨_Ô=ð;Ø—z‘zÐ"8¸4Ñ"?Ó@�Ø—‘”Ø× Ñ  §¡Ð.@Ñ!AÀ?ÔSà—‘×+Ñ+¨D¯K©K«MÕ:÷5	;ð 	;øð4 —‘×+Ñ+¨D¯K©K«MÕ:ú÷5	;ð 	;ús$   š/C.Á
AC Â)C.Ã +C+Ã+C.Ã.C7c              #   óÂ   K  — | j                   j                  | j                  d«      ddi¬«      –—}| j                  |j                  dj                  d«      «       y ­w)Nr´   r¤   u   bÃ¤rrs  r¥   )rl  r»   r-  r¼   r@   rž   rÃ   s     r)   Útest_header_encodingz-HTTPClientCommonTestCase.test_header_encoding2  s\   è ø€ à×)Ñ)×/Ñ/Ø�L‰LÐ+Ó,à�xðð 0ó 
ñ 
ˆð 	×Ñ˜Ÿ™¨¯©¸Ó(DÕEùs   ‚AAc                 óœ   — | j                  d«      }| j                  |j                  d«       | j                  |j                  d   d«       y )Nr°   rr   rs   Ú42)r»   r¼   r½   r^   rÃ   s     r)   Útest_304_with_content_lengthz5HTTPClientCommonTestCase.test_304_with_content_length<  sC   € ð
 —:‘:Ð8Ó9ˆØ×Ñ˜Ÿ™¨Ô,Ø×Ñ˜×)Ñ)Ð*:Ñ;¸TÕBr+   c              #   óœ   K  — | j                   j                  | j                  d«      «      –—}| j                  |j                  d«       y ­w©Nr©   rÁ   ©rl  r»   r-  r¼   r@   rÃ   s     r)   Útest_future_interfacez.HTTPClientCommonTestCase.test_future_interfaceE  s<   è ø€ à×)Ñ)×/Ñ/°·±¸XÓ0FÓGÑGˆØ×Ñ˜Ÿ™¨Õ8ùs   ‚A
Ac              #   ó°  K  — | j                  t        «      5 }| j                  j                  | j	                  d«      «      –— d d d «       j
                  €J ‚|j
                  j                  €J ‚| j                  |j
                  j                  d«       | j                  |j
                  j                  j                  d«       y # 1 sw Y   Œ†xY w­w©Nú	/notfoundé”  )	r
  r   rl  r»   r-  Ú	exceptionr¾   r¼   r½   )r(   Úcontexts     r)   Útest_future_http_errorz/HTTPClientCommonTestCase.test_future_http_errorJ  s¶   è ø€ à×ÑœyÓ)ð 	D¨WØ×"Ñ"×(Ñ(¨¯©°kÓ)BÓCÒC÷	Dà× Ñ Ð,Ð,Ð,Ø× Ñ ×)Ñ)Ð5Ð5Ð5Ø×Ñ˜×*Ñ*×/Ñ/°Ô5Ø×Ñ˜×*Ñ*×3Ñ3×8Ñ8¸#Õ>÷	Dð 	Düs   ‚C˜-C
ÁBCÃ
CÃCc              #   ó    K  — | j                   j                  | j                  d«      d¬«      –—}| j                  |j                  d«       y ­w)Nr…  F)r	  r†  )rl  r»   r-  r¼   r½   rÃ   s     r)   Útest_future_http_error_no_raisez8HTTPClientCommonTestCase.test_future_http_error_no_raiseS  sJ   è ø€ à×)Ñ)×/Ñ/Ø�L‰L˜Ó%°5ð 0ó 
ñ 
ˆð 	×Ñ˜Ÿ™¨Õ,ùs   ‚AAc              #   óŒ  K  — | j                  d«      }| j                  j                  |«      –—}| j                  |j                  j
                  |«       | j                  t        |j                  t        «      «       | j                  j                  |j                  «      –—}| j                  |j                  d«       y ­wr€  )
r-  rl  r»   r¼   r?   r   r  Ú
isinstancer	   r@   )r(   r   r¾   Ú	response2s       r)   Ú test_reuse_request_from_responsez9HTTPClientCommonTestCase.test_reuse_request_from_responseZ  s—   è ø€ ð �l‰l˜8Ó$ˆØ×)Ñ)×/Ñ/°Ó4Ñ4ˆØ×Ñ˜×)Ñ)×-Ñ-¨sÔ3Ø�‰œ
 8×#3Ñ#3´[ÓAÔBØ×*Ñ*×0Ñ0°×1AÑ1AÓBÑBˆ	Ø×Ñ˜Ÿ™¨Õ9ùs   ‚CCc              #   ó¸  K  — | j                  d«      }t        |d¬«      }| j                  j                  |«      –—}| j	                  |j
                  d«       | j                  t        t        f«      5 }t        |d¬«      }| j                  j                  |«      –— d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w­w)Nr©   z	127.0.0.1©Únetwork_interfacer¹   znot-interface-or-ip)r-  r	   rl  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¶   è ø€ à�l‰l˜8Ó$ˆÜ˜c°[ÔAˆØ×)Ñ)×/Ñ/°Ó8Ñ8ˆØ×Ñ˜Ÿ™¨Ô,à×Ñ¤
¬IÐ6Ó7ð 	2¸7Ü! #Ð9NÔOˆGØ×"Ñ"×(Ñ(¨Ó1Ò1÷	2ð 	�‰Ð+¬S°×1BÑ1BÓ-CÕD÷	2ð 	2üs   ‚A3CÁ5+CÂ .CÃCÃCc                 óÀ  — dD ]:  }| j                  d|¬«      }| j                  |j                  t        |«      «       Œ< dD ];  }| j                  d|d¬«      }| j                  |j                  t        |«      «       Œ= | j                  dd¬«      }| j                  |j                  d«       | j                  ddd	¬
«      }| j                  |j                  d«       y )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Ø—z‘z .¸�zÓ@ˆHØ×Ñ˜XŸ]™]¬D°«LÕ9ð	:ð /ò 	:ˆFØ—z‘z .¸Àc�zÓJˆHØ×Ñ˜XŸ]™]¬D°«LÕ9ð	:ð —:‘:˜n°V�:Ó<ˆØ×Ñ˜Ÿ™¨Ô,Ø—:‘:Ø 7Àdð ó 
ˆð 	×Ñ˜Ÿ™¨Õ1r+   c                 ó~  — dD ]‰  }| j                  t        «      5 }| j                  d|d¬«       d d d «       | j                  dt	        j
                  «      «       | j                  d|d¬«      }| j                  |j                  d«       Œ‹ dD ]’  }| j                  t        «      5 }| j                  d|d	d¬
«       d d d «       | j                  dt	        j
                  «      «       |dk7  sŒa| j                  d|d	dd¬«       | j                  j                  d«       Œ” y # 1 sw Y   ŒøxY w# 1 sw Y   ŒuxY w)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÷Là�M‰MÐ,¬c°'×2CÑ2CÓ.DÔEà—:‘:Ø vÈð ó ˆDð ×Ñ˜TŸY™Y¨Õ,ð	-ð 3ò 	1ˆFØ×"Ñ"¤:Ó.ð °'Ø—
‘
Ø"¨6¸ÈTð ô ÷ð �M‰M˜.¬#¨g×.?Ñ.?Ó*@ÔAð ˜‹Ø—
‘
Ø"Ø!Ø Ø.2Ø $ð ô ð × Ñ  §¡¨CÕ0ñ#	1÷Lð Lú÷ð ús   ›D'Â)D3Ä'D0	Ä3D<	c                 ó„   — | j                  ddd¬«      }|j                  «        | j                  |j                  d«       y )Nz/redirect?status=307&url=/putr  s   hellor¸   r  )r»   ré   r¼   r@   rÃ   s     r)   Útest_put_307z%HTTPClientCommonTestCase.test_put_307±  s?   € Ø—:‘:Ø+°EÀð ó 
ˆð 	×ÑÔØ×Ñ˜Ÿ™Ð(:Õ;r+   c                 ó–   — | j                  d«      }|j                  «        | j                  |j                  d   t	        d«      «       y )Nz/set_header?k=foo&v=%E9r¤   r2  )r»   ré   r¼   r^   r   rÃ   s     r)   Útest_non_ascii_headerz.HTTPClientCommonTestCase.test_non_ascii_header¸  s=   € à—:‘:Ð7Ó8ˆØ×ÑÔØ×Ñ˜×)Ñ)¨%Ñ0´*¸XÓ2FÕGr+   c                 ób  — t        j                   «       }| j                  d«      }|j                  «        | j                  |j                  «       |j                  €J ‚| j                  |j                  d«       | j                  |j                  d«       | j                  |j                  «       |j                  €J ‚| j                  t        |j                  |z
  «      d«       |j                  j                  «       D ]+  \  }}| j                  d|cxk  xr dk  nc d|› d|› �«       Œ- y )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‘Y“[ˆ
Ø—:‘:˜hÓ'ˆØ×ÑÔØ×Ñ˜X×2Ñ2Ô3Ø×$Ñ$Ð0Ð0Ð0Ø×Ñ × 5Ñ 5°qÔ9Ø�‰˜×-Ñ-¨sÔ3ð 	×Ñ˜X×0Ñ0Ô1Ø×"Ñ"Ð.Ð.Ð.Ø�‰œ˜H×/Ñ/°*Ñ<Ó=¸sÔCà×&Ñ&×,Ñ,Ó.ò 	P‰DˆAˆqØ�O‰O˜A žL SœL¨J°q°cÐ9JÈ1È#Ð*NÕOñ	Pr+   c                 ó   — | j                  dd¬«      }| j                  |j                  d«       | j                  dd¬«      }| j                  |j                  d«       | j                  ddd¬«      }| j                  |j                  d«       y )Nr©   r   )Úconnect_timeoutr¹   )Úrequest_timeout)r©  rª  r  rÃ   s     r)   Útest_zero_timeoutz*HTTPClientCommonTestCase.test_zero_timeoutÒ  sv   € Ø—:‘:˜h¸�:Ó:ˆØ×Ñ˜Ÿ™¨Ô,à—:‘:˜h¸�:Ó:ˆØ×Ñ˜Ÿ™¨Ô,à—:‘:˜h¸È1�:ÓMˆØ×Ñ˜Ÿ™¨Õ,r+   c              #   óR  K  — | j                   j                  | j                  d«      «      }| j                  |j	                  «       «       t        t        d«      5 }t        d«      D ]'  }t        j                  d«      –— |j                  sŒ' n d d d «       y # 1 sw Y   y xY w­w)Nz/404z$Exception after Future was cancelledéd   rU   )rl  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Ó:ˆØ�‰˜Ÿ
™
›Ô%Ü”wÐ FÓGð 	È2ô
 ˜3“Zò �Ü—i‘i “oÒ%Ø—?“?Ùð÷	÷ 	ñ 	üs$   ‚AB'Á2BÂBÂ	B'ÂB$Â B'c                 ó´  — dD ]£  \  }}| j                  |d¬«      5  | j                  t        «      5  | j                  dd|i¬«       d d d «       d d d «       | j                  |d¬«      5  | j                  t        «      5  | j                  d|di¬«       d d d «       d d d «       Œ¥ y # 1 sw Y   ŒcxY w# 1 sw Y   ŒgxY w# 1 sw Y   Œ,xY w# 1 sw Y   ŒÔxY w)N))zfoobar:Úcr)zfoo
bar:Úlf)z	foo
bar:Úcrlfrt  )r!   Úpositionr©   r5  rs  Úkey)ÚsubTestr
  r  r»   )r(   Úheaderr!   s      r)   Útest_header_crlfz)HTTPClientCommonTestCase.test_header_crlfê  së   € ð
ò 
	B‰LˆF�Dð
 —‘ 4°'�Ó:ñ BØ×&Ñ&¤zÓ2ñ BØ—J‘J˜x°%¸°�JÔA÷B÷Bð —‘ 4°%�Ó8ñ BØ×&Ñ&¤zÓ2ñ BØ—J‘J˜x°&¸%°�JÔA÷B÷Bð Bñ
	B÷Bð Bú÷Bð Bú÷Bð Bú÷Bð BúsF   œB6²B*ÁB6Á+CÂCÂCÂ*B3Â/B6Â6B?	ÃCÃCÃC	N)-r-   r.   r/   rµ   r¿   rÄ   rË   rÎ   rÓ   rñ   rú   rþ   r  r  r  r  r  r#  r+  r0  r;  r@  rM  rP  r_  re  r   ro  rv  ry  r{  r~  r‚  r‰  r‹  r�  r“  r—  r™  r›  r�  r§  r«  r²  r»  r0   r+   r)   r§   r§   ¤   sU  „ ò
ò..ò	7ò(òFò
(ò#7òJ
ò	
ò
òò1ò-ò<ò7ò-ò<Tò
"3òH<ò0ò"ò5ò>4ð" ñó ðòò";ð@ ñFó ðFòCð ñ9ó ð9ð ñ?ó ð?ð ñ-ó ð-ð ñ
:ó ð
:ð ñ	Eó ð	Eò2ò1ò`<òHòPò(-ð ñó ðóBr+   r§   c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚRequestProxyTestc                 óz   — t        t        dd¬«      t        «       «      }| j                  |j                  d«       y )Núhttp://example.com/r5  )r6  )r   r	   rk  r¼   r6  ©r(   Úproxys     r)   Útest_request_setz!RequestProxyTest.test_request_setü  s3   € ÜÜÐ-¸%Ô@Ä$Ã&ó
ˆð 	×Ñ˜×)Ñ)¨5Õ1r+   c                 óz   — t        t        d«      t        d¬«      «      }| j                  |j                  d«       y )Nr¿  r5  r‘  )r   r	   rk  r¼   r’  rÀ  s     r)   Útest_default_setz!RequestProxyTest.test_default_set  s4   € ÜÜÐ-Ó.´ÀuÔ0Mó
ˆð 	×Ñ˜×0Ñ0°%Õ8r+   c                 ó~   — t        t        dd¬«      t        d¬«      «      }| j                  |j                  d«       y )Nr¿  r5  )Ú
proxy_hostÚbar)r   r	   rk  r¼   rÆ  rÀ  s     r)   Útest_both_setzRequestProxyTest.test_both_set  s7   € ÜÜÐ-¸%Ô@Ä$ÐRWÔBXó
ˆð 	×Ñ˜×)Ñ)¨5Õ1r+   c                 ót   — t        t        d«      t        «       «      }| j                  |j                  «       y ©Nr¿  )r   r	   rk  ÚassertIsNonerö   rÀ  s     r)   Útest_neither_setz!RequestProxyTest.test_neither_set  s*   € ÜœkÐ*?Ó@Ä$Ã&ÓIˆØ×Ñ˜%×-Ñ-Õ.r+   c                 óª   — t        t        d«      t        «       «      }| j                  t        «      5  |j
                   d d d «       y # 1 sw Y   y xY wrÊ  )r   r	   rk  r
  ÚAttributeErrorr5  rÀ  s     r)   Útest_bad_attributez#RequestProxyTest.test_bad_attribute  s@   € ÜœkÐ*?Ó@Ä$Ã&ÓIˆØ×Ñœ~Ó.ñ 	Ø�IŠI÷	÷ 	ñ 	ús   ³A	Á	Ac                 ód   — t        t        d«      d «      }| j                  |j                  «       y rÊ  )r   r	   rË  rö   rÀ  s     r)   Útest_defaults_nonez#RequestProxyTest.test_defaults_none  s(   € ÜœkÐ*?Ó@À$ÓGˆØ×Ñ˜%×-Ñ-Õ.r+   N)	r-   r.   r/   rÂ  rÄ  rÈ  rÌ  rÏ  rÑ  r0   r+   r)   r½  r½  û  s    „ ò2ò9ò2ò/òó
/r+   r½  c                   ó   — e Zd Zd„ Zy)ÚHTTPResponseTestCasec                 ó¼   — t        t        d«      dt        «       ¬«      }t        |«      }| j	                  |j                  d«      «       | j                  d|«       y )Núhttp://example.comr¹   )rJ  zHTTPResponse(zcode=200)r
   r	   r   r?  r  rU  r*  )r(   r¾   Úss      r)   Útest_strzHTTPResponseTestCase.test_str  sI   € ÜÜÐ,Ó-¨s¼7»9ô
ˆô �‹MˆØ�‰˜Ÿ™ _Ó5Ô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y)ÚSyncHTTPClientTestc                 ó:  ‡ ‡‡— t        d¬«      ‰ _        t        j                  «       Št        j
                  ˆˆ fd„«       Šˆˆ fd„}t        j                  |¬«      ‰ _        ‰ j                  j                  «        ‰j                  «        t        «       ‰ _        y )NF)Úmake_currentc                  óÄ   •— t        «       \  } ‰_        t        dt        fg«      }t	        |«      ‰_        ‰j
                  j                  | «       ‰j                  «        y )Nú/)r   rï   r   r   r   ÚserverÚ
add_socketÚset)rî   ÚappÚeventr(   s     €€r)   Úinit_serverz-SyncHTTPClientTest.setUp.<locals>.init_server+  sJ   ø€ ä.Ó0‰OˆD�$”)Ü Ô%6Ð7Ð8Ó9ˆCÜ$ S›/ˆDŒKØ�K‰K×"Ñ" 4Ô(Ø�I‰I�Kr+   c                  óp   •— ‰j                   j                  ‰ «       ‰j                   j                  «        y rj   )Úserver_ioloopÚrun_syncÚstart)rã  r(   s   €€r)   rç  z'SyncHTTPClientTest.setUp.<locals>.start3  s)   ø€ Ø×Ñ×'Ñ'¨Ô4Ø×Ñ×$Ñ$Õ&r+   )Útarget)r   rå  Ú	threadingÚEventr   rY   ÚThreadÚserver_threadrç  Úwaitr   rl  )r(   rç  râ  rã  s   ` @@r)   ÚsetUpzSyncHTTPClientTest.setUp'  sq   ú€ Ü#°Ô7ˆÔÜ—‘Ó!ˆä	�‰ô	ó 
ð	õ	'ô '×-Ñ-°UÔ;ˆÔØ×Ñ× Ñ Ô"Ø�
‰
Œä%›<ˆÕr+   c                 óæ   ‡ — ˆ fd„}‰ j                   j                  |«       ‰ j                  j                  «        ‰ j                  j                  «        ‰ j                   j                  d¬«       y )Nc                  ó    •— ‰j                   j                  «        t        j                  ˆfd„«       } ‰j                  j                  | «       y )Nc               3   ó¢   •K  — ‰j                   j                  «       –— t        d«      D ]  } d –— Œ ‰j                  j	                  «        y ­w)Né   )rÞ  Úclose_all_connectionsrœ   rå  Ústop)r–   r(   s    €r)   Ú	slow_stopzCSyncHTTPClientTest.tearDown.<locals>.stop_server.<locals>.slow_stopF  sD   øè ø€ à—k‘k×7Ñ7Ó9Ò9ô ˜q›ò �AÜðà×"Ñ"×'Ñ'Õ)ùs   ƒAA)rÞ  rô  r   rY   rå  Úadd_callback)rõ  r(   s    €r)   Ústop_serverz0SyncHTTPClientTest.tearDown.<locals>.stop_server>  sA   ø€ Ø�K‰K×ÑÔô �]‰]ó*ó ð*ð ×Ñ×+Ñ+¨IÕ6r+   T)Úall_fds)rå  rö  rì  r›   rl  rß   )r(   r÷  s   ` r)   ÚtearDownzSyncHTTPClientTest.tearDown=  sY   ø€ ô	7ð& 	×Ñ×'Ñ'¨Ô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                   j                  | j                  d«      «      }| j                  d|j                  «       y )NrÝ  rÁ   r�  rÃ   s     r)   Útest_sync_clientz#SyncHTTPClientTest.test_sync_clientY  s5   € Ø×#Ñ#×)Ñ)¨$¯,©,°sÓ*;Ó<ˆØ×Ñ˜¨(¯-©-Õ8r+   c                 óø   — | j                  t        «      5 }| j                  j                  | j	                  d«      «       d d d «       | j                  j                  j                  d«       y # 1 sw Y   Œ0xY wr„  )r
  r   rl  r»   r-  r¼   r‡  r½   )r(   Ú	assertions     r)   Útest_sync_client_errorz)SyncHTTPClientTest.test_sync_client_error]  sb   € ð ×ÑœyÓ)ð 	>¨YØ×Ñ×"Ñ" 4§<¡<°Ó#<Ô=÷	>à×Ñ˜×,Ñ,×1Ñ1°3Õ7÷	>ð 	>ús   –+A0Á0A9N)r-   r.   r/   rî  rù  r-  rý  r   r0   r+   r)   rÙ  rÙ  &  s   „ ò(ò,/ò2;ò9ó8r+   rÙ  c                   ó   — e Zd Zd„ Zy)ÚSyncHTTPClientSubprocessTestc                 ó8  — t        j                  t        j                  ddgt         j                  t         j
                  dd¬«      }|j                  r)t        d«       t        t        |j                  «      «       |j                  r| j                  d«       y y )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  sw   € ô �~‰~ä—‘ØØ_ðô
 —?‘?Ü×$Ñ$ØØô

ˆð �;Š;Ü�)ÔÜ”*˜TŸ[™[Ó)Ô*Ø�;Š;Ø�I‰IÐ=Õ>ð r+   N)r-   r.   r/   r  r0   r+   r)   r  r  e  s   „ ó?r+   r  c                   ó6   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚHTTPRequestTestCasec                 ó^   — t        dddi¬«      }| j                  |j                  ddi«       y )NrÕ  r5  rÇ  rs  )r	   r¼   r^   ©r(   r?   s     r)   Útest_headersz HTTPRequestTestCase.test_headers„  s+   € ÜÐ2¸UÀE¸NÔKˆØ×Ñ˜Ÿ™¨5°%¨.Õ9r+   c                 óh   — t        d«      }ddi|_        | j                  |j                  ddi«       y )NrÕ  rÇ  Úbaz©r	   r^   r¼   r  s     r)   Útest_headers_setterz'HTTPRequestTestCase.test_headers_setterˆ  s0   € ÜÐ2Ó3ˆØ  %˜.ˆŒØ×Ñ˜Ÿ™¨5°%¨.Õ9r+   c                 ó`   — t        d«      }d |_        | j                  |j                  i «       y )NrÕ  r  r  s     r)   Útest_null_headers_setterz,HTTPRequestTestCase.test_null_headers_setter�  s(   € ÜÐ2Ó3ˆØˆŒØ×Ñ˜Ÿ™¨"Õ-r+   c                 óh   — t        dd¬«      }| j                  |j                  t        d«      «       y )NrÕ  r5  )r@   )r	   r¼   r@   r   r  s     r)   Ú	test_bodyzHTTPRequestTestCase.test_body’  s'   € ÜÐ2¸Ô?ˆØ×Ñ˜Ÿ™¤t¨E£{Õ3r+   c                 ór   — t        d«      }d|_        | j                  |j                  t        d«      «       y )NrÕ  r5  )r	   r@   r¼   r   r  s     r)   Útest_body_setterz$HTTPRequestTestCase.test_body_setter–  s,   € ÜÐ2Ó3ˆØˆŒØ×Ñ˜Ÿ™¤t¨E£{Õ3r+   c                 óÚ   — t         j                   j                  t         j                  j                  «      }t	        d|¬«      }| j                  |j                  dt        |«      i«       y ©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›  sT   € Ü×%Ñ%×)Ñ)¬(×*;Ñ*;×*?Ñ*?Ó@ˆ	ÜÐ2ÀiÔPˆØ×ÑØ�O‰OÐ1Ô3CÀIÓ3NÐOõ	
r+   c                 óæ   — t        «       5  t        j                  j                  «       }d d d «       t        d¬«      }| j	                  |j
                  dt        |«      i«       y # 1 sw Y   Œ>xY wr#  )r   r%  Úutcnowr	   r¼   r^   r   r)  s      r)   Ú'test_if_modified_since_naive_deprecatedz;HTTPRequestTestCase.test_if_modified_since_naive_deprecated¢  sa   € ÜÓ!ñ 	3Ü ×)Ñ)×0Ñ0Ó2ˆI÷	3äÐ2ÀiÔPˆØ×ÑØ�O‰OÐ1Ô3CÀIÓ3NÐOõ	
÷	3ð 	3ús   ‹A'Á'A0N)
r-   r.   r/   r  r  r  r  r!  r+  r.  r0   r+   r)   r  r  ƒ  s%   „ ò:ò:ò
.ò
4ò4ò

ó
r+   r  c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚHTTPErrorTestCasec                 ó´   — t        d«      }t        j                  |«      }| j                  ||«       | j                  |j                  |j                  «       y )Né“  )r   ÚcopyÚassertIsNotr¼   r½   )r(   ÚeÚe2s      r)   Ú	test_copyzHTTPErrorTestCase.test_copy¬  s@   € Ü�c‹NˆÜ�Y‰Y�q‹\ˆØ×Ñ˜˜BÔØ×Ñ˜Ÿ™ §¡Õ)r+   c                 ó†   — t        d«      }| j                  t        |«      d«       | j                  t        |«      d«       y )Nr2  úHTTP 403: Forbidden)r   r¼   r?  Úrepr)r(   r5  s     r)   Útest_plain_errorz"HTTPErrorTestCase.test_plain_error²  s5   € Ü�c‹NˆØ×Ñœ˜Q›Ð!6Ô7Ø×Ñœ˜a›Ð"7Õ8r+   c                 ó&  — t        t        d«      d«      }| j                  t        «      5 }|j	                  «        d d d «       j
                  }| j                  t        |«      d«       | j                  t        |«      d«       y # 1 sw Y   ŒLxY w)Nr¿  r2  r9  )	r
   r	   r
  r   ré   r‡  r¼   r?  r:  )r(   rð   Úcmr5  s       r)   Útest_error_with_responsez*HTTPErrorTestCase.test_error_with_response·  su   € ÜœKÐ(=Ó>ÀÓDˆØ×ÑœyÓ)ð 	¨RØ�L‰LŒN÷	à�L‰LˆØ×Ñœ˜Q›Ð!6Ô7Ø×Ñœ˜a›Ð"7Õ8÷		ð 	ús   «BÂBN)r-   r.   r/   r7  r;  r>  r0   r+   r)   r0  r0  «  s   „ ò*ò9ó
9r+   r0  )Lr.  r7  Ú
contextlibr   r3  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  r0  r0   r+   r)   ú<module>rO     s¬  ðÛ Û Ý Û Û Û Û Ý Û Û 
Û Û Û Û ç 7Ñ 7Ý ÷õ õ *Ý !Ý %ß (Ý ß TÓ TÝ 0ß 8Ñ 8ß :ô(˜ô (ô
�.ô 
ô&�ô &ô
�nô 
ô ^ô ô�>ô ô;�.ô ;ô
�~ô ô&�nô &ô
Q�~ô Qô
˜nô ô&�>ô &ôH˜ô Hô"�~ô "ô
˜ô 
ôE˜Nô EôT	BÐ0ô T	Bôn/�x×(Ñ(ô /ôB%˜8×,Ñ,ô %ô<8˜×*Ñ*ô <8ô~? 8×#4Ñ#4ô ?ô<%
˜(×+Ñ+ô %
ôP9˜×)Ñ)õ 9r+   