HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.7/test/__pycache__/test_smtpd.cpython-37.opt-1.pyc
B

��g���@slddlZddlZddlmZmZddlZddlZddlZddlZGdd�dej	�Z
Gdd�de�ZGdd�de
�Z
Gd	d
�d
ej�ZGdd�dej�ZGd
d�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�Ze�ejd�Gdd�de��ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGd d!�d!ej�Zed"k�rhe��dS)#�N)�support�mock_socketc@seZdZdd�Zdd�ZdS)�DummyServercOs2tjj|f|�|�g|_|jr(d|_nd|_dS)Nz
return statuss
return status)�smtpd�
SMTPServer�__init__�messagesZ_decode_data�
return_status)�self�args�kwargs�r
�+/usr/local/lib/python3.7/test/test_smtpd.pyrs
zDummyServer.__init__cKs>|j�||||f�||jkr"dSd|kr:d|dkr:dSdS)Nz	250 OkishZmail_optionsZSMTPUTF8z250 SMTPUTF8 message okish)r�appendr	)r
Zpeer�mailfromZrcpttos�data�kwr
r
r�process_messages

zDummyServer.process_messageN)�__name__�
__module__�__qualname__rrr
r
r
rr
src@seZdZdS)�DummyDispatcherBrokenN)rrrr
r
r
rrsrc@seZdZdd�ZdS)�BrokenDummyServercCs
t��dS)N)r)r
Znumr
r
r�listen szBrokenDummyServer.listenN)rrrrr
r
r
rrsrc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�SMTPDServerTestcCstt_t_dS)N)rr�socket�asyncore)r
r
r
r�setUp%szSMTPDServerTest.setUpcsrtjtjdfddd�}|��\}}tj|||dd���fdd�}|d�|d�|d	�|d
�|�t|d�dS)Nr)�brT)�decode_datacs�j�|����dS)N)r�
queue_recv�handle_read)�line)�channelr
r�
write_line.szFSMTPDServerTest.test_process_message_unimplemented.<locals>.write_linesHELO examplesMAIL From:eggs@examplesRCPT To:spam@examplesDATAs	spam
.
)rrr�HOST�accept�SMTPChannel�assertRaises�NotImplementedError)r
�server�conn�addrr$r
)r#r�"test_process_message_unimplemented(sz2SMTPDServerTest.test_process_message_unimplementedcCs"|jttjtjdfdddd�dS)Nr)rrT)�enable_SMTPUTF8r)r(�
ValueErrorrrrr%)r
r
r
r�+test_decode_data_and_enable_SMTPUTF8_raises8sz;SMTPDServerTest.test_decode_data_and_enable_SMTPUTF8_raisescCst��tt_t_dS)N)r�	close_allrr)r
r
r
r�tearDownAszSMTPDServerTest.tearDownN)rrrrr-r0r2r
r
r
rr$s	rc@sFeZdZdd�Zddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)�DebuggingServerTestcCstt_t_dS)N)rrrr)r
r
r
rrHszDebuggingServerTest.setUpFcsN�fdd�}|d�|r"|d�n|d�|d�|d�||�|d�dS)	Ncs�j�|����dS)N)rr r!)r")r#r
rr$Lsz1DebuggingServerTest.send_data.<locals>.write_linesEHLO examples-MAIL From:eggs@example BODY=8BITMIME SMTPUTF8sMAIL From:eggs@examplesRCPT To:spam@examplesDATA�.r
)r
r#rr.r$r
)r#r�	send_dataKs
zDebuggingServerTest.send_datac	Csrtjtjdfddd�}|��\}}tj|||dd�}t���}|�|d�WdQRX|��}|�	|t
�d��dS)Nr)rrT)rsFrom: test

hello
z�             ---------- MESSAGE FOLLOWS ----------
             From: test
             X-Peer: peer-address

             hello
             ------------ END MESSAGE ------------
             )r�DebuggingServerrr%r&r'�captured_stdoutr5�getvalue�assertEqual�textwrap�dedent)r
r*r+r,r#�s�stdoutr
r
r�*test_process_message_with_decode_data_trueYs

z>DebuggingServerTest.test_process_message_with_decode_data_truec	Csjt�tjdfd�}|��\}}t�|||�}t���}|�|d�WdQRX|��}|�	|t
�d��dS)Nr)rrsFrom: test

héllo�
z�             ---------- MESSAGE FOLLOWS ----------
             b'From: test'
             b'X-Peer: peer-address'
             b''
             b'h\xc3\xa9llo\xff'
             ------------ END MESSAGE ------------
             )rr6rr%r&r'r7r5r8r9r:r;)r
r*r+r,r#r<r=r
r
r�+test_process_message_with_decode_data_falsejs

z?DebuggingServerTest.test_process_message_with_decode_data_falsec	Csrtjtjdfddd�}|��\}}tj|||dd�}t���}|�|d�WdQRX|��}|�	|t
�d��dS)Nr)rrT)r.sFrom: test

héllo�
z�             ---------- MESSAGE FOLLOWS ----------
             b'From: test'
             b'X-Peer: peer-address'
             b''
             b'h\xc3\xa9llo\xff'
             ------------ END MESSAGE ------------
             )rr6rr%r&r'r7r5r8r9r:r;)r
r*r+r,r#r<r=r
r
r�.test_process_message_with_enable_SMTPUTF8_truezs

zBDebuggingServerTest.test_process_message_with_enable_SMTPUTF8_truec	Csvtjtjdfddd�}|��\}}tj|||dd�}t���}|j|ddd�WdQRX|��}|�	|t
�d��dS)Nr)rrT)r.sFrom: test

