JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/certbot/_internal/tests/__pycache__/hook_test.cpython-39.opt-1.pyc

a

}|�g�E�@sjdZddlZddlZddlmZddlmZddlZddlmZddlm	Z	ddl
mZddl
mZddl
m	Zdd	lmZeed
�dd�ZGd
d�dej�ZGdd�dej�ZGdd�dej�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd �d ej�Zd!d"�Z e!d#k�rfe�"e�#ej$d$d�e%g��dS)%z"Tests for certbot._internal.hooks.�N)�python_version_tuple)�mock)�errors)�util)�
filesystem)�os)�List)�major�minorcCs@tt�d�}tt�d�}||kr(dS||kr4dS||kSdS)Nr�TF)�intr)r	r
ZpymajorZpyminor�r
�E/usr/lib/python3.9/site-packages/certbot/_internal/tests/hook_test.py�pyver_ltsrc@s.eZdZdZedd��Ze�d�dd��ZdS)�ValidateHooksTestz1Tests for certbot._internal.hooks.validate_hooks.cOsddlm}||i|��S)Nr)�validate_hooks)�certbot._internal.hooksr)�cls�args�kwargsrr
r
r�_callszValidateHooksTest._callz%certbot._internal.hooks.validate_hookcCs&t��}|�|�dd�|jD�}dS)NcSsg|]}|dd�qS)rrr
)�.0�callr
r
r�
<listcomp>)�z-ValidateHooksTest.test_it.<locals>.<listcomp>)rZ	MagicMockr�call_args_list)�selfZmock_validate_hook�config�typesr
r
r�test_it$s
zValidateHooksTest.test_itN)	�__name__�
__module__�__qualname__�__doc__�classmethodrr�patchrr
r
r
rrs

rc@sHeZdZdZedd��Zdd�Ze�d�dd��Z	e�d	�d
d��Z
dS)
�ValidateHookTestz0Tests for certbot._internal.hooks.validate_hook.cOsddlm}||i|��S)Nr)�
validate_hook)rr')rrrr'r
r
rr2szValidateHookTest._callc
Cs�t�d��vtjddd��Ht�tj��|�dd�Wd�n1sJ0YWd�n1sh0YWd�n1s�0YdS)N�.certbot._internal.hooks.plug_util.path_surgeryz0certbot._internal.hooks.filesystem.is_executableF)�return_valueZdummy�foo)rr%�pytest�raisesr�HookCommandNotFoundr�rr
r
r�test_hook_not_executable7sz)ValidateHookTest.test_hook_not_executablez'certbot._internal.hooks.util.exe_existsc	Csld|_t�d��H}t�tj��|�dd�Wd�n1s@0YWd�n1s^0YdS)NFr(r*�bar)r)rr%r+r,rr-r)rZmock_exe_existsZmock_psr
r
r�test_not_foundAs
HzValidateHookTest.test_not_foundzcertbot._internal.hooks._progcCs|�dd�dS�Nr*)r)rZ	mock_progr
r
r�
test_unsetIszValidateHookTest.test_unsetN)r r!r"r#r$rr/rr%r1r3r
r
r
rr&/s


r&c@s(eZdZdZedd��Zedd��ZdS)�HookTestz!Common base class for hook tests.cOst�dS)z7Calls the method being tested with the given arguments.N)�NotImplementedError)rrrr
r
rrRszHookTest._callcOsDt�d��&}d|_|j|i|��Wd�n1s60Y|S)z�Calls self._call after mocking out certbot.compat.misc.execute_command_status.

        The mock execute object is returned rather than the return value
        of self._call.

        �*certbot.compat.misc.execute_command_status�r�r8N)rr%r)r)rrr�mock_executer
r
r�_call_with_mock_executeWs.z HookTest._call_with_mock_executeN)r r!r"r#r$rr:r
r
r
rr4Os

r4cs�eZdZdZedd��Z�fdd�Z�fdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Z�ZS)�PreHookTestz+Tests for certbot._internal.hooks.pre_hook.cOsddlm}||i|��S)Nr)�pre_hook)rr<)rrrr<r
r
rrhszPreHookTest._callcsJt���d|j_t�|jj�tj�	|jjd�|_
t|j
�|��dS�Nr*r0)
�super�setUprr<r�makedirsZrenewal_pre_hooks_dirr�path�join�dir_hook�create_hook�_reset_pre_hook_alreadyr.��	__class__r
rr?ms

