
    ,h0                        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    [/var/www/html/Resume-Scraper/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    99		a A!Y'1v		  AghK0Xg; r   c                 N    | j                   j                  |       t        |      S r   )r   r    r*   r!   s     r   sendzSockMock.sendI   s    		4y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    $ww||BGGOOH5u=$ 	&OOAFFH%	& 	& 	&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     "CMM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.txte   
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.comP   )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$*('(	 $#
$/$(''(	  	 +VPV		
 	 +VPV		
 	NNJ ) $!#$	 	
 	"
$-tPV  -
	
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&*<*<fnn 	
& 	-
$/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    +VPVn		
 	'" 	 	
 	 -vRXj		
 	 +VPVj		
 	 +VPVd		
 	 + &! @	
 d1 	
 	 + &! @	
 d1 	
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
 ZZ^^$8#>#E **..!2C8C?zz~~&<dC -5  8&X &3 3N
x   N
b zHMMO O
TSSs   
C* *C8