héllo�
a             ---------- MESSAGE FOLLOWS ----------
             mail options: ['BODY=8BITMIME', 'SMTPUTF8']
             b'From: test'
             b'X-Peer: peer-address'
             b''
             b'h\xc3\xa9llo\xff'
             ------------ END MESSAGE ------------
             )rr6rr%r&r'r7r5r8r9r:r;)r
r*r+r,r#r<r=r
r
r�7test_process_SMTPUTF8_message_with_enable_SMTPUTF8_true�s

zKDebuggingServerTest.test_process_SMTPUTF8_message_with_enable_SMTPUTF8_truecCst��tt_t_dS)N)rr1rr)r
r
r
rr2�szDebuggingServerTest.tearDownN)F)
rrrrr5r>r?r@rAr2r
r
r
rr3Fs
r3c@s:eZdZdd�Zdd�Ze�ejd�dd��Z	dd	�Z
d
S)�TestFamilyDetectioncCstt_t_dS)N)rrrr)r
r
r
rr�szTestFamilyDetection.setUpcCst��tt_t_dS)N)rr1rr)r
r
r
rr2�szTestFamilyDetection.tearDownzIPv6 not enabledcCs.t�tjdftjdf�}|�|jjtj�dS)Nr)	rrr�HOSTv6�HOSTv4r9r�familyZAF_INET6)r
r*r
r
r�test_socket_uses_IPv6�sz)TestFamilyDetection.test_socket_uses_IPv6cCs.t�tjdftjdf�}|�|jjtj�dS)Nr)	rrrrDrCr9rrEZAF_INET)r
r*r
r
r�test_socket_uses_IPv4�sz)TestFamilyDetection.test_socket_uses_IPv4N)rrrrr2�unittest�
skipUnlessr�IPV6_ENABLEDrFrGr
r
r
rrB�srBc@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�TestRcptOptionParsings:555 RCPT TO parameters not recognized or not implemented
cCs(tt_t_tj|_t��|_t_dS)N)	rrrr�DEBUGSTREAM�old_debugstream�io�StringIO�debug)r
r
r
rr�szTestRcptOptionParsing.setUpcCs t��tt_t_|jt_dS)N)rr1rrrMrL)r
r
r
rr2�szTestRcptOptionParsing.tearDowncCs|j�|�|��dS)N)rr r!)r
r#r"r
r
rr$�sz TestRcptOptionParsing.write_linecCsdttjdfd�}|��\}}t�|||�}|�|d�|�|d�|�|d�|�|jj	|j
�dS)Nr)rrsEHLO examples$MAIL from: <foo@example.com> size=20s"RCPT to: <foo@example.com> foo=bar)rrr%r&rr'r$r9r�last�error_response)r
r*r+r,r#r
r
r�test_params_rejected�sz*TestRcptOptionParsing.test_params_rejectedcCsbttjdfd�}|��\}}t�|||�}|�|d�|�|d�|�|d�|�|jj	d�dS)Nr)rrsEHLO examples$MAIL from: <foo@example.com> size=20sRCPT to: <foo@example.com>s250 OK
)
rrr%r&rr'r$r9rrQ)r
r*r+r,r#r
r
r�test_nothing_accepted�sz+TestRcptOptionParsing.test_nothing_acceptedN)	rrrrRrr2r$rSrTr
r
r
rrK�s	rKc@s@eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)�TestMailOptionParsings<555 MAIL FROM parameters not recognized or not implemented
cCs(tt_t_tj|_t��|_t_dS)N)	rrrrrLrMrNrOrP)r
r
r
rr�szTestMailOptionParsing.setUpcCs t��tt_t_|jt_dS)N)rr1rrrMrL)r
r
r
rr2�szTestMailOptionParsing.tearDowncCs|j�|�|��dS)N)rr r!)r
r#r"r
r
rr$�sz TestMailOptionParsing.write_linecCs�ttjdfddd�}|��\}}tj|||dd�}|�|d�x*dD]"}|�||�|�|jj	|j
�qDW|�|d�|�|jj	d�dS)	Nr)rrT)rsEHLO example)s-MAIL from: <foo@example.com> size=20 SMTPUTF8s;MAIL from: <foo@example.com> size=20 SMTPUTF8 BODY=8BITMIMEs1MAIL from: <foo@example.com> size=20 BODY=UNKNOWNs2MAIL from: <foo@example.com> size=20 body=8bitmimes$MAIL from: <foo@example.com> size=20s250 OK
)rrr%r&rr'r$r9rrQrR)r
r*r+r,r#r"r
r
r�test_with_decode_data_true�s
z0TestMailOptionParsing.test_with_decode_data_truecCs�ttjdfd�}|��\}}t�|||�}|�|d�x*dD]"}|�||�|�|jj	|j
�q<W|�|d�|�|jj	d�|�|d�|�|jj	d�dS)	Nr)rrsEHLO example)s-MAIL from: <foo@example.com> size=20 SMTPUTF8s;MAIL from: <foo@example.com> size=20 SMTPUTF8 BODY=8BITMIMEs:MAIL from: <foo@example.com> size=20 SMTPUTF8 BODY=UNKNOWNs3501 Error: BODY can only be one of 7BIT, 8BITMIME
s2MAIL from: <foo@example.com> size=20 body=8bitmimes250 OK
)rrr%r&rr'r$r9rrQrR)r
r*r+r,r#r"r
r
r�test_with_decode_data_false�s 
z1TestMailOptionParsing.test_with_decode_data_falsecCs^ttjdfddd�}|��\}}tj|||dd�}|�|d�|�|d�|�|jj	d�dS)Nr)rrT)r.sEHLO examples;MAIL from: <foo@example.com> size=20 body=8bitmime smtputf8s250 OK
)
rrr%r&rr'r$r9rrQ)r
r*r+r,r#r
r
r�test_with_enable_smtputf8_truesz4TestMailOptionParsing.test_with_enable_smtputf8_trueN)
rrrrRrr2r$rVrWrXr
r
r
rrU�srUc@s$eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAdB�Z#dCdD�Z$dEdF�Z%dGdH�Z&dIdJ�Z'dKdL�Z(dMdN�Z)dOdP�Z*dQdR�Z+dSdT�Z,dUdV�Z-dWdX�Z.dYdZ�Z/d[d\�Z0d]d^�Z1d_d`�Z2dadb�Z3dcdd�Z4dedf�Z5dgdh�Z6didj�Z7dkdl�Z8dmdn�Z9dodp�Z:dqdr�Z;dsdt�Z<dudv�Z=dwdx�Z>dydz�Z?d{d|�Z@d}d~�ZAdd��ZBd�d��ZCd�d��ZDd�d��ZEd�S)��SMTPDChannelTestcCsbtt_t_tj|_t��|_t_t	t
jdfddd�|_|j�
�\}}tj|j||dd�|_dS)Nr)rrT)r)rrrrrLrMrNrOrPrrr%r*r&r'r#)r
r+r,r
r
rrs
zSMTPDChannelTest.setUpcCs t��tt_t_|jt_dS)N)rr1rrrMrL)r
r
r
rr2'szSMTPDChannelTest.tearDowncCs|jj�|�|j��dS)N)r#rr r!)r
r"r
r
rr$,szSMTPDChannelTest.write_linecCs|jtttjdfddd�dS)Nr)rrT)r)r(rrrr%)r
r
r
r�test_broken_connect0sz$SMTPDChannelTest.test_broken_connectc	Cs(|jttj|j|jj|jjddd�dS)NT)r.r)r(r/rr'r*r#r+r,)r
r
r
rr05sz<SMTPDChannelTest.test_decode_data_and_enable_SMTPUTF8_raisescCs|j��dS)N)r*Z
handle_accept)r
r
r
r�test_server_accept;sz#SMTPDChannelTest.test_server_acceptcCs |�d�|�|jjjd�dS)N�s500 Error: bad syntax
)r$r9r#rrQ)r
r
r
r�test_missing_data>s
z"SMTPDChannelTest.test_missing_datacCs |�d�|�|jjjd�dS)NsEHLO examples
250 HELP
)r$r9r#rrQ)r
r
r
r�	test_EHLOCs
zSMTPDChannelTest.test_EHLOcCs |�d�|�|jjjd�dS)NsEHLOs501 Syntax: EHLO hostname
)r$r9r#rrQ)r
r
r
r�test_EHLO_bad_syntaxGs
z%SMTPDChannelTest.test_EHLO_bad_syntaxcCs*|�d�|�d�|�|jjjd�dS)NsEHLO examples503 Duplicate HELO/EHLO
)r$r9r#rrQ)r
r
r
r�test_EHLO_duplicateLs