zPreHookTest.setUpcs|��t���dS�N)rEr>�tearDownr.rFr
rrIxszPreHookTest.tearDowncCsddlm}|��dS)Nr)�executed_pre_hooks)rrJ�clear)rrJr
r
rrE}sz#PreHookTest._reset_pre_hook_alreadycCsd|j_|��dS)N�certonly�r�verb�_test_nonrenew_commonr.r
r
r�
test_certonly�szPreHookTest.test_certonlycCsd|j_|��dS)N�runrMr.r
r
r�test_run�szPreHookTest.test_runcCs.|�|j�}|jd|jjtjd�|��dS)N�pre-hook��env)r:r�assert_called_once_withr<r�ANY�_test_no_executions_common�rr9r
r
rrO�sz!PreHookTest._test_nonrenew_commoncCsVd|j_d|j_t�|j�t�d��}|�|j�}Wd�n1sH0YdS)N�renew�certbot._internal.hooks.logger)	rr<rNr�removerCrr%r:�rZmock_loggerr9r
r
r�
test_no_hooks�s*zPreHookTest.test_no_hookscCs6d|j_|�|j�}|jd|jjtjd�|��dS)NFrSrT)r�directory_hooksr:rVr<rrWrXrYr
r
r�test_renew_disabled_dir_hooks�sz)PreHookTest.test_renew_disabled_dir_hookscCsJd|j_|�|j�}|jd|jtjd�|jd|jjtjd�|�	�dS�NrZrSrT)
rrNr:�assert_any_callrCrrW�assert_called_withr<rXrYr
r
r�test_renew_no_overlap�s
z!PreHookTest.test_renew_no_overlapcCs>|j|j_d|j_|�|j�}|jd|jtjd�|��dSra)	rCrr<rNr:rVrrWrXrYr
r
r�test_renew_with_overlap�s

z#PreHookTest.test_renew_with_overlapcCs:t�d��}|�|j�}Wd�n1s,0YdS)Nr[)rr%r:rr]r
r
rrX�s*z&PreHookTest._test_no_executions_common)r r!r"r#r$rr?rIrErPrRrOr^r`rdrerX�
__classcell__r
r
rFrr;es

r;cs�eZdZdZedd��Z�fdd�Z�fdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Z�ZS) �PostHookTestz,Tests for certbot._internal.hooks.post_hook.cOsddlm}||i|��S)Nr)�	post_hook)rrh)rrrrhr
r
rr�szPostHookTest._callcsJt���d|j_t�|jj�tj�	|jjd�|_
t|j
�|��dS)Nr0r*)
r>r?rrhrr@Zrenewal_post_hooks_dirrrArBrCrD�_reset_post_hook_eventuallyr.rFr
rr?�s

zPostHookTest.setUpcs|��t���dSrH)rir>rIr.rFr
rrI�szPostHookTest.tearDowncCsddlm}|dd�=dS�Nr)�
post_hooks�rrk�rrkr
r
rri�sz(PostHookTest._reset_post_hook_eventuallycCs:dD]0}||j_|�|jg�}|jd|jjtjd�qdS)N�rLrQ�	post-hookrT)rrNr:rVrhrrW)rrNr9r
r
r�test_certonly_and_run_with_hook�s
z,PostHookTest.test_certonly_and_run_with_hookcCsd|j_dD]}||j_qdS)Nrn)rrhrN)rrNr
r
r�#test_cert_only_and_run_without_hook�sz0PostHookTest.test_cert_only_and_run_without_hookcCsd|j_|�|jdg�j}dS)NrL�success.org)rrNr:Z	call_args)rrr
r
r�test_renew_env�szPostHookTest.test_renew_envcCsd|j_|�|jjg�dS)NF)rr_�_test_renew_commonrhr.r
r
rr`�sz*PostHookTest.test_renew_disabled_dir_hookscCsd|j_|�|jg�dSrH)rrhrtrCr.r
r
r�test_renew_no_config_hook�sz&PostHookTest.test_renew_no_config_hookcCs t�|j�|�|jjg�dSrH)rr\rCrtrrhr.r
r
r�test_renew_no_dir_hook�sz#PostHookTest.test_renew_no_dir_hookcCs"d|j_t�|j�|�g�dSrH)rrhrr\rCrtr.r
r
r�test_renew_no_hooks�sz PostHookTest.test_renew_no_hookscCs<|j|jjg}|�|�d|j_|�|jj�|�|�dS)N�baz)rCrrhrt�append)r�expectedr
r
rrd�s

z"PostHookTest.test_renew_no_overlapcCs|j|j_|�|jg�dSrH)rCrrhrtr.r
r
rre�s
z$PostHookTest.test_renew_with_overlapcCs(d|j_td�D]}|�|jg�qdS)NrZ�)rrN�ranger)rrz�_r
r
rrt�szPostHookTest._test_renew_commoncCsddlm}|Srjrlrmr
r
r�_get_eventuallyszPostHookTest._get_eventually)r r!r"r#r$rr?rIrirprqrsr`rurvrwrdrertr~rfr
r
rFrrg�s"
rgcsTeZdZdZedd��Zdd�Z�fdd�Zdd	�Zd
d�Z	dd
�Z
dd�Z�ZS)�RunSavedPostHooksTestz7Tests for certbot._internal.hooks.run_saved_post_hooks.cOsFddlm}d|vr|dn|d}d|vr4|dn|d}|||�S)Nr)�run_saved_post_hooks�renewed_domains�failed_domainsr)rr�)rrrr�r�r�r
r
rrszRunSavedPostHooksTest._callcOsHd}tj||jd�� |j|i|��Wd�S1s:0YdS)z�Call run_saved_post_hooks but mock out execute and eventually

        certbot._internal.hooks.post_hooks is replaced with
        self.eventually. The mock execute object is returned rather than
        the return value of run_saved_post_hooks.

        z"certbot._internal.hooks.post_hooks)�newN)rr%�
