
    vKgL0                        S SK r S SKr S SKrS SKrS SKrS SKr \ R                  R                  SS5      S:H  r	\ R                  R                  SS5      r
\
S:g  rSr " S S	\R                  5      r\S
:X  a  \R                   " 5         gg)    NTEST_WITH_INTERNET01LOCAL_WS_SERVER_PORTz-1Tc                      \ rS rSr " S S5      rS rS rS r\R                  " \
S5      S 5       r\R                  " S	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\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)WebSocketAppTest&   c                       \ rS rSrSrSrg)WebSocketAppTest.NotSetYet'   z?A marker class for signalling that a value hasn't been set yet. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       X/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/websocket/tests/test_app.py	NotSetYetr   '   s    Mr   r   c                     [         R                  " [        5        [        R	                  5       [        l        [        R	                  5       [        l        [        R	                  5       [        l        [        R	                  5       [        l        g N)	wsenableTrace	TRACEABLEr   r   keep_running_openkeep_running_closeget_mask_key_idon_error_dataselfs    r   setUpWebSocketAppTest.setUp*   sV    
y!-=-G-G-I*.>.H.H.J++;+E+E+G()9)C)C)E&r   c                     [         R                  5       [         l        [         R                  5       [         l        [         R                  5       [         l        [         R                  5       [         l        g r   )r   r   r   r   r   r   r    s    r   tearDownWebSocketAppTest.tearDown2   sJ    -=-G-G-I*.>.H.H.J++;+E+E+G()9)C)C)E&r   c                     g r   r   r    s    r   closeWebSocketAppTest.close8   s    r   z/Tests using local websocket server are disabledc                 z   ^  S nU 4S jnS n[         R                  " S[         3UUUS9nUR                  5         g)kA WebSocketApp should keep running as long as its self.keep_running
is not False (in the boolean context).
c                 ^    U R                  S5        U R                  [        l        SU l        g)zUSet the keep_running flag for later inspection and immediately
close the connection.
hello!FN)sendkeep_runningr   r   r!   argskwargss      r   on_open3WebSocketAppTest.test_keep_running.<locals>.on_openC   s'     IIh151B1B. %Dr   c                 <   > [        U5        TR                  5         g r   printr(   _messager!   s     r   
on_message6WebSocketAppTest.test_keep_running.<locals>.on_messageK       'NJJLr   c                 .    U R                   [        l        g)z.Set the keep_running flag for the test to use.N)r/   r   r   r0   s      r   on_close4WebSocketAppTest.test_keep_running.<locals>.on_closeO   s    262C2C/r   ws://127.0.0.1:)r3   r?   r;   Nr   WebSocketAppr   run_forever)r!   r3   r;   r?   apps   `    r   test_keep_running"WebSocketAppTest.test_keep_running;   sD    	&		D oo234!	
 	r   Fz$Test disabled for now (requires rel)c                 p   ^  S nU 4S jn[         R                  " S[         3UUS9nUR                  SS9  g)r+   c                 h    U R                  S5        U R                  5         U R                  S5        g)z*Send a message, receive, and send one morer-   zgoodbye!N)r.   recvr0   s      r   r3   =WebSocketAppTest.test_run_forever_dispatcher.<locals>.on_openb   s#    IIhIIKIIj!r   c                 <   > [        U5        TR                  5         g r   r6   r8   s     r   r;   @WebSocketAppTest.test_run_forever_dispatcher.<locals>.on_messageh   r=   r   rA   )r3   r;   
Dispatcher)
dispatcherNrB   )r!   r3   r;   rE   s   `   r   test_run_forever_dispatcher,WebSocketAppTest.test_run_forever_dispatcher\   s?    	"	 oo234!

 	<0r   c                     [         R                  " S[         35      n[        R                  " SUR
                  S9R                  5         UR                  5       nU R                  US5        g)zaThe WebSocketApp.run_forever() method should return `False` when the application ends gracefully.rA   g?)intervalfunctionFN)	r   rC   r   	threadingTimerr(   startrD   assertEqual)r!   rE   teardowns      r   $test_run_forever_teardown_clean_exit5WebSocketAppTest.test_run_forever_teardown_clean_exitv   sR    
 oo0D/EFGsyy9??A??$5)r   z%Internet-requiring tests are disabledc                     S n[         R                  " SUS9nU R                  [        UR                  5      [        U5      5        g)zXA WebSocketApp should forward the received mask_key function down
to the actual socket.
c                      g)Nz    r   r   r   r   my_mask_key_func=WebSocketAppTest.test_sock_mask_key.<locals>.my_mask_key_func   s    %r   wss://api-pub.bitfinex.com/ws/1)get_mask_keyN)r   rC   rX   idra   )r!   r^   rE   s      r   test_sock_mask_key#WebSocketAppTest.test_sock_mask_key   s@    	& oo-<L
 	C,,-r2B/CDr   c                     S nS n[         R                  " SXS9nU R                  [         R                  UR                  SSS[
        R                  0S9  g	)
z7Test exception handling if ping_interval < ping_timeoutc                 :    [        S5        U R                  5         g NzGot a ping!r6   rE   r9   s     r   on_pingIWebSocketAppTest.test_invalid_ping_interval_ping_timeout.<locals>.on_ping       - IIKr   c                 :    [        S5        U R                  5         g NzGot a pong! No need to respondr6   rh   s     r   on_pongIWebSocketAppTest.test_invalid_ping_interval_ping_timeout.<locals>.on_pong       23IIKr   r`   ri   rn         	cert_reqsping_intervalping_timeoutssloptNr   rC   assertRaisesWebSocketExceptionrD   ssl	CERT_NONEr!   ri   rn   rE   s       r   'test_invalid_ping_interval_ping_timeout8WebSocketAppTest.test_invalid_ping_interval_ping_timeout   sX    		 oo-w
 	!!OO/ 	 	
r   c                 |    S nS n[         R                  " SXS9nUR                  SSS[        R                  0S9  g	)
z+Test WebSocketApp proper ping functionalityc                 :    [        S5        U R                  5         g rg   r6   rh   s     r   ri   4WebSocketAppTest.test_ping_interval.<locals>.on_ping   rk   r   c                 :    [        S5        U R                  5         g rm   r6   rh   s     r   rn   4WebSocketAppTest.test_ping_interval.<locals>.on_pong   rp   r   r`   rq   rs   rr   rt   ru   N)r   rC   rD   r|   r}   r~   s       r   test_ping_interval#WebSocketAppTest.test_ping_interval   sD    		 oo-w
 	![#--4P 	 	
r   c                 R    [         R                  " S5      nUR                  SSSS9  g)zTest WebSocketApp close opcode'wss://tsock.us1.twilio.com/v3/wsconnectrs   rr   zPing payload)rv   rw   ping_payloadN)r   rC   rD   r!   rE   s     r   test_opcode_close"WebSocketAppTest.test_opcode_close   s%     ooGHaanUr   c                     [         R                  " S5      nU R                  [         R                  UR                  SS[
        R                  0S9  g)z1A WebSocketApp handling of negative ping_intervalr`   rt   )rv   rx   Nry   r   s     r   test_bad_ping_interval'WebSocketAppTest.test_bad_ping_interval   sE     oo?@!!OO/	 	 	
r   c                     [         R                  " S5      nU R                  [         R                  UR                  SS[
        R                  0S9  g)z0A WebSocketApp handling of negative ping_timeoutr`   rt   )rw   rx   Nry   r   s     r   test_bad_ping_timeout&WebSocketAppTest.test_bad_ping_timeout   sE     oo?@!!OO/	 	 	
r   c                    S n[         R                  " SUS9n[         R                  " [         R                  R                  SS9nU R	                  SS/UR                  U5      5        [         R                  " [         R                  R                  SS9nU R	                  S	S	/UR                  U5      5        [         R                  " S5      n[         R                  " [         R                  R                  SS9nU R	                  S	S	/UR                  U5      5        U R                  [         R                  UR                  S
S9  g	)zKTest extraction of close frame status code and close reason in WebSocketAppc                     [        S5        g )Nzon_close reached)r7   )wsappclose_status_code	close_msgs      r   r?   9WebSocketAppTest.test_close_status_code.<locals>.on_close   s    $%r   r   )r?   s   no-init-from-client)opcodedatai  zno-init-from-clientr   Nztest if connection is closed)r   )	r   rC   ABNFOPCODE_CLOSErX   _get_close_argsrz   "WebSocketConnectionClosedExceptionr.   )r!   r?   rE   
closeframeapp2s        r   test_close_status_code'WebSocketAppTest.test_close_status_code   s   	& oo5
 WW77''.L

 	$ 568K8KJ8WXWWBGG$8$8sC
$s':'::'FGHIWWBGG$8$8sC
$t';';J'GH11HH/ 	 	
r   c                   ^^ SmSmS nUU4S jnS n[         R                  " S[         3UUUS9nUR                  SSS	9  U R	                  TU5        U R                  T[        5        U R	                  [        T5      S
5        g)z)Test callback function exception handlingNc                     [        S5      eNCallback failedRuntimeError)rE   s    r   r3   BWebSocketAppTest.test_callback_function_exception.<locals>.on_open  s    011r   c                    > U mUmg r   r   )rE   errexc
passed_apps     r   on_errorCWebSocketAppTest.test_callback_function_exception.<locals>.on_error  s    JCr   c                 $    U R                  5         g r   r(   rh   s     r   rn   BWebSocketAppTest.test_callback_function_exception.<locals>.on_pong  s    IIKr   rA   r3   r   rn   rs   rr   rv   rw   r   )r   rC   r   rD   rX   assertIsInstancer   str)r!   r3   r   rn   rE   r   r   s        @@r    test_callback_function_exception1WebSocketAppTest.test_callback_function_exception   s     
	2		 oo234	
 	aa8S)c<0S#45r   c                      " S S5      nU" 5       nU R                  UR                  UR                  5        U R                  UR                  [
        5        U R                  [        UR                  5      S5        g)z'Test callback method exception handlingc                   ,    \ rS rSrS rS rS rS rSrg)BWebSocketAppTest.test_callback_method_exception.<locals>.Callbacksi#  c                     S U l         S U l        [        R                  " S[         3U R
                  U R                  U R                  S9U l        U R                  R                  SSS9  g )NrA   r   rs   rr   r   )
r   r   r   rC   r   r3   r   rn   rE   rD   r    s    r   __init__KWebSocketAppTest.test_callback_method_exception.<locals>.Callbacks.__init__$  sZ    "&??%&:%;< LL!]] LL	 $$11$Er   c                     [        S5      er   r   )r!   r9   s     r   r3   JWebSocketAppTest.test_callback_method_exception.<locals>.Callbacks.on_open/  s    "#455r   c                     Xl         X l        g r   )r   r   )r!   rE   r   s      r   r   KWebSocketAppTest.test_callback_method_exception.<locals>.Callbacks.on_error2  s    "%r   c                 $    UR                  5         g r   r   )r!   rE   r9   s      r   rn   JWebSocketAppTest.test_callback_method_exception.<locals>.Callbacks.on_pong6  s    		r   )rE   r   r   N)	r   r   r   r   r   r3   r   rn   r   r   r   r   	Callbacksr   #  s    	F6r   r   r   N)rX   r   rE   r   r   r   r   )r!   r   	callbackss      r   test_callback_method_exception/WebSocketAppTest.test_callback_method_exception  s]    	 	, K	--y}}=imm\:Y]]+->?r   c                   ^^ SmSmU4S jnU4S jn[         R                  " S[         3X!S9nUR                  SSS	S
9  U R	                  TS5        U R                  T[         R                  5        U R	                  [        T5      S5        g)zTest reconnectr   Nc                 
   > Umg r   r   )r9   r   r   s     r   r   1WebSocketAppTest.test_reconnect.<locals>.on_errorG  s    Cr   c                 ~   > TS-  mTS:X  a  U R                   R                  5         TS:  a  U R                  5         g g )Nrr   rs   )sockshutdownr(   )rE   r9   
pong_counts     r   rn   0WebSocketAppTest.test_reconnect.<locals>.on_pongK  s8    !OJQ!!#Q		 r   rA   )rn   r   rs   rr      )rv   rw   	reconnectzping/pong timed out)r   rC   r   rD   rX   r   WebSocketTimeoutExceptionr   )r!   r   rn   rE   r   r   s       @@r   test_reconnectWebSocketAppTest.test_reconnect?  s    
 
		 oo234g
 	aa1EQ'c2#?#?@S#89r   )r/   N)r   r   r   r   r   r"   r%   r(   unittest
skipUnlessTEST_WITH_LOCAL_SERVERrF   rP   rZ   r   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   &   s   N NFF  Q<  FG1 H12  Q** +-TUE VE  +-TU
 V
, +-TU
 V
$ +-TUV VV +-TU
 V
 +-TU
 V
 +-TU
 V
6  Q66<  Q@@>  Q::r   r   __main__)osos.pathr|   rU   r   	websocketr   environgetr   r   r   r   TestCaser   r   mainr   r   r   <module>r      s    
  
   ( ZZ^^$8#>#E zz~~&<dC -5 	v:x(( v:r	 zMMO r   