o
    HXîhñ  ã                   @   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ÚsslÚ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   ú;/opt/python-3.10.19/usr/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    r0   r1   r2   r3   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    

*ÿ