a }|gX:@sdZddlZddlZddlZddlmZddlZddlmZddlm Z ddlm Z ddl m Z ddl mmZGdd d ejZGd d d ejZGd d d ejZedkreeejddegdS)z#Tests for certbot._internal.renewalN)mock) challenges) configuration)errors)storagec@seZdZejejdddZejejdddZ edddZ edd d Z ejejdd d Z ed ejejdddZ eejejdddZejejdddZdS) RenewalTest set_by_usercCs|d|_t|jjd}d|j_d|j_d|j_t |j}t ||}|jd}ddl m }||||jdgksxJdS)NFzsample-renewal-ancient.conf renewalparamsrrenewalz /var/www/) return_value test_util make_lineageconfig config_diraccountZemail webroot_pathrNamespaceConfigr RenewableCertcertbot._internalr _restore_webroot_config)selfmock_set_by_userrc_pathrlineager r rH/usr/lib/python3.9/site-packages/certbot/_internal/tests/renewal_test.py!test_ancient_webroot_renewal_confs     z-RenewalTest.test_ancient_webroot_renewal_confcCsddlm}d|_ddiddgd}||j||jjddiksFJ|jjddgksZJidd}||j||jjiksJ|jjdgksJdS)Nrr Fztest.example.comz /var/www/testz/var/www/other) webroot_mapr)rr r rrrr)rrr r rrr test_webroot_params_conservation!s z,RenewalTest.test_webroot_params_conservationz4certbot._internal.renewal._avoid_reuse_key_conflictscCsd|j_d|j_d|j_t|j}t|jjd}t ||}t }d|j _ddlm}t d"||jd||Wdn1s0Y|jjdksJdS) NZ INVALID_VALUETsample-renewal.confNNNNrr *certbot._internal.renewal.hooks.renew_hook secp256r1)relliptic_curve reuse_keydry_runrrr rrrrr MagicMockobtain_certificater rr patch renew_certrZ!unused_mock_avoid_reuse_conflictsrrr le_clientr rrrtest_reuse_key_renewal_params9s    0z)RenewalTest.test_reuse_key_renewal_paramscCsd|j_d|j_d|j_d|j_t|j}tj|jj ddd}t ||}t }d|j_ddlm}t d "||jd||Wdn1s0Y|jjd ksJdS) NZ INVALID_CURVETecdsazsample-renewal-ec.confZecr!rr r"r#)rr$r%r&key_typerrr rrrrrr'r(r rr r)r*r+rrr test_reuse_ec_key_renewal_paramsNs"    0z,RenewalTest.test_reuse_ec_key_renewal_paramscCsd|_d|j_d|j_d|j_t|j}t|jj d}t ||}t }d|j_ddlm}t d"||jd||Wdn1s0Y|jjdksJ|jjd ksJ|jjsJ|jt jddS) NFTr r!rr r"r#r.)r rr%Znew_keyr&rrr rrrrrr'r(rr r)r*r$r0Zassert_called_withANY)rrrrrr,r rrr test_new_keygs$    0 zRenewalTest.test_new_keyr"cCsd|_d|j_d|j_d|j_d|j_t|j}t |jj d}t ||}d|jdd<t }d|j_d d lm}tjtjd d "||jd||Wdn1s0Yd d|_d|j_||jd||dS)NFTrsair r r%r!rr zUnable to change the --key-type)matchcSs|dkS)Nr%r)varrrrz6RenewalTest.test_reuse_key_conflicts..)r rr%r0Z rsa_key_sizer&rrr rrrrrr'r(rr pytestraisesrErrorr*Z side_effect)rrZunused_mock_renew_hookrrrr,r rrrtest_reuse_key_conflictss&   0 z$RenewalTest.test_reuse_key_conflictscCsbd|_t|j}d|_t|jjd}ddlm }t |j}| ||}t |jtjs^JdS)NFz sample-renewal-deprecated-optionz%sample-renewal-deprecated-option.confrr )r rrrZcertnamer rrrr copydeepcopy reconstitute isinstanceZmanual_public_ip_logging_okrr')rrZunused_mock_get_utilityrrr lineage_configZrenewal_candidaterrr&test_remove_deprecated_config_elementss    z2RenewalTest.test_remove_deprecated_config_elementscCsPd|_tj|jjddd}ddlm}t|j}| |||j dksLJdS)NFr r/rr r4) r r rrrrr r=r>r?r0)rrrr rArrrtest_absent_key_type_restoreds    z)RenewalTest.test_absent_key_type_restoredN)__name__ __module__ __qualname__rr)objectrrrrr-r1r3r<r Zpatch_display_utilrBrCrrrrrs$       rc@seZdZdZeddZeje j dddZ eje j dddZ eje j dd d Z eje j dd d Zeje j dd dZeje j dddZeje j dddZeje j dddZddZdS)!RestoreRequiredConfigElementsTestzETests for certbot._internal.renewal.restore_required_config_elements.cOsddlm}||i|S)Nr) restore_required_config_elements)certbot._internal.renewalrI)clsargskwargsrIrrr_calls z'RestoreRequiredConfigElementsTest._callrcCs,d|_||jddi|jjdus(JdS)NFallow_subset_of_namesTrueT)r rNrrOrrrrr"test_allow_subset_of_names_successszDRestoreRequiredConfigElementsTest.test_allow_subset_of_names_successcCsLd|_ddi}ttj||j|Wdn1s>0YdS)NFrOmayber r9r:rr;rNrrrr rrr"test_allow_subset_of_names_failureszDRestoreRequiredConfigElementsTest.test_allow_subset_of_names_failurecCsFd|_dddi}||j|tjjtjjg}|jj|ksBJdS)NF pref_challsz http-01, dns,) r splitrNrrZHTTP01typDNS01rWrrr Zexpectedrrrtest_pref_challs_lists z7RestoreRequiredConfigElementsTest.test_pref_challs_listcCs:d|_ddi}||j|tjjg}|jj|ks6JdS)NFrWZdns)r rNrrr[rZrWr\rrrtest_pref_challs_strs  z6RestoreRequiredConfigElementsTest.test_pref_challs_strcCsLd|_ddi}ttj||j|Wdn1s>0YdS)NFrWzfinding-a-shrubberyrTrUrrrtest_pref_challs_failuresz:RestoreRequiredConfigElementsTest.test_pref_challs_failurecCs,d|_||jddi|jjdus(JdS)NF must_staplerPT)r rNrr`rQrrrtest_must_staple_successsz:RestoreRequiredConfigElementsTest.test_must_staple_successcCsLd|_ddi}ttj||j|Wdn1s>0YdS)NFr`rSrTrUrrrtest_must_staple_failuresz:RestoreRequiredConfigElementsTest.test_must_staple_failurecCsHddlm}d|j_d|_||jd|ji|jj|jdksDJdS)Nr) constantsFserver)rrcrrdr rNZV1_URIZ CLI_DEFAULTS)rrrcrrr test_ancient_server_renewal_confs  zBRestoreRequiredConfigElementsTest.test_ancient_server_renewal_confcCs0ddd}||j|||jj|ddS)Nzhttps://example.orgZsomehash)rdrr)rNrZ assertEqualr)rr rrrtest_related_valuess z5RestoreRequiredConfigElementsTest.test_related_valuesN)rDrErF__doc__ classmethodrNrr)rGrrrRrVr]r^r_rarbrerfrrrrrHs(         rHc@sTeZdZdZddZddZeddZdd Zd d Z d d Z ddZ ddZ dS)DescribeResultsTestz r8z>DescribeResultsTest._assert_success_output..)rnassert_has_calls)rlinesrrr_assert_success_outputsz*DescribeResultsTest._assert_success_outputcCs*|tjddgggg|dgdS)NTr&z%No simulated renewals were attempted.rNrr'r|rprrrtest_no_renewal_attempts"sz,DescribeResultsTest.test_no_renewal_attemptscCs.|tjdddgddd|gddS)NFr}good.pem)P - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -z)Congratulations, all renewals succeeded: z good.pem (success)O- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -r~rprrrtest_successful_renewal&sz+DescribeResultsTest.test_successful_renewalcCsL|tjddgdggg|ddg|jtddtdgdS) NFr}bad.pemrrz@All %ss failed. The following certificates could not be renewed:r z bad.pem (failure)rNrr'r|rorzrvrprrrtest_failed_renewal/s z'DescribeResultsTest.test_failed_renewalcCsV|tjddddgddgdgdg|gd |jtd d td gdS) NTr}rz good2.pemrzbad2.pemzfoo.pem expires on 123z errored.conf)rz7The following certificates are not due for renewal yet:z" foo.pem expires on 123 (skipped)z+The following simulated renewals succeeded:z+ good.pem (success) good2.pem (success) zB Additionally, the following renewal configurations were invalid: z errored.conf (parsefail)rzThe following %ss failed:zsimulated renewalz( bad.pem (failure) bad2.pem (failure)rrprrrtest_all_renewal:s   z$DescribeResultsTest.test_all_renewalN) rDrErFrgrqrtrhrNr|rrrrrrrrri s   ri__main__)rgr=sysZunittestrr9ZacmerZcertbotrrrrZcertbot.tests.utilZtestsutilr ZConfigTestCaserrHZTestCaserirDexitmainargv__file__rrrrs      1MA