§
    JŠtj  ã                   ó¬   — d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZmZ 	  G d„ dej        ¦  «        Zedk    r ej        ¦   «          dS dS )	é    N)ÚMockÚpatch)Úrecv)ÚSSLWantReadError)ÚWebSocketTimeoutExceptionÚ"WebSocketConnectionClosedExceptionc                   ó0   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚSocketBugsTestz(Test bugs found in socket handling logicc                 óÐ  — t          ¦   «         }t          ¦   «         |j        _        d|j        _        t          d¦  «        5 }t          ¦   «         }||_        g |j        _        |                      t          ¦  «        5 }t          |d¦  «         ddd¦  «         n# 1 swxY w Y   |  
                    dt          |j        ¦  «        ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )a  
        BUG #5 FIX VERIFICATION: Test SSLWantReadError timeout now raises correct exception

        Bug was in _socket.py:100-101 - SSLWantReadError except block returned None implicitly
        Fixed: Now properly handles timeout with WebSocketTimeoutException
        ç      ð?úselectors.DefaultSelectoréd   Nú%Connection timed out waiting for data©r   r   r   Úside_effectÚ
gettimeoutÚreturn_valuer   ÚselectÚassertRaisesr   ÚassertInÚstrÚ	exception©ÚselfÚ	mock_sockÚmock_selector_classÚmock_selectorÚcms        ú^/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/websocket/tests/test_socket_bugs.pyÚ6test_bug_implicit_none_return_from_ssl_want_read_fixedzESocketBugsTest.test_bug_implicit_none_return_from_ssl_want_read_fixed$   óa  € õ ‘F”Fˆ	Ý%5Ñ%7Ô%7ˆ	ŒÔ"Ø,/ˆ	ÔÔ)åÐ.Ñ/Ô/ð 		VÐ3FÝ ™FœFˆMØ/<ÐÔ,Ø02ˆMÔ Ô-à×"Ò"Õ#<Ñ=Ô=ð %ÀÝ�Y Ñ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð �MŠMÐAÅ3ÀrÄ|ÑCTÔCTÑUÔUÐUð		Vð 		Vð 		Vñ 		Vô 		Vð 		Vð 		Vð 		Vð 		Vð 		Vð 		Vð 		Vøøøð 		Vð 		Vð 		Vð 		Vð 		Vð 		Vó6   Á<CÁ>BÂCÂB	ÂCÂ"B	Â#+CÃCÃ"Cc                 óì  — t          ¦   «         }t          t          j        d¦  «        }||j        _        d|j        _        t          d¦  «        5 }t          ¦   «         }||_        g |j	        _        |  
                    t          ¦  «        5 }t	          |d¦  «         ddd¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )a  
        BUG #5 FIX VERIFICATION: Test that socket.error with EAGAIN now handles timeout correctly

        Bug was in _socket.py:102-105 - socket.error except block returned None implicitly
        Fixed: Now properly handles timeout with WebSocketTimeoutException
        z Resource temporarily unavailabler   r   r   Nr   )r   ÚOSErrorÚerrnoÚEAGAINr   r   r   r   r   r   r   r   r   r   r   )r   r   Úeagain_errorr   r   r   s         r   Ú5test_bug_implicit_none_return_from_socket_error_fixedzDSocketBugsTest.test_bug_implicit_none_return_from_socket_error_fixed:   sq  € õ ‘F”Fˆ	õ �uœ|Ð-OÑPÔPˆð &2ˆ	ŒÔ"Ø,/ˆ	ÔÔ)åÐ.Ñ/Ô/ð 		VÐ3FÝ ™FœFˆMØ/<ÐÔ,Ø02ˆMÔ Ô-à×"Ò"Õ#<Ñ=Ô=ð %ÀÝ�Y Ñ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð �MŠMÐAÅ3ÀrÄ|ÑCTÔCTÑUÔUÐUð		Vð 		Vð 		Vñ 		Vô 		Vð 		Vð 		Vð 		Vð 		Vð 		Vð 		Vð 		Vøøøð 		Vð 		Vð 		Vð 		Vð 		Vð 		Vs6   Á<C)ÂB)ÂC)Â)B-	Â-C)Â0B-	Â1+C)Ã)C-Ã0C-c                 óÐ  — t          ¦   «         }t          ¦   «         |j        _        d|j        _        t          d¦  «        5 }t          ¦   «         }||_        g |j        _        |                      t          ¦  «        5 }t          |d¦  «         ddd¦  «         n# 1 swxY w Y   |  
                    dt          |j        ¦  «        ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zÿ
        BUG #6 FIX VERIFICATION: Test that selector timeout now raises correct exception type

        Bug was in _socket.py:115 returning None for timeout, treated as connection error
        Fixed: Now raises WebSocketTimeoutException directly
        r   r   r   Nr   r   r   s        r   Ú3test_bug_wrong_exception_for_selector_timeout_fixedzBSocketBugsTest.test_bug_wrong_exception_for_selector_timeout_fixedU   r!   r"   c                 ó¼  — t          ¦   «         }d|j        _        t          j        d¦  «        |j        _        |                      t          ¦  «        5 }t          |d¦  «         ddd¦  «         n# 1 swxY w Y   ddl	}|j
        dk    r*|                      dt          |j        ¦  «        ¦  «         dS |                      dt          |j        ¦  «        ¦  «         dS )zJ
        Test that socket.timeout exceptions are properly handled
        r   zOperation timed outr   Nr   )é   é
   zConnection timed out)r   r   r   ÚsocketÚtimeoutr   r   r   r   ÚsysÚversion_infor   r   r   )r   r   r   r0   s       r   Ú&test_socket_timeout_exception_handlingz5SocketBugsTest.test_socket_timeout_exception_handlingp   s  € õ ‘F”Fˆ	Ø,/ˆ	ÔÔ)õ &,¤^Ð4IÑ%JÔ%Jˆ	ŒÔ"ð ×ÒÕ8Ñ9Ô9ð 	!¸RÝ�˜CÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	ˆ
