a
     RîhÄ  ã                   @   s„   d dl 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r€e  ¡  dS )é    N)Úsupport)Úsocket_helperÚsslÚnetworkc              	   C   s†   t  ¡ }t | |f¡\}z|j|| d}W n  tyJ   Y W d   ƒ dS 0 | ¡  W d   ƒ dS W d   ƒ n1 sx0    Y  d S )N)Zserver_hostnameFT)r   Úcreate_default_contextÚsocketÚcreate_connectionZwrap_socketÚ	ExceptionÚclose)ÚhostÚportÚcontextÚsock© r   ú9/opt/python-3.9.24/usr/lib/python3.9/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¡Š t | j| j¡}z|j|d W nH tjyœ } z.|jd dkr†t |jd ¡ n‚ W Y d }~n
d }~0 0 | ¡  | ¡  W d   ƒ n1 sÂ0    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¡0 t | j| j¡}| ¡  | 	¡  W d   ƒ n1 sN0    Y  d S ©Nr   )
r   r   r   r   r   r   r   r   r#   r$   ©r%   r&   r   r   r   Útest_connect1   s
    zSmtpSSLTest.test_connectc                 C   sX   t  td¡ t | j¡, t | j¡}| ¡  | ¡  W d   ƒ n1 sJ0    Y  d S r-   )	r   r   r   r   r   r   r   r#   r$   r.   r   r   r   Útest_connect_default_port8   s
    z%SmtpSSLTest.test_connect_default_portc                 C   sz   t  t j¡}d|_t j|_t td¡ t	 
| j¡4 tj| j| j|d}| ¡  | ¡  W d   ƒ n1 sl0    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>0    Y  t td¡ t	 
¡ }t  | j¡4 tj| j| j|d}| ¡  | ¡  W d   ƒ n1 s¢0    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_verifiedI   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   Úimport_moduler   Zrequiresr   ZTestCaser   r,   r)   Úmainr   r   r   r   Ú<module>   s   

*