JFIF$        dd7 

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

a

}|�gm��@sBdZddlZddlZddlZddlZddlZddlmZddlZddlZddl	Z	ddl
Z
ddl
mZddl
mZddl
mZddlmZddlmZddlmmZe�d	�Zd
d�Zdd
�ZGdd�dej�ZGdd�dej�ZGdd�de�ZGdd�de�ZGdd�de�Z e!dk�r>e�"e�#ej$dd�e%g��dS)�$Tests for certbot._internal.storage.�N)�mock)�
configuration)�errors)�ALL_FOUR)�
filesystem)�os�cert_512.pemcCstD]}t�t||��qdS)z9Unlink all four items associated with this RenewableCert.N)rr�unlink�getattr)�	rc_object�kind�r�H/usr/lib/python3.9/site-packages/certbot/_internal/tests/storage_test.py�
unlink_allsrc	CsHtD]>}tt||�d��}|�|�Wd�q1s80YqdS)z9Put dummy data into all four files of this RenewableCert.�wN)r�openr�write)rr
�frrr�fill_with_sample_datasrc@sReZdZdZdd�Zdd�Ze�d�dd��Zd	d
�Z	dd�Z
d
d�Zdd�ZdS)�RelevantValuesTestz4Tests for certbot._internal.storage.relevant_values.cCs&ddd�|_t��|_t��|j_dS)N�example.orgZrsa)�server�key_type)�valuesrZ	MagicMock�mock_config�set_by_user��selfrrr�setUp)s
zRelevantValuesTest.setUpcCs ddlm}||jj_||j�S)Nr��relevant_values)�certbot._internal.storager!r�to_dict�return_value)rrr!rrr�_call.s
zRelevantValuesTest._callz8certbot._internal.plugins.disco.PluginsRegistry.find_allcCs:dg|_d|jj_d|jd<|�|j���|jks6J�dS)Nzcertbot-foo:barT�*zcertbot_foo:bar_baz)r$rrrr%�copy)rZ
mock_find_allrrr�test_namespace3s

z!RelevantValuesTest.test_namespacecCsTd|jj_d|jd<d|jd<d|jd<|j��}d|jd<|�|j�|ksPJ�dS)	NT�allow_subset_of_names�apache�
authenticatori9�rsa_key_sizeZthereZhello�rrr$rr'r%�r�expected_relevant_valuesrrr�test_option_set;s





z"RelevantValuesTest.test_option_setcCs6d|jj_|j��}d|jd<|�|j�|ks2J�dS)NFir,r-r.rrr�test_option_unsetFs


z$RelevantValuesTest.test_option_unsetcs|d��fdd�|j_|j��}d|j�<|�|j�|ks<J�d|j�<|�|j�|ksZJ�d|j�<|�|j�|ksxJ�dS)NZmanual_public_ip_logging_okcs|�krdSdS)NFTr)�v�Zdeprected_optionrr�<lambda>P�z9RelevantValuesTest.test_deprecated_item.<locals>.<lambda>TF)rrrr'r%r.rr3r�test_deprecated_itemNs



z'RelevantValuesTest.test_deprecated_itemcCsrddlm}ddlm}ddlm}ddlm}|j��}|�	|gd��}|j
ddd	d
d�}||�|ksnJ�dS)Nrr )�disco)�cli)�	constants)z--allow-subset-of-namesz--authenticatorr*rZecdsaTr*)rrr)r+)r"r!Zcertbot._internal.pluginsr7�certbot._internalr8r9ZPluginsRegistryZfind_allZprepare_and_parse_argsZCLI_DEFAULTS)rr!r7r8r9ZPLUGINS�	namespacer/rrr�test_with_real_parserZs
�z(RelevantValuesTest.test_with_real_parserN)
�__name__�
__module__�__qualname__�__doc__rr%r�patchr(r0r1r6r<rrrrr&s
rcs2eZdZdZ�fdd�Zd	dd�Zdd�Z�ZS)
�BaseRenewableCertTestz�Base class for setting up Renewable Cert tests.

    .. note:: It may be required to write out self.config for
    your test.  Check :class:`.cli_test.DuplicateCertTest` for an example.

    cs�ddlm}t���t�tj�|j	j
dd��tj�|j	j
dd�}t�|�t�tj�|j	j
d��t��}t
D]&}tj�|j	j
dd|d�}|||<qrttj�|j	j
ddd�d	��Wd�n1s�0Y||d<tj�|j	j
dd
�|_|��||_ttj�|j	j
dd�d��}|�d
�Wd�n1�s>0Yt��|_t�d��(}d|_|�|j|j	�|_Wd�n1�s�0YdS)Nr��storage�liver�archiveZrenewal�.pem�README�a�example.org.confzIGNORE.THISrzThis file should be ignored!z7certbot._internal.storage.RenewableCert._check_symlinksT)r:rD�superrr�makedirsr�path�join�config�
config_dir�	configobj�	ConfigObjrr�filenamer�config_file�defaultsrrAr$�
RenewableCert�test_rc)rrDZarchive_pathrTr
�	kind_pathZjunk�check��	__class__rrrws<

�
���*
zBaseRenewableCertTest.setUpNcCs�t|j|�}tj�|�r"t�|�t�tj�tjjtjjddd�	||��|�t
|d��,}|�|durp|�d�n|�Wd�n1s�0Y|dkr�t
�|d�dS)NrFrz
{0}{1}.pem�wb�ascii�privkey�)rrWrrM�lexistsr
�symlinkrN�pardir�formatrr�encoder�chmod)rr
�ver�value�linkrrrr�_write_out_kind�s
��:z%BaseRenewableCertTest._write_out_kindcCs&tD]}|�|d�|�|d�qdS)N��)rri�rr
rrr�_write_out_ex_kinds�sz)BaseRenewableCertTest._write_out_ex_kinds)N)r=r>r?r@rrirm�
__classcell__rrrZrrBos&
rBc@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
e�d�dd��Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zej�ejd'�e�d(�d)d*���Zd+d,�Zej�ejd'�e�d-�d.d/���Ze�d0�d1d2��Ze� d3�e�d0�d4d5���Z!e�d0�e�d6�d7d8���Z"e�d0�d9d:��Z#e�d0�d;d<��Z$e�d=�d>d?��Z%d@dA�Z&e�dB�dCdD��Z'dEdF�Z(dGdH�Z)dIdJ�Z*dKdL�Z+dMdN�Z,dOdP�Z-dQS)R�RenewableCertTestsrc	CsH|jjdksJ�tD].}t|j|�tj�|jjdd|d�ksJ�qdS)NrrErG)	rW�lineagenamerrrrMrNrOrPrlrrr�test_initialization�s
�z&RenewableCertTests.test_initializationcCs�ddlm}tj�|jjd�}t|d��}|�d�Wd�n1sH0Yt	�
tj��|�
||j�Wd�n1s�0Yt�|�t	�
tj��|�
d|j�Wd�n1s�0YdS)z�Test that the RenewableCert constructor will complain if
        the renewal configuration file doesn't end in ".conf"

        rrCzbroken.confrz[No closing bracket for you!NZfun)r:rDrrMrNrOrPrr�pytest�raisesr�CertStorageErrorrVr
)rrD�brokenrrrr�test_renewal_bad_config�s(,
z*RenewableCertTests.test_renewal_bad_configcCs�ddlm}t��}d|d<d|d<d|d<tj�|jjd	�|_	|�
�t�t
j�� |�|j	|j�Wd
�n1sz0Yd
S)z�Test that the RenewableCert constructor will complain if
        the renewal configuration file is missing a required file element.rrCzimaginary_cert.pem�certzimaginary_chain.pem�chainzimaginary_fullchain.pem�	fullchainzimaginary_config.confN)r:rDrQrRrrMrNrOrPrSrrrrsrrtrV)rrDrOrrr�test_renewal_incomplete_config�sz1RenewableCertTests.test_renewal_incomplete_configcCsrddlm}|��d|jvs"J�t�d��"}|�|jj|j�Wd�n1sT0Y|j	j
dusnJ�dS)NrrC�version� certbot._internal.storage.loggerF)r:rDrmrTrrArVrSrO�warning�called�rrD�mock_loggerrrr�test_no_renewal_version�s0z*RenewableCertTests.test_no_renewal_versioncCs�ddlm}|��d|jd<|j��t�d��"}|�|jj|j	�Wd�n1sZ0Y|j
jspJ�d|j
jddvs�J�dS)NrrCz99.99.99r{r|)
r:rDrmrTrrrArVrSrO�infor~�	call_argsrrrr�test_renewal_newer_version�s

0z-RenewableCertTests.test_renewal_newer_versioncCs�|jj}d|j_|j��rJ�||j_|j��r4J�t|j�|j��rLJ�t|j�tD]&}t�tj�	d|d�t
|j|��qZ|j��r�J�t|j�tD]*}t�tj�	|jj|d�t
|j|��q�|j��r�J�t|j�tD],}t�tj�	dddd|d�t
|j|��q�|j���r$J�t|j�|j���s>J�t�
|jj�t�tj�	ddddd�|jj�t|jjd��}|�d�Wd�n1�s�0Y|j���r�J�dS)	Nz
relative/path�..z17.pemrFrzfullchain_17.pemrzwrongly-named fullchain)rWrw�_consistentrrrrrarMrNrrOrPr
ryrr)rZoldcertr
rrrr�test_consistent�sL


�

�
�
�
��*z"RenewableCertTests.test_consistentc	Cs�|�dd�tj�|j�d�tj�|jjddd��s8J�t�	|jj
�t�tj�|jjddd�|jj
�t|jj
d��}|�
d�Wd�n1s�0Ytj�|j�d�tj�|jjddd��s�J�dS)Nrw�rFrz
cert17.pemr)rirrM�samefilerW�current_targetrNrOrPr
rwrarr)rrrrr�test_current_targets*����(��z&RenewableCertTests.test_current_targetc	Cs\dD]}|�d|�qt�|jj�t�tj�ddddd�|jj�|j�d�dksXJ�dS)N)���
�rwr�rFrz
cert10.pemr�)	rirr
rWrwrarMrN�current_version)rrfrrr�test_current_version's��z'RenewableCertTests.test_current_versioncCs|j�d�dusJ�dS)Nrw)rWr�rrrr�test_no_current_version/sz*RenewableCertTests.test_no_current_versioncCs�tdd�D]}tD]}|�||�qq
|j��dks8J�|j��dksJJ�|�dd�|j��dkshJ�|j��dkszJ�|�dd�|�dd�|j��dks�J�tD]}|�|d	�q�|j��d	ks�J�|j��d
ks�J�dS)Nr��r�r^��rwryr��)�rangerrirW�latest_common_versionZnext_free_version�rrfr
rrr�test_latest_and_next_versions2sz0RenewableCertTests.test_latest_and_next_versionsr|cCs�t��}|j_t��}|j_t��|j_d|_|j��dusDJ�|jdksRJ�|j	jdksbJ�d|_|j��duszJ�|jdks�J�|j	jdks�J�dS)NFTrr�)
rZMockrW�update_all_links_to�has_pending_deploymentr�r$Zensure_deployed�
call_countr})rr�Zmock_updateZmock_has_pendingrrr�test_ensure_deployedIsz'RenewableCertTests.test_ensure_deployedcCs�tdd�D].}tD]$}|�||�||j�|�ksJ�qq
|j�dd�|j�dd�d|j�d�ksjJ�d|j�d�ks~J�d|j�d�ks�J�d|j�d	�ks�J�|j�dd
�tj�t	�
|jj��dks�J�dS)Nr�r�rw�r^�r�rxryi�z
chain3000.pem)r�rrirWr��_update_link_torrM�basenamer�readlinkrxr�rrr�test_update_link_toZs�z&RenewableCertTests.test_update_link_tocCs.|�dd�dtj�|j�dd��ks*J�dS)Nrwrjz	cert8.pemr�)rirrMr�rWr{rrrr�test_versionms�zRenewableCertTests.test_versioncCs�tdd�D].}tD]$}|�||�||j�|�ksJ�qq
|j��dksLJ�tdd�D]@}|j�|�tD]}||j�|�ksjJ�qj|j��dksVJ�qVdS�Nr�r�r�)r�rrirWr�r�r�r�rrr� test_update_all_links_to_successusz3RenewableCertTests.test_update_all_links_to_successc	Cs�tjfdd�}|��t�d��L}||_t�t��|j	�
d�Wd�n1sT0YWd�n1sr0YtD]}|j	�|�dks�J�q�dS)NcSs.tj�|�}d|vr"|�d�r"t�||�dS)Nry�prev)rrMr��
startswith�
ValueError)rM�real_unlinkr�rrr�unlink_or_raise�szTRenewableCertTests.test_update_all_links_to_partial_failure.<locals>.unlink_or_raise�#certbot._internal.storage.os.unlinkrj�
rr
rmrrA�side_effectrrrsr�rWr�rr��rr��mock_unlinkr
rrr�(test_update_all_links_to_partial_failure�sHz;RenewableCertTests.test_update_all_links_to_partial_failurec	Cs�tjfdd�}|��t�d��L}||_t�t��|j	�
d�Wd�n1sT0YWd�n1sr0YtD]}|j	�|�dks�J�q�dS)NcSs dtj�|�vrt�||�dS)Nry)rrMr�r�)rMr�rrrr��szQRenewableCertTests.test_update_all_links_to_full_failure.<locals>.unlink_or_raiser�rjrkr�r�rrr�%test_update_all_links_to_full_failure�sHz8RenewableCertTests.test_update_all_links_to_full_failurecCs�tdd�D].}tD]$}|�||�||j�|�ksJ�qq
tdd�D]T}|j�|�tD]}||j�|�ksXJ�qX|dkr�|j��s�J�qD|j��rDJ�qDdSr�)r�rrirWr�r�r�r�rrr�test_has_pending_deployment�sz.RenewableCertTests.test_has_pending_deploymentcCsr|�ddt�d��|j��ddgks*J�t�|jj�t�	t
j��|j��Wd�n1sd0YdS)Nrwrjzcert-san_512.pem�example.comzwww.example.com)ri�	test_util�load_vectorrW�namesrr
rwrrrsrrtrrrr�
test_names�s�zRenewableCertTests.test_namesrz"certbot._internal.storage.datetimec	Cst�d�}|��|j�d�t|jjd��}|�|�Wd�n1sL0Y|j�d�t|jjd��}|�|�Wd�n1s�0Ytj	|_	d|_
i|jjd<dD]B\}}}tj�|t
j�}||jj_
||jjd	<|j��|ks�J�q�dS)
z<Test should_autorenew() on the basis of expiry time windows.r	rjr\NrkF�
renewalparams))�@*�Tz2 monthsT)r�z1 weekT)r�z4 daysF)r��2 daysF)�@�Iz7 yearsT)r�z11 years 2 monthsT)r�z8 hoursF)r�r�F)r�z40 daysF)r�z9 monthsF)���Tz	0 secondsT)r�z
10 secondsT)r�z
10 minutesT)r�z10 weeksT)r�z	10 monthsT)r�z10 yearsT)r�z	99 monthsTZrenew_before_expiry)r�r�rmrWr�rrwr�datetime�	timedeltar$rZ
fromtimestamp�pytz�UTCZnow�should_autorenew)	rZ
mock_datetime�mock_set_by_userZ	test_certrZcurrent_time�interval�resultZsometimerrr�test_time_interval_judgments�s 
((
z/RenewableCertTests.test_time_interval_judgmentscCsZi|jjd<|j��sJ�d|jjdd<|j��s8J�d|jjdd<|j��rVJ�dS)Nr��True�	autorenew�False)rWrZautorenewal_is_enabledrrrr�test_autorenewal_is_enabled�sz.RenewableCertTests.test_autorenewal_is_enabledz4certbot._internal.storage.RenewableCert.ocsp_revokedcCshd|_ddi|jjd<|j��r$J�d|jjdd<tD]}|�|d�q8d|_|j��s^J�d|_dS)	zTTest should_autorenew on the basis of reasons other than
        expiry time window.Fr�r�r�r�rjTN)r$rWrr�rri)rZ	mock_ocspr�r
rrr�test_should_autorenew�sz(RenewableCertTests.test_should_autorenewz)certbot._internal.storage.relevant_valuesc
Cs�dd�|_tdd�D]}tD]}|�||�qq|j�d�d|j�dddd|j�ksZJ�t|j�	dd��� }|�
�d	ks~J�Wd�n1s�0Yt|j�	d
d��� }|�
�dks�J�Wd�n1s�0Yt|j�	dd���"}|�
�d
k�sJ�Wd�n1�s0Ytj�
|j�	dd���r@J�tj�
|j�	dd���s\J�d|j�dddd|j�k�s|J�d|j�dddd|j�k�s�J�dD]H}tj�
|j�	d|���s�J�dtj�t�|j�	d|���k�s�J��q�tD]<}|j�|�ttdd��k�sJ�|j�|�dk�s�J��q�|j�d�d|j�dddd|j�k�sXJ�tD]<}|j�|�ttdd��k�s�J�|j�|�dk�s\J��q\t|j�	dd���"}|�
�dk�s�J�Wd�n1�s�0Ytj�|jj|jj�d}t|d��}|�d�Wd�n1�s&0Yd|j�ddd d!|j�k�sPJ�tj�|j�	dd���slJ�tj�
|j�	dd���r�J�tj�|��r�J�dS)"NcSs|��S�N�r#��xrrrr4r5z8RenewableCertTests.test_save_successor.<locals>.<lambda>r�r�r�snew cert�	new chainrwznew certrxz	new chainryznew certnew chainr^r�sagainsnewer chainr�shellosother chain)r�r�r�zprivkey3.pem�	slastsattemptr�Zlastattemptz	.conf.newrz)We previously crashed while writing me :(swith�askey)r�r�rrirWr��save_successorrOrr{�readrrM�islinkr�rr��available_versions�listr�rN�renewal_configs_dirrpr�exists)r�mock_rvrfr
r�iZtemp_config_filerrr�test_save_successorsl
�
..2��� �
�
2��*�z&RenewableCertTests.test_save_successorz:Group/everybody permissions are not maintained on Windows.cCsdd�|_tD]}|�|d�q|j�d�t�|j�dd�d�sFJ�t�|j�dd�d�|j�	dddd|j
�t�|j�dd	�d�s�J�|j�	d	dd
d|j
�t�|j�dd�d�s�J�t�|j�dd�d
�|j�	ddd
d|j
�t�|j�dd�d��sJ�dS)NcSs|��Sr�r�r�rrrr4Br5zMRenewableCertTests.test_save_successor_maintains_group_mode.<locals>.<lambda>r�r^r_i$�newcertr�r��new_privkeyr�i���)r�rrirWr�r�
check_moder{rer�rO)rr�r
rrr�(test_save_successor_maintains_group_mode=s
z;RenewableCertTests.test_save_successor_maintains_group_modezBcertbot._internal.storage.filesystem.copy_ownership_and_apply_modecCstdd�|_tD]}|�|d�q|j�d�|j�dddd|j�|jdusPJ�|j�dddd|j�|jspJ�dS)	NcSs|��Sr�r�r�rrrr4Xr5zFRenewableCertTests.test_save_successor_maintains_gid.<locals>.<lambda>r�r�r�Fr�r�)r�rrirWr�r�rOr~)rZmock_ownershipr�r
rrr�!test_save_successor_maintains_gidSs
z4RenewableCertTests.test_save_successor_maintains_gidcCs�dd�|_ddlm}|j�dddd|j�}|��s8J�tj�	tj�
|jjd	��sVJ�tj�	tj�
|jjd
��stJ�tj�	tj�
|jjdd
��s�J�t
�|jd�s�J�t|jd�� }|��d
ks�J�Wd�n1s�0Y|j�dddd|j�}tj�	tj�
|jjd���sJ�tj�	tj�
|jjdd
���s:J�t
�tj�
|jjd��|j�dddd|j�}tj�	tj�
|jjdd
���s�J�t
�|jd��s�J�t�tj�
|jjd�tj�
|jjd��t�tj��&|j�dddd|j�Wd�n1�s0Yt�tj�
|jjd�tj�
|jjd��t�tj��&|j�dddd|j�Wd�n1�sl0Y|j�dddd|j�}dS) z$Test for new_lineage() class method.cSs|��Sr�r�r�rrrr4fr5z5RenewableCertTests.test_new_lineage.<locals>.<lambda>rrC�the-lineage.comscertsprivkeyschain�the-lineage.com.confrHr_�rbs	certchainN�cert2�privkey2�chain2zthe-lineage.com-0001.confzthe-lineage.com-0001zthe-lineage.com-0002scert3sprivkey3schain3zthe-lineage.com-0003scert4sprivkey4schain4zother-example.comscert5sprivkey5schain5)r�r:rDrV�new_lineagerOr�rrMr�rNr��live_dirrr�Zkey_pathrryr��mkdir�default_archive_dir�shutil�copytreerrrsrrt)rr�rDr�rrrr�test_new_lineageash
��
�

�
.��
��
��
�$�
�$�z#RenewableCertTests.test_new_lineagecCs�dd�|_ddlm}t�|jj�t�|jj�t�|jj�|j	�
dddd|j�tj�
tj�|jjd	��stJ�tj�
tj�|jjdd
��s�J�tj�
tj�|jjdd��s�J�dS)
z9Test that directories can be created if they don't exist.cSs|��Sr�r�r�rrrr4�r5zFRenewableCertTests.test_new_lineage_nonexistent_dirs.<locals>.<lambda>rrCr�r�r�r�r�zprivkey.pemzprivkey1.pemN)r�r:rDr��rmtreerOr�r�r�rVr�rrMr�rN)rr�rDrrr�!test_new_lineage_nonexistent_dirs�s&
���
�

�z4RenewableCertTests.test_new_lineage_nonexistent_dirsz2certbot._internal.storage.util.unique_lineage_namecCsXddlm}d|_t�tj��&|j�dddd|j	�Wd�n1sJ0YdS)NrrC)Zthis_does_not_end_with_dot_confZyikesr�rwr^rx)
r:rDr$rrrsrrtrVr�rO)rZmock_ulnrDrrr�test_invalid_config_filename�s
�z/RenewableCertTests.test_invalid_config_filenamecCs\t�tj��|j�d�Wd�n1s.0Yt�tj��|j�d�Wd�n1sf0Yt�tj��|j�dd�Wd�n1s�0Yt�tj��|j�d�Wd�n1s�0Yt�tj��|j�	d�Wd�n1�s0Yt�tj��|j�
dd�Wd�n1�sN0YdS)NZelephantr�)rrrsrrtrWr�r�r{r�Znewest_available_versionr�rrrr�
test_bad_kind�s**,*,z RenewableCertTests.test_bad_kindz4certbot.ocsp.RevocationChecker.ocsp_revoked_by_pathscCsPtD]}|�|d�q|j��}|j�d|�}|j�d|�}d|_|j�|�sRJ�|jdd|kshJ�|jdd|ks~J�d|_|j�|�r�J�|jdd|ks�J�|jdd|ks�J�t|_	t
�d�� }|j�|�r�J�Wd�n1s�0Y|jdd|k�sJ�|jdd|k�s0J�|jdd}d|v�sLJ�dS)	Nr�rwrxTrFz(certbot._internal.storage.logger.warningz-An error occurred determining the OCSP status)rrirWr�r{r$Zocsp_revokedr�r�r�rrA)rZmock_checkerr
r{Zexpected_cert_pathZexpected_chain_path�loggerZlog_msgrrr�test_ocsp_revoked�s(
.z$RenewableCertTests.test_ocsp_revokedc
)Cs�ddlm}tjddddddtjd�}tjd	d
dddd
tjd�}t�d��t�dd
dddd��}|df||df||df||df|t�d�|df|t�d�|df|t�d�|df|t�d�|df|t�d�|df|t�d�|df|t�d�|df|t�d�|df|t�d�|df|t�d�|df|t�d �|df|t�d�|d!f|t�d�|d!f|t�d"�|d#f|t�d$�|d#f|t�d$�i}|��D](\}}|\}}	|�	||	�|k�s�J��q�dS)%NrrCi�rkr��;�)Ztzinfoi�r�r���z
Asia/Shanghaii�����)�z17 daysr�Z30�z7 weeks�1z1 monthz1 yearinimz1 year 1 dayioz1 year-1 dayilz4 yearsi�)
r:rDr�r�r��timezoneZfromutcr��itemsZadd_time_interval)
rrDZtime_1Ztime_2Ztime_3Zintended�
parametersZexceptedZ	base_timer�rrr�test_add_time_interval�s>
��
�z)RenewableCertTests.test_add_time_intervalcCsDi|jjd<|jjdusJ�|jjd}d|d<|jjdks@J�dS)Nr�zhttps://acme.example/dirr)rWrr�rZrprrr�test_servers
zRenewableCertTests.test_servercCs�i|jjd<|jjd}|jjdus(J�d|d<|jjdus@J�d|d<|jjdusXJ�d|d<|jjduspJ�d|d<|jjdus�J�dS)	Nr�Fz6https://acme-staging-v02.api.letsencrypt.org/directoryrTz)https://staging.someotherca.com/directoryz.https://acme-v01.api.letsencrypt.org/directoryz.https://acme-v02.api.letsencrypt.org/directory)rWrZis_test_certrrrr�test_is_test_certsz$RenewableCertTests.test_is_test_certcCs�ddlm}t�tj��"|�|jj|j	�Wd�n1s@0Yt
�d|jtd�t�tj��"|�|jj|j	�Wd�n1s�0YdS)NrrC�missing)
r:rDrrrsrrtrVrTrSrOrrar�rrDrrr�test_missing_cert s0z$RenewableCertTests.test_missing_certc
Cs>tj�|jjd�}tj�|jjd�}t|d��}|�d�Wd�n1sN0Yt�|d�i}t	D]}d||<qld}dd	i}d
dl
m}|�|||||�t|d��}|�
�}	Wd�n1s�0Yd
|	vs�J�d|	vs�J�d|	vs�J�d�tj�|	v�sJ�t�t�|�j�t�t�|�j�k�s:J�dS)Nzsample-filezsample-file.newrzM[renewalparams]
useful = value # A useful value
useless = value # Not needed
i�Z	somewhereZthe_archiveZusefulZ	new_valuerrC�rzuseful = new_valuezA useful valueZuselessz
version = {0})rrMrNrOrPrrrrerr:rDZwrite_renewal_configr�rc�certbot�__version__�stat�S_IMODE�lstat�st_mode)
rZtempZtemp2r�targetr��archive_dirZ
relevant_datarDZcontentrrr�test_write_renewal_config(s*(
&�z,RenewableCertTests.test_write_renewal_configcCs�tD]}|�|d�qt�d��"}|j��|��Wd�n1sH0YtD] }tdd�D]}|�||�qdqVt�d��J}|j��|jdt	t�ks�J�d|j
dddvs�J�Wd�n1s�0YdS)Nr�zcertbot.compat.os.unlinkr�r�z1.pemr)rrirrArW�truncateZassert_not_calledr�r��lenZcall_args_list)rr
r�r�rrr�
test_truncateIs
&
z RenewableCertTests.test_truncateN).r=r>r?r@rqrvrzr�r�r�r�r�r�r�rrAr�r�r�r�r�r�r�r��objectrZNamespaceConfigr�r�r�r�r�Zskip_on_windowsr�r�r�r�r�r�r�rrr	rrrrrrrro�sd
*
+	
9
5


*
!rocs`eZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Z�Z
S)�DeleteFilesTestz0Tests for certbot._internal.storage.delete_filesc	s�t���tD]H}tj�|jjdd|d�}t|d��Wd�q1sL0Yq|j	�
�tj�tj�|jjd��s�J�tj�tj�|jj
d��s�J�tj�tj�|jjdd��s�J�dS)NrErrGrIrJrF)rKrrrrMrNrOrPrrTrr�r�r�)rr
rXrZrrr\s"
� 
�
�

�zDeleteFilesTest.setUpcCsHddlm}t�d��|�|jd�Wd�n1s:0YdS)NrrCr|r)r:rDrrAZdelete_filesrOrrrrr%lszDeleteFilesTest._callcCsh|��tj�tj�|jjd��r&J�tj�tj�|jjd��rDJ�tj�tj�|jjdd��rdJ�dS)NrJrrF)	r%rrMr�rNrOr�r�rPrrrr�test_delete_all_filesqs�
�

�z%DeleteFilesTest.test_delete_all_filescCs�t|jjd��}|�d�Wd�n1s.0Yt�tj��|��Wd�n1sb0Yt	j
�t	j
�|j
jd��s�J�t	j
�t	j
�|j
jd��r�J�dS)NrIZasdfasfasdfasdfrrJ)rrTrSrrrrsrrtr%rrMr�rNrOr�r�)rrTrrr�test_bad_renewal_config{s(&�
�z'DeleteFilesTest.test_bad_renewal_configcCsxt�|jj�t�tj��|��Wd�n1s80Ytj	�
tj	�|jj
d��s`J�tj	�
|jj�rtJ�dS�Nr)r�removerTrSrrrsrrtr%rMr�rNrOr�rrrr�test_no_renewal_config�s&�
z&DeleteFilesTest.test_no_renewal_configcCsxt�tj�|jjdd��|��tj�|jj	�r6J�tj�tj�|jjd��rTJ�tj�tj�|jj
dd��rtJ�dS)Nrzcert.pemrF�rrrMrNrOr�r%r�rTrSrPrrrr�test_no_cert_file�s

��

�z!DeleteFilesTest.test_no_cert_filecCsxt�tj�|jjdd��|��tj�|jj	�r6J�tj�tj�|jjd��rTJ�tj�tj�|jj
dd��rtJ�dS)NrrHrFr!rrrr�test_no_readme_file�s

��

�z#DeleteFilesTest.test_no_readme_filecCs�ttj�|jjdd�d��Wd�n1s00Y|��tj�|jj	�rVJ�tj�tj�|jjd��stJ�tj�tj�|jj
dd��r�J�dS)NrZ
other_filerIrF)rrrMrNrOr�r%r�rTrSrPrrrr�test_livedir_not_empty�s
���

�z&DeleteFilesTest.test_livedir_not_emptycCsltj�|jjdd�}t�|�|��tj�|jj	�r:J�tj�tj�|jj
d��rXJ�tj�|�rhJ�dS)NrFr)rrMrNrOrP�rmdirr%r�rTrSr�)rrrrr�test_no_archive�s
�
zDeleteFilesTest.test_no_archive)r=r>r?r@rr%rrr r"r#r$r&rnrrrZrrZs


rcs8eZdZdZ�fdd�Zdd�Zdd�Zdd	�Z�ZS)
�CertPathForCertNameTestz:Test for certbot._internal.storage.cert_path_for_cert_namecsBt���|j��|��tj�|jj	ddd�|_
|j
|j_dS)NrErz
fullchain.pem)rKrrTrrmrrMrNrOrPryZ	cert_pathrrZrrr�s

�zCertPathForCertNameTest.setUpcCsddlm}|||�S)Nr)�cert_path_for_cert_name)r"r()rZ
cli_configZcertnamer(rrrr%�szCertPathForCertNameTest._callcCs|�|jd�|jksJ�dSr)r%rOryrrrr�test_simple_cert_name�sz-CertPathForCertNameTest.test_simple_cert_namecCs>t�tj��|�|jd�Wd�n1s00YdS)Nzfake-example.org)rrrsrrtr%rOrrrr�test_no_such_cert_name�sz.CertPathForCertNameTest.test_no_such_cert_name)	r=r>r?r@rr%r)r*rnrrrZrr'�s
r'�__main__r�)&r@r�r�r�sysZunittestrrQrrr�rrrr"rZcertbot.compatrrZcertbot.tests.utilZtests�utilr�Z	load_certZCERTrrZTestCaserZConfigTestCaserBrorr'r=�exit�main�argv�__file__rrrr�<module>s>
I@0\

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