z$SMTPDChannelTest.test_EHLO_duplicatecCs*|�d�|�d�|�|jjjd�dS)NsEHLO examplesHELO examples503 Duplicate HELO/EHLO
)r$r9r#rrQ)r
r
r
r�test_EHLO_HELO_duplicateRs

z)SMTPDChannelTest.test_EHLO_HELO_duplicatecCs6tj��}|�d�|�|jjjd�|��d��dS)NsHELO examplez250 {}
�ascii)	rrZgetfqdnr$r9r#rQ�format�encode)r
�namer
r
r�	test_HELOXs

zSMTPDChannelTest.test_HELOcCs*|�d�|�d�|�|jjjd�dS)NsHELO examplesEHLO examples503 Duplicate HELO/EHLO
)r$r9r#rrQ)r
r
r
r�test_HELO_EHLO_duplicate^s

z)SMTPDChannelTest.test_HELO_EHLO_duplicatecCs |�d�|�|jjjd�dS)NsHELPsF250 Supported commands: EHLO HELO MAIL RCPT DATA RSET NOOP QUIT VRFY
)r$r9r#rrQ)r
r
r
r�	test_HELPds
zSMTPDChannelTest.test_HELPcCs |�d�|�|jjjd�dS)Ns	HELP MAILs"250 Syntax: MAIL FROM: <address>
)r$r9r#rrQ)r
r
r
r�test_HELP_commandjs
z"SMTPDChannelTest.test_HELP_commandcCs |�d�|�|jjjd�dS)Ns	HELP SPAMsF501 Supported commands: EHLO HELO MAIL RCPT DATA RSET NOOP QUIT VRFY
)r$r9r#rrQ)r
r
r
r�test_HELP_command_unknownos
z*SMTPDChannelTest.test_HELP_command_unknowncCs |�d�|�|jjjd�dS)NsHELOs501 Syntax: HELO hostname
)r$r9r#rrQ)r
r
r
r�test_HELO_bad_syntaxus
z%SMTPDChannelTest.test_HELO_bad_syntaxcCs*|�d�|�d�|�|jjjd�dS)NsHELO examples503 Duplicate HELO/EHLO
)r$r9r#rrQ)r
r
r
r�test_HELO_duplicatezs

z$SMTPDChannelTest.test_HELO_duplicatecCs0d|_|�d�|�d�|�|jjjd�dS)NFsHELO examples%MAIL from:<foo@example.com> SIZE=1234s"501 Syntax: MAIL FROM: <address>
)Z
extended_smtpr$r9r#rrQ)r
r
r
r�8test_HELO_parameter_rejected_when_extensions_not_enabled�s


zISMTPDChannelTest.test_HELO_parameter_rejected_when_extensions_not_enabledcCs*|�d�|�d�|�|jjjd�dS)NsHELO examplesMAIL from:   <foo@example.com>s250 OK
)r$r9r#rrQ)r
r
r
r�"test_MAIL_allows_space_after_colon�s

z3SMTPDChannelTest.test_MAIL_allows_space_after_coloncCs*|�d�|�d�|�|jjjd�dS)NsEHLO examples&MAIL from:   <foo@example.com> size=20s250 OK
)r$r9r#rrQ)r
r
r
r�+test_extended_MAIL_allows_space_after_colon�s

z<SMTPDChannelTest.test_extended_MAIL_allows_space_after_coloncCs |�d�|�|jjjd�dS)NsNOOPs250 OK
)r$r9r#rrQ)r
r
r
r�	test_NOOP�s
zSMTPDChannelTest.test_NOOPcCs*|�d�|�d�|�|jjjd�dS)NsHELO examplesNOOPs250 OK
)r$r9r#rrQ)r
r
r
r�test_HELO_NOOP�s

zSMTPDChannelTest.test_HELO_NOOPcCs |�d�|�|jjjd�dS)NsNOOP his501 Syntax: NOOP
)r$r9r#rrQ)r
r
r
r�test_NOOP_bad_syntax�s
z%SMTPDChannelTest.test_NOOP_bad_syntaxcCs |�d�|�|jjjd�dS)NsQUITs	221 Bye
)r$r9r#rrQ)r
r
r
r�	test_QUIT�s
zSMTPDChannelTest.test_QUITcCs*|�d�|�d�|�|jjjd�dS)NsHELO examplesQUITs	221 Bye
)r$r9r#rrQ)r
r
r
r�test_HELO_QUIT�s

zSMTPDChannelTest.test_HELO_QUITcCs |�d�|�|jjjd�dS)NsQUIT bye byes	221 Bye
)r$r9r#rrQ)r
r
r
r�test_QUIT_arg_ignored�s
z&SMTPDChannelTest.test_QUIT_arg_ignoredcCs(d|j_|�d�|�|jjjd�dS)Nz	BAD STATEsHELO examples451 Internal confusion
)r#Z
smtp_stater$r9rrQ)r
r
r
r�test_bad_state�s
zSMTPDChannelTest.test_bad_statecCs:|�d�|�dd|jjd�|�|jjjd�dS)NsHELO examplesMAIL from: �as@examples500 Error: line too long
)r$r#�command_size_limitr9rrQ)r
r
r
r�test_command_too_long�s
z&SMTPDChannelTest.test_command_too_longcCsr|�d�|jjtd�}|�dd|d�|�|jjjd�|�dd|dd�|�|jjjd�dS)	NsEHLO examplezMAIL from:<@example>sMAIL from:<rws@example> SIZE=1234s250 OK
�s500 Error: line too long
)r$r#rx�lenr9rrQ)r
�fill_lenr
r
r�*test_MAIL_command_limit_extended_with_SIZE�s

z;SMTPDChannelTest.test_MAIL_command_limit_extended_with_SIZEcCs2|�d�|�d�|�|jjjdd�d�dS)NsEHLO examples5MAIL from: <naive@example.com> BODY=8BITMIME SMTPUTF8r��5)r$r9r#rrQ)r
r
r
r�-test_MAIL_command_rejects_SMTPUTF8_by_default�s
z>SMTPDChannelTest.test_MAIL_command_rejects_SMTPUTF8_by_defaultcCs\d|j_|�d�|�d�|�d�|�d�|�d|jjd�|�|jjjd�dS)	NisHELO examplesMAIL From:eggs@examplesRCPT To:spam@examplesDATA�AsA
.s552 Error: Too much mail data
)r#�data_size_limitr$r9rrQ)r
r
r
r�-test_data_longer_than_default_data_size_limit�s



z>SMTPDChannelTest.test_data_longer_than_default_data_size_limitcCs*|�d�|�d�|�|jjjd�dS)NsEHLO examples!MAIL FROM:<eggs@example> SIZE=512s250 OK
)r$r9r#rrQ)r
r
r
r�test_MAIL_size_parameter�s

z)SMTPDChannelTest.test_MAIL_size_parametercCs*|�d�|�d�|�|jjjd�dS)NsEHLO examples%MAIL FROM:<eggs@example> SIZE=invalids9501 Syntax: MAIL FROM: <address> [SP <mail-parameters>]
)r$r9r#rrQ)r
r
r
r� test_MAIL_invalid_size_parameter�s

z1SMTPDChannelTest.test_MAIL_invalid_size_parametercCsP|�d�|�d�|�|jjjd�|�d�|�d�|�|jjjd�dS)NsEHLO examples"MAIL FROM:<eggs@example> ham=greens<555 MAIL FROM parameters not recognized or not implemented
sMAIL FROM:<eggs@example>s RCPT TO:<eggs@example> ham=greens:555 RCPT TO parameters not recognized or not implemented
)r$r9r#rrQ)r
r
r
r�!test_MAIL_RCPT_unknown_parameters�s



z2SMTPDChannelTest.test_MAIL_RCPT_unknown_parameterscCs2d|j_|�d�|�d�|�|jjjd�dS)NisEHLO examples"MAIL FROM:<eggs@example> SIZE=2096s<552 Error: message size exceeds fixed maximum message size
)r#r�r$r9rrQ)r
r
r
r�<test_MAIL_size_parameter_larger_than_default_data_size_limit�s


zMSMTPDChannelTest.test_MAIL_size_parameter_larger_than_default_data_size_limitcCs*|�d�|�d�|�|jjjd�dS)NsHELO examplesRCPT to:spam@examples503 Error: need MAIL command
)r$r9r#rrQ)r
r
r
r�test_need_MAIL�s

zSMTPDChannelTest.test_need_MAILcCs*|�d�|�d�|�|jjjd�dS)NsHELO examplesMAIL from eggs@examples"501 Syntax: MAIL FROM: <address>
)r$r9r#rrQ)r
r
r
r�test_MAIL_syntax_HELOs

z&SMTPDChannelTest.test_MAIL_syntax_HELOcCs*|�d�|�d�|�|jjjd�dS)NsEHLO examplesMAIL from eggs@examples9501 Syntax: MAIL FROM: <address> [SP <mail-parameters>]
)r$r9r#rrQ)r
r
r
r�test_MAIL_syntax_EHLOs

z&SMTPDChannelTest.test_MAIL_syntax_EHLOcCs*|�d�|�d�|�|jjjd�dS)NsHELO examples
MAIL from:s"501 Syntax: MAIL FROM: <address>
)r$r9r#rrQ)r
r
r
r�test_MAIL_missing_addresss

z*SMTPDChannelTest.test_MAIL_missing_addresscCs*|�d�|�d�|�|jjjd�dS)NsHELO examplesMAIL from:<eggs@example>s250 OK
)r$r9r#rrQ)r
r
r
r�test_MAIL_chevronss

z#SMTPDChannelTest.test_MAIL_chevronscCs*|�d�|�d�|�|jjjd�dS)NsEHLO examplesMAIL from:<>s250 OK
)r$r9r#rrQ)r
r
r
r�test_MAIL_empty_chevronss

z)SMTPDChannelTest.test_MAIL_empty_chevronscCs:|�d�|�d�|�|jjjd�|�|jjd�dS)NsEHLO examples%MAIL from: <"Fred Blogs"@example.com>s250 OK
z"Fred Blogs"@example.com)r$r9r#rrQr)r
r
r
r�test_MAIL_quoted_localparts

z+SMTPDChannelTest.test_MAIL_quoted_localpartcCs:|�d�|�d�|�|jjjd�|�|jjd�dS)NsEHLO examples#MAIL from: "Fred Blogs"@example.coms250 OK
z"Fred Blogs"@example.com)r$r9r#rrQr)r
r
r
r�$test_MAIL_quoted_localpart_no_angles"s

z5SMTPDChannelTest.test_MAIL_quoted_localpart_no_anglescCs:|�d�|�d�|�|jjjd�|�|jjd�dS)NsEHLO examples/MAIL from: <"Fred Blogs"@example.com> SIZE=1000s250 OK
z"Fred Blogs"@example.com)r$r9r#rrQr)r
r
r
r�$test_MAIL_quoted_localpart_with_size(s

z5SMTPDChannelTest.test_MAIL_quoted_localpart_with_sizecCs:|�d�|�d�|�|jjjd�|�|jjd�dS)NsEHLO examples-MAIL from: "Fred Blogs"@example.com SIZE=1000s250 OK
z"Fred Blogs"@example.com)r$r9r#rrQr)r
r
r
r�.test_MAIL_quoted_localpart_with_size_no_angles.s

z?SMTPDChannelTest.test_MAIL_quoted_localpart_with_size_no_anglescCs4|�d�|�d�|�d�|�|jjjd�dS)NsHELO examplesMAIL from:eggs@examplesMAIL from:spam@examples 503 Error: nested MAIL command
)r$r9r#rrQ)r
r
r
r�test_nested_MAIL4s



z!SMTPDChannelTest.test_nested_MAILcCs |�d�|�|jjjd�dS)NsVRFY eggs@examplesD252 Cannot VRFY user, but will accept message and attempt delivery
)r$r9r#rrQ)r
r
r
r�	test_VRFY;s
zSMTPDChannelTest.test_VRFYcCs |�d�|�|jjjd�dS)NsVRFYs501 Syntax: VRFY <address>
)r$r9r#rrQ)r
r
r
r�test_VRFY_syntaxAs
z!SMTPDChannelTest.test_VRFY_syntaxcCs |�d�|�|jjjd�dS)NsEXPNs502 EXPN not implemented
)r$r9r#rrQ)r
r
r
r�test_EXPN_not_implementedFs
z*SMTPDChannelTest.test_EXPN_not_implementedcCs |�d�|�|jjjd�dS)NsMAIL from:<foo@example.com>s503 Error: send HELO first
)r$r9r#rrQ)r
r
r
r�test_no_HELO_MAILKs
z"SMTPDChannelTest.test_no_HELO_MAILcCs4|�d�|�d�|�d�|�|jjjd�dS)NsHELO examplesMAIL From:eggs@examplesDATAs503 Error: need RCPT command
)r$r9r#rrQ)r
r
r
r�test_need_RCPTPs



zSMTPDChannelTest.test_need_RCPTcCs4|�d�|�d�|�d�|�|jjjd�dS)NsHELO examplesMAIL From: eggs@examplesRCPT to eggs@examples 501 Syntax: RCPT TO: <address>
)r$r9r#rrQ)r
r
r
r�test_RCPT_syntax_HELOWs



z&SMTPDChannelTest.test_RCPT_syntax_HELOcCs4|�d�|�d�|�d�|�|jjjd�dS)NsEHLO examplesMAIL From: eggs@examplesRCPT to eggs@examples7501 Syntax: RCPT TO: <address> [SP <mail-parameters>]
)r$r9r#rrQ)r
r
r
r�test_RCPT_syntax_EHLO^s



z&SMTPDChannelTest.test_RCPT_syntax_EHLOcCs4|�d�|�d�|�d�|�|jjjd�dS)NsHELO examplesMAIL From: eggs@examplesRCPT to: <eggs@example>s250 OK
)r$r9r#rrQ)r
r
r
r�test_RCPT_lowercase_to_OKes


z*SMTPDChannelTest.test_RCPT_lowercase_to_OKcCs |�d�|�|jjjd�dS)NsRCPT to eggs@examples503 Error: send HELO first
)r$r9r#rrQ)r
r
r
r�test_no_HELO_RCPTks
z"SMTPDChannelTest.test_no_HELO_RCPTcCs�|�d�|�d�|�|jjjd�|�d�|�|jjjd�|�d�|�|jjjd�|�d�|�|jjjd�|�|jjdd	d
gdfg�dS)NsHELO examplesMAIL From:eggs@examples250 OK
sRCPT To:spam@examplesDATAs%354 End data with <CR><LF>.<CR><LF>
s
data
more
.)zpeer-addressz	peer-portzeggs@examplezspam@examplez	data
more)r$r9r#rrQr*r)r
r
r
r�test_data_dialogps





z!SMTPDChannelTest.test_data_dialogcCs>|�d�|�d�|�d�|�d�|�|jjjd�dS)NsHELO examplesMAIL From:eggs@examplesRCPT To:spam@examples	DATA spams501 Syntax: DATA
)r$r9r#rrQ)r
r
r
r�test_DATA_syntax�s




z!SMTPDChannelTest.test_DATA_syntaxcCs |�d�|�|jjjd�dS)Ns	DATA spams503 Error: send HELO first
)r$r9r#rrQ)r
r
r
r�test_no_HELO_DATA�s
z"SMTPDChannelTest.test_no_HELO_DATAcCsF|�d�|�d�|�d�|�d�|�d�|�|jjd�dS)NsHELO examplesMAIL From:eggs@examplesRCPT To:spam@examplesDATAs..
.
�.)r$r9r#�
received_data)r
r
r
r�$test_data_transparency_section_4_5_2�s




z5SMTPDChannelTest.test_data_transparency_section_4_5_2cCs^|�d�|�d�|�d�|�d�|�d�|�d�|�|jjddd	d
gdfg�dS)NsHELO examplesMAIL From:eggs@examplesRCPT To:spam@examplesRCPT To:ham@examplesDATAsdata
.)zpeer-addressz	peer-portzeggs@examplezspam@examplezham@exampler)r$r9r*r)r
r
r
r�test_multiple_RCPT�s






z#SMTPDChannelTest.test_multiple_RCPTcCsH|�d�|�d�|�d�|�d�|�d�|�|jjjd�dS)NsHELO examplesMAIL From:eggs@examplesRCPT To:spam@examplesDATAsreturn status
.s250 Okish
)r$r9r#rrQ)r
r
r
r�test_manual_status�s




z#SMTPDChannelTest.test_manual_statuscCs�|�d�|�d�|�d�|�d�|�|jjjd�|�d�|�d�|�d�|�d	�|�|jjd
ddgd
fg�dS)NsHELO examplesMAIL From:eggs@examplesRCPT To:spam@examplesRSETs250 OK
sMAIL From:foo@examplesRCPT To:eggs@examplesDATAsdata
.)zpeer-addressz	peer-portzfoo@examplezeggs@exampler)r$r9r#rrQr*r)r
r
r
r�	test_RSET�s








zSMTPDChannelTest.test_RSETcCs*|�d�|�d�|�|jjjd�dS)NsHELO examplesRSETs250 OK
)r$r9r#rrQ)r
r
r
r�test_HELO_RSET�s

