o
    Ê·6i‹  ã                   @   sH   d dl Z d dlZd dlmZ 	 G dd„ dejƒZedkr"e ¡  dS dS )é    N)Úpatchc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚSSLCompatTestc                 C   sh   ddl m} |  |j¡ |  |j¡ |  t|dƒ¡ |  t|dƒ¡ |  t|dƒ¡ |  t|dƒ¡ dS )z/Test that SSL is available in normal conditionsr   NÚSSLErrorÚSSLEOFErrorÚSSLWantReadErrorÚSSLWantWriteError)Úwebsocket._ssl_compatÚ_ssl_compatÚ
assertTrueÚHAVE_SSLÚassertIsNotNoneÚsslÚhasattr)ÚselfÚ
ssl_compat© r   úd/var/www/hoanhtaovolam_webdjango/env/lib/python3.10/site-packages/websocket/tests/test_ssl_compat.pyÚtest_ssl_available   s   z SSLCompatTest.test_ssl_availablec                    s2  dt jv r	t jd= ddl}|j‰ ‡ fdd„}td|ds ddlm} |  |j¡ |  	|j
¡ |  t|jtƒ¡ |  t|jtƒ¡ |  t|jtƒ¡ |  t|jtƒ¡ | d¡}|  |t¡ |  t|ƒd¡ | d	¡}|  |t¡ | d
¡}|  |t¡ | d¡}|  |t¡ W d  ƒ dS 1 s’w   Y  dS )z0Test fallback behavior when SSL is not availableúwebsocket._ssl_compatr   Nc                    s&   | dkrt dƒ‚ˆ | g|¢R i |¤ŽS )Nr   zNo module named 'ssl')ÚImportError)ÚnameÚargsÚkwargs©Úoriginal_importr   r   Úmock_import3   s   z9SSLCompatTest.test_ssl_not_available.<locals>.mock_importzbuiltins.__import__)Úside_effectz
test errorztest eofz	test readz
test write)ÚsysÚmodulesÚbuiltinsÚ
__import__r   r   r	   ÚassertFalser   ÚassertIsNoner   r
   Ú
issubclassr   Ú	Exceptionr   r   r   ÚassertIsInstanceÚassertEqualÚstr)r   r   r   r   Ú	ssl_errorÚssl_eof_errorÚssl_want_readÚssl_want_writer   r   r   Útest_ssl_not_available(   s.   




"çz$SSLCompatTest.test_ssl_not_availablec                 C   s   dt jv rt jd= dS dS )zClean up after testsr   N)r   r   )r   r   r   r   ÚtearDownS   s   
ÿzSSLCompatTest.tearDownN)Ú__name__Ú
__module__Ú__qualname__r   r,   r-   r   r   r   r   r      s    +r   Ú__main__)r   ÚunittestÚunittest.mockr   ÚTestCaser   r.   Úmainr   r   r   r   Ú<module>   s   Aÿ