
     f0                        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 n#  d dl	mZmZmZ Y nxY we j                            dd          dk    Ze j                            dd          dk    Ze j                            d	d
          Zed
k    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j!                     dS dS )    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                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )SockMockc                 "    g | _         g | _        d S N)datasentselfs    \/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/websocket/tests/test_http.py__init__zSockMock.__init__6   s    				    c                 :    | j                             |           d S r   )r   appendr   r   s     r   
add_packetzSockMock.add_packet:   s    	r   c                     d S r    r   s    r   
gettimeoutzSockMock.gettimeout=   s    tr   c                     | j         rq| j                             d          }t          |t                    r|t	          |          |k    r#| j                             d||d                     |d |         S d S )Nr   )r   pop
isinstance	Exceptionleninsert)r   bufsizees      r   recvzSockMock.recv@   s    9 		a  A!Y'' 1vv	  AghhK000XgX;	 	r   c                 T    | j                             |           t          |          S r   )r   r    r*   r!   s     r   sendzSockMock.sendI   s$    	4yyr   c                     d S 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   sn                      r   r   c                       e Zd Zd ZdS )HeaderSockMockc                 ^   t                               |            t          j                            t          j                            t                    |          }t          |d          5 }|                     |	                                           d d d            d S # 1 swxY w Y   d S )Nrb)
r   r   ospathjoindirname__file__openr"   read)r   fnamer;   fs       r   r   zHeaderSockMock.__init__R   s    $w||BGOOH55u==$ 	&OOAFFHH%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   -(B""B&)B&Nr3   r4   r5   r   r$   r   r   r7   r7   Q   s#        & & & & &r   r7   c                       e Zd Zd ZdS )OptsListc                 H    d| _         g | _        dt          j        i| _        d S )N   	cert_reqs)timeoutsockoptssl	CERT_NONEssloptr   s    r   r   zOptsList.__init__Z   s"    "CM2r   NrC   r$   r   r   rE   rE   Y   s#        3 3 3 3 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d
S )HttpTestc                    t          t          d                    \  }}}|                     |d           |                     |d         d           |                     t          t           t          d                     d S )Ndata/header01.txte   
connectionUpgradedata/header02.txt)r
   r7   assertEqualassertRaisesr   )r   statusheader_s       r   test_read_headerzHttpTest.test_read_headera   s    (8K)L)LMM%%%-y999n=P.Q.Q	
 	
 	
 	
 	
r   c                     |                      t          t          t          d          ddd           |                      t          t          t          d          ddd           d S )NrQ   example.comP   )usernamepasswordrU   )rW   r   r   r7   r   s    r   test_tunnelzHttpTest.test_tunnelj   st    #.//$	
 	
 	
 	#.//$	
 	
 	
 	
 	
r   z%Internet-requiring tests are disabledc                    t           r]|                     t          t          ft          dt                      t          dddd                     |                     t          t          ft          dt                      t          dddd                     |                     t          t          ft          dt                      t          dddd                     |                     t          t          ft          dt                      t          ddd	d                     |                     t          t          dt                      t          d
ddd          d            |                     t          t          d ddt          d
dd                     |                     t          t          d ddt          d
dd                     |                     t          j        t          dt                      t          dddd          d            |                     t          dt                      t          ddd          d          d           d S )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$*('(	     $#

$/$(''(	      	 +VPV  		
 		
 		
 	 +VPV  		
 		
 		
 	NJJ ) $!#$	   	
 	
 	
 	"

$-tPV     -
	
 
	
 
	
 
	
 
	
r   z:This test requires a HTTP proxy to be running on port 8899z/Tests using local websocket server are disabledc                 B   t          j                    }|                    dt           ddd           |                    d           |                                }|                     |d           |                     t          ddd	t          ddd                    t          j
        dd
dt          j        t          j                  d	d f           |                     t          dt                      t          dd
d          d           d         d           d S )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   sZ     ""


4244'"	 	 	
 	
 	
 	   ''))/:::"$/$*%  		 	 "q&*<fn  	
 	
 	
& 	-

$/RX      /
	
 
	
 
	
 
	
 
	
r   c                 6   ddt           j        ddd}t          j        |          }|                    d           |                    d           |                                 t          j        d	d
i          }|                    d           |j         d S )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	E '
 

  %Z8885666W%.>-EFFF5666r   c                 n   |                      t          ddd          j        d           |                     t          t          ddd           |                      t          ddd          j        d           |                      t          ddd          j        d           |                      t          ddd          j        d            |                      t          dddd          j        d	         d
           |                      t          dddd          j        d         d           d S )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=  s    +VPV  		
 	
 	
 	'" 	 	
 	
 	
 	 -vRX  		
 	
 	
 	 +VPV  		
 	
 	
 	 +VPV  		
 	
 	
 	 + &! @	  
 1 	
 	
 	
 	 + &! @	  
 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Un
 n
 VUn
d X+-TUUXU  X Q )
 )
   VU)
X X+-TUU  VU41
 1
 1
 1
 1
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 M M M M M M M                 &TXXXXXXXXXXXTSSSSSSSSSSSS Z^^$8#>>#E *..!2C88C?z~~&<dCC -5        8& & & & &X & & &3 3 3 3 3 3 3 3N
 N
 N
 N
 N
x  N
 N
 N
b zHMOOOOO s   
A   A