o
    ʷ6iA                     @   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d Zd	d
 Zdd ZdS )	UtilsTestc                 C   s\   ddl m} | }| W d   n1 sw   Y  | |  | |ddd dS )zTest NoLock context managerr   )NoLockN)websocket._utilsr   assertIsNone	__enter____exit__)selfr   lock r   _/var/www/hoanhtaovolam_webdjango/env/lib/python3.10/site-packages/websocket/tests/test_utils.pytest_nolock   s   zUtilsTest.test_nolockc                 C   sv   ddl m} | |dd | |dd | |d | |dd | |d | |d	 d
S )z/Test UTF-8 validation when wsaccel is availabler   )validate_utf8Hello, World!utf-8   🌟 Unicode test   Hello, bytes   Héllo with accénts      N)r   r   
assertTrueencodeassertFalse)r	   r   r   r   r   !test_utf8_validation_with_wsaccel(   s   z+UtilsTest.test_utf8_validation_with_wsaccelc                    s  dt jv r	t jd= ddl}|j  fdd}td|df ddlm} | |d	d	 | |d
 | |d	d	 | |d	d	 | |d	d	 | |d	d	 | |d | 
|d | 
|d W d   dS 1 sw   Y  dS )z<Test UTF-8 validation fallback when wsaccel is not availablewebsocket._utilsr   Nc                    s.   d| v rt d|  d | g|R i |S )NwsaccelzNo module named '')ImportError)nameargskwargsoriginal_importr   r   mock_importB   s   z<UtilsTest.test_utf8_validation_fallback.<locals>.mock_importzbuiltins.__import__)side_effectr   r   r   z
ASCII textr   r        r   r   )sysmodulesbuiltins
__import__r   r   _utilsr   r   r   r   )r	   r)   r#   utilsr   r!   r   test_utf8_validation_fallback7   s"   
"z'UtilsTest.test_utf8_validation_fallbackc                 C   sV   ddl m} td}| ||d tdd}| ||d t }| || dS )z!Test extract_err_message functionr   )extract_err_messagezTest error messagez	First arg
Second argN)r   r.   	ExceptionassertEqualr   )r	   r.   exc_with_argsexc_multi_argsexc_no_argsr   r   r   test_extract_err_message^   s   
z"UtilsTest.test_extract_err_messagec                 C   sl   ddl m} tdd}| ||d tdd}| || td}| || t }| || dS )	z Test extract_error_code functionr   )extract_error_codei  z	Not foundzError messager/   z
Single argN)r   r6   r0   r1   r   )r	   r6   exc_with_codeexc_with_stringexc_single_argr4   r   r   r   test_extract_error_coden   s   

z!UtilsTest.test_extract_error_codec                 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   tearDown   s   
zUtilsTest.tearDownN)	__name__
__module____qualname__r   r   r-   r5   r:   r;   r   r   r   r   r      s    'r   __main__)r'   unittestunittest.mockr   TestCaser   r<   mainr   r   r   r   <module>   s   p