Ë
    _§1h­0  ã                   óö  — 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 d dl	m
Z
mZmZmZmZmZmZ 	 	 d dlmZmZmZ e j*                  j-                  dd«      dk(  Ze j*                  j-                  dd«      dk(  Ze j*                  j-                  d	d
«      Zed
k7  Z G d„ d«      Z G d„ de«      Z G d„ d«      Z G d„ dej<                  «      Ze dk(  r ejB                  «        yy#  d dl	mZmZmZ Y Œ¹xY w)é    N)ÚWebSocketProxyExceptionÚWebSocketException)Ú_get_addrinfo_listÚ_start_proxied_socketÚ_tunnelÚconnectÚ
proxy_infoÚread_headersÚHAVE_PYTHON_SOCKS)ÚProxyConnectionErrorÚ
ProxyErrorÚProxyTimeoutErrorÚTEST_WITH_INTERNETÚ0Ú1ÚTEST_WITH_PROXYÚLOCAL_WS_SERVER_PORTz-1c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚSockMockc                 ó    — g | _         g | _        y ©N)ÚdataÚsent©Úselfs    úW/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/websocket/tests/test_http.pyÚ__init__zSockMock.__init__6   s   € ØˆŒ	Øˆ�	ó    c                 ó:   — | j                   j                  |«       y r   )r   Úappend©r   r   s     r   Ú
add_packetzSockMock.add_packet:   s   € Ø�	‰	×Ñ˜Õr   c                  ó   — y r   © r   s    r   Ú
gettimeoutzSockMock.gettimeout=   s   € Ør   c                 óÚ   — | j                   r_| j                   j                  d«      }t        |t        «      r|‚t	        |«      |kD  r| j                   j                  d||d  «       |d | S y )Nr   )r   ÚpopÚ
isinstanceÚ	ExceptionÚlenÚinsert)r   ÚbufsizeÚes      r   ÚrecvzSockMock.recv@   sa   € Ø�9Š9Ø—	‘	—‘˜aÓ ˆAÜ˜!œYÔ'Ø�Ü�1‹v˜ÒØ—	‘	× Ñ   A g h KÔ0Ø�X�g�;Ðð r   c                 óN   — | j                   j                  |«       t        |«      S r   )r   r    r*   r!   s     r   ÚsendzSockMock.sendI   s   € Ø�	‰	×Ñ˜ÔÜ�4‹yÐr   c                  ó   — y r   r$   r   s    r   ÚclosezSockMock.closeM   s   € Ør   N)	Ú__name__Ú
__module__Ú__qualname__r   r"   r%   r.   r0   r2   r$   r   r   r   r   5   s    „ òòòòòór   r   c                   ó   — e Zd Zd„ Zy)ÚHeaderSockMockc                 ó0  — t         j                  | «       t        j                  j	                  t        j                  j                  t        «      |«      }t        |d«      5 }| j                  |j                  «       «       d d d «       y # 1 sw Y   y xY w)NÚrb)
r   r   ÚosÚpathÚjoinÚdirnameÚ__file__Úopenr"   Úread)r   Úfnamer;   Úfs       r   r   zHeaderSockMock.__init__R   sd   € Ü×Ñ˜$ÔÜ�w‰w�|‰|œBŸG™GŸO™O¬HÓ5°uÓ=ˆÜ�$˜Óð 	& Ø�O‰O˜AŸF™F›HÔ%÷	&÷ 	&ñ 	&ús   Á# BÂBN©r3   r4   r5   r   r$   r   r   r7   r7   Q   s   „ ó&r   r7   c                   ó   — e Zd Zd„ Zy)ÚOptsListc                 óN   — d| _         g | _        dt        j                  i| _        y )Né   Ú	cert_reqs)ÚtimeoutÚsockoptÚsslÚ	CERT_NONEÚssloptr   s    r   r   zOptsList.__init__Z   s    € ØˆŒØˆŒØ"¤C§M¡MÐ2ˆ�r   NrC   r$   r   r   rE   rE   Y   s   „ ó3r   rE   c                   ó  — e Zd Zd„ Zd„ Z ej                  ed«      d„ «       Z ej                  ed«       ej                  e	d«       ej                  e
d«      d„ «       «       «       Z ej                  ed«      d„ «       Zd	„ Zy
)ÚHttpTestc                 óÊ   — t        t        d«      «      \  }}}| j                  |d«       | j                  |d   d«       | j                  t        t         t        d«      «       y )Núdata/header01.txtée   Ú
connectionÚUpgradeúdata/header02.txt)r
   r7   ÚassertEqualÚassertRaisesr   )r   ÚstatusÚheaderÚ_s       r   Útest_read_headerzHttpTest.test_read_headera   sY   € Ü(¬Ð8KÓ)LÓMÑˆ�˜Ø×Ñ˜ Ô%Ø×Ñ˜ Ñ-¨yÔ9à×ÑÜ¤¬nÐ=PÓ.Qõ	
