JFIF$        dd7 

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

a

}|�giB�@s�dZddlZddlZddlZddlZddlZddlZddlmZddlZddl	m
Z
ddlmZddl
mZGdd�dej�ZGd	d
�d
ej�Zdd�Zd
d�Zdd�Zdd�Zdd�Zdd�Zdd�Zedkr�e�e�ejdd�eg��dS)zTest certbot.reverter.�N)�mock)�errors)�os)�utilcs�eZdZdZ�fdd�Zdd�Ze�d�dd��Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Ze�d�dd��Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Ze�d*�d+d,��Ze�d-�d.d/��Zd0d1�Z�ZS)2�ReverterCheckpointLocalTestzTest the Reverter Class.csPt���ddlm}t�tj�||j�|_t	�}|\|_
|_|_|_
|_dS�Nr)�Reverter��super�setUpZcertbot.reverterr�logging�disableZCRITICAL�config�reverter�setup_test_files�config1�config2�dir1�dir2�sets��selfr�tup��	__class__��I/usr/lib/python3.9/site-packages/certbot/_internal/tests/reverter_test.pyrs
z!ReverterCheckpointLocalTest.setUpcCs6t�|jj�t�|j�t�|j�t�tj�dS�N�	�shutil�rmtreerZwork_dirrrrr
ZNOTSET�rrrr�tearDownsz$ReverterCheckpointLocalTest.tearDownz*certbot.reverter.Reverter._read_and_appendcCs�td�|_z|j�|jdd�Wnty4Yn0|j�d�t�|jjj	�d}tj
�|jjj	|d�}t|d��}|�
�}Wd�n1s�0Yd|vs�J�dS)Nzcannot evenr�save1Zblah�
CHANGES_SINCE�rz
No changes)�OSError�side_effectr�add_to_checkpointr�finalize_checkpointr�listdirr�
backup_dir�path�join�open�read)rZ	mock_readr,Z	no_change�f�xrrr�test_no_change&s
&z*ReverterCheckpointLocalTest.test_no_changecCs�|j�|jdd�|j�|jdd�tj�|jj�s<J�t|jj�dksPJ�tj�	tj�
|jjd��rnJ�t|jj�d�|j
|j�ks�J�dS)Nrr#��save2Z
save1save2�	NEW_FILESz{0}
{1}
)r�add_to_temp_checkpointrrr,�isdirr�temp_checkpoint_dir�get_save_notes�isfiler-�
get_filepaths�formatrrr!rrr�!test_basic_add_to_temp_checkpoint4s���
�z=ReverterCheckpointLocalTest.test_basic_add_to_temp_checkpointc	Csxt�d��Z}td�|_t�tj��$|j�	|j
dd�Wd�n1sL0YWd�n1sj0YdS)N�certbot.reverter.shutil.copy2�bad copyrr#)r�patchr&r'�pytest�raisesr�
ReverterErrorrr(r�rZ
mock_copy2rrr�#test_add_to_checkpoint_copy_failureBs
z?ReverterCheckpointLocalTest.test_add_to_checkpoint_copy_failurecCs�tj�|jd�}|j�d|�t|d�|j�|jdd�|j�	|jdd�t
�tj
��$|j�|jdd�Wd	�n1s�0Y|j�|jd
d�t
�tj
�� |j�|hd�Wd	�n1s�0Yd	S)
z:Make sure that checkpoint errors are thrown appropriately.�config3.txtTzThis is a new file!�r#rr4Zsave3Nr3Zsave4zinvalid save)rr,r-rr�register_file_creation�update_filer(rr6rArBrrC�r�config3rrr�test_checkpoint_conflictHs
2z4ReverterCheckpointLocalTest.test_checkpoint_conflictcCs`|j�|jdd�t|jd�|j�|jdd�t|jd�|j��t|j�dks\J�dS)Nrr#zupdated-directivezsave2-updated dirz'new directive change that we won't keep�directive-dir1)rr6rrIr�revert_temporary_config�read_inr!rrr�#test_multiple_saves_and_temp_revert[s
z?ReverterCheckpointLocalTest.test_multiple_saves_and_temp_revertcCs�tj�|jd�}t|d�tj�|jd�}t|d�|j�d|j�|j�d|j	�|j�d||�|j�
�tj�|j�r�J�tj�|j	�r�J�tj�|�r�J�tj�|�r�J�dS)NrFZConfig3�config4.txtZConfig4T)rr,r-rrIrrrHrr�recovery_routiner:�rrKZconfig4rrr�*test_multiple_registration_fail_and_revertds


zFReverterCheckpointLocalTest.test_multiple_registration_fail_and_revertcCs`|j�d|j�|j�d|j�|j�d|j�|j�d|j�t|jj�}t|�dks\J�dS)NTr3)rrHr�
get_new_filesrr8�len)r�filesrrr�$test_multiple_registration_same_filexsz@ReverterCheckpointLocalTest.test_multiple_registration_same_filec	Cs�t��}tjd|dd��Vtd�|_t�tj�� |j	�
d|j�Wd�n1sV0YWd�n1st0YdS)N�certbot.reverter.openT�Zcreate�bad open)r�	mock_openr@r&r'rArBrrCrrHr�rZm_openrrr�'test_register_file_creation_write_error�s

