HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/websocket/tests/__pycache__/test_websocket.cpython-310.pyc
o

_7�a)F�@sPdZ	ddlZddlZddlZddlZddlmZmZ	ddl
mZddlm
Z
ddlmZddlZzddlZddlmZWneyNGdd	�d	e�ZYnwej�d
d�dkZej�d
d�ZedkZdZdd�ZGdd�d�ZGdd�de�ZGdd�dej�Z Gdd�dej�Z!Gdd�dej�Z"Gdd�dej�Z#e$dkr�e�%�dSdS)z

�N)�_create_sec_websocket_key�	_validate)�read_headers)�
validate_utf8)�decodebytes)�SSLErrorc@seZdZdS)rN)�__name__�
__module__�__qualname__�rr�@/usr/lib/python3/dist-packages/websocket/tests/test_websocket.pyr+sr�TEST_WITH_INTERNET�0�1�LOCAL_WS_SERVER_PORTz-1TcCsdS)N�abcdr)�_rrr�create_mask_key6�rc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�SockMockcCsg|_g|_dS�N)�data�sent��selfrrr�__init__;s
zSockMock.__init__cCs|j�|�dSr)r�append�rrrrr�
add_packet?szSockMock.add_packetcC�dSrrrrrr�
gettimeoutBrzSockMock.gettimeoutcCsR|jr'|j�d�}t|t�r|�t|�|kr!|j�d||d��|d|�SdS)Nr)r�pop�
isinstance�	Exception�len�insert)r�bufsize�errr�recvEs
�z
SockMock.recvcCs|j�|�t|�Sr)rrr$rrrr�sendNsz
SockMock.sendcCrrrrrrr�closeRrzSockMock.closeN)	rr	r
rrr r(r)r*rrrrr:s	rc@�eZdZdd�ZdS)�HeaderSockMockcCs^t�|�tj�tj�t�|�}t|d��}|�|�	��Wd�dS1s(wYdS)N�rb)
rr�os�path�join�dirname�__file__�openr�read)r�fnamer/�frrrrXs

