a oey@sdZddlZddlZddlZddlZddlZddlmZddlZddlZddl m Z ddl m Z ddl m Z ddlmZddlmZdd lmZdd lmZdd lmZGd d d ejZGd ddeZGdddejZGdddeZGdddeZGdddeZGdddeZ GdddeZ!GdddejZ"GdddejZ#Gdd d ejZ$Gd!d"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).0domainselfrJC:\Program Files\Certbot\pkgs\certbot\_internal\tests\cert_manager_test.py %sz-BaseCertManagerTest.setUp..z IGNORE.THISwzThis file should be ignored!)supersetUpconfigquietrmakedirsrenewal_configs_dirr pathjoin config_dirr config_filesopenwrite)rZjunk __class__rrrs  zBaseCertManagerTest.setUpcCsttj|jj|t}|dur.ar5)certbot._internalr4rr rrrr(rr!r"closesymlinkr Zupdate_live_symlinksgetcwdchdirdirnamerrealpathreadlink) rr4Z archive_pathsrr*r,Z live_pathZ archive_pathZprev_dirrr6rtest_update_live_symlinksGs2      "  z0UpdateLiveSymlinksTest.test_update_live_symlinksN)r-r.r/r0r@rrrrr2Dsr2c@seZdZdZddZeedededddZ eededd d Z eededd d Z eededd dZ eededddZ eededddZdS) DeleteTestz4Tests for certbot._internal.cert_manager.delete cCsddlm}||jdSNrr3)r8r4deleter)rr4rrr_callns zDeleteTest._callzcertbot.display.util.notify3certbot._internal.cert_manager.lineage_for_certnamez&certbot._internal.storage.delete_filescCs>|j|_d|j_d|j_|||jd|ddS) Test deleteTr z6Deleted all files relating to certificate example.org.N)test_rc return_valueyesnorcertnamerDassert_called_once_with)rmock_delete_filesmock_lineage_for_certnameZ mock_notify mock_utilrrrtest_delete_from_config_yesrs z&DeleteTest.test_delete_from_config_yescCs4|j|_d|j_d|j_||jdks0JdS)rFFr rN)rGrHrIrrJrD call_countrrLrMrNrrrtest_delete_from_config_nos  z%DeleteTest.test_delete_from_config_nocCs>|j|_tjdgf|j_d|j_|||jddS)rFr TN) rGrH display_utilOK checklistrIrDrKrrQrrr"test_delete_interactive_single_yess  z-DeleteTest.test_delete_interactive_single_yescCs>|j|_tjdgf|j_d|j_||jdks:JdS)rFr FrNrGrHrSrTrUrIrDrPrQrrr!test_delete_interactive_single_nos  z,DeleteTest.test_delete_interactive_single_nocCs\|j|_tjddgf|j_d|j_|||jd||jd|j dksXJdS)rFr other.orgTN) rGrHrSrTrUrIrDZassert_any_callrrPrQrrr$test_delete_interactive_multiple_yess z/DeleteTest.test_delete_interactive_multiple_yescCs@|j|_tjddgf|j_d|j_||jdks z=CertificatesTest.test_report_human_readable..zINVALID: EXPIREDrZ)Zhoursz1 hourz 2 hour(s)TZVALIDINVALID)Zdaysz1 dayZunderz3 dayszINVALID: TEST_CERT, REVOKEDZ indescribablez thrice.namedzINVALID:Zhorror)rHdatetimepytzr8r4ZnowZUTCrrsZ target_expirynamesZ is_test_certZ timedeltaappendlenrefindallrrJ) rZ mock_revokedZ mock_serialr~rZexpirycertZ get_reportoutrryrtest_report_human_readablesl         z+CertificatesTest.test_report_human_readableN)r-r.r/r0rerr_r]r^rlrmrqrvrrrrrr`s(    r`c@s6eZdZdZedededddZdS)SearchLineagesTestz:Tests for certbot._internal.cert_manager._search_lineages.certbot.util.make_or_verify_dir,certbot._internal.storage.renewal_conf_filesrncCsFdg|_tj|_ddlm}||jddddks8J|jsBJdS)NZbadfilerr3cSs|SrfrxrrrrzPr{z.check) rHrCertStorageError side_effectr8r4Z_search_lineagesrrh)rrpmock_renewal_conf_filesmock_make_or_verify_dirr4rrrtest_cert_storage_errorFs  z*SearchLineagesTest.test_cert_storage_errorN)r-r.r/r0rr_rrrrrrCs rc@sneZdZdZedededddZededddZededd d Zd S) LineageForCertnameTestz=Tests for certbot._internal.cert_manager.lineage_for_certnamer3certbot._internal.storage.renewal_file_for_certnamerncCsHd|_tjdd}||_ddlm}||jd|ks:J|jsDJdS)N somefile.conf example.comrwrr3)rHrMockr8r4lineage_for_certnamerrh)rrpmock_renewal_conf_filer mock_matchr4rrrtest_found_matchWs   z'LineageForCertnameTest.test_found_matchcCs6d|_ddlm}||jddus(J|js2JdS)Nzother.com.confrr3r)rHr8r4rrrhrrrr4rrr test_no_matchcs z$LineageForCertnameTest.test_no_matchcCs:t|_ddlm}||jddus,J|js6JdS)Nrr3r)rrrr8r4rrrhrrrrtest_no_renewal_fileks  z+LineageForCertnameTest.test_no_renewal_fileN) r-r.r/r0rr_rrrrrrrrTs  rc@sReZdZdZedededddZededddZd S) DomainsForCertnameTestz=Tests for certbot._internal.cert_manager.domains_for_certnamerrrncCsXd|_tjdd}ddg}||j_||_ddlm}||jd|ksJJ|jsTJdS)Nrrrwr rr3) rHrrrr8r4domains_for_certnamerrh)rrprrrrr4rrrrws   z'DomainsForCertnameTest.test_found_matchcCs6d|_ddlm}||jddus(J|js2JdS)Nrrr3r )rHr8r4rrrhrrrrrs z$DomainsForCertnameTest.test_no_matchN)r-r.r/r0rr_rrrrrrrts 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)rrrrJ new_certnamerr$rrrs zRenameLineageTest.setUpcOsddlm}|j|i|SrB)r8r4Zrename_lineage)rrcrdr4rrrrDs zRenameLineageTest._callrcCsd|j_d|j_g|_ttj||jWdn1sD0Ydg|_|}t j df|j _ttj||jWdn1s0Yt j df|j _ttj||jWdn1s0YdS)Ntwozone.confr) rrJrrHpytestraisesrErrorrDrSCANCELmenurT)rmock_get_utilityr util_mockrrrtest_no_certnames**z"RenameLineageTest.test_no_certnamecCsd|j_d|j_|}tjdf|j_tt j | |jWdn1sR0Ytj df|j_tt j | |jWdn1s0YdS)Nonename) rrJrrSrinputrHrrrrrDrT)rrrrrrtest_no_new_certnames*z&RenameLineageTest.test_no_new_certnamerEcCsRd|j_d|j_d|_ttj||jWdn1sD0YdS)Nrr) rrJrrHrrrConfigurationErrorrD)rrMunused_get_utilityrrrtest_no_existing_certnames z+RenameLineageTest.test_no_existing_certnamez7certbot._internal.storage.RenewableCert._check_symlinkscCsRd|_||jddlm}||j|jj}|dusCertPathToLineageTest.test_options_fullchain..r )rHrrrrDrmock_acceptable_matchesrrrtest_options_fullchain0s  z,CertPathToLineageTest.test_options_fullchaincCsBddg|_tj|jjddd}||j_d||jks>JdS)NcSs|jSrf)rrrrrrz8r{z>CertPathToLineageTest.test_options_cert_path..rr zcert.pem)rHr rrrr rrD)rrZtest_cert_pathrrrtest_options_cert_path6s  z,CertPathToLineageTest.test_options_cert_pathcsBtjjjdddj_fddg|_djks>JdS)Narchiver z cert11.pemcs |dS)NrrrrrrrzCr{zACertPathToLineageTest.test_options_archive_cert..r rrrr rrHrDrrrrtest_options_archive_cert>s z/CertPathToLineageTest.test_options_archive_certcsBtjjjdddj_fddg|_djks>JdS)Nrr zfullchain11.pemcs |dS)NrrrrrrrzJszFCertPathToLineageTest.test_options_archive_fullchain..rrrrrtest_options_archive_fullchainFs z4CertPathToLineageTest.test_options_archive_fullchaincCs"|j|j_d||jksJdSr)rrrrDrrrrtest_only_pathNs z$CertPathToLineageTest.test_only_path)r-r.r/r0rrDrrrrr_rrrrrr1rrr$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$rrrWs  zMatchAndCheckOverlaps.setUpcCsddlm}|||||S)Nr)match_and_check_overlaps)rbr)rrZacceptable_matchesZ match_funcZrv_funcrrrrrD_s zMatchAndCheckOverlaps._callcs:ddlm}dgj|fddddks6JdS)Nr)_acceptable_matchesr csjjSrf)rrrrrrrzfr{z8MatchAndCheckOverlaps.test_basic_match..cSs|jSrfrwrrrrrzfr{)rbrrDr)rrrrrrcs z&MatchAndCheckOverlaps.test_basic_matchz/certbot._internal.cert_manager._search_lineagescCsHg|_ttj"||jdddWdn1s:0YdSrf)rHrrrrrDrrZmock_search_lineagesrrrtest_no_matcheshsz%MatchAndCheckOverlaps.test_no_matchescCsLddg|_ttj"||jdddWdn1s>0YdS)NZspiderZdance)rHrrrZOverlappingMatchFoundrDrrrrrtest_too_many_matchesns z+MatchAndCheckOverlaps.test_too_many_matches) r-r.r/r0rrDrrr_rrr1rrr$rrSs  rc@seZdZdZddZededddZededdd Zededd d Z ededd d Z ededddZ ededddZ dS)GetCertnameTestrcCs4t}||_||jt|_d|j_ dSrf) r]r^startrZ addCleanupstoprrsrrJ)rZget_utility_patchrrrrxs    zGetCertnameTest.setUprz2certbot._internal.storage.lineagename_for_filenamecCsldg|_d|_ddlm}d}tjdf|j_|j|jddddgksLJ||jj ddvshJdS) Nexample.com.confrrr3zWhich certificate would youverbFallow_multiple rHr8r4rSrTrr get_certnamesr call_argsr mock_name mock_filesr4promptrrrtest_get_certnamess z"GetCertnameTest.test_get_certnamescCsndg|_d|_ddlm}d}tjdf|j_|j|jdd|ddgksNJ|jj dd|ksjJdS) Nrrrr3 custom promptrFrZ custom_promptrrrrr test_get_certnames_custom_prompts  z0GetCertnameTest.test_get_certnames_custom_promptcCsndg|_d|_ddlm}tjdf|j_tt j "|j |j dddWdn1s`0YdS)Nrrrr3erroring_anywayFr) rHr8r4rSrrrrrrrrrrrrr4rrrtest_get_certnames_user_aborts  z-GetCertnameTest.test_get_certnames_user_abortcCsndg|_d|_ddlm}d}tjdgf|j_|j|jddddgksNJ||jj ddvsjJdS) Nrrrr3zWhich certificate(s) would yourTr rHr8r4rSrTrrUrrrrrrr!test_get_certnames_allow_multiples  z1GetCertnameTest.test_get_certnames_allow_multiplecCspdg|_d|_ddlm}d}tjdgf|j_|j|jdd|ddgksPJ|jj dd|kslJdS) Nrrrr3rrTrrrrrr/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)Nrrrr3rTr) rHr8r4rSrrrUrrrrrrrrrr,test_get_certnames_allow_multiple_user_aborts  zs>         ,&W ^&@"U