zCReverterCheckpointLocalTest.test_register_file_creation_write_errorcCs<t�tj��|j�d�Wd�n1s.0YdS)N�filepath)rArBrrCrrHr!rrr�test_bad_registration�sz1ReverterCheckpointLocalTest.test_bad_registrationcCs\ddgddgdgg}|D]}|j�d|�qt|jj�}t||�D]\}}||ksBJ�qBdS)N�a2dismod�sslZrewriteZ
cleanslateT)r�register_undo_command�get_undo_commandsrr8�zip)r�coms�comZact_comsZa_comrrr�test_register_undo_command�s�z6ReverterCheckpointLocalTest.test_register_undo_commandc	Cs�t��}tjd|dd��Vtd�|_t�tj�� |j	�
ddg�Wd�n1sV0YWd�n1st0YdS)NrYTrZr[Zcommand)rr\r@r&r'rArBrrCrrcr]rrr�test_bad_register_undo_command�s

z:ReverterCheckpointLocalTest.test_bad_register_undo_commandzcertbot.util.run_scriptcCsNdtjg|_dgddgg}|D]}|j�d|�q|j��|jdksJJ�dS)N�Zinvalid_commandrarbTrG)rZSubprocessErrorr'rrcrN�
call_count)rZmock_runrfrgrrr�test_run_undo_commands�s�
z2ReverterCheckpointLocalTest.test_run_undo_commandscCs`|j�|jdd�tjtjd�|j_t�	tj��|j�
�Wd�n1sR0YdS)Nr�	perm save�r')rr(rr�	MagicMockrrC�_recover_checkpointrArBrRr!rrr�)test_recovery_routine_in_progress_failure�s�
zEReverterCheckpointLocalTest.test_recovery_routine_in_progress_failurecCshtjt�d�d�}||j_|j�|jdd�t�	tj��|j�
�Wd�n1sZ0YdS)N�ernr�config1 save)rrorrCrrpr6rrArBrN�rZmock_recoverrrr�,test_recover_checkpoint_revert_temp_failures�s�zHReverterCheckpointLocalTest.test_recover_checkpoint_revert_temp_failurescCsvtjt�d�d�}||j_|j�|jdd�|j�d�t	�
tj��|j�d�Wd�n1sh0YdS)Nrrrnrrs�Titler3)rrorrCrrpr(rr)rArB�rollback_checkpointsrtrrr�(test_recover_checkpoint_rollback_failure�s�zDReverterCheckpointLocalTest.test_recover_checkpoint_rollback_failurec	Cs�|j�|jdd�t�d��P}td�|_t�t	j
��|j��Wd�n1sV0YWd�n1st0YdS)Nrr#r>r?�rr6rrr@r&r'rArBrrCrNrDrrr�$test_recover_checkpoint_copy_failure�s

z@ReverterCheckpointLocalTest.test_recover_checkpoint_copy_failurec	Cs�|j�|jdd�t�d��P}td�|_t�t	j
��|j��Wd�n1sV0YWd�n1st0YdS)Nrz	temp savezcertbot.reverter.shutil.rmtreezCannot remove treery)rZmock_rmtreerrr�"test_recover_checkpoint_rm_failure�s

z>ReverterCheckpointLocalTest.test_recover_checkpoint_rm_failurezcertbot.reverter.logger.warningcCs6|j�dtj�|jd��|j��|jdks2J�dS)NTzmissing_file.txtr3)rrHrr,r-rrNrk)rZ	mock_warnrrr�)test_recover_checkpoint_missing_new_files�s
�
zEReverterCheckpointLocalTest.test_recover_checkpoint_missing_new_fileszcertbot.reverter.os.removecCsT|j�d|j�td�|_t�tj��|j�	�Wd�n1sF0YdS)NTzCan't remove)
rrHrr&r'rArBrrCrN)rZmock_removerrr�&test_recover_checkpoint_remove_failure�s
zBReverterCheckpointLocalTest.test_recover_checkpoint_remove_failurecCstj�|jd�}|j�d|�t|d�|j�|jdd�t|j	d�|j�|jdd�t|j
d	�|j�|jdd
�t|j	d�tj�|jd�}|j�d
|�t|d�|j�
�tj�|�r�J�tj�|�r�J�t|j	�dks�J�t|j
�dks�J�dS)NrFFzThis is a new perm file!rz
perm save1zupdated perm config1r3z
perm save2zupdated perm config2z
temp save1zsecond update now temp config1rQTzNew temporary file!rM�directive-dir2)rr,r-rrrHrIr(rrrr6rrRr:rOrSrrr�#test_recovery_routine_temp_and_perm�s"


z?ReverterCheckpointLocalTest.test_recovery_routine_temp_and_perm)�__name__�
__module__�__qualname__�__doc__rr"rr@r2r=rErLrPrTrXr^r`rhrirlrqrurxrzr{r|r}r�
__classcell__rrrrrs6

	


	