"�zHeaderSockMock.__init__N)rr	r
rrrrrr,Vsr,c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Ze�
ed�dd��Ze�
ed�dd��Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Ze�
ed(�d)d*��Ze�
ed(�d+d,��Ze�
ed�d-d.��Ze�
ed�d/d0��Ze�
ed(�d1d2��Ze�
ed(�d3d4��Zd5S)6�
WebSocketTestcCst�t�dSr)�ws�enableTrace�	TRACEABLErrrr�setUp`szWebSocketTest.setUpcCrrrrrrr�tearDowncrzWebSocketTest.tearDowncCs8|�t��d�t�d�|�t��d�t�d�dS)N�
)�assertEqualr8�getdefaulttimeout�setdefaulttimeoutrrrr�testDefaultTimeoutfs
z WebSocketTest.testDefaultTimeoutcCs*t�}|�|dk�|�td�|v�dS)N�u¥n)r�
assertTrue�str)r�keyrrr�	testWSKeylszWebSocketTest.testWSKeycCs(t�}t|�d��}|�dt|��dS)z9 WebSocket key should be a random 16-byte nonce.
        zutf-8�N)r�base64decode�encoder>r$)rrE�noncerrr�	testNonceqszWebSocketTest.testNoncecCsjd}dddd�}|�t||d�d�|��}d|d<|�t||d�d�|d=|�t||d�d�|��}d	|d
<|�t||d�d�|d
=|�t||d�d�|��}d	|d<|�t||d�d�|d=|�t||d�d�|��}d|d
<|�t||ddg�d�|�t||ddg�d�|��}d|d
<|�t||ddg�d�|��}|�t||ddg�d�dS)Nzc6b8hTg4EeGb2gQMztV1/g==�	websocket�upgradezKxep+hNu9n51529fGidYu7a3wO0=)rM�
connection�sec-websocket-accept)TN�http)FN�	somethingrNrO�sub1zsec-websocket-protocol�sub2)TrR�sub3�sUb1�Sub1�suB2)r>�_validate_header�copy)rrE�required_header�headerrrr�testWsUtilsxs<�zWebSocketTest.testWsUtilscCs|ttd��\}}}|�|d�|�|dd�ttd��\}}}|�|d�|�|dd�td�|�tjttd��dS)N�data/header01.txt�erN�Upgradezdata/header03.txtzUpgrade, Keep-Alivezdata/header02.txt)rr,r>�assertRaisesr8�WebSocketException)r�statusr[�status_messagerrr�testReadHeader�szWebSocketTest.testReadHeadercCsnt��}|�t�td�}|_|�d�|�|jdd�|�d�|�|jdd�|�|�	d�d	�dS)
Nr]�Hellor���abcd)�こんにちは����abcd������ʁ�ł��s
1111111111101�)
r8�	WebSocket�set_mask_keyrr,�sockr)r>r�send_binary�rrm�srrr�testSend�s


zWebSocketTest.testSendcCsXt��}t�}|_d}|�|�|��}|�|d�|�d�|��}|�|d�dS)Nrirgrfre)r8rkrrmrr(r>)rrmrprQrrrr�testRecv�s

zWebSocketTest.testRecv�%Internet-requiring tests are disabledcCs.d}t�d�D]
}|d8}|dkrdSqdS)N��wss://stream.meetup.com/2/rsvpsrhr)r8�create_connection)r�countrrrr�testIter�s��zWebSocketTest.testItercCs"t�d�}|�ttt|���dS)Nru)r8rvr>rD�type�next)rrmrrr�testNext�s
zWebSocketTest.testNextcCs�t��}t�}|_|�d�|�t���|�d�|�d�|�tj��|j	�
d�Wd�n1s7wY|j	�
d�}|�|d�|�tj��|j	�
d�Wd�dS1s`wYdS)Nsfoosbarsbaz�	s	foobarbazrh)
r8rkrrmr�socket�timeoutr`�WebSocketTimeoutException�frame_buffer�recv_strictr>�"WebSocketConnectionClosedException�rrmrprrrr�testInternalRecvStrict�s


�"�z$WebSocketTest.testInternalRecvStrictcCst��}t�}|_|�d�|�t���|�d�|�t���|�d�|�tj��|�	�Wd�n1s<wY|�tj��|�	�Wd�n1sVwY|�	�}|�
|d�|�tj��
|�	�Wd�dS1s{wYdS)N��s
�abcd)sNC3@z
Hello, World!)r8rkrrmrr}r~r`rr(r>r�r�rrr�testRecvTimeout�s$



�
�
"�zWebSocketTest.testRecvTimeoutcCsvt��}t�}|_|�d�|�d�|��}|�|d�|�tj��
|��Wd�dS1s4wYdS)N��abcd#DC���abcd
D
A
DzBrevity is the soul of wit�	r8rkrrmrr(r>r`r�r�rrr�testRecvWithSimpleFragmentation�s


"�z-WebSocketTest.testRecvWithSimpleFragmentationcCs�tjdd�}t�}|_|�d�|�d�|�d�|��\}}|�|d�|��\}}|�|d�|��\}}|�|d�|�d�|�tj��|��Wd�n1sYwY|�tj	��
|�
�Wd�dS1stwYdS)	NT)�fire_cont_framer�s�abcd#DCr�sBrevity is sthe soul of wits��abcd#DC)r8rkrrmr�	recv_datar>r`rar�r()rrmrprrrrr�$testRecvWithFireEventOfFragmentations$




�
"�z2WebSocketTest.testRecvWithFireEventOfFragmentationcCsRt��}d|_|jt��}t�}|_d|_|�d�|��|�|jd�dS)NTs���p�F)	r8rk�	connectedr*rrmrr(r>rorrr�	testCloses
zWebSocketTest.testClosecCs2t��}t�}|_|�d�|�tj|j�dS)Nr�)r8rkrrmrr`rar(rorrr�testRecvContFragmentation*s
z'WebSocketTest.testRecvContFragmentationcCs�t��}t�}|_|�d�|�d�|�d�|��}|�|d�|�tj��
|��Wd�dS1s9wYdS)Ns!�abcd.AB

C	C	NCs�abcdA
MBs��abcdAz2Once more unto the breach, dear friends, once morer�r�rrr�"testRecvWithProlongedFragmentation1s


�
"�z0WebSocketTest.testRecvWithProlongedFragmentationcCs�t��}|�t�t�}|_|�d�|�d�|�d�|��}|�|d�|�	tj
��|��Wd�n1s=wY|�|jdd�dS)Ns�abcd5
DAs��abcd1C4.,$D

s��abcdCABzToo much of a good thingrs��abcd1C4.,$D

)r8rkrlrrrmrr(r>r`r�rr�rrr�(testRecvWithFragmentationAndControlFrameAs




��z6WebSocketTest.testRecvWithFragmentationAndControlFrame�/Tests using local websocket server are disabledcCs|t�dt�}|�|d�|�d�|��}|��|�|d�|�d�|��}|�|d�|�	t
|jdd�|��dS)N�ws://127.0.0.1:�Hello, Worlduこにゃにゃちは、世界����)
r8rvr�assertNotEqualr)rz�filenor>r(r`�
ValueError�
send_closer*�rrp�resultrrr�
testWebSocketSs

zWebSocketTest.testWebSocketcCs:t�dt�}|�|d�|�d�|�d�|��dS)Nr�re�Hi)r8rvrr��ping�pongr*�rrprrr�testPingPongbs


zWebSocketTest.testPingPongcCs t��}|�tjj|jd�dS)Nzws://google.com/)r8rkr`�_exceptions�WebSocketBadStatusException�connectr�rrr�testSupportRedirectjsz!WebSocketTest.testSupportRedirectcCs�ddl}t�d�}|�|d�|�t|j|j��|�|�	�d�|�|�
�d�|�d�|�|��d�|�|�
�d�|��dS)Nr�wss://api.bitfinex.com/ws/2r^r=)�sslr8rvr�rCr"rm�	SSLSocketr>�	getstatus�
getheaders�
settimeoutr �getsubprotocol�abort)rr�rprrr�testSecureWebSocketps

z!WebSocketTest.testSecureWebSocketcCs^tjdtddid�}|�|d�|�d�|��}|�|d�|�t|j	dd�|�	�dS)Nr�z
User-Agent�PythonWebsocketClient)�headersr�r�r�)
r8rvrr�r)r(r>r`r�r*r�rrr�testWebSocketWithCustomHeader}s
�
z+WebSocketTest.testWebSocketWithCustomHeadercCsHt�dt�}|�|d�|��|�tj|jd�|�tj|j�dS)Nr�re)	r8rvrr�r*r`r�r)r(r�rrr�testAfterClose�s
zWebSocketTest.testAfterCloseN) rr	r
r;r<rArFrKr\rdrqrr�unittest�
skipUnlessr
rxr{r�r�r�r�r�r�r�r��TEST_WITH_LOCAL_SERVERr�r�r�r�r�r�rrrrr7_sD(















r7c@s eZdZe�ed�dd��ZdS)�SockOptTestr�cCsHtjtjdff}tjdt|d�}|�|j�tjtj�d�|�	�dS)Nrhr�)�sockoptr)
r}�IPPROTO_TCP�TCP_NODELAYr8rvrr�rm�
getsockoptr*)rr�rprrr�testSockOpt�szSockOptTest.testSockOptN)rr	r
r�r�r�r�rrrrr��s
r�c@r+)�	UtilsTestcCs@td�}|�|d�td�}|�|d�td�}|�|d�dS)Ns𐀀Tsκόσμε�editedF�)rr>)r�staterrr�testUtf8Validator�szUtilsTest.testUtf8ValidatorN)rr	r
r�rrrrr��sr�c@sDeZdZe�ed�dd��Ze�ed�dd��Zdd�Zdd	�Z	d
S)�
HandshakeTestrscCsLtjdt��jidd�}|�t|jd�tjddid�}|�t|jd�dS)N�
cert_chainF)�sslopt�enable_multithreadr��certfile�myNonexistentCertFile�r�)	r8rkr��get_default_verify_paths�capathr`r�r��FileNotFoundError)r�websock1�websock2rrr�
test_http_SSL�s��zHandshakeTest.test_http_SSLcCsPtjt��jt��jd�d�}|jtjj|j	dddddgdd	d
ddd
�d�	dS)N)�ca_certs�ca_cert_pathr�r��	chocolateztesting_websockets.comz(echo.websocket.org/websocket-client-test�	testprotor_�123�	TestValuezk9kFAUWNAMmf5OEMfTlOEA==�newprotocol)�
CustomHeader1�CookiezSec-WebSocket-KeyzSec-WebSocket-Protocol)�cookie�origin�host�subprotocolsrNr[)
r8rkr�r��cafiler�r`r�r�r��r�websock3rrr�testManualHeaders�s
�
�
�zHandshakeTest.testManualHeaderscCst��}|�t|jd�dS)Nz2001:4860:4860::8888)r8rkr`r�r�)rr�rrr�testIPv6�szHandshakeTest.testIPv6cCs>t��}|�t|jd�|�tj|jd�|�t|jd�dS)Nzws//example.comzws://examplezexample.com)r8rkr`r�r��WebSocketAddressExceptionr�rrr�testBadURLs�szHandshakeTest.testBadURLsN)
rr	r
r�r�r
r�r�r�r�rrrrr��s



r��__main__)&�__doc__r.�os.pathr}rLr8�websocket._handshakerrrX�websocket._httpr�websocket._utilsr�base64rrHr�r�r�ImportErrorr#�environ�getr
rr�r:rrr,�TestCaser7r�r�r�r�mainrrrr�<module>sB�	4	
$