o
    g                     @   s   d dl Z d dlmZ d dlmZ d dlmZ d dlZd dlZedZ	e
d dd ZG d	d
 d
e jZG dd de jZedkrHe   dS dS )    N)support)import_helper)socket_helpersslZnetworkc              	   C   sz   t  }t| |f(}z	|j|| d}W n ty%   Y W d    dS w |  	 W d    dS 1 s6w   Y  d S )N)Zserver_hostnameFT)r   create_default_contextsocketcreate_connectionZwrap_socket	Exceptionclose)hostportcontextsock r   G/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_smtpnet.pycheck_ssl_verifiy   s   $r   c                   @   s   e Zd ZdZdZdd ZdS )SmtpTestsmtp.gmail.comiK  c                 C   s   t td ttj}d|_tj|_t	
| jF t| j| j}z|j|d W n$ tjyN } z|jd dkrCt|jd  n W Y d }~nd }~ww |  |  W d    d S 1 sbw   Y  d S )NSMTP_SSLFr   r   z+STARTTLS extension not supported by server.)r   get_attributesmtplibr   
SSLContextPROTOCOL_TLS_CLIENTcheck_hostname	CERT_NONEverify_moder   transient_internet
testServerZSMTP
remotePortZstarttlsZSMTPExceptionargsunittestskipehloquit)selfr   serverer   r   r   test_connect_starttls   s$   
"zSmtpTest.test_connect_starttlsN)__name__
__module____qualname__r   r   r(   r   r   r   r   r      s    r   c                   @   s4   e Zd ZdZdZdd Zdd Zdd Zd	d
 ZdS )SmtpSSLTestr   i  c                 C   s^   t td t| j t| j| j}|  |	  W d    d S 1 s(w   Y  d S Nr   )
r   r   r   r   r   r   r   r   r#   r$   r%   r&   r   r   r   test_connect2   s   
"zSmtpSSLTest.test_connectc                 C   sZ   t td t| j t| j}|  |  W d    d S 1 s&w   Y  d S r-   )	r   r   r   r   r   r   r   r#   r$   r.   r   r   r   test_connect_default_port9   s   
"z%SmtpSSLTest.test_connect_default_portc                 C   s|   t t j}d|_t j|_ttd t	
| j tj| j| j|d}|  |  W d    d S 1 s7w   Y  d S )NFr   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r#   r$   )r%   r   r&   r   r   r   test_connect_using_sslcontext@   s   
"z)SmtpSSLTest.test_connect_using_sslcontextc                 C   s   t | j t| j| j}|s| d W d    n1 sw   Y  ttd t	
 }t | j tj| j| j|d}|  |  W d    d S 1 sRw   Y  d S )Nz!SSL certificate can't be verifiedr   r   )r   r   r   r   r   ZskipTestr   r   r   r   r   r   r#   r$   )r%   Z
can_verifyr   r&   r   r   r   &test_connect_using_sslcontext_verifiedJ   s   

"z2SmtpSSLTest.test_connect_using_sslcontext_verifiedN)	r)   r*   r+   r   r   r/   r0   r1   r2   r   r   r   r   r,   .   s    
r,   __main__)r!   testr   Ztest.supportr   r   r   r   import_moduler   Zrequiresr   ZTestCaser   r,   r)   mainr   r   r   r   <module>   s    

*