o
    lh0                     @   s,  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 	 zd dlmZmZmZ W n   d dl	mZmZmZ Y 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 dZG dd deZG dd dZG dd dejZe dkre!  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                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )SockMockc                 C   s   g | _ g | _d S N)datasentself r   m/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/websocket/tests/test_http.py__init__6   s   
zSockMock.__init__c                 C   s   | j | d S r   )r   appendr   r   r   r   r   
add_packet:   s   zSockMock.add_packetc                 C      d S r   r   r   r   r   r   
gettimeout=      zSockMock.gettimeoutc                 C   sR   | j r'| j d}t|tr|t||kr!| j d||d   |d | S d S )Nr   )r   pop
isinstance	Exceptionleninsert)r   bufsizeer   r   r   recv@   s   
zSockMock.recvc                 C   s   | j | t|S r   )r   r   r%   r   r   r   r   sendI   s   zSockMock.sendc                 C   r   r   r   r   r   r   r   closeM   r!   zSockMock.closeN)	__name__
__module____qualname__r   r   r    r)   r*   r+   r   r   r   r   r   5   s    	r   c                   @      e Zd Zdd ZdS )HeaderSockMockc                 C   s^   t |  tjtjt|}t|d}| |	  W d    d S 1 s(w   Y  d S )Nrb)
r   r   ospathjoindirname__file__openr   read)r   fnamer3   fr   r   r   r   R   s
   
"zHeaderSockMock.__init__Nr,   r-   r.   r   r   r   r   r   r0   Q       r0   c                   @   r/   )OptsListc                 C   s   d| _ g | _dtji| _d S )N   	cert_reqs)timeoutsockoptssl	CERT_NONEssloptr   r   r   r   r   Z   s   zOptsList.__init__Nr;   r   r   r   r   r=   Y   r<   r=   c                   @   sx   e Zd Zdd Zdd Zeeddd Zeedee	dee
d	d
d Zeeddd Zdd ZdS )HttpTestc                 C   sD   t td\}}}| |d | |d d | tt td d S )Ndata/header01.txte   
connectionUpgradedata/header02.txt)r	   r0   assertEqualassertRaisesr   )r   statusheader_r   r   r   test_read_headera   s   
zHttpTest.test_read_headerc                 C   s4   |  tttdddd |  tttdddd d S )NrF   example.comP   )usernamepasswordrJ   )rL   r   r   r0   r   r   r   r   test_tunnelj   s    zHttpTest.test_tunnelz%Internet-requiring tests are disabledc                 C   s<  t r[| ttftdt tddddd | ttftdt tddddd | ttftdt tddddd | ttftdt tddd	dd | ttdt td
ddddd  | t	t
d ddtd
ddd | t	t
d ddtd
ddd | tjtdt tdddddd  | tdt tdddddd d S )Nzwss://example.comrQ   8080socks4r>   )http_proxy_hosthttp_proxy_port
proxy_typehttp_proxy_timeoutsocks4asocks5socks5h	127.0.0.1i'  rR   T9999httprX   rY   rZ   zwss://google.comz8.8.8.8i  )T)z
google.com  /)r
   rL   r   OSErrorr   r=   r   r   r   	TypeErrorr   socketr@   rK   r   r   r   r   test_connect|   s   

zHttpTest.test_connectz:This test requires a HTTP proxy to be running on port 8899z/Tests using local websocket server are disabledc                 C   s   t  }|jdt dddd |d | }| |d | tddd	tddddt	
dd
dt	jt	jd	d f | tdt tdd
ddd d d d S )Nzws://127.0.0.1:r_   8899ra   rb   zHello, Serverapi.bitfinex.comrc   Ti"  r   wss://api.bitfinex.com/ws/2r>   )rj   rc   z/ws/2)	websocket	WebSocketr   r   r*   r)   rK   r   r   rg   getaddrinfoSOCK_STREAMSOL_TCPr=   )r   wsserver_responser   r   r   test_proxy_connect   sR   
zHttpTest.test_proxy_connectc                 C   s^   ddt jddd}tj|d}|d |d |  tjd	d
id}|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)rD   rk   Hellorv   T)rB   PROTOCOL_TLS_CLIENTrl   rm   r   r*   r+   )r   
ssloptionsws_ssl1ws_ssl2r   r   r   test_sslopt"  s   




zHttpTest.test_ssloptc                 C   s   |  tddddjd | jttdddd |  tddddjd |  tddddjd |  tddddjd  |  tdddddjd	 d
 |  tdddddjd d d S )Nr_   rV   ra   rb   badvalrQ   )my_username123
my_pass321)rX   rY   rZ   http_proxy_authr   r   r>   r   )rK   r   proxy_protocolrL   r   
proxy_host
proxy_portauthr   r   r   r   test_proxy_info=  sr   	zHttpTest.test_proxy_infoN)r,   r-   r.   rP   rU   unittest
skipUnlessr   rh   r   TEST_WITH_LOCAL_SERVERrs   r   r   r   r   r   r   rE   `   s     	


r
,
rE   __main__)"r2   os.pathrg   rB   r   rl   websocket._exceptionsr   r   websocket._httpr   r   r   r   r   r	   r
   python_socks._errorsr   r   r   environgetr   r   r   r   r   r0   r=   TestCaserE   r,   mainr   r   r   r   <module>   s4   $
  