o
    e                     @   s   d dl mZmZmZ d dlmZ e  d dlZd dlZd dl	m
Z d dlmZ d dlZdd Zddddd	d
ZG dd dejZedkrLe  dS dS )    )print_functiondivisionabsolute_import)monkeyN)test__socketc                 C   s*   t   }t| t|| |dd}||fS )NTkeyfilecertfileserver_side)socket	greentestZbind_and_listenwrap_socket)Zprivate_keyZcertificateraw_listenersock r   FD:\Projects\ConvertPro\env\Lib\site-packages\gevent/tests/test__ssl.pyssl_listener   s   
r   Fr   c                C   sP   t jt jd}t j|_d|_|  |d us|d ur!|j||d |j| |dS )N)protocolF)r	   r   )r
   )	ssl
SSLContextPROTOCOL_TLS	CERT_NONEverify_modecheck_hostnameload_default_certsload_cert_chainr   )r   r   r	   r
   contextr   r   r   r      s   r   c                       s   e Zd ZejejedZejejedZ	e
jZdd Z fddZdZdd	  ZZed
ed
ejjZed
ed
ejjZeddd Zejed fddZejdd Zejdd Z  Z S )TestSSLztest_server.crtztest_server.keyc                 C   s    t | j| j\}}| | |S N)r   privfiler	   _close_on_teardown)selflistenerr   r   r   r   _setup_listener1   s   
zTestSSL._setup_listenerc                    s    |  ttt| j|i |S r   )r    r   superr   create_connection)r!   argskwargs	__class__r   r   r%   6   s   zTestSSL.create_connectionFs   helloi zSometimes misses datazNot clear why we're skippingc                    s   g t j fddd}  }|d zHttdtj} | | j	 W d    n1 s4w   Y  W |
  |  d d   d S W |
  |  d d   d S |
  |  d d   w )Nc                      s     j S r   )appendr"   acceptr   r!   Zserver_sockr   r   <lambda>T   s    z3TestSSL.test_ssl_sendall_timeout0.<locals>.<lambda>)targetFSSLWantWriteErrorr   )r   Threadr%   setblockinggetattrr   SSLErrorassertRaisessendall_test_sendall_datajoinclose)r!   Zacceptorclientexpectedr   r,   r   test_ssl_sendall_timeout0O   s&   
z!TestSSL.test_ssl_sendall_timeout0zNo longer raises SSLErrorc                    s@   |  tj tt|   W d    d S 1 sw   Y  d S r   )r4   r   r3   r$   r   test_empty_sendr!   r(   r   r   r<   n   s   "zTestSSL.test_empty_sendc                 C      d S r   r   r=   r   r   r   test_sendall_nonblocking}      z TestSSL.test_sendall_nonblockingc                 C   r>   r   r   r=   r   r   r   $test_connect_with_type_flags_ignored   r@   z,TestSSL.test_connect_with_type_flags_ignored)!__name__
__module____qualname__ospathr7   dirname__file__r	   r   r   timeoutZTIMEOUT_ERRORr#   r%   Z _test_sendall_timeout_check_timer6   Z	data_sentr   ZskipOnMacOnCIZskipOnManylinuxr   TestTCPZtest_sendall_arrayZtest_sendall_strZskipOnWindowsr;   Zignores_leakcheckZskipOnPy310r<   r?   rA   __classcell__r   r   r(   r   r   !   s6    	

r   __main__)
__future__r   r   r   Zgeventr   Z	patch_allrE   r   Zgevent.testingtestingr   Zgevent.testsr   r   r   r   rJ   r   rB   mainr   r   r   r   <module>   s    h