a }|gM>@sxdZddlZddlZddlZddlZddlZddlmZddlZddlm Z ddl Z ddl m Z ddl mZddl mZddlmZdd lmZdd lmZddlmZGd d d ejZGd ddejZGdddejZGdddejZGdddejZGdddejZGdddejZGdddejZ Gdddej!Z"e#dkrte$e %ej&dde'gdS)z Tests for certbot._internal.log.N)Optional)mock)messages)errors)util) constants) filesystem)oscs\eZdZdZeddZfddZedededed d d Z Z S) PreArgParseSetupTestz4Tests for certbot._internal.log.pre_arg_parse_setup.cOsddlm}|S)Nr)pre_arg_parse_setup)certbot._internal.logr )clsargskwargsr rD/usr/lib/python3.9/site-packages/certbot/_internal/tests/log_test.py_calls zPreArgParseSetupTest._callcsttdSN)loggingshutdownsupertearDownself __class__rrrszPreArgParseSetupTest.tearDowncertbot._internal.log.sysz/certbot._internal.log.pre_arg_parse_except_hook'certbot._internal.log.logging.getLoggerz*certbot._internal.log.util.atexit_registerc Csdg|_tj|_||}|jtjd}|jj D]2}|dd}|dur8t |tj j r8|}|j } q8q8|tj|ddd|j|dddddtjddS) Nz--debugrTFdebugquietlog_path)argvsys version_inforsetLevelassert_called_once_withrDEBUG addHandlerZcall_args_list isinstancehandlers MemoryHandlertargetr excepthookrANY) rZ mock_registerZmock_getmock_except_hookmock_sysZmock_root_loggermemory_handlercallhandlerr/rrrtest_it$s"   zPreArgParseSetupTest.test_it) __name__ __module__ __qualname____doc__ classmethodrrrpatchr7 __classcell__rrrrr s  r csPeZdZdZeddZfddZfddZdd Zd d Z d d Z Z S)PostArgParseSetupTestz5Tests for certbot._internal.log.post_arg_parse_setup.cOsddlm}||i|S)Nr)post_arg_parse_setup)r r@)r rrr@rrrrDs zPostArgParseSetupTest._callcstd|j_d|j_d|j_tjd|j_t t j d|_ ddl m }|t|_ddl m}ddl m}||_|jj|_||j|_tj|j|jgd |_dS) NFi verbose_countwrColoredStreamHandlerr. TempHandler)r-)rsetUpconfigr"max_log_backupsr#rZ CLI_DEFAULTSrAopenr devnullr rDioStringIOstream_handlerr.rG temp_handlerpathZ temp_pathr4r MagicMock root_logger)rrDr.rGrrrrHIs        zPostArgParseSetupTest.setUpcs6|j|j|j|jtdSr)r4closerOrPrLrrrrrrr[s     zPostArgParseSetupTest.tearDownc Cstd}|j|_d}t|N}td$}tj|_||jWdn1sX0YWdn1sv0YWdn1s0Ytj |jj d}|jj |j|ddd|j ddd|jj|jj|d|jj}|jjrndS) Nr0certbot._internal.log.post_arg_parse_except_hookrzletsencrypt.logrrr r!)rr=rSZ return_valuer&r'rrIr rQjoinlogs_dirZ removeHandlerr)r4r0r"r#rOlevel)rZmock_get_loggerZexcept_hook_pathr2r3r$rXrrr test_commonbs(   f z!PostArgParseSetupTest.test_commoncCsd|j_|dSNT)rIr"rYrrrr test_debug}sz PostArgParseSetupTest.test_debugcCsd|j_|dSrZ)rIr#rYrrrr test_quietsz PostArgParseSetupTest.test_quiet) r8r9r:r;r<rrHrrYr[r\r>rrrrr?As   r?csheZdZdZeddZfddZedddZ d d Z d d Z d dZ edddZ ZS)SetupLogFileHandlerTestz7Tests for certbot._internal.log.setup_log_file_handler.cOsddlm}||i|S)Nr)setup_log_file_handler)r r^)r rrr^rrrrs zSetupLogFileHandlerTest._callcstd|j_dS)N*)rrHrIrJrrrrrHs zSetupLogFileHandlerTest.setUpz;certbot._internal.main.logging.handlers.RotatingFileHandlerc CsPt|_z||jddWn&tjy@}z WYd}~nd}~00|ddS)Ntest.log %(message)szError not raised.)IOError side_effectrrIrErrorfail)r mock_handlererrrrr test_failures z$SetupLogFileHandlerTest.test_failurecCs|jdddS)NTshould_rollover)_test_success_commonrrrrtest_success_with_rolloversz2SetupLogFileHandlerTest.test_success_with_rollovercCsd|j_|jdddS)NrFri)rIrJrkrrrrtest_success_without_rolloversz5SetupLogFileHandlerTest.test_success_without_rollovercCsLd}||j|d\}}|tj|jj|}tj|jj|d}dS)Nr`raz.1)rrIrTr rQrVrW)rrjlog_filer6r$Z expected_pathZ backup_pathrrrrks z,SetupLogFileHandlerTest._test_success_commonz:certbot._internal.log.logging.handlers.RotatingFileHandlercCs"||jdd|jdd}dS)Nr`rarZ backupCount)rrI call_args)rrfZ backup_countrrrtest_max_log_backups_usedsz1SetupLogFileHandlerTest.test_max_log_backups_used)r8r9r:r;r<rrHrr=rhrlrmrkrpr>rrrrr]s   r]c@s0eZdZdZddZddZddZdd Zd S) ColoredStreamHandlerTestz4Tests for certbot._internal.log.ColoredStreamHandlercCsXt|_dd|j_t|_|jtjddl m }||j|_ |j |j dS)NcSsdSrZrrrrrz0ColoredStreamHandlerTest.setUp..rrC) rMrNstreamisattyr getLoggerloggerr(r*r rDr6r+)rrDrrrrHs     zColoredStreamHandlerTest.setUpcCs|jdSrr6rTrrrrrsz!ColoredStreamHandlerTest.tearDowncCsd}|j|dS)Nz I did a thing)rwr"rmsgrrr test_formats z$ColoredStreamHandlerTest.test_formatcCsd}tj|j_|j|dS)NzI did another thing)rr*r6Z red_levelrwr"ryrrrtest_format_and_red_levels  z2ColoredStreamHandlerTest.test_format_and_red_levelN)r8r9r:r;rHrr{r|rrrrrqs  rqc@s@eZdZdZddZddZddZdd Zd d Zd d Z dS)MemoryHandlerTestz-Tests for certbot._internal.log.MemoryHandlercCsbtt|_|jtjd|_t|_ t |j |_ ddl m }||j |_|j|jdS)Nzhi thererrE)rrvr8rwr(r*rzrMrNrt StreamHandlerrOr r.r6r+)rr.rrrrHs    zMemoryHandlerTest.setUpcCs|j|jdSr)r6rTrOrrrrrs zMemoryHandlerTest.tearDowncCs||jjdddSNTforce)_test_log_debugr6flushrrrr test_flushszMemoryHandlerTest.test_flushcCs|j|j|jdSr)rwZcriticalrzr6rrrrrtest_not_flusheds z"MemoryHandlerTest.test_not_flushedcCs@|t}t|}|j||jjdd|dSr) rrMrNrr~r6Z setTargetrrT)rZ new_streamZnew_stream_handlerrrrtest_target_resets   z#MemoryHandlerTest.test_target_resetcCs|j|jdSr)rwr"rzrrrrrsz!MemoryHandlerTest._test_log_debugN) r8r9r:r;rHrrrrrrrrrr}s  r}c@s8eZdZdZddZddZddZdd Zd d Zd S) TempHandlerTestz,Tests for certbot._internal.log.TempHandler.cCsd|_ddlm}||_dS)NFrrF)closedr rGr6)rrGrrrrHs zTempHandlerTest.setUpcCs|jdSrrxrrrrr szTempHandlerTest.tearDowncCsdSrrrrrrtest_permissionssz TempHandlerTest.test_permissionscCs|jdSrrxrrrr test_deletes zTempHandlerTest.test_deletecCs,|jt|jt|jjdSr)r6emitrrRrTr removerQrrrrtest_no_deletes zTempHandlerTest.test_no_deleteN) r8r9r:r;rHrrrrrrrrrs rc@s.eZdZdZeddZedddZdS)PreArgParseExceptHookTestz:Tests for certbot._internal.log.pre_arg_parse_except_hook.cOsddlm}||i|S)Nr)pre_arg_parse_except_hook)r r)r rrrrrrrs zPreArgParseExceptHookTest._callrUcCsNt}d}ddi}|j|g|Ri||j|i||jjdddS)N)somerrrTr)rrRrr)r)rZmock_post_arg_parse_except_hookr4rrrrrr7#sz!PreArgParseExceptHookTest.test_itN) r8r9r:r;r<rrr=r7rrrrrs  rc@s~eZdZdZeddZddZddZdd Zd d Z d d Z ddZ ddZ ddZ dddZddZddZddZdS)PostArgParseExceptHookTestz;Tests for certbot._internal.log.post_arg_parse_except_hook.cOsddlm}||i|S)Nr)post_arg_parse_except_hook)r r)r rrrrrrr2s z PostArgParseExceptHookTest._callcCsd|_d|_dS)Nztest error messagezfoo.log) error_msgr$rrrrrH7sz PostArgParseExceptHookTest.setUpcCs2t}|j|dd\}}||j|||dSNFr") BaseException _test_common_assert_exception_loggederror_assert_logfile_outputrexc_type mock_loggeroutputrrrtest_base_exception;sz.PostArgParseExceptHookTest.test_base_exceptioncCs2t}|j|dd\}}||j|||dS)NTr) ValueErrorrrrrrrrrr[Asz%PostArgParseExceptHookTest.test_debugcCs*t}|j|ddd\}}||j|dS)NT)r"r#)rrrrrrrrr\Gsz%PostArgParseExceptHookTest.test_quietcCs6tj}|j|dd\}}||j||||dSr)rZ PluginErrorrrr"_assert_quiet_outputrrrrtest_custom_errorMsz,PostArgParseExceptHookTest.test_custom_errorcsLtttjfdd}|j|dd\}}||jtj|||dS)Ncstjj|dS)z6Wraps ACME errors so the constructor takes only a msg.)Zdetail)rrdZ with_code)rzZ acme_coderrget_acme_errorWszBPostArgParseExceptHookTest.test_acme_error..get_acme_errorFr) nextiterrZ ERROR_CODESrrr"rdr)rrrrrrrtest_acme_errorSs   z*PostArgParseExceptHookTest.test_acme_errorcCs4t}|j|dd\}}||j||||dSr)rrrr"rrrrrtest_other_error`sz+PostArgParseExceptHookTest.test_other_errorcCs&t}|j|dd\}}|jddS)NFrzExiting due to user request.)KeyboardInterruptrrr)rrrrtest_keyboardinterruptfsz1PostArgParseExceptHookTest.test_keyboardinterruptFc stfdd}z||jWntyt}td}||j_ tdhz|j ||||j dWn2t y}z t|WYd}~nd}~00|dWdn1s0YWdn1s0YYn0}||fS)z,Returns the mocked logger and stderr output.cs|ddS)zWrite error to mock_err.rN)write)rZ unused_kwargsZmock_errrr write_errosz:PostArgParseExceptHookTest._test_common..write_errzcertbot._internal.log.loggerz certbot._internal.log.sys.stderrr!NzSystemExit not raised.)rMrNrrr&exc_inforr=rrcrr$ SystemExitrstrregetvalue) rZ error_typer"r#rrrZexit_errrrrrrks$    $Lz'PostArgParseExceptHookTest._test_commoncCs$|jd}|d}|tjtjf}dS)Nrr)rorr1)rZlog_funcrZ call_kwargsZactual_exc_infoZexpected_exc_inforrrrs z3PostArgParseExceptHookTest._assert_exception_loggedcCsdSrr)rrrrrrsz1PostArgParseExceptHookTest._assert_logfile_outputcCsdSrr)rrrrrrrsz/PostArgParseExceptHookTest._assert_quiet_outputN)F)r8r9r:r;r<rrHrr[r\rrrrrrrrrrrrr0s    rc@s4eZdZdZeddZddZddZdd Zd S) ExitWithAdviceTestz1Tests for certbot._internal.log.exit_with_advice.cOsddlm}||i|S)Nr)exit_with_advice)r r)r rrrrrrrs zExitWithAdviceTest._callcCs,tj|jd}t|d||}dS)Nr`rB)r rQrVtempdirrKrTr)rrnerr_strrrr test_log_files z ExitWithAdviceTest.test_log_filecCs||j}dSr)rr)rrrrr test_log_dirs zExitWithAdviceTest.test_log_dirc OsPz|j|i|Wn,ty@}zt|WYd}~Sd}~00|ddS)NzSystemExit was not raised.)rrrre)rrrrgrrrrs zExitWithAdviceTest._test_commonN) r8r9r:r;r<rrrrrrrrrs  r__main__r)(r;rMrZlogging.handlersr&timetypingrZunittestrZpytestZacmerZcertbotrrZcertbot._internalrZcertbot.compatrr Z certbot.testsZ test_utilZTestCaser ZConfigTestCaser?r]rqr}rrrZTempDirTestCaserr8exitmainr%__file__rrrrs6         +E3 +h