JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/certbot/_internal/tests/__pycache__/hook_test.cpython-39.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_hookcCsRt��}|�|�dd�|jD�}hd�t|dd��ks>J�d|dksNJ�dS)NcSsg|]}|dd�qS)rrr
)�.0�callr
r
r�
<listcomp>)�z-ValidateHooksTest.test_it.<locals>.<listcomp>>ZdeployZpostZpre����renew)rZ	MagicMockr�call_args_list�set)�selfZmock_validate_hook�config�typesr
r
r�test_it$s

zValidateHooksTest.test_itN)	�__name__�
__module__�__qualname__�__doc__�classmethodrr�patchr"r
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	Csvd|_t�d��H}t�tj��|�dd�Wd�n1s@0YWd�n1s^0Y|jsrJ�dS)NFr+r-�bar)	r,rr(r.r/rr0r�called)rZmock_exe_existsZmock_psr
r
r�test_not_foundAs
HzValidateHookTest.test_not_foundzcertbot._internal.hooks._progcCs|�dd�|jdusJ�dS)Nr-F)rr4)rZ	mock_progr
r
r�
test_unsetIszValidateHookTest.test_unsetN)r#r$r%r&r'rr2rr(r5r6r
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�r;N)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
rr7Os

r7cs�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-r3)
�super�setUpr r?r�makedirsZrenewal_pre_hooks_dirr�path�join�dir_hook�create_hook�_reset_pre_hook_alreadyr1��	__class__r
rrBms

zPreHookTest.setUpcs|��t���dS�N)rHrA�tearDownr1rIr
rrLxszPreHookTest.tearDowncCsddlm}|��dS)Nr)�executed_pre_hooks)rrM�clear)rrMr
r
rrH}sz#PreHookTest._reset_pre_hook_alreadycCsd|j_|��dS)N�certonly�r �verb�_test_nonrenew_commonr1r
r
r�
test_certonly�szPreHookTest.test_certonlycCsd|j_|��dS)N�runrPr1r
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�rr<r
r
rrR�sz!PreHookTest._test_nonrenew_commoncCstd|j_d|j_t�|j�t�d��}|�|j�}Wd�n1sH0Y|j	dus`J�|j
j	duspJ�dS)Nr�certbot._internal.hooks.loggerF)r r?rQr�removerFrr(r=r4�info�rZmock_loggerr<r
r
r�
test_no_hooks�s*zPreHookTest.test_no_hookscCs6d|j_|�|j�}|jd|jjtjd�|��dS)NFrVrW)r �directory_hooksr=rYr?rrZr[r\r
r
r�test_renew_disabled_dir_hooks�sz)PreHookTest.test_renew_disabled_dir_hookscCsJd|j_|�|j�}|jd|jtjd�|jd|jjtjd�|�	�dS�NrrVrW)
r rQr=�assert_any_callrFrrZ�assert_called_withr?r[r\r
r
r�test_renew_no_overlap�s
z!PreHookTest.test_renew_no_overlapcCs>|j|j_d|j_|�|j�}|jd|jtjd�|��dSrd)	rFr r?rQr=rYrrZr[r\r
r
r�test_renew_with_overlap�s

z#PreHookTest.test_renew_with_overlapcCsTt�d��}|�|j�}Wd�n1s,0Y|jdusDJ�|jjsPJ�dS)Nr]F)rr(r=r r4r_r`r
r
rr[�s*z&PreHookTest._test_no_executions_common)r#r$r%r&r'rrBrLrHrSrUrRrarcrgrhr[�
__classcell__r
r
rIrr>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)rrk)rrrrkr
r
rr�szPostHookTest._callcsJt���d|j_t�|jj�tj�	|jjd�|_
t|j
�|��dS)Nr3r-)
rArBr rkrrCZrenewal_post_hooks_dirrrDrErFrG�_reset_post_hook_eventuallyr1rIr
rrB�s

zPostHookTest.setUpcs|��t���dSrK)rlrArLr1rIr
rrL�szPostHookTest.tearDowncCsddlm}|dd�=dS�Nr)�
post_hooks�rrn�rrnr
r
rrl�sz(PostHookTest._reset_post_hook_eventuallycCsFdD]<}||j_|�|jg�}|jd|jjtjd�|��rJ�qdS)N�rOrT�	post-hookrW)r rQr=rYrkrrZ�_get_eventually)rrQr<r
r
r�test_certonly_and_run_with_hook�s
z,PostHookTest.test_certonly_and_run_with_hookcCs>d|j_dD],}||j_|�|jg�jr,J�|��rJ�qdS)Nrq)r rkrQr=r4rs)rrQr
r
r�#test_cert_only_and_run_without_hook�s
z0PostHookTest.test_cert_only_and_run_without_hookcCs4d|j_|�|jdg�j}|jdddks0J�dS)NrO�success.orgrX�RENEWED_DOMAINS)r rQr=�	call_argsr)rrr
r
r�test_renew_env�szPostHookTest.test_renew_envcCsd|j_|�|jjg�dS)NF)r rb�_test_renew_commonrkr1r
r
rrc�sz*PostHookTest.test_renew_disabled_dir_hookscCsd|j_|�|jg�dSrK)r rkrzrFr1r
r
r�test_renew_no_config_hook�sz&PostHookTest.test_renew_no_config_hookcCs t�|j�|�|jjg�dSrK)rr^rFrzr rkr1r
r
r�test_renew_no_dir_hook�sz#PostHookTest.test_renew_no_dir_hookcCs"d|j_t�|j�|�g�dSrK)r rkrr^rFrzr1r
r
r�test_renew_no_hooks�sz PostHookTest.test_renew_no_hookscCs<|j|jjg}|�|�d|j_|�|jj�|�|�dS)N�baz)rFr rkrz�append)r�expectedr
r
rrg�s