r   c                 ó    — | j                  t        t        t        d«      ddd«       | j                  t        t        t        d«      ddd«       y )NrQ   úexample.coméP   )ÚusernameÚpasswordrU   )rW   r   r   r7   r   s    r   Útest_tunnelzHttpTest.test_tunnelj   sP   € Ø×ÑÜ#ÜÜÐ.Ó/ØØØ$ô	
ð 	×ÑÜ#ÜÜÐ.Ó/ØØØ$õ	
r   z%Internet-requiring tests are disabledc                 ó¾  — t         �r| j                  t        t        ft        dt        «       t        dddd¬«      «       | j                  t        t        ft        dt        «       t        dddd¬«      «       | j                  t        t        ft        dt        «       t        dddd¬«      «       | j                  t        t        ft        dt        «       t        ddd	d¬«      «       | j                  t        t        dt        «       t        d
ddd¬«      d «       | j                  t        t        d ddt        d
dd¬«      «       | j                  t        t        d ddt        d
dd¬«      «       | j                  t        j                  t        dt        «       t        dddd¬«      d «       | j                  t        dt        «       t        ddd¬«      d«      d«       y )Nzwss://example.comr]   Ú8080Úsocks4rG   )Úhttp_proxy_hostÚhttp_proxy_portÚ
proxy_typeÚhttp_proxy_timeoutÚsocks4aÚsocks5Úsocks5hú	127.0.0.1i'  r^   TÚ9999Úhttp©re   rf   rg   zwss://google.comz8.8.8.8i�  )T)z
google.comé»  ú/)r   rW   r   ÚOSErrorr   rE   r	   r   r   Ú	TypeErrorr   ÚsocketrI   rV   r   s    r   Útest_connectzHttpTest.test_connect|   sí  € ö ð ×ÑÜ"¤GÐ,Ü%Ø#Ü“
ÜØ$1Ø$*Ø'Ø'(ô	ôð ×ÑÜ"¤GÐ,Ü%Ø#Ü“
ÜØ$1Ø$*Ø(Ø'(ô	ôð ×ÑÜ"¤GÐ,Ü%Ø#Ü“
ÜØ$1Ø$*Ø'Ø'(ô	ôð ×ÑÜ"¤GÐ,Ü%Ø#Ü“
ÜØ$1Ø$*Ø(Ø'(ô	ôð ×ÑÜ$ÜØ#Ü“
ÜØ$/Ø$(Ø'Ø'(ô	ð ôð 	×ÑÜÜØØØÜØ +¸VÐPVôô		
ð 	×ÑÜÜØØØÜØ +¸VÐPVôô		
ð 	×ÑÜ�N‰NÜØÜ‹JÜØ )Ø $Ø!Ø#$ô	ð ô	
ð 	×ÑÜØ"Ü“
ÜØ$-¸tÐPVôð óð -õ
	
r   z:This test requires a HTTP proxy to be running on port 8899z/Tests using local websocket server are disabledc                 óô  — t        j                  «       }|j                  dt        › �ddd¬«       |j	                  d«       |j                  «       }| j                  |d«       | j                  t        ddd	t        ddd¬«      «      t        j                  dd
dt        j                  t        j                  «      d	d f«       | j                  t        dt        «       t        dd
d¬«      d «      d   d«       y )Nzws://127.0.0.1:rl   Ú8899rn   ro   zHello, Serverúapi.bitfinex.comrp   TiÃ"  r   úwss://api.bitfinex.com/ws/2rG   )rx   rp   z/ws/2)Ú	websocketÚ	WebSocketr   r   r0   r.   rV   r   r	   rt   ÚgetaddrinfoÚSOCK_STREAMÚSOL_TCPrE   )r   ÚwsÚserver_responses      r   Útest_proxy_connectzHttpTest.test_proxy_connectï   s  € ô × Ñ Ó"ˆØ
�
‰
ØÔ2Ð3Ð4Ø'Ø"Øð	 	ô 	
ð 	�‰�Ô ØŸ'™'›)ˆØ×Ñ˜¨/Ô:à×ÑÜØ"ØØÜØ$/Ø$*Ø%ôó		ô ×"Ñ"Ø  q¬&×*<Ñ*<¼f¿n¹nóð Øðô	
ð& 	×ÑÜØ-Ü“
ÜØ$/ÀÐRXôð óð ñð /õ
	
r   c                 ó*  — ddt         j                  dddœ}t        j                  |¬«      }|j	                  d«       |j                  d«       |j                  «        t        j                  d	d
i¬«      }|j	                  d«       |j                   y )NFÚ
ServerNameaÚ  TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:                        TLS_AES_128_GCM_SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:                        ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:                        ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:                        DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:                        ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:                        ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:                        DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES128-SHA256:                        ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:                        ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHAÚ
prime256v1)Úcheck_hostnameÚserver_hostnameÚssl_versionÚciphersÚ
ecdh_curve)rM   ry   ÚHellor…   T)rK   ÚPROTOCOL_TLS_CLIENTrz   r{   r   r0   r2   )r   Ú
ssloptionsÚws_ssl1Úws_ssl2s       r   Útest_ssloptzHttpTest.test_sslopt"  sƒ   € ð $Ø+Ü×2Ñ2ð	Eð 'ñ
ˆ
ô  ×%Ñ%¨ZÔ8ˆØ�‰Ð5Ô6Ø�‰�WÔØ�‰Œä×%Ñ%Ð.>ÀÐ-EÔFˆØ�‰Ð5Ô6Ø�‹r   c                 ó0  — | j                  t        ddd¬«      j                  d«       | j                  t        t        ddd¬«       | j                  t        ddd¬«      j
                  d«       | j                  t        ddd¬«      j                  d«       | j                  t        ddd¬«      j                  d «       | j                  t        dddd¬«      j                  d	   d
«       | j                  t        dddd¬«      j                  d   d«       y )Nrl   rc   rn   ro   Úbadvalr]   )Úmy_username123Ú
my_pass321)re   rf   rg   Úhttp_proxy_authr   r’   rG   r“   )rV   r	   Úproxy_protocolrW   r   Ú
proxy_hostÚ
proxy_portÚauthr   s    r   Útest_proxy_infozHttpTest.test_proxy_info=  s2  € Ø×ÑÜØ +¸VÐPVôç‰nØô		
ð 	×ÑÜÜØ'Ø"Øð 	ô 	
ð 	×ÑÜØ -¸vÐRXôç‰jØô		
ð 	×ÑÜØ +¸VÐPVôç‰jØô		
ð 	×ÑÜØ +¸VÐPVôç‰dØô		
ð 	×ÑÜØ +Ø &Ø!Ø @ô	÷
 ‰d�1ñð ô	
ð 	×ÑÜØ +Ø &Ø!Ø @ô	÷
 ‰d�1ñð õ	
r   N)r3   r4   r5   r[   ra   ÚunittestÚ
skipUnlessr   ru   r   ÚTEST_WITH_LOCAL_SERVERr�   r�   r™   r$   r   r   rO   rO   `   s¿   „ ò
ò
ð$ €X×ÑÐ+Ð-TÓUñn
ó Vðn
ðd €X×ÑÐ+Ð-TÓUØ€X×ÑØÐUóð €X×ÑØÐ Qóñ)
óóó Vð)
ðX €X×ÑÐ+Ð-TÓUñó Vðó41
r   rO   Ú__main__)"r:   Úos.pathrt   rK   rš   rz   Úwebsocket._exceptionsr   r   Úwebsocket._httpr   r   r   r   r	   r
   r   Úpython_socks._errorsr   r   r   ÚenvironÚgetr   r   r   rœ   r   r7   rE   ÚTestCaserO   r3   Úmainr$   r   r   ú<module>r¦      sò   ðó 
Û Û Û 
Û ã ß M÷÷ ñ ðð&TßXÑXð
 —Z‘Z—^‘^Ð$8¸#Ó>À#ÑEÐ Ø—*‘*—.‘.Ð!2°CÓ8¸CÑ?€à—z‘z—~‘~Ð&<¸dÓCÐ Ø-°Ñ5Ð ÷ñ ô8&�Xô &÷3ñ 3ôN
ˆx× Ñ ô N
ðb ˆzÒØ€H‡M�M…Oð øðO
TßSÓSús   µ
C* Ã*C8