a ‚oeX:ã@sÔdZddlZddlZddlZddlmZddlZddlmZddlm Z ddlm Z ddl m Z ddl mmZGdd „d ejƒZGd d „d ejƒZGd d „d ejƒZedkrÐe e ejdd…eg¡¡dS)z#Tests for certbot._internal.renewaléN)Úmock)Ú challenges)Ú configuration)Úerrors)Ústoragec@sÒeZdZej ejd¡dd„ƒZej ejd¡dd„ƒZ e d¡dd„ƒZ e d¡d d „ƒZ ej ejd¡d d „ƒZ e d ¡ej ejd¡dd„ƒƒZ e ¡ej ejd¡dd„ƒƒZej ejd¡dd„ƒZdS)Ú RenewalTestÚ set_by_usercCs|d|_t |jjd¡}d|j_d|j_d|j_t  |j¡}t   ||¡}|jd}ddl m }| ||¡|jdgksxJ‚dS)NFzsample-renewal-ancient.confÚ renewalparamsr©Úrenewalz /var/www/)Ú return_valueÚ test_utilÚ make_lineageÚconfigÚ config_dirÚaccountZemailÚ webroot_pathrÚNamespaceConfigrÚ RenewableCertÚcertbot._internalr Ú_restore_webroot_config)ÚselfÚmock_set_by_userÚrc_pathrÚlineager r ©rúEC:\Program Files\Certbot\pkgs\certbot\_internal\tests\renewal_test.pyÚ!test_ancient_webroot_renewal_confsÿ     z-RenewalTest.test_ancient_webroot_renewal_confcCs˜ddlm}d|_ddiddgdœ}| |j|¡|jjddiksFJ‚|jjddgksZJ‚iddœ}| |j|¡|jjiks‚J‚|jjdgks”J‚dS)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_conflictscCs¬d|j_d|j_d|j_t |j¡}t |jjd¡}t   ||¡}t   ¡}d|j _ddlm}t  d¡�"| |jd||¡Wdƒn1sŽ0Y|jjdks¨J‚dS) NZ INVALID_VALUETúsample-renewal.conf©NNNNrr ú*certbot._internal.renewal.hooks.renew_hookÚ secp256r1)rÚelliptic_curveÚ reuse_keyÚdry_runrrr rrrrrÚ MagicMockÚobtain_certificater rr ÚpatchÚ renew_cert©rZ!unused_mock_avoid_reuse_conflictsrrrÚ le_clientr rrrÚtest_reuse_key_renewal_params9s ÿ   0z)RenewalTest.test_reuse_key_renewal_paramscCs¸d|j_d|j_d|j_d|j_t |j¡}tj|jj ddd�}t   ||¡}t   ¡}d|j_ddlm}t  d ¡�"| |jd||¡Wdƒn1sš0Y|jjd ks´J‚dS) NZ INVALID_CURVETÚecdsazsample-renewal-ec.conf©Zecr!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_paramscCsÞd|_d|j_d|j_d|j_t |j¡}t |jj d¡}t   ||¡}t   ¡}d|j_ddlm}t  d¡�"| |jd||¡Wdƒn1s”0Y|jjdks®J‚|jjd ks¾J‚|jjsÊJ‚|j t jd¡dS) NFTr r!rr r"r#r.)r rr%Znew_keyr&rrr rrrrrr'r(rr r)r*r$r0Zassert_called_withÚANY)rrrrrr,r rrrÚ test_new_keygs$ ÿ   0 zRenewalTest.test_new_keyr"cCsâd|_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||¡Wdƒn1s°0Yd d„|_d|j_| |jd||¡dS)NFTÚrsair r r%r!rr zUnable to change the --key-type)ÚmatchcSs|dkS)Nr%r)ÚvarrrrÚŸóz6RenewalTest.test_reuse_key_conflicts..)r rr%r0Z rsa_key_sizer&rrr rrrrrr'r(rr ÚpytestÚraisesrÚErrorr*Z side_effect)rrZunused_mock_renew_hookrrrr,r rrrÚtest_reuse_key_conflictsƒs& ÿ  0 z$RenewalTest.test_reuse_key_conflictscCsbd|_t |j¡}d|_t |jjd¡}ddlm }t   |j¡}|  ||¡}t |jtjƒs^J‚dS)NFz sample-renewal-deprecated-optionz%sample-renewal-deprecated-option.confrr )r rrrZcertnamer rrrr ÚcopyÚdeepcopyÚ reconstituteÚ isinstanceZmanual_public_ip_logging_okrr')rrZunused_mock_get_utilityrrr Úlineage_configZrenewal_candidaterrrÚ&test_remove_deprecated_config_elements£s ÿ   z2RenewalTest.test_remove_deprecated_config_elementscCsPd|_tj|jjddd�}ddlm}t |j¡}|  ||¡|j dksLJ‚dS)NFr r/rr r4) r r rrrrr r=r>r?r0)rrrr rArrrÚtest_absent_key_type_restored´s    z)RenewalTest.test_absent_key_type_restoredN)Ú__name__Ú __module__Ú __qualname__rr)Úobjectrrrrr-r1r3r<r Zpatch_display_utilrBrCrrrrrs$       rc@säeZdZdZedd„ƒZej e j d¡dd„ƒZ ej e j d¡dd„ƒZ ej e j d¡d d „ƒZ ej e j d¡d d „ƒZej e j d¡d d„ƒZej e j d¡dd„ƒZej e j d¡dd„ƒZej e j d¡dd„ƒZdd„ZdS)Ú!RestoreRequiredConfigElementsTestzETests for certbot._internal.renewal.restore_required_config_elements.cOsddlm}||i|¤ŽS)Nr)Ú restore_required_config_elements)Úcertbot._internal.renewalrI)ÚclsÚargsÚkwargsrIrrrÚ_callÂs z'RestoreRequiredConfigElementsTest._callrcCs,d|_| |jddi¡|jjdus(J‚dS)NFÚallow_subset_of_namesÚTrueT)r rNrrO©rrrrrÚ"test_allow_subset_of_names_successÇszDRestoreRequiredConfigElementsTest.test_allow_subset_of_names_successcCsLd|_ddi}t tj¡�| |j|¡Wdƒn1s>0YdS)NFrOÚmaybe©r r9r:rr;rNr©rrr rrrÚ"test_allow_subset_of_names_failureÍszDRestoreRequiredConfigElementsTest.test_allow_subset_of_names_failurecCsFd|_dd d¡i}| |j|¡tjjtjjg}|jj|ksBJ‚dS)NFÚ pref_challsz http-01, dnsú,) r ÚsplitrNrrZHTTP01ÚtypÚDNS01rW©rrr ZexpectedrrrÚtest_pref_challs_listÔs z7RestoreRequiredConfigElementsTest.test_pref_challs_listcCs:d|_ddi}| |j|¡tjjg}|jj|ks6J‚dS)NFrWZdns)r rNrrr[rZrWr\rrrÚtest_pref_challs_strÜs  z6RestoreRequiredConfigElementsTest.test_pref_challs_strcCsLd|_ddi}t tj¡�| |j|¡Wdƒn1s>0YdS)NFrWzfinding-a-shrubberyrTrUrrrÚtest_pref_challs_failureäsz:RestoreRequiredConfigElementsTest.test_pref_challs_failurecCs,d|_| |jddi¡|jjdus(J‚dS)NFÚ must_staplerPT)r rNrr`rQrrrÚtest_must_staple_successësz:RestoreRequiredConfigElementsTest.test_must_staple_successcCsLd|_ddi}t tj¡�| |j|¡Wdƒn1s>0YdS)NFr`rSrTrUrrrÚtest_must_staple_failureñsz:RestoreRequiredConfigElementsTest.test_must_staple_failurecCsHddlm}d|j_d|_| |jd|ji¡|jj|jdksDJ‚dS)Nr)Ú constantsFÚserver)rrcrrdr rNZV1_URIZ CLI_DEFAULTS)rrrcrrrÚ test_ancient_server_renewal_conføs  zBRestoreRequiredConfigElementsTest.test_ancient_server_renewal_confcCs0dddœ}| |j|¡| |jj|d¡dS)Nzhttps://example.orgZsomehash)rdrr)rNrZ assertEqualr)rr rrrÚtest_related_valuess þz5RestoreRequiredConfigElementsTest.test_related_valuesN)rDrErFÚ__doc__Ú classmethodrNrr)rGrrrRrVr]r^r_rarbrerfrrrrrHÀs(         rHc@sTeZdZdZdd„Zdd„Zedd„ƒZdd „Zd d „Z d d „Z dd„Z dd„Z dS)ÚDescribeResultsTestz r8z>DescribeResultsTest._assert_success_output..)rnÚassert_has_calls)rÚlinesrrrÚ_assert_success_outputsz*DescribeResultsTest._assert_success_outputcCs*| tjdd�gggg¡| dg¡dS)NT©r&z%No simulated renewals were attempted.©rNrr'r|rprrrÚtest_no_renewal_attempts"sz,DescribeResultsTest.test_no_renewal_attemptscCs.| tjdd�dgddd¡| gd¢¡dS)NFr}úgood.pem)úP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -z)Congratulations, all renewals succeeded: z good.pem (success)úO- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -r~rprrrÚtest_successful_renewal&sz+DescribeResultsTest.test_successful_renewalcCsL| tjdd�gdggg¡| ddg¡|j t dd¡t d¡g¡dS) NFr}úbad.pemr�r‚z@All %ss failed. The following certificates could not be renewed:r z bad.pem (failure)©rNrr'r|rorzrvrprrrÚtest_failed_renewal/sþ þz'DescribeResultsTest.test_failed_renewalcCsV| tjdd�ddgddgdgdg¡| gd ¢¡|j t d d ¡t d ¡g¡dS) NTr}r€z good2.pemr„zbad2.pemzfoo.pem expires on 123z errored.conf)r�z7The 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)r‚zThe following %ss failed:zsimulated renewalz( bad.pem (failure) bad2.pem (failure)r…rprrrÚtest_all_renewal:s þ  þz$DescribeResultsTest.test_all_renewalN) rDrErFrgrqrtrhrNr|rrƒr†r‡rrrrri s   riÚ__main__é)rgr=ÚsysZunittestrr9ZacmerZcertbotrrrrZcertbot.tests.utilZtestsÚutilr ZConfigTestCaserrHZTestCaserirDÚexitÚmainÚargvÚ__file__rrrrÚs      1MA