o
    i%                     @   s   d dl Z d dlZ d dlZd dlmZmZmZmZm	Z	m
Z
 d dlZd dlZd dlZd dl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)
proxy_inforead_headers_start_proxied_socket_tunnel_get_addrinfo_listconnect)
ProxyErrorProxyTimeoutErrorProxyConnectionError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   T/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/websocket/tests/test_http.py__init__-   s   
zSockMock.__init__c                 C   s   | j | d S r   )r   appendr   r   r   r   r   
add_packet1   s   zSockMock.add_packetc                 C      d S r   r   r   r   r   r   
gettimeout4      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   recv7   s   
zSockMock.recvc                 C   s   | j | t|S r   )r   r   r"   r   r   r   r   send@   s   zSockMock.sendc                 C   r   r   r   r   r   r   r   closeD   r   zSockMock.closeN)	__name__
__module____qualname__r   r   r   r&   r'   r(   r   r   r   r   r   ,   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   fnamer0   fr   r   r   r   J   s
   
"zHeaderSockMock.__init__Nr)   r*   r+   r   r   r   r   r   r-   H       r-   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   S   s   zOptsList.__init__Nr8   r   r   r   r   r:   Q   r9   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   sF   t td\}}}| |d | |d d | tjt td d S )Ndata/header01.txte   
connectionUpgradedata/header02.txt)r   r-   assertEqualassertRaiseswsWebSocketException)r   statusheaderstatus_messager   r   r   testReadHeader[   s   zHttpTest.testReadHeaderc                 C   s8   |  tjttdddd |  tjttdddd d S )NrC   example.comP   )usernamepasswordrG   )rI   rJ   WebSocketProxyExceptionr   r-   r   r   r   r   
testTunnelb   s   zHttpTest.testTunnelz%Internet-requiring tests are disabledc                 C   s@  t jj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.comrP   8080socks4r;   )http_proxy_hosthttp_proxy_port
proxy_typehttp_proxy_timeoutsocks4asocks5socks5h	127.0.0.1i'  rQ   T9999httprX   rY   rZ   zwss://google.comz8.8.8.8i  )T)z
google.com  /)rJ   _httpHAVE_PYTHON_SOCKSrI   r	   OSErrorr   r:   r   r
   r   	TypeErrorr   socketr=   rH   r   r   r   r   testConnectf   s   $$$$"$zHttpTest.testConnectz: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;   )rl   rc   z/ws/2)	websocket	WebSocketr   r   r'   r&   rH   r   r   ri   getaddrinfoSOCK_STREAMSOL_TCPr:   )r   rJ   server_responser   r   r   testProxyConnect{   s   
*zHttpTest.testProxyConnectc                 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)rA   rm   Hellorw   T)r?   PROTOCOL_TLS_CLIENTrn   ro   r   r'   r(   )r   
ssloptionsws_ssl1ws_ssl2r   r   r   
testSSLopt   s   




zHttpTest.testSSLoptc                 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   badvalrP   )my_username123
my_pass321)rX   rY   rZ   http_proxy_authr   r   r;   r   )rH   r   proxy_protocolrI   r   
proxy_host
proxy_portauthr   r   r   r   testProxyInfo   s   "zHttpTest.testProxyInfoN)r)   r*   r+   rO   rU   unittest
skipUnlessr   rj   r   TEST_WITH_LOCAL_SERVERrt   r   r   r   r   r   r   rB   Y   s    






rB   __main__)r/   os.pathrn   rJ   websocket._httpr   r   r   r   r   r   r   r?   ri   python_socks._errorsr   r	   r
   environgetr   r   r   r   r   r-   r:   TestCaserB   r)   mainr   r   r   r   <module>   s0    	V