rcs�eZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Ze	�
d�d
d��Ze	�
d�dd��Ze	�
d�dd��Z
dd�Zdd�Z�ZS)�TestFullCheckpointsReverterz5Tests functions having to deal with full checkpoints.csPt���ddlm}t�tj�||j�|_t	�}|\|_
|_|_|_
|_dSrr	rrrrrs
z!TestFullCheckpointsReverter.setUpcCs6t�|jj�t�|j�t�|j�t�tj�dSrrr!rrrr"!sz$TestFullCheckpointsReverter.tearDowncCs�t�tj��|j�d�Wd�n1s.0Yt�tj��|j�d�Wd�n1sf0Yt�tj��|j�d�Wd�n1s�0YdS)Nz-1i���Zone)rArBrrCrrwr!rrr�test_rollback_improper_inputs(s**z9TestFullCheckpointsReverter.test_rollback_improper_inputscCs|��}tt�|jj��dks"J�|j�d�t|j	�dks@J�t|j
�dksRJ�t|�dksbJ�|j�d�t|j	�dks�J�t|j
�dks�J�tj�|�r�J�t�|jj�}t|�dks�J�dt
tj�|jj|d��vs�J�|j�d�t|j	�d	k�sJ�dS)
N�r3�update config1�update config2�Final form config3r~�First CheckpointrrM)�_setup_three_checkpointsrVrr*rr+rrwrOrrr,r:r9r-)rrKZall_dirsrrr�.test_rollback_finalize_checkpoint_valid_inputs0s"�
zJTestFullCheckpointsReverter.test_rollback_finalize_checkpoint_valid_inputscCs|j�d�dS)NzNo checkpoint...)rr)r!rrr�'test_finalize_checkpoint_no_in_progressMszCTestFullCheckpointsReverter.test_finalize_checkpoint_no_in_progresszcertbot.reverter.shutil.movecCsZ|j�|jdd�td�|_t�tj��|j�	d�Wd�n1sL0YdS)Nrrmzcannot moverv�
rr(rr&r'rArBrrCr))rZ	mock_moverrr�%test_finalize_checkpoint_cannot_titleQs
zATestFullCheckpointsReverter.test_finalize_checkpoint_cannot_titlez#certbot.reverter.filesystem.replacecCsV|j�|jdd�t|_t�tj��|j�	d�Wd�n1sH0YdS)Nrrmrvr�)rZmock_replacerrr�,test_finalize_checkpoint_no_rename_directoryYszHTestFullCheckpointsReverter.test_finalize_checkpoint_no_rename_directoryzcertbot.reverter.loggercCsL|j�d�|jjdksJ�|��d|j_|j�d�|jjdksHJ�dS)Nr3r�)rrwZwarningrkr�)rZmock_loggerrrr�test_rollback_too_manybsz2TestFullCheckpointsReverter.test_rollback_too_manycCsL|��}|j�d�t|j�dks&J�t|j�dks8J�tj�|�rHJ�dS)Nr�rMr~)	r�rrwrOrrrr,r:rJrrr�test_multi_rollbackns
z/TestFullCheckpointsReverter.test_multi_rollbackcCs�|j�|jdd�|j�d�t|jd�tj�|j	d�}|j�
d|�t|d�|j�|jdd	�|j�d
�t|jd�t|d�|j�|jd
d�|j�d�t|jd�t|jd�t|d�|S)z$Generate some finalized checkpoints.rz
first saver�r�rFFzdirective-config3r3zsecond savezSecond Checkpointr�zupdate config3rGz
third savezThird Checkpoint - Save bothzFinal form config1zFinal form config2r�)rr(rr)rIrrr,r-rrHrrJrrrr�vs 