eventuallyr:)rrrZeventually_pathr
r
r�&_call_with_mock_execute_and_eventuallysz<RunSavedPostHooksTest._call_with_mock_execute_and_eventuallycst���g|_dSrH)r>r?r�r.rFr
rr?"s
zRunSavedPostHooksTest.setUpcCsdSrHr
r.r
r
r�
test_empty&sz RunSavedPostHooksTest.test_emptycCs6gd�|_|�gg�}|j}t||j�D]\}}q(dS)N�r*r0rxZqux)r�r�r�zip)rr9ZcallsZactual_callZexpected_argr
r
r�
test_multiple)s

z#RunSavedPostHooksTest.test_multiplecCs0dg|_|�gg�}|jd|jdtjd�dS)Nr*rorrT)r�r�rVrrWrYr
r
r�test_single1sz!RunSavedPostHooksTest.test_singlecCsdg|_|�dgdg�}dS)Nr*rrz
failed.org)r�r�rYr
r
r�test_env6szRunSavedPostHooksTest.test_env)
r r!r"r#r$rr�r?r�r�r�r�rfr
r
rFrrs
rcs4eZdZdZdd�Z�fdd�Z�fdd�Z�ZS)�RenewalHookTestz1Common base class for testing deploy/renew hooks.cs�d|vr|dn|d�d|vr(|dn|d���fdd�}t�d��&}||_|j|i|��Wd�n1st0Y|S)	aCalls self._call after mocking out certbot.compat.misc.execute_command_status.

        The mock execute object is returned rather than the return value
        of self._call. The mock execute object asserts that environment
        variables were properly set.

        �domainsr�lineager{csdS)z�Assert environment variables are properly set.

            :returns: two strings imitating no output from the hook
            :rtype: `tuple` of `str`

            r7r
)Zunused_argsZ
unused_kwargs�r�r�r
r�execute_side_effectMs	zDRenewalHookTest._call_with_mock_execute.<locals>.execute_side_effectr6N)rr%Zside_effectr)rrrr�r9r
r�rr:Bs.z'RenewalHookTest._call_with_mock_executecst���dd�dD�|_dS)NcSsh|]}|tjvr|�qSr
)r�environ)r�varr
r
r�	<setcomp>_s
�z(RenewalHookTest.setUp.<locals>.<setcomp>)ZRENEWED_DOMAINSZRENEWED_LINEAGE)r>r?�
vars_to_clearr.rFr
rr?]s
�zRenewalHookTest.setUpcs(|jD]}tj�|d�qt���dSrH)r�rr��popr>rI)rr�rFr
rrIds
zRenewalHookTest.tearDown)r r!r"r#r:r?rIrfr
r
rFrr�=sr�c@sHeZdZdZedd��Ze�d�dd��Ze�d�dd��Z	d	d
�Z
dS)�DeployHookTestz.Tests for certbot._internal.hooks.deploy_hook.cOsddlm}||i|��S)Nr)�deploy_hook)rr�)rrrr�r
r
rrmszDeployHookTest._callr[cCs&d|j_d|j_|�|jdgd�}dS)Nr*T�example.org�/foo/bar)rr��dry_runr:r]r
r
r�test_dry_runrs
�zDeployHookTest.test_dry_runcCsd|j_|�|jdgd�}dS)Nr�r�)rr�r:r]r
r
r�test_no_hook{s

�zDeployHookTest.test_no_hookcCs>ddg}d}d|j_|�|j||�}|jd|jjtjd�dS)Nr��example.netr�r*�deploy-hookrT)rr�r:rVrrW)rr�r�r9r
r
r�test_success�s�zDeployHookTest.test_successN)r r!r"r#r$rrr%r�r�r�r
r
r
rr�js


