a  ze>@sddlZddlZddlZddlZddlZddlZddlZddlZddl Zddlm Z ddZ Gdddej Z GdddeZGd d d ej ZGd d d ej Zed kredS)N)headerregistrycCs|}|||SN)copyupdate)Z base_defaultsZ differencesdefaultsrO/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_email/test_policy.py make_defaults s r c@seZdZdZdddddddZeZeddej j j dej j j dej jd ej Zej jeeiej jeeiej jeed d iej jeed dd ej jeed dd ej jeeddieeeiiZej eed<ddZddZddZddZddZddZddZddZd d!Z Gd"d#d#Z!Gd$d%d%e"Z#d&d'Z$d(d)Z%Gd*d+d+ej j Z&d,d-Z'd.d/Z(d0d1Z)Gd2d3d3Z*d4d5Z+d6d7Z,d8d9Z-d:d;Z.dd?Z0dS)@PolicyAPITestsTN Z8bitFN)max_line_lengthlinesepZcte_typeraise_on_defect mangle_from_message_factorylong)utf8rheader_factoryZ refold_sourcecontent_managerrrrz )rr)rr rrc Csr|jD]b\}}|D]P\}}|j||d*|t|||d|Wdq1s`0Yqq dS)Npolicyattrz2change {} docs/docstrings if defaults have changed)policiesitemssubTest assertEqualgetattrformat)selfrexpectedrvaluerrr test_defaultsBszPolicyAPITests.test_defaultsc Cs|jD]\}}t|D]v}|j||dT|dsNtttjj |t j r^Wdqn| ||d |Wdq1s0Yqq dS)Nr_z{} is not fully tested)rrdirr startswith isinstanceremailr EmailPolicytypes FunctionTypeassertInr)rrr rrrrtest_all_attributes_coveredJs  z*PolicyAPITests.test_all_attributes_coveredcCs\|t}tjWdn1s*0Yt|j}d}|D]}|||qFdS)N)fold fold_binaryZheader_fetch_parseheader_source_parseheader_store_parse) assertRaises TypeErrorr'rPolicystr exceptionr+)rcmmsgZabstract_methodsmethodrrrtest_abcVs  ( zPolicyAPITests.test_abcc Cs|jD]\}}|D]@}|t|dt||dWdq1sL0Yq|tdd|_Wdq 1s0Yq dS)Nz .*read-onlyzno attribute.*foo)rrassertRaisesRegexAttributeErrorsetattrfoo)rrrrrrrtest_policy_is_immutablebs ,z'PolicyAPITests.test_policy_is_immutablecCsP|jD]@\}}dd|D}|jfi|}|D]}|t||q4q dS)NcSsi|] }|dqSrr).0rrrr nzDPolicyAPITests.test_set_policy_attrs_when_cloned..)rrcloneZ assertIsNoner)r policyclassrZ testattrdictrrrrr!test_set_policy_attrs_when_clonedjs z0PolicyAPITests.test_set_policy_attrs_when_clonedc Csx|jD]l}|t|ddWdn1s40Y|t|ddWdq1sh0YqdS)N)Z this_keyword_should_not_be_valid)Znewtline)rr1r2)rrCrrr*test_reject_non_policy_keyword_when_calledss   ( z9PolicyAPITests.test_reject_non_policy_keyword_when_calledcCs|j}tjjjdd}tjjjdd}||}|jdd|D]\}}|t |||qF||}|jdd|D]\}}|t |||q~|tjj}|D]\}}|t |||qdS)Ndr 2) policy_defaultsrr'rdefaultrBrrrr)rr p1p2Zaddedrr!rrrtest_policy_additionzs    z#PolicyAPITests.test_policy_additioncCsjd}tj}d|d<tjjjdd}tjjjdd}||d|d|||d|d|dS)NzSubject: =?utf-8?q?=C3=A1?= áSubjectrrG)r'message EmailMessagerrJrBrr-)rr r7rKrLrrrtest_fold_zero_max_line_lengths z-PolicyAPITests.test_fold_zero_max_line_lengthcCshGddd}|}t}tj}|||||j|gt}|||||j||gdS)Nc@seZdZddZdS)z2PolicyAPITests.test_register_defect..DummycSs g|_dSrdefectsrrrr__init__sz;PolicyAPITests.test_register_defect..Dummy.__init__N__name__ __module__ __qualname__rVrrrrDummysr[)objectr'rr(register_defectrrT)rr[objdefectrdefect2rrrtest_register_defects   z#PolicyAPITests.test_register_defectc@seZdZddZdS)zPolicyAPITests.MyObjcCs g|_dSrrSrUrrrrVszPolicyAPITests.MyObj.__init__NrWrrrrMyObjsrbc@s eZdZdS)zPolicyAPITests.MyDefectNrXrYrZrrrrMyDefectsrdcCsT|}|d}||jd tjj||Wdn1sF0YdS)Nthe telly is broken)rbrdr:r'rstrict handle_defectrr=r_rrr#test_handle_defect_raises_on_stricts z2PolicyAPITests.test_handle_defect_raises_on_strictcCsb|}|d}tjj||||j|g|d}tjj||||j||gdSNZoneZtwo)rbrdr'rrJrgrrT)rr=defect1r`rrr#test_handle_defect_registers_defects  z2PolicyAPITests.test_handle_defect_registers_defectcs(eZdZdZfddZddZZS)zPolicyAPITests.MyPolicyNcstj|dgi|dS)NrT)superrVrargskw __class__rrrVsz PolicyAPITests.MyPolicy.__init__cCs|j|dSr)rTappend)rr^r_rrrr]sz'PolicyAPITests.MyPolicy.register_defect)rXrYrZrTrVr] __classcell__rrrqrMyPolicys rucCsX|}|d}||jd$|jdd||Wdn1sJ0YdS)NreT)r)rbrdr:rurgrhrrr,test_overridden_register_defect_still_raisess z;PolicyAPITests.test_overridden_register_defect_still_raisescCs~|}|d}|}|||||j|g||jg|d}|||||j||g||jgdSrj)rbrdrurgrrT)rr=rkZ my_policyr`rrr%test_overridden_register_defect_workss    z4PolicyAPITests.test_overridden_register_defect_workscCs>tjjdd}||jd||tj||tj dS)NZTesttest) r'rrJrrnameassertIsInstancerUnstructuredHeaderZ BaseHeader)rhrrrtest_default_header_factorysz*PolicyAPITests.test_default_header_factoryc@seZdZejjZdS)zPolicyAPITests.FooN)rXrYrZrr{parserrrrFoosrcCsxtj}tj}|jd|j|dd}|||j||tj |dd}|||j||tj dSNr=rx) r'rr(r map_to_typerrzZassertNotIsInstancerr{rZpolicy1Zpolicy2r|rrr$test_each_Policy_gets_unique_factorys    z3PolicyAPITests.test_each_Policy_gets_unique_factorycCsZtj}|}|jd|j|dd}|||j|dd}|||jdSr)r'rr(rBrrrrzrrrrtest_clone_copies_factorys   z(PolicyAPITests.test_clone_copies_factorycCsHtj}|j}|tjj}||j|tjj|}||j|dSr)r'rr(rrfr)rZmypolicyZ myfactory newpolicyrrr"test_new_factory_overrides_defaults    z1PolicyAPITests.test_new_factory_overrides_defaultcCs:tjjtjj}||jtjjj||jddidS)NrT)r'rrJrfrrr(__dict__)rrrrr6test_adding_default_policies_preserves_default_factorys zEPolicyAPITests.test_adding_default_policies_preserves_default_factorycCs,tjjjdd}|dd}||ddS)NrGrOuąąąąąąąąąąąązSubject: =?utf-8?q?=C4=85?= =?utf-8?q?=C4=85?= =?utf-8?q?=C4=85?= =?utf-8?q?=C4=85?= =?utf-8?q?=C4=85?= =?utf-8?q?=C4=85?= =?utf-8?q?=C4=85?= =?utf-8?q?=C4=85?= =?utf-8?q?=C4=85?= =?utf-8?q?=C4=85?= =?utf-8?q?=C4=85?= =?utf-8?q?=C4=85?= )r'rrJrBr-r)rractualrrr*test_non_ascii_chars_do_not_cause_inf_loops  z9PolicyAPITests.test_non_ascii_chars_do_not_cause_inf_loopc Csd}dD]z}|j|dZtjjj|d}|tjj|d|Wdn1sZ0YWdq1sx0YqdS)Nz;Melt away the pounds with this one simple trick! 1234567890) )maxlenrGrO) rr'rrJrBr1errorsZHeaderParseErrorr-)rZsubjectrrrrrtest_short_maxlen_errors z&PolicyAPITests.test_short_maxlen_error)1rXrYrZZ longMessageZcompat32_defaultsrrIrr'rr(rrrPrQZ new_policyZcompat32r rJZSMTPZSMTPUTF8ZHTTPrfrr"r,r9r>rDrErMrRrarb Exceptionrdrirlrurvrwr}rrrrrrrrrrrr s                r c@s eZdZdS) TestExceptionNrcrrrrrsrc@szeZdZGdddejjZddZddZddZ d d Z d d Z d dZ dddZ ddZddZddZddZdS)TestPolicyPropagationc@s(eZdZddZeZZZeZZdS)zTestPolicyPropagation.MyPolicycOs tddS)Nrx)rrnrrr badmethod&sz(TestPolicyPropagation.MyPolicy.badmethodN) rXrYrZrr-r.Zheader_fetch_parserr/r0rrrrru%s rucCs@|td tjd|jdWdn1s20YdS)N^test$Subject: test r)r:rr'message_from_stringrurUrrrtest_message_from_string+sz.TestPolicyPropagation.test_message_from_stringcCs@|td tjd|jdWdn1s20YdS)NrSubject: test r)r:rr'Zmessage_from_bytesrurUrrrtest_message_from_bytes0sz-TestPolicyPropagation.test_message_from_bytescCsJtd}|td tj||jdWdn1s<0YdS)Nrrr)ioStringIOr:rr'Zmessage_from_filerurfrrrtest_message_from_file5s z,TestPolicyPropagation.test_message_from_filecCsJtd}|td tj||jdWdn1s<0YdS)Nrrr)rBytesIOr:rr'Zmessage_from_binary_filerurrrrtest_message_from_binary_file:s z3TestPolicyPropagation.test_message_from_binary_filecCsJtjj|jd}|td|dWdn1s<0YdS)Nrrr)r'parserZParserrur:rZparsestrrprrr test_parserAsz!TestPolicyPropagation.test_parsercCsJtjj|jd}|td|dWdn1s<0YdS)Nrrr)r'rZ BytesParserrur:rZ parsebytesrrrrtest_bytes_parserFsz'TestPolicyPropagation.test_bytes_parserrNcCs*|durtjjn||_tj||jdS)Nr)r'rrJrBr)rsourcerrrr _make_msgOszTestPolicyPropagation._make_msgcCs|}||j|jdSr)rassertIsrrr7rrr(test_parser_propagates_policy_to_messageSsz>TestPolicyPropagation.test_parser_propagates_policy_to_messagecCs2|td}|D]}||j|jqdS)Na+ Subject: mime test MIME-Version: 1.0 Content-Type: multipart/mixed, boundary="XXX" --XXX Content-Type: text/plain test --XXX Content-Type: text/plain test2 --XXX-- )rtextwrapdedentwalkrr)rr7partrrr-test_parser_propagates_policy_to_sub_messagesWs zCTestPolicyPropagation.test_parser_propagates_policy_to_sub_messagescCsL|jdtjjjddd}t}tj|}| || | ddSNzSubject: test To: foo X)rrzSubject: testXTo: fooXX) rr'rrJrBrr generator GeneratorZflattenrgetvalue)rr7sgrrr+test_message_policy_propagates_to_generatorjs  zATestPolicyPropagation.test_message_policy_propagates_to_generatorcCs.|jdtjjjddd}||ddSr)rr'rrJrBrZ as_stringrrrr%test_message_policy_used_by_as_stringrsz;TestPolicyPropagation.test_message_policy_used_by_as_string)rN)rXrYrZr'rr3rurrrrrrrrrrrrrrrr s rc@seZdZddZdS)TestConcretePoliciescCs tj}|t|jdddS)NZFromzspam egg@foo.py)r'rr(r1 ValueErrorr0)rinstancerrr(test_header_store_parse_rejects_newlineszs  z=TestConcretePolicies.test_header_store_parse_rejects_newlinesN)rXrYrZrrrrrrxsr__main__)rr)rZunittestZ email.errorsr'Z email.policyZ email.parserZemail.generatorZ email.messagerr ZTestCaser rrrrrXmainrrrrs$ X