z4TestFullCheckpointsReverter._setup_three_checkpoints)r�r�r�r�rr"r�r�r�rr@r�r�r�r�r�r�rrrrr�s


r�cCs�t�d�}t�d�}tj�|d�}tj�|d�}t|d��}|�d�Wd�n1sZ0Yt|d��}|�d�Wd�n1s�0Y|h|h||hg}|||||fS)z!Setup sample configuration files.rrz
config.txt�wrMNr~)�tempfileZmkdtemprr,r-r.�write)rrrr�file_fdrrrrr�s

((�rcCsttj�|d��S)zRead save notesr$�rOrr,r-��direrrrr9�sr9cCsttj�|d��S)z
Get FilepathsZ	FILEPATHSr�r�rrrr;�sr;cCsttj�|d����S)�Get new files.r5)rOrr,r-�
splitlinesr�rrrrU�srUcCsDttj�|d���}tt�|��Wd�S1s60YdS)r�ZCOMMANDSN)r.rr,r-�list�csv�reader)r�Zcsvfilerrrrd�srdcCs6t|d��}|��Wd�S1s(0YdS)zRead in a file, return the strr%N)r.r/)r,r�rrrrO�srOcCs8t|d��}|�|�Wd�n1s*0YdS)zUpdate a file with a new value.r�N)r.r�)�filename�stringr�rrrrI�srI�__main__r3)r�r�rr�sysr�ZunittestrrAZcertbotrZcertbot.compatrZ
certbot.testsrZ	test_utilZConfigTestCaserr�rr9r;rUrdrOrIr��exit�main�argv�__file__rrrr�<module>s2
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