r�cs^eZdZdZedd��Z�fdd�Zdd�Ze�	d�d	d
��Z
dd�Zd
d�Zdd�Z
�ZS)�
RenewHookTestz,Tests for certbot._internal.hooks.renew_hookcOsddlm}||i|��S)Nr)�
renew_hook)rr�)rrrr�r
r
rr�szRenewHookTest._callcsBt���d|j_t�|jj�tj�	|jjd�|_
t|j
�dSr=)r>r?rr�rr@Zrenewal_deploy_hooks_dirrrArBrCrDr.rFr
rr?�s
�zRenewHookTest.setUpcCs4d|j_|�|jdgd�}|jd|jjtjd�dS)NFr�r�r�rT)rr_r:rVr�rrWrYr
r
r�test_disabled_dir_hooks�s

�z%RenewHookTest.test_disabled_dir_hooksr[cCsd|j_|�|jdgd�}dS)NTr�r�)rr�r:r]r
r
rr��s

�zRenewHookTest.test_dry_runcCsTd|j_t�|j�t�d��"}|�|jdgd�}Wd�n1sF0YdS)Nr[r�r�)rr�rr\rCrr%r:r]r
r
rr^�s
�"zRenewHookTest.test_no_hookscCs6|j|j_|�|jddgd�}|jd|jtjd�dS)Nr�r�r�r�rT)rCrr�r:rVrrWrYr
r
r�test_overlap�s

�zRenewHookTest.test_overlapcCs@|�|jdgd�}|jd|jtjd�|jd|jjtjd�dS)Nr�r�r�rT)r:rrbrCrrWrcr�rYr
r
r�test_no_overlap�s

�zRenewHookTest.test_no_overlap)r r!r"r#r$rr?r�rr%r�r^r�r�rfr
r
rFrr��s
	

r�c@s<eZdZdZedd��Zdd�Zdd�Zdd	�Zd
d�Z	dS)
�
ListHooksTestz-Tests for certbot._internal.hooks.list_hooks.cOsddlm}||i|��S)Nr)�
list_hooks)rr�)rrrr�r
r
rr�szListHooksTest._callcCsdSrHr
r.r
r
rr��szListHooksTest.test_emptycs,t�fdd�dD��}|D]}t|�qdS)Nc3s|]}tj��j|�VqdSrH)rrArB�tempdir)r�basenamer.r
r�	<genexpr>�s�z.ListHooksTest.test_multiple.<locals>.<genexpr>r�)�sortedrD)r�names�namer
r.rr��s�
zListHooksTest.test_multiplecCstj�|jd�}t|�dSr2�rrArBr�rD�rr�r
r
rr��szListHooksTest.test_singlecCstj�|jd�}t|�dS)Nzfoo~r�r�r
r
r�test_ignore_tilde�szListHooksTest.test_ignore_tildeN)
r r!r"r#r$rr�r�r�r�r
r
r
rr��s

r�cCstj|ddd���dS)zmCreates an executable file at the specified path.

    :param str file_path: path to create the file at

    �wi�)�mode�chmodN)rZ	safe_open�close)Z	file_pathr
r
rrD�srD�__main__r)&r#�sysZunittest�platformrrr+ZcertbotrrZcertbot.compatrrZ
certbot.testsZ	test_util�typingrrrZTestCaserZTempDirTestCaser&ZConfigTestCaser4r;rgrr�r�r�r�rDr �exit�main�argv�__file__r
r
r
r�<module>s2 NX2-"6"	

Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg