a }|g3O@sdZddlZddlZddlmZddlZddlZddlmZddl m Z ddl m Z ddl mZddlmZdd lmZdd lmZdd lmZddlmmZejed ZGd ddejZGdddej Z!GdddejZ"GdddejZ#GdddejZ$GdddejZ%GdddejZ&GdddejZ'GdddejZ(e)de)d Gd!d"d"ejZ*e+d#kre,e-ej.d$de/gdS)%zTest certbot.display.ops.N)mock)messages)errors)account)obj) filesystem)os)ops)utilzrsa512_key.pemc@s|eZdZdZeddZeddZeddZ edd Z ed d Z ed d Z eddZ dS) GetEmailTestz(Tests for certbot.display.ops.get_email.cKsddlm}|fi|S)Nr) get_email)certbot.display.opsr )clskwargsr rL/usr/lib/python3.9/site-packages/certbot/_internal/tests/display/ops_test.py_calls zGetEmailTest._callcCs|j}tjdf|_ttj|Wdn1s>0Yttj|jddWdn1sv0YdS)N foo@bar.bazFZoptional) input display_utilCANCEL return_valuepytestraisesrErrorr)selfmock_get_utility mock_inputrrrtest_cancel_nones  &zGetEmailTest.test_cancel_nonecCsH|j}tjdf|_td}d|_Wdn1s:0YdS)Nr#certbot.display.ops.util.safe_emailT)rrOKrrpatchrrrmock_safe_emailrrr test_ok_safe(s   zGetEmailTest.test_ok_safecCsL|j}tjdf|_td}ddg|_Wdn1s>0YdS)Nrr FT)rrr!rrr" side_effectr#rrrtest_ok_not_safe0s    zGetEmailTest.test_ok_not_safecCs`d}|j}tjdf|_td*}d|_||jddWdn1sR0YdS)NThere seem to be problemsrr TZinvalid)rrr!rrr"rrrZ invalid_txtrr$rrrtest_invalid_flag8s   zGetEmailTest.test_invalid_flagcCsd|j}tjdf|_td2}ddg|_|jdd|jD]}q[s0 zChooseAccountTest.setUpcCs t|SN)r Zchoose_account)rZaccountsrrrrpszChooseAccountTest._callcCstjdf|j_dS)Nrrr!menurr mock_utilrrrtest_onetszChooseAccountTest.test_onecCstjdf|j_dSNrNrPrrrtest_twoyszChooseAccountTest.test_twocCstjdf|j_dSrS)rrrOrrPrrr test_cancel~szChooseAccountTest.test_cancel) r0r1r2r3r>r4rr5r6rRrUrV __classcell__rrrKrr7Ys    r7c@sLeZdZdZddZeddZddZdd Zd d Z d d Z ddZ dS)GenHttpsNamesTestzTest _gen_https_names.cCstttjddSNF)r?r@rArBrCrJrrrr>szGenHttpsNamesTest.setUpcCsddlm}||S)Nr)_gen_https_names)r rZ)rZdomainsrZrrrrs zGenHttpsNamesTest._callcCsdSrMrrJrrr test_zeroszGenHttpsNamesTest.test_zerocCsddg}|D]}q dS)N example.comzasllkjsadfljasdf.cr)rdomsdomrrrrRs zGenHttpsNamesTest.test_onecCsddgddgg}|D]}qdS)Nz foo.bar.orgzbar.orgzpaypal.google.facebook.live.comz*.zombo.example.comr)rZ domains_listr]rrrrUs zGenHttpsNamesTest.test_twocCs gd}dS)N)a.orgb.orgc.orgr)rr]rrr test_threeszGenHttpsNamesTest.test_threecCsgd}dj|d}dS)N)r_r`razd.orgzJhttps://{dom[0]}, https://{dom[1]}, https://{dom[2]}, and https://{dom[3]})r^)format)rr]Zexprrr test_fours zGenHttpsNamesTest.test_fourN) r0r1r2r3r>r4rr[rRrUrbrdrrrrrXs  rXc@seZdZdZddZed ddZeddd Z e d d Z e d d Z ddZddZe ddZe ddZe ddZe ddZddZe ddZe ddZdS)!ChooseNamesTestzTest choose names.cCs"tttjdt|_dSrY)r?r@rArBrCrrG mock_installrJrrrr>szChooseNamesTest.setUpNcCsddlm}|||S)Nr) choose_names)r rg)rZ installerquestionrgrrrrs zChooseNamesTest._callz*certbot.display.ops._choose_names_manuallycCs|ddSrMr)rZ mock_manualrrrtest_no_installers z!ChooseNamesTest.test_no_installercCstjgf|j_dSrM)rrrrrPrrrtest_no_installer_cancelsz(ChooseNamesTest.test_no_installer_cancelcCs2t|j_d}tj|f|j_||j}dSNr\)setrf get_all_namesrrr!rr)rrQdomainZ actual_domsrrrtest_no_names_chooses  z$ChooseNamesTest.test_no_names_choosecsPddlm}gd}dgd}fdd|D}t|}fdd|D}dS) Nr _sort_names)zex.comzzx.comzax.comz.ex.com)eazycsg|] }|qSrr.0usrorr z;ChooseNamesTest.test_sort_names_trivial..csg|] }|qSrrrwrzrrr{r|)r rrsorted)rrrZ some_domainsunsorted_shortZ unsorted_long sorted_shortZ sorted_longrrzrtest_sort_names_trivials z'ChooseNamesTest.test_sort_names_trivialc Csxddlm}gd}gd}gd}g}|D]}|D]}|||q4q,g}t|D]}|D]}|||q^qVdS)Nrrq)z.cx.comz.bx.comz.ax.comz.dx.com)wwwbnother.long.subdomainrta.long.subdomainrub)rtrrrrru)r rrappendr}) rrrZunsorted_domainsr~rZto_sortZshortroZsortdrrrtest_sort_names_manys  z$ChooseNamesTest.test_sort_names_manycCs.dh|jj_tjdgf|j_||j}dSrlrfrnrrr! checklistrrrQnamesrrrtest_filter_names_valid_returns  z.ChooseNamesTest.test_filter_names_valid_returncCs0dh|jj_tjdgf|j_||jd}dS)Nr\ZCustomrrrrr$test_filter_namees_override_questions z4ChooseNamesTest.test_filter_namees_override_questioncCs dh|jj_tjgf|j_dSrl)rfrnrrr!rrPrrr"test_filter_names_nothing_selected s z2ChooseNamesTest.test_filter_names_nothing_selectedcCs"dh|jj_tjdgf|j_dSrl)rfrnrrrrrPrrrtest_filter_names_cancels  z(ChooseNamesTest.test_filter_names_cancelcCs(ddlm}gd}ddg}gd}dS)Nr)get_valid_domains)r\zsecond.example.comalso.example.comzunder_score.example.comZjusttldz*.wildcard.comu öóòps.net uniçodé.com)r\uúniçøde.comr)r r)rrZ all_validZ all_invalidZ two_validrrrtest_get_valid_domainss  z&ChooseNamesTest.test_get_valid_domainscCszddlm}|}d|j_tjdf|j_td&}t ddddd}||_ Wdn1s^0Ytjd f|j_dS) Nr_choose_names_manuallyFrz=certbot.display.ops.internal_display_util.separate_list_inputrrTz=example.com,under_score.example.com,justtld,valid.example.com) r ryesnorrr!rrr"UnicodeEncodeErrorr&)rrQr utility_mockZmock_sliZ unicode_errorrrrtest_choose_manually#s" z$ChooseNamesTest.test_choose_manuallycCs6ddlm}|}tjdf|j_gd|j_|dS)Nrrr)TTF)r rrr!rrrr&)rrQrrrrrtest_choose_manually_retry>s  z*ChooseNamesTest.test_choose_manually_retry)N)r0r1r2r3r>r4rrr"rjr5r6rkrprrrrrrrrrrrrrres2          rec@s6eZdZdZeddZee dddZ dS)SuccessInstallationTestz&Test the success installation message.cCsddlm}||dS)Nr)success_installation)r r)rrrrrrrLs zSuccessInstallationTest._callcertbot.display.util.notifycCs<d|j_ddg}|||jddd}|D]}q2dS)Nr\abc.comr) notificationrrr,)r mock_notify mock_displayrargnamerrrtest_success_installationQs   z1SuccessInstallationTest.test_success_installationN) r0r1r2r3r4rr5r6rr"rrrrrrJs  rc@s6eZdZdZeddZee dddZ dS)SuccessRenewalTestz!Test the success renewal message.cCsddlm}||dS)Nr)success_renewal)r r)rrrrrrrbs zSuccessRenewalTest._callrcCs d|j_ddg}||dS)Nr\r)rrr)rrrrrrrtest_success_renewalgs  z'SuccessRenewalTest.test_success_renewalN) r0r1r2r3r4rr5r6rr"rrrrrr`s  rc@s6eZdZdZeddZee dddZ dS)SuccessRevocationTestz$Test the success revocation message.cCsddlm}||dS)Nr)success_revocation)r r)rrDrrrrrts zSuccessRevocationTest._callrcCs"d}|||d|dS)Nz/path/to/cert.pemzWCongratulations! You have successfully revoked the certificate that was located at {0}.)rZassert_called_once_withrc)rrZunused_mock_displayrDrrrtest_success_revocationys z-SuccessRevocationTest.test_success_revocationN) r0r1r2r3r4rr5r6rr"rrrrrrrs  rc@seZdZdZdZdZdZeddZe ddZ e d d Z e d d Z e d dZe ddZe ddZe ddZdS)ValidatorTestsz6Tests for `validated_input` and `validated_directory`.zMust be non-emptyZasdfz /var/www/htmlcCs|dkrttjdS)Nr)rZ PluginErrorr_ValidatorTests__ERROR)mrrrZ __validatorszValidatorTests.__validatorcCsBtjdftjdftjdftj|jfg|j_tj|jddd}dSNrmessageTZforce_interactiverr! valid_inputrr&r validated_input_ValidatorTests__validatorrrQZreturnedrrrtest_input_blank_with_validators z.ValidatorTests.test_input_blank_with_validatorcCs*tj|jfg|j_tj|jddd}dSNmsgotherdefaultrrrrr"test_input_validation_with_defaultsz1ValidatorTests.test_input_validation_with_defaultcCsTtj|jfg|j_tt"tj |j dddWdn1sF0YdSNrrr) rr!rrr&rrAssertionErrorr rrrPrrr&test_input_validation_with_bad_defaults z5ValidatorTests.test_input_validation_with_bad_defaultcCs,tjdfg|j_tj|jddd\}}dSr)rrrr&r rr)rrQcodeZ unused_rawrrr test_input_cancel_with_validatorsz/ValidatorTests.test_input_cancel_with_validatorcCs2tjdftj|jfg|j_tj|jddd}dS)NrrTrrr!valid_directorydirectory_selectr&r validated_directoryrrrrr test_directory_select_validations  z/ValidatorTests.test_directory_select_validationcCs*tj|jfg|j_tj|jddd}dSrrrrrr-test_directory_select_validation_with_defaultszs<         B+-E%