a  ze.@sddlZddlZddlZddlmZddlmZddlmZGdddZGdddeeZ Gd d d eeZ Gd d d eeZ e d kre dS)N)policy)errors) TestEmailBasec@seZdZejZdZejddZddZ ddZ e dZ d d Zd d Zd dZddZddZddZddZddZddZddZddZdS) TestDefectsBaseFccs dVdSNselfdefectrrX/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_email/test_defect_handling.py _raise_pointszTestDefectsBase._raise_pointcCstd}|tj||}Wdn1s60Y|jrJdS|d}|t |d| t | |d| | |dtjdS)Na_ Subject: XX From: xx@xx.dk To: XX Mime-version: 1.0 Content-type: multipart/mixed; boundary="MS_Mac_OE_3071477847_720252_MIME_Part" --MS_Mac_OE_3071477847_720252_MIME_Part Content-type: multipart/alternative; boundary="MS_Mac_OE_3071477847_720252_MIME_Part" --MS_Mac_OE_3071477847_720252_MIME_Part Content-type: text/plain; charset="ISO-8859-1" Content-transfer-encoding: quoted-printable text --MS_Mac_OE_3071477847_720252_MIME_Part Content-type: text/html; charset="ISO-8859-1" Content-transfer-encoding: quoted-printable --MS_Mac_OE_3071477847_720252_MIME_Part-- --MS_Mac_OE_3071477847_720252_MIME_Part Content-type: image/gif; name="xx.gif"; Content-disposition: attachment Content-transfer-encoding: base64 Some removed base64 encoded chars. --MS_Mac_OE_3071477847_720252_MIME_Part-- rdefects)textwrapdedentr rStartBoundaryNotFoundDefect_str_msgraise_expected get_payload assertTruehasattr assertEquallen get_defectsassertIsInstance)r sourcemsginnerrrr test_same_boundary_inner_outers %(  z.TestDefectsBase.test_same_boundary_inner_outercCstd}|tj||}Wdn1s60Y|jrJdS||t | t | |d|| |dtj|| |dtj dS)Na Date: Fri, 6 Apr 2001 09:23:06 -0800 (GMT-0800) From: foobar Subject: broken mail MIME-Version: 1.0 Content-Type: multipart/report; report-type=delivery-status; --JAB03225.986577786/zinfandel.lacita.com One part --JAB03225.986577786/zinfandel.lacita.com Content-Type: message/delivery-status Header: Another part --JAB03225.986577786/zinfandel.lacita.com-- rr)rrr rNoBoundaryInMultipartDefectrrrrstrrrr!MultipartInvariantViolationDefectr rrrrr test_multipart_no_boundaryAs ( z*TestDefectsBase.test_multipart_no_boundarya^ Date: Wed, 14 Nov 2007 12:56:23 GMT From: foo@bar.invalid To: foo@bar.invalid Subject: Content-Transfer-Encoding: base64 and multipart MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============3344438784458119861=="{} --===============3344438784458119861== Content-Type: text/plain Test message --===============3344438784458119861== Content-Type: application/octet-stream Content-Transfer-Encoding: base64 YWJj --===============3344438784458119861==-- cCsz|tj"||jd}Wdn1s40Y|jrHdS|t| |d| | |dtjdS)Nz" Content-Transfer-Encoding: base64rr) r rZ-InvalidMultipartContentTransferEncodingDefectr multipart_msgformatrrrrrr rrrr test_multipart_invalid_cteus" z*TestDefectsBase.test_multipart_invalid_ctecCs6|jr dS||jd}|t||ddS)Nrrrr%r&rrrr'rrr test_multipart_no_cte_no_defects z/TestDefectsBase.test_multipart_no_cte_no_defectcCsJ|jr dSdD]6}||jd|}|t||dd|qdS)N)Z7bitZ8bitZBINaryz Content-Transfer-Encoding: rzcte=r*)r Zcterrrr "test_multipart_valid_cte_no_defects  z2TestDefectsBase.test_multipart_valid_cte_no_defectcCstd}|tj||}Wdn1s60Y|jrJdS|t|d| t | |d| | |dtj| | |dtj dS)Na From: "Allison Dunlap" To: yyy@example.com Subject: 64423 Date: Sun, 11 Jul 2004 16:09:27 -0300 MIME-Version: 1.0 Content-Type: multipart/alternative; Blah blah blah r rrr)rrr rr rrrrrrrrr"r#rrr test_lying_multiparts ( z$TestDefectsBase.test_lying_multipartcCstd}|tj||}Wdn1s60Y|jrJdS|dd}|t | |d| | |dtjdS)Na Content-Type: multipart/mixed; boundary="AAA" From: Mail Delivery Subsystem To: yyy@example.com --AAA Stuff --AAA Content-Type: message/rfc822 From: webmaster@python.org To: zzz@example.com Content-Type: multipart/mixed; boundary="BBB" --BBB-- --AAA-- rr) rrr rrrrrrrrr)r rZouterZbadrrr test_missing_start_boundarys ( z+TestDefectsBase.test_missing_start_boundarycCs|tj|d}Wdn1s,0Y|jr@dS||dg||d|t| |d| | |tjg|| |dj ddS)Nz Line 1 Subject: test bodySubjectbodyrrz Line 1 ) r rZ#FirstHeaderLineIsContinuationDefectrrrkeysrrrassertDefectsEqualliner'rrr &test_first_line_is_continuation_headers(  z6TestDefectsBase.test_first_line_is_continuation_headercCs||tj|d}Wdn1s,0Y|jr@dS||dg||d|| |tjgdS)Nz&Subject: test not a header To: abc b r/znot a header To: abc b ) r rZ MissingHeaderBodySeparatorDefectrrrr1rr2rr'rrr "test_missing_header_body_separators(  z2TestDefectsBase.test_missing_header_body_separatorcCs|td}||}|tj|jdd}Wdn1sB0Y|jrVdS||d| | |tjgdS)Nz Subject: test MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 dmk Tdecodevi) rrrr rZInvalidBase64PaddingDefectrrrr2rr rrpayloadrrr "test_bad_padding_in_base64_payloads  *   z2TestDefectsBase.test_bad_padding_in_base64_payloadcCs|td}||}|tj|jdd}Wdn1sB0Y|jrVdS||d| | |tjgdS)Nz Subject: test MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 dmk=== Tr6r8) rrrr rZInvalidBase64CharactersDefectrrrr2rr9rrr $test_invalid_chars_in_base64_payloads  *   z4TestDefectsBase.test_invalid_chars_in_base64_payloadcCs|td}||}|tj|jdd}Wdn1sB0Y|jrVdS||d| | |tjgdS)Nz Subject: test MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 abcde Tr6sabcde) rrrr rZInvalidBase64LengthDefectrrrr2rr9rrr %test_invalid_length_of_base64_payloads  *   z5TestDefectsBase.test_invalid_length_of_base64_payloadcCstd}|tj||}Wdn1s60Y|jrJdS|t| d|| d d| | |tjgdS)Na? To: 1@harrydomain4.com Subject: Fwd: 1 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="------------000101020201080900040301" --------------000101020201080900040301 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Alternative 1 --------------000101020201080900040301 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Alternative 2 rrzAlternative 2 ) rrr rZCloseBoundaryNotFoundDefectrrrrrr2rr#rrr test_missing_ending_boundarys (  z,TestDefectsBase.test_missing_ending_boundaryN)__name__ __module__ __qualname__rdefaultr contextlibcontextmanagerr rr$rrr%r(r+r,r-r.r4r5r;r<r=r>rrrr r s$ /  &  rc@seZdZddZdS)TestDefectDetectioncCs|jSr)r r objrrr r2szTestDefectDetection.get_defectsN)r?r@rArrrrr rE0srEc@s.eZdZGdddejZddZddZdS)TestDefectCapturec@seZdZdZddZdS)zTestDefectCapture.CapturePolicyNcCs|j|dSr)capturedappend)r rGr rrr register_defect:sz/TestDefectCapture.CapturePolicy.register_defect)r?r@rArIrKrrrr CapturePolicy8srLcCs|jtd|_dS)N)rI)rLlistr)r rrr setUp=szTestDefectCapture.setUpcCs|jjSr)rrIrFrrr r@szTestDefectCapture.get_defectsN)r?r@rArZ EmailPolicyrLrNrrrrr rH6srHc@s0eZdZejZejddZdZejddZ dS)TestDefectRaisingT)Zraise_on_defectccs4||dVWdn1s&0YdSr)Z assertRaisesrrrr r Js zTestDefectRaising._raise_pointN) r?r@rArrZclonerrCrDr rrrr rODs  rO__main__)rZunittestrCZemailrrZtest.test_emailrrrErHrOr?mainrrrr s   )