a zeK@sxddlZddlZddlmZmZddlmZddlZddlZddl Z ddl Z Gddde j Z Gddde ZGdd d e ZGd d d ejZGd d d ejZGdddejZGdddejZGdddejZGdddejZeejdGdddeZGdddejZGdddejZGdddejZGdd d ejZGd!d"d"ejZed#krte dS)$N)support mock_socket) socket_helperc@seZdZddZddZdS) DummyServercOs8tjj|g|Ri|g|_|jr.d|_nd|_dS)Nz return statuss return status)smtpd SMTPServer__init__messagesZ _decode_data return_status)selfargskwargsrC/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_smtpd.pyr s zDummyServer.__init__cKs>|j||||f||jkr"dSd|vr:d|dvr:dSdS)Nz 250 OkishZ mail_optionsZSMTPUTF8z250 SMTPUTF8 message okish)r appendr )r ZpeermailfromZrcpttosdatakwrrrprocess_messages  zDummyServer.process_messageN)__name__ __module__ __qualname__rrrrrrr src@s eZdZdS)DummyDispatcherBrokenN)rrrrrrrrsrc@seZdZddZdS)BrokenDummyServercCs tdSN)r)r numrrrlisten!szBrokenDummyServer.listenN)rrrrrrrrr src@s,eZdZddZddZddZddZd S) SMTPDServerTestcCstt_t_dSrrrsocketasyncorer rrrsetUp&szSMTPDServerTest.setUpcsrtjtjdfddd}|\}}tj|||ddfdd}|d|d|d |d |t|d dS) NrbrT decode_datacsj|dSrr queue_recv handle_readlinechannelrr write_line/s zFSMTPDServerTest.test_process_message_unimplemented..write_line HELO exampleMAIL From:eggs@exampleRCPT To:spam@exampleDATAs spam . )rrrHOSTaccept SMTPChannel assertRaisesNotImplementedError)r serverconnaddrr.rr,r"test_process_message_unimplemented)s  z2SMTPDServerTest.test_process_message_unimplementedcCs"|jttjtjdfdddddS)Nrr#Tenable_SMTPUTF8r&)r6 ValueErrorrrrr3r!rrr+test_decode_data_and_enable_SMTPUTF8_raises9sz;SMTPDServerTest.test_decode_data_and_enable_SMTPUTF8_raisescCsttt_t_dSrr close_allrrr!rrrtearDownBszSMTPDServerTest.tearDownN)rrrr"r;r?rBrrrrr%s rc@sFeZdZddZdddZddZdd Zd d Zd d ZddZ dS)DebuggingServerTestcCstt_t_dSrrr!rrrr"IszDebuggingServerTest.setUpFcsNfdd}|d|r"|dn|d|d|d|||ddS) Ncsj|dSrr'r*r,rrr.Ms z1DebuggingServerTest.send_data..write_line EHLO examples-MAIL From:eggs@example BODY=8BITMIME SMTPUTF8r0r1r2.r)r r-rr=r.rr,r send_dataLs  zDebuggingServerTest.send_datacCstjtjdfddd}|\}}tj|||dd}t}||dWdn1s^0Y| }| |t ddS)Nrr#Tr%sFrom: test hello z ---------- MESSAGE FOLLOWS ---------- From: test X-Peer: peer-address hello ------------ END MESSAGE ------------ rZDebuggingServerrr3r4r5rZcaptured_stdoutrFgetvalue assertEqualtextwrapdedentr r8r9r:r-sstdoutrrr*test_process_message_with_decode_data_trueZs  *z>DebuggingServerTest.test_process_message_with_decode_data_truecCs~ttjdfd}|\}}t|||}t}||dWdn1sV0Y| }| |t ddS)Nrr#From: test héllo ---------- MESSAGE FOLLOWS ---------- b'From: test' b'X-Peer: peer-address' b'' b'h\xc3\xa9llo\xff' ------------ END MESSAGE ------------ rGrLrrr+test_process_message_with_decode_data_falseks  *z?DebuggingServerTest.test_process_message_with_decode_data_falsecCstjtjdfddd}|\}}tj|||dd}t}||dWdn1s^0Y| }| |t ddS)Nrr#Tr=rPrQrGrLrrr.test_process_message_with_enable_SMTPUTF8_true{s  *zBDebuggingServerTest.test_process_message_with_enable_SMTPUTF8_truecCstjtjdfddd}|\}}tj|||dd}t }|j|dddWdn1sb0Y| }| |t ddS)Nrr#TrSrPa ---------- MESSAGE FOLLOWS ---------- mail options: ['BODY=8BITMIME', 'SMTPUTF8'] b'From: test' b'X-Peer: peer-address' b'' b'h\xc3\xa9llo\xff' ------------ END MESSAGE ------------ rGrLrrr7test_process_SMTPUTF8_message_with_enable_SMTPUTF8_trues  $zKDebuggingServerTest.test_process_SMTPUTF8_message_with_enable_SMTPUTF8_truecCsttt_t_dSrr@r!rrrrBszDebuggingServerTest.tearDownN)F) rrrr"rFrOrRrTrUrBrrrrrCGs rCc@s:eZdZddZddZeejdddZ dd Z d S) TestFamilyDetectioncCstt_t_dSrrr!rrrr"szTestFamilyDetection.setUpcCsttt_t_dSrr@r!rrrrBszTestFamilyDetection.tearDownIPv6 not enabledcCs.ttjdftjdf}||jjtjdSNr) rrrHOSTv6HOSTv4rIrfamilyAF_INET6r r8rrrtest_socket_uses_IPv6sz)TestFamilyDetection.test_socket_uses_IPv6cCs.ttjdftjdf}||jjtjdSrX) rrrrZrYrIrr[AF_INETr]rrrtest_socket_uses_IPv4sz)TestFamilyDetection.test_socket_uses_IPv4N) rrrr"rBunittest skipUnlessr IPV6_ENABLEDr^r`rrrrrVs   rVc@s8eZdZdZddZddZddZdd Zd d Zd S) TestRcptOptionParsing:555 RCPT TO parameters not recognized or not implemented cCs(tt_t_tj|_t|_t_dSr rrrr DEBUGSTREAMold_debugstreamioStringIOdebugr!rrrr"s zTestRcptOptionParsing.setUpcCs ttt_t_|jt_dSrr rArrrhrgr!rrrrBs zTestRcptOptionParsing.tearDowncCs|j||dSrr'r r-r+rrrr.s z TestRcptOptionParsing.write_linecCsdttjdfd}|\}}t|||}||d||d||d||jj |j dS)Nrr#rD$MAIL from: size=20s"RCPT to: foo=bar rrr3r4rr5r.rIrlasterror_responser r8r9r:r-rrrtest_params_rejecteds    z*TestRcptOptionParsing.test_params_rejectedcCsbttjdfd}|\}}t|||}||d||d||d||jj ddS)Nrr#rDrnsRCPT to: 250 OK rrr3r4rr5r.rIrrprrrrrtest_nothing_accepteds    z+TestRcptOptionParsing.test_nothing_acceptedN) rrrrqr"rBr.rsrvrrrrrds  rdc@s@eZdZdZddZddZddZdd Zd d Zd d Z dS)TestMailOptionParsing<555 MAIL FROM parameters not recognized or not implemented cCs(tt_t_tj|_t|_t_dSrrfr!rrrr"s zTestMailOptionParsing.setUpcCs ttt_t_|jt_dSrrlr!rrrrBs zTestMailOptionParsing.tearDowncCs|j||dSrr'rmrrrr.s z TestMailOptionParsing.write_linecCsttjdfddd}|\}}tj|||dd}||ddD]"}|||||jj |j qB||d||jj ddS) Nrr#Tr%rD)-MAIL from: size=20 SMTPUTF8;MAIL from: size=20 SMTPUTF8 BODY=8BITMIMEs1MAIL from: size=20 BODY=UNKNOWN2MAIL from: size=20 body=8bitmimernrtror r8r9r:r-r+rrrtest_with_decode_data_trues    z0TestMailOptionParsing.test_with_decode_data_truecCsttjdfd}|\}}t|||}||ddD]"}|||||jj |j q:||d||jj d||d||jj ddS) Nrr#rD)ryrzs:MAIL from: size=20 SMTPUTF8 BODY=UNKNOWNs3501 Error: BODY can only be one of 7BIT, 8BITMIME r{rtror|rrrtest_with_decode_data_falses&   z1TestMailOptionParsing.test_with_decode_data_falsecCs^ttjdfddd}|\}}tj|||dd}||d||d||jj ddS)Nrr#TrSrDs;MAIL from: size=20 body=8bitmime smtputf8rtrurrrrrtest_with_enable_smtputf8_trues  z4TestMailOptionParsing.test_with_enable_smtputf8_trueN) rrrrqr"rBr.r}r~rrrrrrwsrwc@s$eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Z d=d>Z!d?d@Z"dAdBZ#dCdDZ$dEdFZ%dGdHZ&dIdJZ'dKdLZ(dMdNZ)dOdPZ*dQdRZ+dSdTZ,dUdVZ-dWdXZ.dYdZZ/d[d\Z0d]d^Z1d_d`Z2dadbZ3dcddZ4dedfZ5dgdhZ6didjZ7dkdlZ8dmdnZ9dodpZ:dqdrZ;dsdtZdydzZ?d{d|Z@d}d~ZAddZBddZCddZDddZEdS)SMTPDChannelTestcCsbtt_t_tj|_t|_t_t t j dfddd|_ |j \}}tj|j ||dd|_dSNrr#Tr%rrrr rgrhrirjrkrrr3r8r4r5r-r r9r:rrrr"s   zSMTPDChannelTest.setUpcCs ttt_t_|jt_dSrrlr!rrrrB(s zSMTPDChannelTest.tearDowncCs|jj||jdSrr-rr(r)r r+rrrr.-szSMTPDChannelTest.write_linecCs|jtttjdfddddSr)r6rrrr3r!rrrtest_broken_connect1s z$SMTPDChannelTest.test_broken_connectc Cs(|jttj|j|jj|jjddddS)NTr<)r6r>rr5r8r-r9r:r!rrrr?6s z rr!rrrtest_HELP_commandks  z"SMTPDChannelTest.test_HELP_commandcCs |d||jjjddS)Ns HELP SPAMsF501 Supported commands: EHLO HELO MAIL RCPT DATA RSET NOOP QUIT VRFY rr!rrrtest_HELP_command_unknownps  z*SMTPDChannelTest.test_HELP_command_unknowncCs |d||jjjddS)NsHELOs501 Syntax: HELO hostname rr!rrrtest_HELO_bad_syntaxvs  z%SMTPDChannelTest.test_HELO_bad_syntaxcCs*|d|d||jjjddS)Nr/rrr!rrrtest_HELO_duplicate{s    z$SMTPDChannelTest.test_HELO_duplicatecCs0d|_|d|d||jjjddS)NFr/s%MAIL from: SIZE=1234"501 Syntax: MAIL FROM:
)Z extended_smtpr.rIr-rrpr!rrr8test_HELO_parameter_rejected_when_extensions_not_enableds    zISMTPDChannelTest.test_HELO_parameter_rejected_when_extensions_not_enabledcCs*|d|d||jjjddS)Nr/sMAIL from: rtrr!rrr"test_MAIL_allows_space_after_colons    z3SMTPDChannelTest.test_MAIL_allows_space_after_coloncCs*|d|d||jjjddS)NrDs&MAIL from: size=20rtrr!rrr+test_extended_MAIL_allows_space_after_colons    z MAIL from: SIZE=1234rtr)r.r-rlenrIrrpr fill_lenrrr*test_MAIL_command_limit_extended_with_SIZEs    z;SMTPDChannelTest.test_MAIL_command_limit_extended_with_SIZEcCs2|d|d||jjjddddS)NrDs5MAIL from: BODY=8BITMIME SMTPUTF8r5rr!rrr-test_MAIL_command_rejects_SMTPUTF8_by_defaults  z>SMTPDChannelTest.test_MAIL_command_rejects_SMTPUTF8_by_defaultcCs\d|j_|d|d|d|d|d|jjd||jjjddS) Nr/r0r1r2AsA .552 Error: Too much mail data r-Zdata_size_limitr.rIrrpr!rrr-test_data_longer_than_default_data_size_limits     z>SMTPDChannelTest.test_data_longer_than_default_data_size_limitcCs*|d|d||jjjddS)NrDs!MAIL FROM: SIZE=512rtrr!rrrtest_MAIL_size_parameters    z)SMTPDChannelTest.test_MAIL_size_parametercCs*|d|d||jjjddS)NrDs%MAIL FROM: SIZE=invalid9501 Syntax: MAIL FROM:
[SP ] rr!rrr test_MAIL_invalid_size_parameters    z1SMTPDChannelTest.test_MAIL_invalid_size_parametercCsP|d|d||jjjd|d|d||jjjddS)NrDs"MAIL FROM: ham=greenrxsMAIL FROM:s RCPT TO: ham=greenrerr!rrr!test_MAIL_RCPT_unknown_parameterss      z2SMTPDChannelTest.test_MAIL_RCPT_unknown_parameterscCs2d|j_|d|d||jjjddS)NrrDs"MAIL FROM: SIZE=2096s<552 Error: message size exceeds fixed maximum message size rr!rrrrtrr!rrrtest_MAIL_chevronss  z#SMTPDChannelTest.test_MAIL_chevronscCs*|d|d||jjjddS)NrDs MAIL from:<>rtrr!rrrtest_MAIL_empty_chevronss  z)SMTPDChannelTest.test_MAIL_empty_chevronscCs:|d|d||jjjd||jjddS)NrDs%MAIL from: <"Fred Blogs"@example.com>rt"Fred Blogs"@example.comr.rIr-rrprr!rrrtest_MAIL_quoted_localparts  z+SMTPDChannelTest.test_MAIL_quoted_localpartcCs:|d|d||jjjd||jjddS)NrDs#MAIL from: "Fred Blogs"@example.comrtrrr!rrr$test_MAIL_quoted_localpart_no_angles#s  z5SMTPDChannelTest.test_MAIL_quoted_localpart_no_anglescCs:|d|d||jjjd||jjddS)NrDs/MAIL from: <"Fred Blogs"@example.com> SIZE=1000rtrrr!rrr$test_MAIL_quoted_localpart_with_size)s  z5SMTPDChannelTest.test_MAIL_quoted_localpart_with_sizecCs:|d|d||jjjd||jjddS)NrDs-MAIL from: "Fred Blogs"@example.com SIZE=1000rtrrr!rrr.test_MAIL_quoted_localpart_with_size_no_angles/s  z?SMTPDChannelTest.test_MAIL_quoted_localpart_with_size_no_anglescCs4|d|d|d||jjjddS)Nr/sMAIL from:eggs@examplesMAIL from:spam@examples 503 Error: nested MAIL command rr!rrrtest_nested_MAIL5s     z!SMTPDChannelTest.test_nested_MAILcCs |d||jjjddS)NsVRFY eggs@examplesD252 Cannot VRFY user, but will accept message and attempt delivery rr!rrr test_VRFY<s  zSMTPDChannelTest.test_VRFYcCs |d||jjjddS)NsVRFYs501 Syntax: VRFY
rr!rrrtest_VRFY_syntaxBs  z!SMTPDChannelTest.test_VRFY_syntaxcCs |d||jjjddS)NsEXPNs502 EXPN not implemented rr!rrrtest_EXPN_not_implementedGs  z*SMTPDChannelTest.test_EXPN_not_implementedcCs |d||jjjddS)NsMAIL from:503 Error: send HELO first rr!rrrtest_no_HELO_MAILLs  z"SMTPDChannelTest.test_no_HELO_MAILcCs4|d|d|d||jjjddS)Nr/r0r2s503 Error: need RCPT command rr!rrrtest_need_RCPTQs     zSMTPDChannelTest.test_need_RCPTcCs4|d|d|d||jjjddS)Nr/MAIL From: eggs@exampleRCPT to eggs@examples 501 Syntax: RCPT TO:
rr!rrrtest_RCPT_syntax_HELOXs     z&SMTPDChannelTest.test_RCPT_syntax_HELOcCs4|d|d|d||jjjddS)NrDrrs7501 Syntax: RCPT TO:
[SP ] rr!rrrtest_RCPT_syntax_EHLO_s     z&SMTPDChannelTest.test_RCPT_syntax_EHLOcCs4|d|d|d||jjjddS)Nr/rsRCPT to: rtrr!rrrtest_RCPT_lowercase_to_OKfs   z*SMTPDChannelTest.test_RCPT_lowercase_to_OKcCs |d||jjjddS)Nrrrr!rrrtest_no_HELO_RCPTls  z"SMTPDChannelTest.test_no_HELO_RCPTcCs|d|d||jjjd|d||jjjd|d||jjjd|d||jjjd||jjdd d gd fgdS Nr/r0rtr1r2%354 End data with . s data more .z peer-addressz peer-port eggs@example spam@examplez data morer.rIr-rrpr8r r!rrrtest_data_dialogqs$       z!SMTPDChannelTest.test_data_dialogcCs>|d|d|d|d||jjjddS)Nr/r0r1 DATA spams501 Syntax: DATA rr!rrrtest_DATA_syntaxs     z!SMTPDChannelTest.test_DATA_syntaxcCs |d||jjjddS)Nrrrr!rrrtest_no_HELO_DATAs  z"SMTPDChannelTest.test_no_HELO_DATAcCsF|d|d|d|d|d||jjddS)Nr/r0r1r2s.. . .r.rIr- received_datar!rrr$test_data_transparency_section_4_5_2s      z5SMTPDChannelTest.test_data_transparency_section_4_5_2cCs^|d|d|d|d|d|d||jjddd d gd fgdS) Nr/r0r1sRCPT To:ham@exampler2data .rrrz ham@exampler)r.rIr8r r!rrrtest_multiple_RCPTs       z#SMTPDChannelTest.test_multiple_RCPTcCsH|d|d|d|d|d||jjjddS)Nr/r0r1r2sreturn status .s 250 Okish rr!rrrtest_manual_statuss      z#SMTPDChannelTest.test_manual_statuscCs|d|d|d|d||jjjd|d|d|d|d ||jjd d d gd fgdS)Nr/r0r1RSETrtsMAIL From:foo@examplesRCPT To:eggs@exampler2rrz foo@examplerrrr!rrr test_RSETs          zSMTPDChannelTest.test_RSETcCs*|d|d||jjjddS)Nr/rrtrr!rrrtest_HELO_RSETs  zSMTPDChannelTest.test_HELO_RSETcCs |d||jjjddS)NsRSET his501 Syntax: RSET rr!rrrtest_RSET_syntaxs z!SMTPDChannelTest.test_RSET_syntaxcCs |d||jjjddS)Ns UNKNOWN_CMDs1500 Error: command "UNKNOWN_CMD" not recognized rr!rrrtest_unknown_commands  z%SMTPDChannelTest.test_unknown_commandcCstdtf|jj}Wdn1s,0Ytdtfd|j_Wdn1sb0Ytdtf|jj}Wdn1s0Ytdtfd|j_Wdn1s0Ytdtf|jj}Wdn1s0Ytdtfd|j_Wdn1s>0Ytdtf|jj}Wdn1sv0Ytdtfd|j_Wdn1s0Ytdtf|jj}Wdn1s0Ytdtfd|j_Wdn1s0Ytdtf|jj }Wdn1sV0Ytdtfd|j_ Wdn1s0Ytdtf|jj }Wdn1s0Ytdtfd|j_ Wdn1s0Ytdtf|jj }Wdn1s60Ytdtfd|j_ Wdn1sn0Ytdtf|jj }Wdn1s0Ytdtfd|j_ Wdn1s0Ytdtf|jj }Wdn1s0Ytdtfd|j_ Wdn1sN0Ytdtf|jj}Wdn1s0Ytdtfd|j_Wdn1s0YdS)Nspam)rZcheck_warningsDeprecationWarningr-Z_SMTPChannel__serverZ_SMTPChannel__lineZ_SMTPChannel__stateZ_SMTPChannel__greetingZ_SMTPChannel__mailfromZ_SMTPChannel__rcpttosZ_SMTPChannel__dataZ_SMTPChannel__fqdnZ_SMTPChannel__peerZ_SMTPChannel__connZ_SMTPChannel__addr)r rrrrtest_attribute_deprecationssX&&&&(((((((((((((((((z,SMTPDChannelTest.test_attribute_deprecationsN)Frrrr"rBr.rr?rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrs     rrWc@seZdZddZdS)SMTPDChannelIPv6TestcCsbtt_t_tj|_t|_t_t t j dfddd|_ |j \}}tj|j ||dd|_dSr)rrrr rgrhrirjrkrrrYr8r4r5r-rrrrr"s   zSMTPDChannelIPv6Test.setUpN)rrrr"rrrrrsrc@s4eZdZddZddZddZddZd d Zd S) !SMTPDChannelWithDataSizeLimitTestcCsdtt_t_tj|_t|_t_t t j dfddd|_ |j \}}tj|j ||ddd|_dS)Nrr#Tr% rrrrrr"s  z'SMTPDChannelWithDataSizeLimitTest.setUpcCs ttt_t_|jt_dSrrlr!rrrrBs z*SMTPDChannelWithDataSizeLimitTest.tearDowncCs|jj||jdSrrrrrrr.sz,SMTPDChannelWithDataSizeLimitTest.write_linecCs|d|d||jjjd|d||jjjd|d||jjjd|d||jjjd||jjdd d gd fgdSrrr!rrrtest_data_limit_dialogs$       z8SMTPDChannelWithDataSizeLimitTest.test_data_limit_dialogcCs~|d|d||jjjd|d||jjjd|d||jjjd|d||jjjddS) Nr/r0rtr1r2rs'This message is longer than 32 bytes .rrr!rrr$test_data_limit_dialog_too_much_data.s       zFSMTPDChannelWithDataSizeLimitTest.test_data_limit_dialog_too_much_dataN)rrrr"rBr.rrrrrrrs  rc@s4eZdZddZddZddZddZd d Zd S) SMTPDChannelWithDecodeDataFalsecCsZtt_t_tj|_t|_t_t t j dfd|_ |j \}}t|j |||_dS)Nrr#rrrrrr"?s  z%SMTPDChannelWithDecodeDataFalse.setUpcCs ttt_t_|jt_dSrrlr!rrrrBGs z(SMTPDChannelWithDecodeDataFalse.tearDowncCs|jj||jdSrrrrrrr.Lsz*SMTPDChannelWithDecodeDataFalse.write_linecCsP|d|d|d|d|d|d||jjddS)Nr/r0r1r2plain ascii textrErr!rrrtest_ascii_dataPs      z/SMTPDChannelWithDecodeDataFalse.test_ascii_datacCsZ|d|d|d|d|d|d|d||jjddS) Nr/r0r1r2utf8 enriched text: żźćand some plain asciirEs/utf8 enriched text: żźć and some plain asciirr!rrrtest_utf8_dataYs       z.SMTPDChannelWithDecodeDataFalse.test_utf8_dataNrrrr"rBr.rrrrrrr=s  rc@s4eZdZddZddZddZddZd d Zd S) SMTPDChannelWithDecodeDataTruecCsbtt_t_tj|_t|_t_t t j dfddd|_ |j \}}tj|j ||dd|_dSrrrrrrr"is   z$SMTPDChannelWithDecodeDataTrue.setUpcCs ttt_t_|jt_dSrrlr!rrrrBts z'SMTPDChannelWithDecodeDataTrue.tearDowncCs|jj||jdSrrrrrrr.ysz)SMTPDChannelWithDecodeDataTrue.write_linecCsP|d|d|d|d|d|d||jjddS)Nr/r0r1r2rrEzplain ascii textrr!rrrr}s      z.SMTPDChannelWithDecodeDataTrue.test_ascii_datacCsZ|d|d|d|d|d|d|d||jjddS) Nr/r0r1r2rrrEu/utf8 enriched text: żźć and some plain asciirr!rrrrs       z-SMTPDChannelWithDecodeDataTrue.test_utf8_dataNrrrrrrgs   rc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS)&SMTPDChannelTestWithEnableSMTPUTF8TruecCsbtt_t_tj|_t|_t_t t j dfddd|_ |j \}}tj|j ||dd|_dS)Nrr#TrSrrrrrr"s   z,SMTPDChannelTestWithEnableSMTPUTF8True.setUpcCs ttt_t_|jt_dSrrlr!rrrrBs z/SMTPDChannelTestWithEnableSMTPUTF8True.tearDowncCs|jj||jdSrrrrrrr.sz1SMTPDChannelTestWithEnableSMTPUTF8True.write_linecCs0|d|dd||jjjddS)NrDu7MAIL from: BODY=8BITMIME SMTPUTF8utf-8rt)r.rrIr-rrpr!rrr1test_MAIL_command_accepts_SMTPUTF8_when_announceds zXSMTPDChannelTestWithEnableSMTPUTF8True.test_MAIL_command_accepts_SMTPUTF8_when_announcedcCs|ddD]}|d|||jjjddd|d||jjjddd|d||jjjddd |d |d kr||jjjd q||jjjd qdS)NrD)rsBODY=8BITMIME SMTPUTF8sMAIL from: r250srcpt to:data354sc .rrts250 SMTPUTF8 message okish r)r Zmail_parametersrrrtest_process_smtputf8_messages     zDSMTPDChannelTestWithEnableSMTPUTF8True.test_process_smtputf8_messagecCs|d|dd||jjjddd|dd||jjjddd|d||jjjddd |d |d ||jjd dS) NrDu2MAIL From: naïve@examplé BODY=8BITMIME SMTPUTF8rrrruRCPT To:späm@examplér2rrrE)r.rrIr-rrprr!rrrrs    z5SMTPDChannelTestWithEnableSMTPUTF8True.test_utf8_datacCsn|ddtd}|dd|dd||jjjd|dd|d||jjjd dS) N ehlo example$mail from:<@example>rrr @example>rrtr.rrIr-rrprrrr7test_MAIL_command_limit_extended_with_SIZE_and_SMTPUTF8s     z^SMTPDChannelTestWithEnableSMTPUTF8True.test_MAIL_command_limit_extended_with_SIZE_and_SMTPUTF8cCs|ddtd}dD]}|d||d||jjjddd |d||d ||jjjddd |d ||jjjddd |d ||jjjddd|d||jjjddd qdS)Nr r r )rbcrs a@example>rrs500r rsrcpt to:rrstest .r)r rcharrrr1test_multiple_emails_with_extended_command_lengths     zXSMTPDChannelTestWithEnableSMTPUTF8True.test_multiple_emails_with_extended_command_lengthN) rrrr"rBr.rr rrrrrrrrs  rc@seZdZddZdS) MiscTestCasecCshd}tj|t|ddS)N> ZDevnullZprogramZOptionsZ COMMASPACENEWLINEZDATA_SIZE_DEFAULTusagergZ parseargs) blacklist)rZ check__all__r)r rrrr test__all__szMiscTestCase.test__all__N)rrrrrrrrrsr__main__)!rarJtestrrZ test.supportrrrirr rr ExceptionrrZTestCaserrCrVrdrwrrbrcrrrrrrrmainrrrrs8 "]%B`  7*,X