ˆ
ˆ
àÔ˜wÒ&Ð&Ø�MŠMÐ0µ#°b´lÑ2CÔ2CÑDÔDÐDÐDÐDà�MŠMÐ/µ°R´\Ñ1BÔ1BÑCÔCÐCÐCÐCs   ÁA0Á0A4Á7A4c                 ó²  — t          ¦   «         }t          ¦   «         dg|j        _        d|j        _        t          d¦  «        5 }t          ¦   «         }||_        dg|j        _        t          |d¦  «        }|                      |d¦  «         |j	         
                    ¦   «          |j         
                    ¦   «          ddd¦  «         dS # 1 swxY w Y   dS )zCTest the correct behavior when SSLWantReadError is properly handleds   data after retryr   r   Tr   N)r   r   r   r   r   r   r   r   ÚassertEqualÚregisterÚassert_called)r   r   r   r   Úresults        r   Ú)test_correct_ssl_want_read_retry_behaviorz8SocketBugsTest.test_correct_ssl_want_read_retry_behavior‰   s  € å‘F”Fˆ	õ '7Ñ&8Ô&8Ð:MÐ%Nˆ	ŒÔ"Ø,/ˆ	ÔÔ)åÐ.Ñ/Ô/ð 	1Ð3FÝ ™FœFˆMØ/<ÐÔ,Ø15°ˆMÔ Ô-õ ˜) SÑ)Ô)ˆFØ×Ò˜VÐ%8Ñ9Ô9Ð9ð Ô"×0Ò0Ñ2Ô2Ð2ØÔ ×.Ò.Ñ0Ô0Ð0ð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1ð 	1ð 	1s   ÁA;CÃCÃCN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r    r(   r*   r2   r8   © ó    r   r
   r
   !   sq   € € € € € Ø2Ð2ðVð Vð Vð,Vð Vð Vð6Vð Vð Vð6Dð Dð Dð21ð 1ð 1ð 1ð 1r>   r
   Ú__main__)r%   r.   ÚunittestÚunittest.mockr   r   Úwebsocket._socketr   Úwebsocket._ssl_compatr   Úwebsocket._exceptionsr   r   ÚTestCaser
   r9   Úmainr=   r>   r   ú<module>rG      så   ðà €€€Ø €€€Ø €€€Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à "Ð "Ð "Ð "Ð "Ð "Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ðð ð ð ð ð ð ð ð
ð&{1ð {1ð {1ð {1ð {1�XÔ&ñ {1ô {1ð {1ð| ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr>   