a }|gs@sdZddlZddlZddlZddlZddlZddlmZddlZddlZddl m Z ddl m Z ddl m Z ddlmZddlmZdd lmZdd lmZdd lmZGd d d ejZGd ddejZGdddeZGdddeZGdddeZGdddeZGdddeZ GdddejZ!GdddejZ"GdddejZ#Gdd d ej$Z%e&d!kre'e(ej)d"de*gdS)#)Tests for certbot._internal.cert_manager.N)mock) configuration)errors)ALL_FOUR) storage_test) filesystem)os)utilcs(eZdZdZfddZddZZS)BaseCertManagerTestz2Base class for setting up Cert Manager tests. cstdj_tjjdtj jj dd_ fddj D_ t tj jjdd}|dWdn1s0YdS) NFZspecialarchive) example.org other.comcs i|]}||j|qS)_set_up_configdomains).0domainselfrM/usr/lib/python3.9/site-packages/certbot/_internal/tests/cert_manager_test.py %sz-BaseCertManagerTest.setUp..z IGNORE.THISwzThis file should be ignored!)supersetUpconfigquietrmakedirsrenewal_configs_dirr pathjoin config_dirrZ config_filesopenwrite)rZjunk __class__rrrs  zBaseCertManagerTest.setUpcCsttj|jj|t}|dur|j|_d|j_d|j_|||jd|ddS) Test deleteTr z6Deleted all files relating to certificate example.org.N)test_rc return_valueyesnorcertnamer5assert_called_once_with)rmock_delete_filesmock_lineage_for_certnameZ mock_notify mock_utilrrrtest_delete_from_config_yesLs z&DeleteTest.test_delete_from_config_yescCs4|j|_d|j_d|j_||jdks0JdS)r7Fr rN)r8r9r:rr;r5 call_countrr=r>r?rrrtest_delete_from_config_no\s  z%DeleteTest.test_delete_from_config_nocCs>|j|_tjdgf|j_d|j_|||jddS)r7r TN) r8r9 display_utilOK checklistr:r5r<rrBrrr"test_delete_interactive_single_yeshs  z-DeleteTest.test_delete_interactive_single_yescCs>|j|_tjdgf|j_d|j_||jdks:JdS)r7r FrNr8r9rDrErFr:r5rArBrrr!test_delete_interactive_single_nots  z,DeleteTest.test_delete_interactive_single_nocCs\|j|_tjddgf|j_d|j_|||jd||jd|j dksXJdS)r7r other.orgTN) r8r9rDrErFr:r5Zassert_any_callrrArBrrr$test_delete_interactive_multiple_yess z/DeleteTest.test_delete_interactive_multiple_yescCs@|j|_tjddgf|j_d|j_||jdksz=CertificatesTest.test_report_human_readable..zINVALID: EXPIREDrK)Zhoursz1 hourz 2 hour(s)TZVALIDINVALID)Zdaysz1 dayZunderz3 dayszINVALID: TEST_CERT, REVOKEDZ indescribablez thrice.namedzINVALID:Zhorror)r9datetimepytzr3r2ZnowZUTCrrdZ target_expirynamesZ is_test_certZ timedeltaappendlenrefindallrr;) rZ mock_revokedZ mock_serialrorpZexpirycertZ get_reportoutrrjrtest_report_human_readablesl         z+CertificatesTest.test_report_human_readableN)r*r+r,r-rVrrPrNrOr]r^rbrgrxrrrrrQs(    rQc@s6eZdZdZedededddZdS)SearchLineagesTestz:Tests for certbot._internal.cert_manager._search_lineages.certbot.util.make_or_verify_dir,certbot._internal.storage.renewal_conf_filesr_cCsFdg|_tj|_ddlm}||jddddks8J|jsBJdS)NZbadfilerr1cSs|SrWrxrrrrk*rlz.check) r9rCertStorageError side_effectr3r2Z_search_lineagesrrY)rramock_renewal_conf_filesmock_make_or_verify_dirr2rrrtest_cert_storage_error s  z*SearchLineagesTest.test_cert_storage_errorN)r*r+r,r-rrPrrrrrrys ryc@sneZdZdZedededddZededddZededd d Zd S) LineageForCertnameTestz=Tests for certbot._internal.cert_manager.lineage_for_certnamerz3certbot._internal.storage.renewal_file_for_certnamer_cCsHd|_tjdd}||_ddlm}||jd|ks:J|jsDJdS)N somefile.conf example.comrhrr1)r9rMockr3r2lineage_for_certnamerrY)rramock_renewal_conf_filer mock_matchr2rrrtest_found_match1s   z'LineageForCertnameTest.test_found_matchcCs6d|_ddlm}||jddus(J|js2JdS)Nzother.com.confrr1r)r9r3r2rrrYrrrr2rrr test_no_match=s z$LineageForCertnameTest.test_no_matchcCs:t|_ddlm}||jddus,J|js6JdS)Nrr1r)rrrr3r2rrrYrrrrtest_no_renewal_fileEs  z+LineageForCertnameTest.test_no_renewal_fileN) r*r+r,r-rrPrrrrrrrr.s  rc@sReZdZdZedededddZededddZd S) DomainsForCertnameTestz=Tests for certbot._internal.cert_manager.domains_for_certnamerzrr_cCsXd|_tjdd}ddg}||j_||_ddlm}||jd|ksJJ|jsTJdS)Nrrrhr rr1) r9rrrqr3r2domains_for_certnamerrY)rrarrrrr2rrrrQs   z'DomainsForCertnameTest.test_found_matchcCs6d|_ddlm}||jddus(J|js2JdS)Nrrr1r )r9r3r2rrrYrrrrr`s z$DomainsForCertnameTest.test_no_matchN)r*r+r,r-rrPrrrrrrrNs rcseZdZdZfddZddZede ddZ e d d Z e ed d d Z e edddZ e edddZe edddZZS)RenameLineageTestz7Tests for certbot._internal.cert_manager.rename_lineagecstd|j_d|j_dS)Nr Zafter)rrrr; new_certnamerr#rrrls zRenameLineageTest.setUpcOsddlm}|j|i|Sr0)r3r2Zrename_lineage)rrTrUr2rrrr5qs zRenameLineageTest._callr{cCsd|j_d|j_g|_ttj||jWdn1sD0Ydg|_|}t j df|j _ttj||jWdn1s0Yt j df|j _ttj||jWdn1s0YdS)Ntwozone.confr) rr;rr9pytestraisesrErrorr5rDCANCELmenurE)rmock_get_utilityr util_mockrrrtest_no_certnameus**z"RenameLineageTest.test_no_certnamecCsd|j_d|j_|}tjdf|j_tt j | |jWdn1sR0Ytj df|j_tt j | |jWdn1s0YdS)Nonename) rr;rrDrinputr9rrrrr5rE)rrrrrrtest_no_new_certnames*z&RenameLineageTest.test_no_new_certnamer6cCsRd|j_d|j_d|_ttj||jWdn1sD0YdS)Nrr) rr;rr9rrrConfigurationErrorr5)rr>unused_get_utilityrrrtest_no_existing_certnames z+RenameLineageTest.test_no_existing_certnamez7certbot._internal.storage.RenewableCert._check_symlinkscCsRd|_||jddlm}||j|jj}|dusCertPathToLineageTest.test_options_fullchain..r )r9rrrr5rmock_acceptable_matchesrrrtest_options_fullchain s  z,CertPathToLineageTest.test_options_fullchaincCsBddg|_tj|jjddd}||j_d||jks>JdS)NcSs|jSrW)rr|rrrrkrlz>CertPathToLineageTest.test_options_cert_path..rr zcert.pem)r9r rrrr rr5)rrZtest_cert_pathrrrtest_options_cert_paths  z,CertPathToLineageTest.test_options_cert_pathcsBtjjjdddj_fddg|_djks>JdS)Narchiver z cert11.pemcs |dS)Nrvrr|rrrrkrlzACertPathToLineageTest.test_options_archive_cert..r rrrr rr9r5rrrrtest_options_archive_certs z/CertPathToLineageTest.test_options_archive_certcsBtjjjdddj_fddg|_djks>JdS)Nrr zfullchain11.pemcs |dS)Nrrr|rrrrk$szFCertPathToLineageTest.test_options_archive_fullchain..rrrrrtest_options_archive_fullchain s z4CertPathToLineageTest.test_options_archive_fullchaincCs"|j|j_d||jksJdSr)rrrr5rrrrtest_only_path(s z$CertPathToLineageTest.test_only_path)r*r+r,r-rr5rrrrrPrrrrrr.rrr#rrs     rcsTeZdZdZfddZddZddZedd d Z edd d Z Z S) MatchAndCheckOverlapszfTests for certbot._internal.cert_manager.match_and_check_overlaps w/o overlapping archive dirs.csBt|j|tj|jj ddd|_ |j |j_ dSrrrr#rrr1s  zMatchAndCheckOverlaps.setUpcCsddlm}|||||S)Nr)match_and_check_overlaps)rSr)rrZacceptable_matchesZ match_funcZrv_funcrrrrr59s zMatchAndCheckOverlaps._callcs:ddlm}dgj|fddddks6JdS)Nr)_acceptable_matchesr csjjSrW)rrr|rrrrk@rlz8MatchAndCheckOverlaps.test_basic_match..cSs|jSrWrhr|rrrrk@rl)rSrr5r)rrrrrr=s z&MatchAndCheckOverlaps.test_basic_matchz/certbot._internal.cert_manager._search_lineagescCsHg|_ttj"||jdddWdn1s:0YdSrW)r9rrrrr5rrZmock_search_lineagesrrrtest_no_matchesBsz%MatchAndCheckOverlaps.test_no_matchescCsLddg|_ttj"||jdddWdn1s>0YdS)NZspiderZdance)r9rrrZOverlappingMatchFoundr5rrrrrtest_too_many_matchesHs z+MatchAndCheckOverlaps.test_too_many_matches) r*r+r,r-rr5rrrPrrr.rrr#rr-s  rc@seZdZdZddZededddZededdd Zededd d Z ededd d Z ededddZ ededddZ dS)GetCertnameTestrcCs4t}||_||jt|_d|j_ dSrW) rNrOstartrZ addCleanupstoprrdrr;)rZget_utility_patchrrrrRs    zGetCertnameTest.setUpr{z2certbot._internal.storage.lineagename_for_filenamecCsldg|_d|_ddlm}d}tjdf|j_|j|jddddgksLJ||jj ddvshJdS) Nexample.com.confrrr1zWhich certificate would youverbFallow_multiple r9r3r2rDrErr get_certnamesr call_argsr mock_name mock_filesr2promptrrrtest_get_certnamesYs z"GetCertnameTest.test_get_certnamescCsndg|_d|_ddlm}d}tjdf|j_|j|jdd|ddgksNJ|jj dd|ksjJdS) Nrrrr1 custom promptrFrZ custom_promptrrrrr test_get_certnames_custom_promptes  z0GetCertnameTest.test_get_certnames_custom_promptcCsndg|_d|_ddlm}tjdf|j_tt j "|j |j dddWdn1s`0YdS)Nrrrr1erroring_anywayFr) r9r3r2rDrrrrrrrrrrrrr2rrrtest_get_certnames_user_abortss  z-GetCertnameTest.test_get_certnames_user_abortcCsndg|_d|_ddlm}d}tjdgf|j_|j|jddddgksNJ||jj ddvsjJdS) Nrrrr1zWhich certificate(s) would yourTr r9r3r2rDrErrFrrrrrrr!test_get_certnames_allow_multiple}s  z1GetCertnameTest.test_get_certnames_allow_multiplecCspdg|_d|_ddlm}d}tjdgf|j_|j|jdd|ddgksPJ|jj dd|kslJdS) Nrrrr1rrTrrrrrr/test_get_certnames_allow_multiple_custom_prompts   z?GetCertnameTest.test_get_certnames_allow_multiple_custom_promptcCsndg|_d|_ddlm}tjgf|j_tt j "|j |j dddWdn1s`0YdS)Nrrrr1rTr) r9r3r2rDrrrFrrrrrrrrrr,test_get_certnames_allow_multiple_user_aborts  zs<         ,W ^&@"U