z"PostHookTest.test_renew_no_overlapcCs|j|j_|�|jg�dSrK)rFr rkrzr1r
r
rrh�s
z$PostHookTest.test_renew_with_overlapcCs8d|j_td�D]"}|�|jg�|��|ksJ�qdS)Nr�)r rQ�rangerrs)rr��_r
r
rrz�szPostHookTest._test_renew_commoncCsddlm}|Srmrorpr
r
rrsszPostHookTest._get_eventually)r#r$r%r&r'rrBrLrlrtruryrcr{r|r}rgrhrzrsrir
r
rIrrj�s"
rjcsTeZdZdZedd��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|_dSrK)rArBr�r1rIr
rrB"s
zRunSavedPostHooksTest.setUpcCs|�gg�jrJ�dSrK)r�r4r1r
r
r�
test_empty&sz RunSavedPostHooksTest.test_emptycCsJgd�|_|�gg�}|j}t||j�D]\}}|dd|ks(J�q(dS)N�r-r3r~Zquxrr)r�r�r�zip)rr<ZcallsZactual_callZexpected_argr
r
r�
test_multiple)s

z#RunSavedPostHooksTest.test_multiplecCs0dg|_|�gg�}|jd|jdtjd�dS)Nr-rrrrW)r�r�rYrrZr\r
r
r�test_single1sz!RunSavedPostHooksTest.test_singlecCsLdg|_|�dgdg�}|jjdddks0J�|jjdddksHJ�dS)Nr-rvz
failed.orgrXrwZFAILED_DOMAINS)r�r�rxrr\r
r
r�test_env6szRunSavedPostHooksTest.test_env)
r#r$r%r&r'rr�rBr�r�r�r�rir
r
rIrr�s
r�cs4eZdZdZdd�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�cs.tjdd���ksJ�tjd�ks*J�dS)z�Assert environment variables are properly set.

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

            rw� �RENEWED_LINEAGEr:)r�environrE)Zunused_argsZ
unused_kwargs�r�r�r
r�execute_side_effectMszDRenewalHookTest._call_with_mock_execute.<locals>.execute_side_effectr9N)rr(Zside_effectr)rrrr�r<r
r�rr=Bs.z'RenewalHookTest._call_with_mock_executecst���dd�dD�|_dS)NcSsh|]}|tjvr|�qSr
)rr�)r�varr
r
r�	<setcomp>_s
�z(RenewalHookTest.setUp.<locals>.<setcomp>)rwr�)rArB�
vars_to_clearr1rIr
rrB]s
�zRenewalHookTest.setUpcs(|jD]}tj�|d�qt���dSrK)r�rr��poprArL)rr�rIr
rrLds
zRenewalHookTest.tearDown)r#r$r%r&r=rBrLrir
r
rIrr�=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�}|jdus0J�|jjs<J�dS)Nr-T�example.org�/foo/barF)r r��dry_runr=r4r_r`r
r
r�test_dry_runrs
�zDeployHookTest.test_dry_runcCs<d|j_|�|jdgd�}|jdus(J�|jjdus8J�dS)Nr�r�F)r r�r=r4r_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-hookrW)r r�r=rYrrZ)rr�r�r<r
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@)rArBr r�rrCZrenewal_deploy_hooks_dirrrDrErFrGr1rIr
rrB�s
�zRenewHookTest.setUpcCs4d|j_|�|jdgd�}|jd|jjtjd�dS)NFr�r�r�rW)r rbr=rYr�rrZr\r
r
r�test_disabled_dir_hooks�s

�z%RenewHookTest.test_disabled_dir_hooksr]cCs<d|j_|�|jdgd�}|jdus(J�|jjdks8J�dS)NTr�r�Fr�)r r�r=r4r_Z
call_countr`r
r
rr��s
�zRenewHookTest.test_dry_runcCsrd|j_t�|j�t�d��"}|�|jdgd�}Wd�n1sF0Y|jdus^J�|j	jdusnJ�dS)Nr]r�r�F)
r r�rr^rFrr(r=r4r_r`r
r
rra�s
�"zRenewHookTest.test_no_hookscCs6|j|j_|�|jddgd�}|jd|jtjd�dS)Nr�r�r�r�rW)rFr r�r=rYrrZr\r
r
r�test_overlap�s

�zRenewHookTest.test_overlapcCs@|�|jdgd�}|jd|jtjd�|jd|jjtjd�dS)Nr�r�r�rW)r=r rerFrrZrfr�r\r
r
r�test_no_overlap�s

�zRenewHookTest.test_no_overlap)r#r$r%r&r'rrBr�rr(r�rar�r�rir
r
rIrr��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._callcCs|�|j�rJ�dSrK)r�tempdirr1r
r
rr��szListHooksTest.test_emptycs@t�fdd�dD��}|D]}t|�q���j�|ks<J�dS)Nc3s|]}tj��j|�VqdSrK)rrDrEr�)r�basenamer1r
r�	<genexpr>�s�z.ListHooksTest.test_multiple.<locals>.<genexpr>r�)�sortedrGrr�)r�names�namer
r1rr��s�
zListHooksTest.test_multiplecCs2tj�|jd�}t|�|�|j�|gks.J�dS)Nr-�rrDrEr�rGr�rr�r
r
rr��szListHooksTest.test_singlecCs0tj�|jd�}t|�|�|j�gks,J�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
rrG�srG�__main__r)&r&�sysZunittest�platformrrr.ZcertbotrrZcertbot.compatrrZ
certbot.testsZ	test_util�typingrrrZTestCaserZTempDirTestCaser)ZConfigTestCaser7r>rjr�r�r�r�r�rGr#�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