
    iG                     B   S SK r S SKr S SKrS SKrS SKJr  S SKrS SK	J
r
JrJr  S SKJr  S SKJr  S SKJr  S SKJr    S SKr\ R2                  R5                  S
S5      S:H  r\ R2                  R5                  SS5      r\S:g  rSrS r " S S5      r  " S S\ 5      r! " S S\RD                  5      r# " S S\RD                  5      r$ " S S\RD                  5      r% " S S\RD                  5      r&\'S:X  a  \RP                  " 5         gg! \ a     " S S	\5      r Nf = f)    N)decodebytes)WebSocketBadStatusExceptionWebSocketAddressExceptionWebSocketException)_create_sec_websocket_key)	_validate)read_headers)validate_utf8c                       \ rS rSrSrg)SSLError+    N)__name__
__module____qualname____firstlineno____static_attributes__r       KC:\des-py\RoboSAPF\venv\Lib\site-packages\websocket/tests/test_websocket.pyr   r   +   s    r   r   TEST_WITH_INTERNET01LOCAL_WS_SERVER_PORTz-1Tc                     g)Nabcdr   )_s    r   create_mask_keyr   7   s    r   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
SockMock;   c                      / U l         / U l        g Ndatasentselfs    r   __init__SockMock.__init__<   s    		r   c                 :    U R                   R                  U5        g r"   )r$   appendr'   r$   s     r   
add_packetSockMock.add_packet@   s    		r   c                     g r"   r   r&   s    r   
gettimeoutSockMock.gettimeoutC   s    r   c                     U R                   (       ad  U R                   R                  S5      n[        U[        5      (       a  Ue[	        U5      U:  a  U R                   R                  SX!S  5        US U $ g )Nr   )r$   pop
isinstance	Exceptionleninsert)r'   bufsizees      r   recvSockMock.recvF   sb    99		a A!Y''1v		  AhK0Xg; r   c                 N    U R                   R                  U5        [        U5      $ r"   )r%   r+   r6   r,   s     r   sendSockMock.sendO   s    		4yr   c                     g r"   r   r&   s    r   closeSockMock.closeS       r   r#   N)r   r   r   r   r(   r-   r0   r:   r=   r@   r   r   r   r   r   r   ;   s     r   r   c                       \ rS rSrS rSrg)HeaderSockMockW   c                 :   [         R                  U 5        [        R                  R	                  [        R                  R                  [        5      U5      n[        US5       nU R                  UR                  5       5        S S S 5        g ! , (       d  f       g = f)Nrb)
r   r(   ospathjoindirname__file__openr-   read)r'   fnamerI   fs       r   r(   HeaderSockMock.__init__X   s[    $ww||BGGOOH5u=$OOAFFH% s   # B
Br   N)r   r   r   r   r(   r   r   r   r   rD   rD   W   s    &r   rD   c                   
   \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 r\R                  " \S5      S 5       r\R                  " \S5      S 5       rS rS rS rS rS rS rS rS r\R                  " \S5      S 5       r\R                  " \S5      S 5       r\R                  " \S5      S 5       r\R                  " \S5      S 5       r\R                  " \S5      S 5       r\R                  " \S5      S 5       r Sr!g)WebSocketTest_   c                 8    [         R                  " [        5        g r"   )wsenableTrace	TRACEABLEr&   s    r   setUpWebSocketTest.setUp`   s    
y!r   c                     g r"   r   r&   s    r   tearDownWebSocketTest.tearDownc   rB   r   c                     U R                  [        R                  " 5       S 5        [        R                  " S5        U R                  [        R                  " 5       S5        [        R                  " S 5        g )N
   )assertEqualrV   getdefaulttimeoutsetdefaulttimeoutr&   s    r   test_default_timeout"WebSocketTest.test_default_timeoutf   sP    --/6
R --/4
T"r   c                 h    [        5       nU R                  US:g  5        U R                  SU;  5        g )N   u   ¥n)r   
assertTrue)r'   keys     r   test_ws_keyWebSocketTest.test_ws_keyl   s+    ')r	"S()r   c                     [        5       n[        UR                  S5      5      nU R                  S[	        U5      5        g)z/WebSocket key should be a random 16-byte nonce.zutf-8   N)r   base64decodeencoder`   r6   )r'   rh   nonces      r   
test_nonceWebSocketTest.test_nonceq   s1    ')SZZ01SZ(r   c                    SnSSSS.nU R                  [        X!S 5      S5        UR                  5       nSUS'   U R                  [        X1S 5      S5        US	 U R                  [        X1S 5      S5        UR                  5       nS	US
'   U R                  [        X1S 5      S5        US
	 U R                  [        X1S 5      S5        UR                  5       nS	US'   U R                  [        X1S 5      S5        US	 U R                  [        X1S 5      S5        UR                  5       nSUS'   U R                  [        X1SS/5      S5        U R                  [        X1SS/5      S5        UR                  5       nSUS'   U R                  [        X1SS/5      S5        UR                  5       nU R                  [        X1SS/5      S5        g )Nzc6b8hTg4EeGb2gQMztV1/g==	websocketupgradezKxep+hNu9n51529fGidYu7a3wO0=)rt   
connectionsec-websocket-accept)TNhttp)FN	somethingru   rv   sub1zsec-websocket-protocolsub2)Try   sub3sUb1Sub1suB2)r`   _validate_headercopy)r'   rh   required_headerheaders       r   test_ws_utilsWebSocketTest.test_ws_utilsw   s   ("#$B

 	)/E|T %%'"y)&t<mL9)&t<mL %%'*|)&t<mL< )&t<mL %%')4%&)&t<mL)*)&t<mL %%'+1'(V66*:;^	
 	)&7GH-X %%'+1'(V66*:;^	
 !%%')&7GH-Xr   c                 n   [        [        S5      5      u  pnU R                  US5        U R                  US   S5        [        [        S5      5      u  pnU R                  US5        U R                  US   S5        [        S5        U R                  [        R
                  [         [        S5      5        g )Ndata/header01.txte   ru   Upgradezdata/header03.txtzUpgrade, Keep-Alivezdata/header02.txt)r	   rD   r`   assertRaisesrV   r   )r'   statusr   r   s       r   test_read_headerWebSocketTest.test_read_header   s    (8K)LM%-y9(8K)LM%-/DE*+!!<@S1T	
r   c                 |   [         R                  " 5       nUR                  [        5        [	        S5      =o!l        UR                  S5        U R                  UR                  S   S5        UR                  S5        U R                  UR                  S   S5        U R                  UR                  S5      S	5        g )
Nr   Hellor      abcd)   こんにちは      abcdʁłs   1111111111101   )
rV   	WebSocketset_mask_keyr   rD   sockr=   r`   r%   send_binaryr'   r   ss      r   	test_sendWebSocketTest.test_send   s    ||~/*&':;;I		'$DE		#$FF1IW	
 	))*:;R@r   c                    [         R                  " 5       n[        5       =o!l        SnUR	                  U5        UR                  5       nU R                  US5        UR	                  S5        UR                  5       nU R                  US5        g )Nr   r   r   r   )rV   r   r   r   r-   r:   r`   )r'   r   r   rx   r$   s        r   	test_recvWebSocketTest.test_recv   ss    ||~ 
"IW 	 	
Yyy{01	56yy{w'r   %Internet-requiring tests are disabledc                     Sn[         R                  " S5      nUR                  S5        U H  nUS-  nUS:X  d  M    g    g )N   wss://api.bitfinex.com/ws/2z+{"event": "subscribe", "channel": "ticker"}r   r   )rV   create_connectionr=   )r'   countr   r   s       r   	test_iterWebSocketTest.test_iter   sB      !>?	<=AQJEz r   c                     [         R                  " S5      nU R                  [        [	        [        U5      5      5        g )Nr   )rV   r   r`   strtypenext)r'   r   s     r   	test_nextWebSocketTest.test_next   s,    ##$ABd4:./r   c                    [         R                  " 5       n[        5       =o!l        UR	                  S5        UR	                  [
        R                  " 5       5        UR	                  S5        UR	                  S5        U R                  [         R                  5         UR                  R                  S5        S S S 5        UR                  R                  S5      nU R                  US5        U R                  [         R                  5         UR                  R                  S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Ns   foos   bars   baz	   s	   foobarbazr   )rV   r   r   r   r-   sockettimeoutr   WebSocketTimeoutExceptionframe_bufferrecv_strictr`   "WebSocketConnectionClosedExceptionr'   r   r   r$   s       r   test_internal_recv_strict'WebSocketTest.test_internal_recv_strict   s    ||~ 
"I	V	V^^%&	V	Vr;;<))!, =   ,,Q/|,rDDE))!, FE =< FEs   D1E1
D?
Ec                 >   [         R                  " 5       n[        5       =o!l        UR	                  S5        UR	                  [
        R                  " 5       5        UR	                  S5        UR	                  [
        R                  " 5       5        UR	                  S5        U R                  [         R                  5         UR                  5         S S S 5        U R                  [         R                  5         UR                  5         S S S 5        UR                  5       nU R                  US5        U R                  [         R                  5         UR                  5         S S S 5        g ! , (       d  f       N= f! , (       d  f       Nz= f! , (       d  f       g = f)N   s
   abcd)s   NC3 @zHello, World!)rV   r   r   r   r-   r   r   r   r   r:   r`   r   r   s       r   test_recv_timeoutWebSocketTest.test_recv_timeout   s   ||~ 
"I	W	V^^%&	45	V^^%&	89r;;<IIK =r;;<IIK =yy{/rDDEIIK FE =<<< FEs$    E,8E=F,
E:=
F
Fc                 h   [         R                  " 5       n[        5       =o!l        UR	                  S5        UR	                  S5        UR                  5       nU R                  US5        U R                  [         R                  5         UR                  5         S S S 5        g ! , (       d  f       g = f)N   abcd#DC   abcd
DADzBrevity is the soul of wit	rV   r   r   r   r-   r:   r`   r   r   r   s       r   #test_recv_with_simple_fragmentation1WebSocketTest.test_recv_with_simple_fragmentation  sy    ||~ 
"I	GH	QRyy{;<rDDEIIK FEEs   	B##
B1c                    [         R                  " SS9n[        5       =o!l        UR	                  S5        UR	                  S5        UR	                  S5        UR                  5       u  p4U R                  US5        UR                  5       u  p4U R                  US5        UR                  5       u  p4U R                  US5        UR	                  S5        U R                  [         R                  5         UR                  5         S S S 5        U R                  [         R                  5         UR                  5         S S S 5        g ! , (       d  f       NG= f! , (       d  f       g = f)	NT)fire_cont_framer   s    abcd#DCr   s   Brevity is s   the soul of wits   abcd#DC)rV   r   r   r   r-   	recv_datar`   r   r   r   r:   )r'   r   r   r   r$   s        r   *test_recv_with_fire_event_of_fragmentation8WebSocketTest.test_recv_with_fire_event_of_fragmentation  s   ||D1 
"I	GH	GH	QR.."~..."~..."12 	
GHr445NN 6 rDDEIIK FE 65 FEs   4E,E
E
E%c                 .   [         R                  " 5       nSUl        UR                  5         [         R                  " 5       n[	        5       =o!l        SUl        UR                  S5        UR                  5         U R                  UR                  S5        g )NTs   pF)	rV   r   	connectedr@   r   r   r-   r:   r`   r   s      r   
test_closeWebSocketTest.test_close+  se    ||~

||~ 
"I	-.		/r   c                     [         R                  " 5       n[        5       =o!l        UR	                  S5        U R                  [         R                  UR                  5        g )Nr   )rV   r   r   r   r-   r   r   r:   r   s      r   test_recv_cont_fragmentation*WebSocketTest.test_recv_cont_fragmentation7  s@    ||~ 
"I	QR"//;r   c                    [         R                  " 5       n[        5       =o!l        UR	                  S5        UR	                  S5        UR	                  S5        UR                  5       nU R                  US5        U R                  [         R                  5         UR                  5         S S S 5        g ! , (       d  f       g = f)Ns!   abcd. AB
C	C	NCs    abcdAMBs   abcd Az2Once more unto the breach, dear friends, once morer   r   s       r   &test_recv_with_prolonged_fragmentation4WebSocketTest.test_recv_with_prolonged_fragmentation>  s    ||~ 
"I	j	
 	
QR	EFyy{STrDDEIIK FEEs   B44
Cc                    [         R                  " 5       nUR                  [        5        [	        5       =o!l        UR                  S5        UR                  S5        UR                  S5        UR                  5       nU R                  US5        U R                  [         R                  5         UR                  5         S S S 5        U R                  UR                  S   S5        g ! , (       d  f       N.= f)Ns   abcd5D As   abcd1C4.,$D

s   abcdCABzToo much of a good thingr   s   abcd1C4.,$D

)rV   r   r   r   r   r   r-   r:   r`   r   r   r%   r   s       r   .test_recv_with_fragmentation_and_control_frame<WebSocketTest.test_recv_with_fragmentation_and_control_frameN  s    ||~/* 
"I	=>	KL	WXyy{9:rDDEIIK FFF1IM	
 FEs   /C((
C6/Tests using local websocket server are disabledc                    [         R                  " S[         35      nU R                  US 5        UR	                  S5        UR                  5       nUR                  5         U R                  US5        UR	                  S5        UR                  5       nU R                  US5        U R                  [        UR                  SS5        UR                  5         g )Nws://127.0.0.1:Hello, Worldu   こにゃにゃちは、世界 )rV   r   r   assertNotEqualr=   r   filenor`   r:   r   
ValueError
send_closer@   r'   r   results      r   test_websocketWebSocketTest.test_websocket`  s       ?3G2H!IJAt$	~	
0	/0!AB*allB;		r   c                     [         R                  " S[         35      nU R                  US 5        UR	                  S5        UR                  S5        UR                  5         g )Nr   r   Hi)rV   r   r   r   pingpongr@   r'   r   s     r   test_ping_pongWebSocketTest.test_ping_pongq  sL       ?3G2H!IJAt$	w	t		r   c                 p    [         R                  " 5       nU R                  [        UR                  S5        g )Nzws://google.com/)rV   r   r   r   connectr   s     r   test_support_redirect#WebSocketTest.test_support_redirect{  s%    LLN5qyyBTUr   c                    [         R                  " S5      nU R                  US 5        U R                  [	        UR
                  [        R                  5      5        U R                  UR                  5       S5        U R                  UR                  5       S 5        UR                  S5        U R                  UR                  5       S5        U R                  UR                  5       S 5        UR                  5         g )Nr   r   r_   )rV   r   r   rg   r4   r   ssl	SSLSocketr`   	getstatus
getheaders
settimeoutr0   getsubprotocolabortr   s     r   test_secure_websocket#WebSocketTest.test_secure_websocket  s      !>?At$
1663==9:,ALLND1	R,))+T2		r   c                 n   [         R                  " S[         3SS0S9nU R                  US 5        U R	                  UR                  5       S 5        UR                  S5        UR                  5       nU R	                  US5        U R                  [        UR                  SS5        UR                  5         g )Nr   z
User-AgentPythonWebsocketClient)headersr   r   r   )rV   r   r   r   r`   r   r=   r:   r   r   r@   r   s      r   !test_websocket_with_custom_header/WebSocketTest.test_websocket_with_custom_header  s       234!#:;
 	At$))+T2	~0*aggr26		r   c                 ,   [         R                  " S[         35      nU R                  US 5        UR	                  5         U R                  [         R                  UR                  S5        U R                  [         R                  UR                  5        g )Nr   r   )	rV   r   r   r   r@   r   r   r=   r:   r   s     r   test_after_closeWebSocketTest.test_after_close  sl       ?3G2H!IJAt$		"??Q"??Hr   r   N)"r   r   r   r   rY   r\   rc   ri   rp   r   r   r   r   unittest
skipUnlessr   r   r   r   r   r   r   r   r   r   r   TEST_WITH_LOCAL_SERVERr   r   r   r   r   r   r   r   r   r   rS   rS   _   s   "#*
)+YZ
A&( +-TU V +-TU0 V0-""
4
0< 
$  Q  Q +-TUV VV
 +-TU	 V	  Q  QIIr   rS   c                   F    \ rS rSr\R
                  " \S5      S 5       rSrg)SockOptTesti  r   c                 0   [         R                  [         R                  S44n[        R                  " S[
         3US9nU R                  UR                  R                  [         R                  [         R                  5      S5        UR                  5         g )Nr   r   )sockoptr   )
r   IPPROTO_TCPTCP_NODELAYrV   r   r   r   r   
getsockoptr@   )r'   r  r   s      r   test_sockoptSockOptTest.test_sockopt  sz     &&(:(:A>@  234g
 	FFf00&2D2DEq	
 	
	r   r   N)	r   r   r   r   r   r   r  r	  r   r   r   r   r  r    s%     Qr   r  c                       \ rS rSrS rSrg)	UtilsTesti  c                     [        S5      nU R                  US5        [        S5      nU R                  US5        [        S5      nU R                  US5        g )Ns   𐀀Ts   κόσμεeditedFr   )r
   r`   )r'   states     r   test_utf8_validatorUtilsTest.test_utf8_validator  sV    12%M
 	&c"%r   r   N)r   r   r   r   r  r   r   r   r   r  r    s    &r   r  c                       \ rS rSr\R
                  " \S5      S 5       r\R
                  " \S5      S 5       rS r	S r
Srg)	HandshakeTesti  r   c                    [         R                  " S[        R                  " 5       R                  0SS9nU R                  [        UR                  S5        [         R                  " SS0S9nU R                  [        UR                  S5        g )N
cert_chainF)ssloptenable_multithreadr   certfilemyNonexistentCertFiler  )	rV   r   r   get_default_verify_pathscapathr   r   r   r   )r'   websock1websock2s      r   test_http_sslHandshakeTest.test_http_ssl  su    << #">">"@"G"GH$
 	*h&6&68UV<<
4K'LM 0 02O	
r   c                     [         R                  " [        R                  " 5       R                  [        R                  " 5       R
                  S.S9nU R                  [        UR                  SSSSS/SS	S
SSS.S9	  g )N)ca_certsca_cert_pathr  r   	chocolateztesting_websockets.comz+echo.websocket.events/websocket-client-test	testprotor   123	TestValuezk9kFAUWNAMmf5OEMfTlOEA==newprotocol)CustomHeader1CookiezSec-WebSocket-KeyzSec-WebSocket-Protocol)cookieoriginhostsubprotocolsru   r   )	rV   r   r   r  cafiler  r   r   r   r'   websock3s     r   test_manual_headers!HandshakeTest.test_manual_headers  s    <<88:AA # < < > E E
 	')+>% !&%%?*7	 	 	
r   c                 p    [         R                  " 5       nU R                  [        UR                  S5        g )Nz2001:4860:4860::8888)rV   r   r   r   r   )r'   r  s     r   	test_ipv6HandshakeTest.test_ipv6  s&    <<>*h&6&68NOr   c                     [         R                  " 5       nU R                  [        UR                  S5        U R                  [
        UR                  S5        U R                  [        UR                  S5        g )Nzws//example.comzws://examplezexample.com)rV   r   r   r   r   r   r/  s     r   test_bad_urlsHandshakeTest.test_bad_urls  sW    <<>*h&6&68IJ3X5E5E~V*h&6&6Fr   r   N)r   r   r   r   r   r   r   r  r1  r4  r7  r   r   r   r   r  r    sT    +-TU	
 V	
 +-TU
 V
0PGr   r  __main__))rH   os.pathr   r   base64r   rm   rs   rV   websocket._exceptionsr   r   r   websocket._handshaker   r   r   websocket._httpr	   websocket._utilsr
   r   ImportErrorr5   r   environgetr   r   r  rX   r   r   rD   TestCaserS   r  r  r  r   mainr   r   r   <module>rE     s"   
    .  
 ; > ( *& ZZ^^$8#>#E zz~~&<dC -5 	 8&X &FIH%% FIR
(## 	&!! 	&.GH%% .Gb zMMO W  9 s   D
 
DD