zSMTPDChannelTest.test_HELO_RSETcCs |�d�|�|jjjd�dS)NsRSET his501 Syntax: RSET
)r$r9r#rrQ)r
r
r
r�test_RSET_syntax�s
z!SMTPDChannelTest.test_RSET_syntaxcCs |�d�|�|jjjd�dS)NsUNKNOWN_CMDs1500 Error: command "UNKNOWN_CMD" not recognized
)r$r9r#rrQ)r
r
r
r�test_unknown_command�s
z%SMTPDChannelTest.test_unknown_commandc	Cs�t�dtf��|jj}WdQRXt�dtf��d|j_WdQRXt�dtf��|jj}WdQRXt�dtf��d|j_WdQRXt�dtf��|jj}WdQRXt�dtf��d|j_WdQRXt�dtf��|jj}WdQRXt�dtf��d|j_WdQRXt�dtf��|jj}WdQRXt�dtf��d|j_WdQRXt�dtf��|jj	}WdQRXt�dtf��d|j_	WdQRXt�dtf��|jj
}WdQRXt�dtf��d|j_
WdQRXt�dtf��|jj}WdQRXt�dtf��d|j_WdQRXt�dtf��|jj}WdQRXt�dtf��d|j_WdQRXt�dtf��|jj
}WdQRXt�dtf��d|j_
WdQRXt�dtf��|jj}WdQRXt�dtf��d|j_WdQRXdS)N��spam)rZcheck_warnings�DeprecationWarningr#Z_SMTPChannel__serverZ_SMTPChannel__lineZ_SMTPChannel__stateZ_SMTPChannel__greetingZ_SMTPChannel__mailfromZ_SMTPChannel__rcpttosZ_SMTPChannel__dataZ_SMTPChannel__fqdnZ_SMTPChannel__peerZ_SMTPChannel__connZ_SMTPChannel__addr)r
r�r
r
r�test_attribute_deprecations�sXz,SMTPDChannelTest.test_attribute_deprecationsN)Frrrrr2r$rZr0r[r]r^r_r`rarfrgrhrirjrkrlrmrnrorprqrrrsrtrurvryr}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r
r
r
rrYs�

	rYzIPv6 not enabledc@seZdZdd�ZdS)�SMTPDChannelIPv6TestcCsbtt_t_tj|_t��|_t_t	t
jdfddd�|_|j�
�\}}tj|j||dd�|_dS)Nr)rrT)r)rrrrrLrMrNrOrPrrrCr*r&r'r#)r
r+r,r
r
rr�s
zSMTPDChannelIPv6Test.setUpN)rrrrr
r
r
rr��sr�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�!SMTPDChannelWithDataSizeLimitTestcCsdtt_t_tj|_t��|_t_t	t
jdfddd�|_|j�
�\}}tj|j||ddd�|_dS)Nr)rrT)r� )rrrrrLrMrNrOrPrrr%r*r&r'r#)r
r+r,r
r
rrs
z'SMTPDChannelWithDataSizeLimitTest.setUpcCs t��tt_t_|jt_dS)N)rr1rrrMrL)r
r
r
rr2sz*SMTPDChannelWithDataSizeLimitTest.tearDowncCs|jj�|�|j��dS)N)r#rr r!)r
r"r
r
rr$sz,SMTPDChannelWithDataSizeLimitTest.write_linecCs�|�d�|�d�|�|jjjd�|�d�|�|jjjd�|�d�|�|jjjd�|�d�|�|jjjd�|�|jjdd	d
gdfg�dS)NsHELO examplesMAIL From:eggs@examples250 OK
sRCPT To:spam@examplesDATAs%354 End data with <CR><LF>.<CR><LF>
s
data
more
.)zpeer-addressz	peer-portzeggs@examplezspam@examplez	data
more)r$r9r#rrQr*r)r
r
r
r�test_data_limit_dialogs





z8SMTPDChannelWithDataSizeLimitTest.test_data_limit_dialogcCs~|�d�|�d�|�|jjjd�|�d�|�|jjjd�|�d�|�|jjjd�|�d�|�|jjjd�dS)	NsHELO examplesMAIL From:eggs@examples250 OK
sRCPT To:spam@examplesDATAs%354 End data with <CR><LF>.<CR><LF>
s'This message is longer than 32 bytes
.s552 Error: Too much mail data
)r$r9r#rrQ)r
r
r
r�$test_data_limit_dialog_too_much_data-s




zFSMTPDChannelWithDataSizeLimitTest.test_data_limit_dialog_too_much_dataN)rrrrr2r$r�r�r
r
r
rr�s
r�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�SMTPDChannelWithDecodeDataFalsecCsZtt_t_tj|_t��|_t_t	t
jdfd�|_|j�
�\}}t�|j||�|_dS)Nr)rr)rrrrrLrMrNrOrPrrr%r*r&r'r#)r
r+r,r
r
rr>sz%SMTPDChannelWithDecodeDataFalse.setUpcCs t��tt_t_|jt_dS)N)rr1rrrMrL)r
r
r
rr2Fsz(SMTPDChannelWithDecodeDataFalse.tearDowncCs|jj�|�|j��dS)N)r#rr r!)r
r"r
r
rr$Ksz*SMTPDChannelWithDecodeDataFalse.write_linecCsP|�d�|�d�|�d�|�d�|�d�|�d�|�|jjd�dS)NsHELO examplesMAIL From:eggs@examplesRCPT To:spam@examplesDATAsplain ascii textr4)r$r9r#r�)r
r
r
r�test_ascii_dataOs





z/SMTPDChannelWithDecodeDataFalse.test_ascii_datacCsZ|�d�|�d�|�d�|�d�|�d�|�d�|�d�|�|jjd�dS)	NsHELO examplesMAIL From:eggs@examplesRCPT To:spam@examplesDATAsutf8 enriched text: żźćsand some plain asciir4s/utf8 enriched text: żźć
and some plain ascii)r$r9r#r�)r
r
r
r�test_utf8_dataXs






z.SMTPDChannelWithDecodeDataFalse.test_utf8_dataN)rrrrr2r$r�r�r
r
r
rr�<s
	r�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�SMTPDChannelWithDecodeDataTruecCsbtt_t_tj|_t��|_t_t	t
jdfddd�|_|j�
�\}}tj|j||dd�|_dS)Nr)rrT)r)rrrrrLrMrNrOrPrrr%r*r&r'r#)r
r+r,r
r
rrhs
z$SMTPDChannelWithDecodeDataTrue.setUpcCs t��tt_t_|jt_dS)N)rr1rrrMrL)r
r
r
rr2ssz'SMTPDChannelWithDecodeDataTrue.tearDowncCs|jj�|�|j��dS)N)r#rr r!)r
r"r
r
rr$xsz)SMTPDChannelWithDecodeDataTrue.write_linecCsP|�d�|�d�|�d�|�d�|�d�|�d�|�|jjd�dS)NsHELO examplesMAIL From:eggs@examplesRCPT To:spam@examplesDATAsplain ascii textr4zplain ascii text)r$r9r#r�)r
r
r
rr�|s





z.SMTPDChannelWithDecodeDataTrue.test_ascii_datacCsZ|�d�|�d�|�d�|�d�|�d�|�d�|�d�|�|jjd�dS)	NsHELO examplesMAIL From:eggs@examplesRCPT To:spam@examplesDATAsutf8 enriched text: żźćsand some plain asciir4u/utf8 enriched text: żźć
and some plain ascii)r$r9r#r�)r
r
r
rr��s






z-SMTPDChannelWithDecodeDataTrue.test_utf8_dataN)rrrrr2r$r�r�r
r
r
rr�fs
	r�c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�&SMTPDChannelTestWithEnableSMTPUTF8TruecCsbtt_t_tj|_t��|_t_t	t
jdfddd�|_|j�
�\}}tj|j||dd�|_dS)Nr)rrT)r.)rrrrrLrMrNrOrPrrr%r*r&r'r#)r
r+r,r
r
rr�s
z,SMTPDChannelTestWithEnableSMTPUTF8True.setUpcCs t��tt_t_|jt_dS)N)rr1rrrMrL)r
r
r
rr2�sz/SMTPDChannelTestWithEnableSMTPUTF8True.tearDowncCs|jj�|�|j��dS)N)r#rr r!)r
r"r
r
rr$�sz1SMTPDChannelTestWithEnableSMTPUTF8True.write_linecCs0|�d�|�d�d��|�|jjjd�dS)NsEHLO exampleu7MAIL from: <naïve@example.com> BODY=8BITMIME SMTPUTF8zutf-8s250 OK
)r$rdr9r#rrQ)r
r
r
r�1test_MAIL_command_accepts_SMTPUTF8_when_announced�s

zXSMTPDChannelTestWithEnableSMTPUTF8True.test_MAIL_command_accepts_SMTPUTF8_when_announcedcCs�|�d�x�dD]�}|�d|�|�|jjjdd�d�|�d�|�|jjjdd�d�|�d�|�|jjjdd�d	�|�d
�|dkr�|�|jjjd�q|�|jjjd
�qWdS)NsEHLO example)r\sBODY=8BITMIME SMTPUTF8sMAIL from: <a@example> r�s250srcpt to:<b@example.com>sdatas354sc
.r\s250 OK
s250 SMTPUTF8 message okish
)r$r9r#rrQ)r
Zmail_parametersr
r
r�test_process_smtputf8_message�s




zDSMTPDChannelTestWithEnableSMTPUTF8True.test_process_smtputf8_messagecCs�|�d�|�d�d��|�|jjjdd�d�|�d�d��|�|jjjdd�d�|�d�|�|jjjdd�d	�|�d
�|�d�|�|jjd
�dS)NsEHLO exampleu2MAIL From: naïve@examplé BODY=8BITMIME SMTPUTF8zutf-8rr�s250uRCPT To:späm@examplésDATAs354sutf8 enriched text: żźćr4)r$rdr9r#rrQr�)r
r
r
rr��s



z5SMTPDChannelTestWithEnableSMTPUTF8True.test_utf8_datacCsn|�d�dtd�}|�dd|dd�|�|jjjd�|�dd|d�|�|jjjd	�dS)
Nsehlo examplei$zmail from:<@example>sMAIL from:<rwr~s	@example>s500 Error: line too long
s250 OK
)r$r{r9r#rrQ)r
r|r
r
r�7test_MAIL_command_limit_extended_with_SIZE_and_SMTPUTF8�s

z^SMTPDChannelTestWithEnableSMTPUTF8True.test_MAIL_command_limit_extended_with_SIZE_and_SMTPUTF8cCs�|�d�dtd�}x�dD]�}|�d||d�|�|jjjdd�d	�|�d||d
�|�|jjjdd�d�|�d�|�|jjjdd�d�|�d
�|�|jjjdd�d�|�d�|�|jjjdd�d�qWdS)Nsehlo examplei$zmail from:<@example>)rw�b�csMAIL from:<s
a@example>rr�s500s	@example>s250srcpt to:<hans@example.com>sdatas354stest
.)r$r{r9r#rrQ)r
r|�charr
r
r�1test_multiple_emails_with_extended_command_length�s




zXSMTPDChannelTestWithEnableSMTPUTF8True.test_multiple_emails_with_extended_command_lengthN)rrrrr2r$r�r�r�r�r�r
r
r
rr��s

r�c@seZdZdd�ZdS)�MiscTestCasec	Cs*ddddddddd	h	}tj|t|d
�dS)NZprogramZDevnullrL�NEWLINEZ
COMMASPACEZDATA_SIZE_DEFAULT�usageZOptionsZ	parseargs)�	blacklist)rZcheck__all__r)r
r�r
r
r�test__all__�s
zMiscTestCase.test__all__N)rrrr�r
r
r
rr��sr��__main__)rHr:ZtestrrrrNrrrr�	ExceptionrrZTestCaserr3rBrKrUrYrIrJr�r�r�r�r�r�r�mainr
r
r
r�<module>s6"]%B`7*,X