o
    M,h                     @   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   k/var/www/www-root/data/www/bot.pdev.uz/venv/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 sw   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