KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.4.41 (Ubuntu)
System : Linux vmi1525618.contaboserver.net 5.4.0-105-generic #119-Ubuntu SMP Mon Mar 7 18:49:24 UTC 2022 x86_64
User : www-data ( 33)
PHP Version : 8.2.12
Disable Function : NONE
Directory :  /lib/python3/dist-packages/certbot/tests/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/certbot/tests/__pycache__/client_test.cpython-38.pyc
U

�]�~�@sdZddlZddlZddlZddlZddlZddlmZddlm	m
Zddlm
Z
ddlmZddlmZddlmZddlm
Z
e�d	�Ze�d
�ZGdd�dej�ZGd
d�dej�ZGdd�dej�ZGdd�de�ZGdd�de�ZGdd�dej�Zedk�re��dS)zTests for certbot.client.�N)�
interfaces)�account)�errors)�os)�
filesystem)�utilzrsa512_key.pemzcsr-san_512.pemc@sTeZdZdZdd�Zej�ej	ddi�dd��Z
ej�ej	i�dd	��Zd
d�ZdS)
�DetermineUserAgentTestz.Tests for certbot.client.determine_user_agent.cCsddlm}||j�S)Nr)�determine_user_agent)�certbot.clientr	�config)�selfr	�r
�;/usr/lib/python3/dist-packages/certbot/tests/client_test.py�_callszDetermineUserAgentTest._callZCERTBOT_DOCS�1cCs|jdd�dS)NT��expect_doc_values��_test�rr
r
r�test_docs_valuesz&DetermineUserAgentTest.test_docs_valuecCs|jdd�dS)NFrrrr
r
r�test_real_values!sz'DetermineUserAgentTest.test_real_valuescCsd|��}|r|j}|j}n|j}|j}|d|�|d|�|d|�|t��|�|t��|�dS)Nzcertbot(-auto)zOS_NAME OS_VERSIONzmajor.minor.patchlevel)rZassertInZassertNotInrZget_os_info_ua�platformZpython_version)rrZuaZdoc_value_checkZreal_value_checkr
r
rr%s


zDetermineUserAgentTest._testN)
�__name__�
__module__�__qualname__�__doc__r�mock�patch�dictr�environrrrr
r
r
rrs

rcs�eZdZdZ�fdd�Zdd�Zedd��Zedd	��Zed
d��Z	edd
��Z
dd�Zdd�Ze
�d�e
�d�dd���Ze
�d�dd��Zdd�Ze
�d�dd��Ze
�d�e
�d�dd���Zdd �Zd!d"�Zd#d$�Zd%d&�Z�ZS)'�RegisterTestz"Tests for certbot.client.register.cs4tt|���d|j_d|j_d|j_t��|_	dS)NiFzalias@example.com)
�superr!�setUpr�rsa_key_size�register_unsafely_without_email�emailrZAccountMemoryStorage�account_storager��	__class__r
rr#9s
zRegisterTest.setUpcCs$ddlm}t��}||j|j|�S)Nr)�register)r
r*r�	MagicMockrr')rr*Ztos_cbr
r
rr@szRegisterTest._callcCstjtjd�}d|j_|S)Nr(z{"a": 1})r�MockrZJSONDeSerializableZto_partial_json�return_value)�mr
r
r�_public_key_mockEszRegisterTest._public_key_mockcCsdS)Nz/acme/new-accountr
r
r
r
r�_new_acct_dir_mockKszRegisterTest._new_acct_dir_mockcCsdS�NTr
r
r
r
r�
_true_mockOszRegisterTest._true_mockcCsdS�NFr
r
r
r
r�_false_mockSszRegisterTest._false_mockcCs�t�d���}d|��_|j|�j_t�d��b}t�d��Ltj|�j_|�	tj|j
�|�|j�d|�j_|�
�|�
|j�W5QRXW5QRXW5QRXdS)N�6certbot.client.acme_client.BackwardsCompatibleClientV2z
http://tos�certbot.eff.handle_subscription�"certbot.account.report_new_account)rr�new_account_and_tosZterms_of_servicer4�external_account_required�side_effectr�Error�assertRaisesr�assertFalse�called�
assertTrue)r�mock_client�mock_handler
r
r�test_no_tosWs

zRegisterTest.test_no_toscCsZt�d��F}|j|�j_t�d��$t�d��|��W5QRXW5QRXW5QRXdS)Nr5r7r6)rrr4r9r:r�rr@r
r
r�test_ites
zRegisterTest.test_itr7z$certbot.client.display_ops.get_emailc
Cs�ddlm}d|j_d}|jjd|d�}t�d��\}|j|�j	_
t�d��:}|t��g|�j_
|�
�|�|jd	�|�|j�W5QRXW5QRXdS)
Nr��messagesF�3DNS problem: NXDOMAIN looking up MX for example.com�invalidContact��detailr5r6�)�acmerFr�noninteractive_moder;�	with_coderrr4r9r:r+r8r�assertEqual�
call_countr?r>)r�_rep�mock_get_emailrF�msg�mx_errr@rAr
r
r�test_email_retrylszRegisterTest.test_email_retryc
Cs�ddlm}d|j_d}|jjd|d�}t�d��J}|j|�j	_
t�d��(|t��g|�j_
|�
tj|j�W5QRXW5QRXdS)	NrrETrGrHrIr5r6)rLrFrrMr;rNrrr4r9r:r+r8r<rr)rrQrFrSrTr@r
r
r�!test_email_invalid_noninteractive{sz.RegisterTest.test_email_invalid_noninteractivecCsd|j_|�tj|j�dS�N)rr&r<rr;rrr
r
r�test_needs_email�szRegisterTest.test_needs_email�certbot.client.loggercCs�t�d��x}t�d��b}|j|�j_t�d��@d|j_d|j_d|j_|�	�|j
�tj�|�
|j�W5QRXW5QRXW5QRXdS)Nr6r5r7TF)rrr4r9r:rr&r%�dry_runr�info�assert_called_once_with�ANYr?r>)r�mock_loggerrAZ	mock_clntr
r
r�test_without_email�szRegisterTest.test_without_emailcCs�t�d��t}|j|�j_t�d��Rt�d��<d|j_|��|�|j	�|�|�j
jddj�W5QRXW5QRXW5QRXdS)zJTests dry-run for no staging account, expect account created with no emailr5r6r7TrN)
rrr4r9r:rrZrr=r>r8�	call_argsZcontact)rrQrRr@r
r
r�test_dry_run_no_staging_account�sz,RegisterTest.test_dry_run_no_staging_accountcCs�t�d��|}tj|jd�|�jj_|j|�j_	t�d��Dd}t�|��*}d|j
_d|j
_|�
�|�|j�W5QRXW5QRXW5QRXdS)Nr5�r:r6�8certbot.client.messages.ExternalAccountBinding.from_dataztest-kidz+J2OAqW4MHXsrHVa_PVg0Y-L_R4SYw0_aL1le6mfblbE)rrr,r0�client�	directory�__getitem__r4r9r:r�eab_kid�eab_hmac_keyrr?r>�rr@�targetZmock_eab_from_datar
r
r�test_with_eab_arguments�s�z$RegisterTest.test_with_eab_argumentscCszt�d��f}|j|�j_t�d��Dd}t�|��*}d|j_d|j_|��|�	|j
�W5QRXW5QRXW5QRXdS)Nr5r6rc)rrr4r9r:rrgrhrr=r>rir
r
r�test_without_eab_arguments�sz'RegisterTest.test_without_eab_argumentscCs�t�d��v}tj|jd�|�jjj_|j|�j	_
t�d��<t�d��&d|j_d|j_
|�tj|j�W5QRXW5QRXW5QRXdS)Nr5rbr6rc)rrr,r/rd�net�keyZ
public_keyr2r9r:rrgrhr<rr;rrCr
r
r�4test_external_account_required_without_eab_arguments�szARegisterTest.test_external_account_required_without_eab_argumentsc
Cs�ddlm}d}|j|ddd�}t�d��`}tj|jd�|�jj_	|j
|�j_t�d	��(}|t�
�g|�j_|�|j|j�W5QRXW5QRX|�|j�dS)
NrrEZTestZ	malformed�title)rJ�typrpr5rbr6)rLrFr;rrr,r0rdrerfr4r9r:r+r8r<rr=r>)rrFrSrTr@rAr
r
r�test_unsupported_error�s�$z#RegisterTest.test_unsupported_error)rrrrr#r�staticmethodr/r0r2r4rBrDrrrUrVrXr_rarkrlrorr�
__classcell__r
r
r(rr!6s8







r!cs eZdZdZ�fdd�Z�ZS)�ClientTestCommonz2Common base class for certbot.client.Client tests.c	s�tt|���d|j_d|j_tjfdti�|_	ddl
m}t�d��2}||_
t��|_|_||j|j	ddd�|_W5QRXdS)NFzkey.pemr)�Clientr5)rZaccount_Zauth�	installer)r"rur#rZ
no_verify_ssl�allow_subset_of_namesrr+�KEYrr
rvr�acme_clientrLr-rd)rrvrLr(r
rr#�s�zClientTestCommon.setUp)rrrrr#rtr
r
r(rru�srucsNeZdZdZ�fdd�Zdd�Zdd�Zd1d	d
�Ze�	d�e�	d�e
��d
d����Ze�	d�dd��Z
e�	d�e�	d�dd���Ze�	d�e�	d�dd���Ze�	d�e�	d�e�	d�dd����Zdd�Zdd�Zd2dd�Ze�	d �e�	d!�d"d#���Ze�	d$�d%d&��Zd'd(�Zd)d*�Zd+d,�Ze
��d-d.��Ze
��d/d0��Z�ZS)3�
ClientTestz Tests for certbot.client.Client.csBtt|���d|j_d|j_ddg|_tjdgtj	j
d�|_dS)NF�example.com�www.example.com)�authorizations�csr_pem)r"r{r#rrxrZ�
eg_domainsrr+�sentinelr�eg_orderrr(r
rr#�s
�zClientTest.setUpcCs |jjdd}|�|j�dS)Nr)rzr`r?Z
verify_ssl)rrmr
r
r�test_init_acme_verify_ssl�sz$ClientTest.test_init_acme_verify_sslcCsRt��|j_dg|jjj_ggf|jjj_|j|jj	_|j|jj
_|j|jj_dSrW)rr+rd�auth_handler�handle_authorizationsr-�deactivate_valid_authorizationsr�rL�finalize_order�	new_order�updaterr
r
r�_mock_obtain_certificatesz#ClientTest._mock_obtain_certificaterKcCsN|dkr"|jjj�|j|jj�n|�|jjjj|�|j	j
�|jtj�dS�NrK)
rdr�r�r\r�rrxrOrPrLr�rr])r�
auth_countr
r
r�_check_obtain_certificates
��z$ClientTest._check_obtain_certificatezcertbot.client.crypto_utilrYcCs�|��tjddtd�}|jj}|�|j�|j�	|j
�}|�|d�|�t
jjt
jjf|jj||d��|��|�t
jjt
jjf|jj|dd��|j�|jd�d|j_|�tj|jj|�|j�t
j�dS)N�pem�Zform�file�dataF)�orderr)r�r�CSR�CSR_SANrdr��_set_mock_from_fullchain�cert_and_chain_from_fullchainrLr�r�r�rOrr��cert�chainZobtain_certificate_from_csrr��assert_called_withr�r<rr;�warningr\r])rZunused_mock_get_utilityr^�mock_crypto_utilZtest_csrr�r�r
r
r� test_obtain_certificate_from_csrs:�����z+ClientTest.test_obtain_certificate_from_csrcCs�tjddtd�}||j_tjj|j_|�	|j
�|�tjj|�|j�|j
j|j
j�|j�tjj|j|j
j�|j
�|jj�dS)Nr�r�)rr�r��
init_save_csrr-rr�rn�
init_save_keyr�r��_test_obtain_certificate_commonr\rr$Zkey_dirr�Zcsr_dirr�Z
fullchain_pem)rr��csrr
r
r�test_obtain_certificate7s"���z"ClientTest.test_obtain_certificatezcertbot.compat.os.removecCs�tjdtjjtd�}tjdtjjtd�}||j_||j	_|�
|j�|�dg�}d|j
_|j|||dd�|�|j	jd�|�|jjd�|�|jd�|�|jjd�dS)Nr�r�r|T�)�
authzr_retr�rK)rr�rr�Zcsr_filer�Zkey_filer�r-r�r�r��_authzr_from_domainsrrxr�rOrP)rZmock_remover�r�rn�authzrr
r
r�'test_obtain_certificate_partial_successGsz2ClientTest.test_obtain_certificate_partial_successzcertbot.client.acme_crypto_utilcCs�tjddtd�}t|j_tjj|j_tj	dtjjd�}|�
|j�d|jj
_|�||�|j�|j
j�|j�tjj|j|j
j�|j��|j��|�|jjd�dS)Nr�r��r�r�TrK)rr�r��make_csrr-rr��key_pem�make_key�Keyr�r�rdrrZr�r\r$r�Zmust_stapler��assert_not_calledr�rOrP)r�mock_acme_crypto�mock_cryptor�rnr
r
r�test_obtain_certificate_dry_runYs 
�

z*ClientTest.test_obtain_certificate_dry_runc	Cs4ddlm}tjddtd�}t|j_tjj	|j
_tjdtjj	d�}|�|j
�|��d|jj_|�ddg�}|D]}|j|j_qr|jj}	|dg|d	gf|	j_||j_||jjj_t���|j�|j�}
W5QRX|�|
tjj tjj!||f�|�"d	�|�|	jj#d	d
�|�|jj$j#dd�|j%�&d
�dS)NrrEr�r�r�Tr|r}rKz*Deactivate authorizations should be calledr�zHOrder should be recreated due to successfully deactivated authorizationszCertbot was unable to obtain fresh authorizations for every domain. The dry run will continue, but results may not be accurate.)'rLrFrr�r�r�r-rr�r�r�r�r�r�r�rdrrZr�ZSTATUS_VALID�bodyZstatusr�r�r�r~r��	test_util�patch_get_utility�obtain_certificater�rOr�r�r�rPr�r�r�)rr�r��mock_logrFr�rnZauthzrsr�r��resultr
r
r�:test_obtain_certificate_dry_run_authz_deactivations_failedls4


��zEClientTest.test_obtain_certificate_dry_run_authz_deactivations_failedcCs6t��}tjj|j_t��}tjj|j_||f|_dSrW)rr,r�r��encoder-r�)rZmock_from_fullchainZ	mock_certZ
mock_chainr
r
rr��s
z#ClientTest._set_mock_from_fullchaincCs8g}t|�D]&}|�tjtjtj|d�d�d��q|S)N)�value)Z
identifier)r�)�reversed�appendrr+)r�domainsr��domainr
r
rr��s����zClientTest._authzr_from_domainsNc	Csx|��|p|�|j�}||j_||jjj_t	�
��|j�|j�}W5QRX|�|t
jjt
jj||f�|�|�dSrW)r�r�r�r�r~rdr�r�r-r�r�r�rOrr�r�r�r�)rrnr�r�r�r�r�r
r
rr��s
�z*ClientTest._test_obtain_certificate_commonz(certbot.client.Client.obtain_certificatez)certbot.storage.RenewableCert.new_lineagecCs�ddg}t��t��t��df|_d|jj_|�|j�|d��|�|j�|d��|�|j�|dd�d��d|jj_|�|j�|d��dd�|j	D�}|�
|dddg�dS)	Nz
*.example.comr|FZexample_certrKTcSsg|]}|dd�qS)rr
)�.0Zcallr
r
r�
<listcomp>�szAClientTest.test_obtain_and_enroll_certificate.<locals>.<listcomp>)rr+r-rdrrZr?Zobtain_and_enroll_certificater=Zcall_args_listrO)rZmock_storageZmock_obtain_certificater��namesr
r
r�"test_obtain_and_enroll_certificate�s�

z-ClientTest.test_obtain_and_enroll_certificatezcertbot.cli.helpful_parserc	Cs�ddg}t��}t�|d�t�|d�}t�|d�t�|d�}tj�|dd�}tj�|dd�}tj�|dd	�}d
|_	d|d|d
|g|_
|j�|||||�\}	}
}|�
tj�|	�tj�|��|�
tj�|
�tj�|��|�
tj�|�tj�|��t|	d��}|��}
W5QRX|�
|
t�|d��t|
d��}|��}W5QRX|�
|t�|d�t�|d��t�|�dS)Nzcert_512.pemzcert-san_512.pemi�rrK�certsZchainsz	chain.pemz
fullchain.pemZcertonlyz--cert-pathz--chain-pathz--fullchain-path�rb)�tempfileZmkdtempr�chmodr��load_vectorr�path�joinZverb�argsrdZsave_certificaterO�dirname�open�read�shutilZrmtree)rZmock_parserr�Ztmp_pathZcert_pemZ	chain_pemZcandidate_cert_pathZcandidate_chain_pathZcandidate_fullchain_path�	cert_path�
chain_path�fullchain_pathZ	cert_fileZ
cert_contentsZ
chain_fileZchain_contentsr
r
r�test_save_certificate�sP��

�
�
��z ClientTest.test_save_certificatec	Cs�|�tj|jjdgdddd�t��}||j_|j�dgdddd�|jj	t
j�d�t
j�d�ddt
j�d�d�|�
|jjd�|j�	�dS)N�foo.barrnr�r��	fullchain)r�r�r�r�Zkey_pathr�)r<rr;rd�deploy_certificaterr+rw�deploy_certr\rr��abspathrO�saverP�restart�rrwr
r
r�test_deploy_certificate_success�s2��


�z*ClientTest.test_deploy_certificate_successc	CsFt��}||j_tj|j_|�tj|jj	dgdddd�|j
��dS�Nr�rnr�r�r�)rr+rdrwr�PluginErrorr�r:r<r��recovery_routiner\r�r
r
r�test_deploy_certificate_failure	s
�z*ClientTest.test_deploy_certificate_failurec	CsFt��}||j_tj|j_|�tj|jj	dgdddd�|j
��dSr�)rr+rdrwrr�r�r:r<r�r�r\r�r
r
r�$test_deploy_certificate_save_failures
�z/ClientTest.test_deploy_certificate_save_failurec	Cslt��}tjdg|j_||j_|�tj|jj	dgdddd�|�
|�jjd�|j
��|�
|jjd�dS)Nr�rnr�r�r�rKr�)rr+rr�r�r:rdrwr<r�rO�add_messagerP�rollback_checkpointsr\�rZmock_get_utilityrwr
r
r�'test_deploy_certificate_restart_failures�
z2ClientTest.test_deploy_certificate_restart_failurec	Csrt��}tj|j_tj|j_||j_	|�
tj|jjdgdddd�|�|�j
jd�|j��|�|jjd�dS)Nr�rnr�r�r�rK)rr+rr�r�r:�
ReverterErrorr�rdrwr<r�rOr�rPr\r�r
r
r�(test_deploy_certificate_restart_failure2's

�
z3ClientTest.test_deploy_certificate_restart_failure2)rK)NrK)rrrrr#r�r�r�rrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rtr
r
r(rr{�sH

!
&

&		
r{cs�eZdZdZ�fdd�Zdd�Ze�d�dd��Ze�d	�d
d��Z	e�d	�dd
��Z
e�d	�dd��Ze�d�e�d	�dd���Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Ze�d�d#d$��Zd%d&�Zd'd(�Zd)d*�Zd+d,�Z�ZS)-�EnhanceConfigTestz/Tests for certbot.client.Client.enhance_config.cs8tt|���d|j_d|j_d|j_d|j_d|_dS)NFzexample.org)	r"r�r#r�hsts�redirect�staple�uirr�rr(r
rr#8szEnhanceConfigTest.setUpcCs|�tj|jj|jgd�dSrW)r<rr;rd�enhance_configr�rr
r
r�test_no_installerAs�z#EnhanceConfigTest.test_no_installerzcertbot.client.enhancementsc	Cs|t��|j_g|jjj_d|j_d|j_t�	d��}|j�
|jgd�W5QRX|�|j
jd�|jjj��|j��dS)NTrYrK)rr+rdrw�supported_enhancementsr-rr�r�rr�r�rOr�rP�enhancer�Zask)rZmock_enhancementsr^r
r
r�test_unsupportedEsz"EnhanceConfigTest.test_unsupportedrYcCs:d|j_|��|�|jj�|�|jjddd�dS)NTrrK�Strict-Transport-Security)rr��_test_with_already_existingr?r�r>rOr`�rr�r
r
r�test_already_exists_headerRs�z,EnhanceConfigTest.test_already_exists_headercCs:d|j_|��|�|jj�|�|jjddd�dS)NTrrKr�)rr�r�r?r�r>rOr`r�r
r
r�test_already_exists_redirectZs�z.EnhanceConfigTest.test_already_exists_redirectcCs"d|j_|��|�|jj�dSr3)rr�r�r=r�r>r�r
r
r�#test_config_set_no_warning_redirectbsz5EnhanceConfigTest.test_config_set_no_warning_redirectzcertbot.client.enhancements.askcCsBd|j_d|_|��|�|jj�|�d|jjddk�dS)NF�disabler)rr�r-r�r?r�r>r`)rr��mock_askr
r
r�test_warn_redirecths
z$EnhanceConfigTest.test_warn_redirectcCs*d|j_|��|jjj�|jdd�dS)NT�ensure-http-headerr�)rr��_test_with_all_supportedrdrwr�r�r�rr
r
r�test_no_ask_hstsqs
�z"EnhanceConfigTest.test_no_ask_hstscCs*d|j_|��|jjj�|jdd�dS)NTr�)rr�r�rdrwr�r�r�rr
r
r�test_no_ask_redirectws
�z&EnhanceConfigTest.test_no_ask_redirectcCs*d|j_|��|jjj�|jdd�dS)NT�staple-ocsp)rr�r�rdrwr�r�r�rr
r
r�test_no_ask_staple}s
�z$EnhanceConfigTest.test_no_ask_staplecCs*d|j_|��|jjj�|jdd�dS)NTr�zUpgrade-Insecure-Requests)rr�r�rdrwr�r�r�rr
r
r�test_no_ask_uir�s
�z!EnhanceConfigTest.test_no_ask_uircCs4t��|j_tj|jjj_|��|jjj	�
�dSrW)rr+rdrwrr�r�r:�_test_errorr�r\rr
r
r�test_enhance_failure�sz&EnhanceConfigTest.test_enhance_failurecCsFt��|j_tj|jjj_|��|jjj	�
�|jjj�
tj�dSrW)rr+rdrwrr�r�r:r�r�r\r]rr
r
r�test_save_failure�s
z#EnhanceConfigTest.test_save_failurecCs*t��|j_tjdg|jjj_|��dSrW)	rr+rdrwrr�r�r:�_test_error_with_rollbackrr
r
r�test_restart_failure�sz&EnhanceConfigTest.test_restart_failurecCs0t��}tj|j_tj|j_||j_	|�
�dSrW)rr+rr�r�r:r�r�rdrwrr�r
r
r�test_restart_failure2�s


z'EnhanceConfigTest.test_restart_failure2cCsd|j_d|_|��dSr1)rr�r-r�)rr�r
r
r�test_ask�szEnhanceConfigTest.test_askcCs|��|�|jjjj�dSrW)r�r?rdrwr�r>rr
r
rr�sz+EnhanceConfigTest._test_error_with_rollbackc	CsBd|j_t���}|�tj|j�W5QRX|�|�j	j
d�dS)NTrK)rr�r�r�r<rr�r�rOr�rP)rZmock_gur
r
rr��s
�zEnhanceConfigTest._test_errorcCsh|jjdkrt��|j_dddg|jjj_|j�|jgd�|�|jjj	j
d�|�|jjjj
d�dS)Nr�r�r�rK)rdrwrr+r�r-r�r�rOr�rPr�rr
r
rr��s�z*EnhanceConfigTest._test_with_all_supportedcCsDt��|j_dddg|jjj_t��|jjj_	|j�
|jgd�dS)Nr�r�r�)rr+rdrwr�r-rZPluginEnhancementAlreadyPresentr�r:r�r�rr
r
rr��s�z-EnhanceConfigTest._test_with_already_existing)rrrrr#r�rrr�r�r�r�r�r�r�r�r�rrrrrrr�r�r�rtr
r
r(rr�5s8	




	r�c@s4eZdZdZdd�Zedd��Zdd�Zdd	�Zd
S)�RollbackTestz"Tests for certbot.client.rollback.cCst��|_dSrW)rr+�	m_installrr
r
rr#�szRollbackTest.setUpc	Cs>ddlm}t�d��}||_|d|it���W5QRXdS)Nr)�rollbackz.certbot.client.plugin_selection.pick_installer)r
rrrr:r+)�clsZcheckpointsr:rZmpir
r
rr�szRollbackTest._callcCs:|�d|j�|�|��jjd�|�|��jjd�dSr�)rrrOr�rPr�rr
r
r�test_no_problems�szRollbackTest.test_no_problemscCs|�dd�dSr�)rrr
r
rr��szRollbackTest.test_no_installerN)	rrrrr#�classmethodrr
r�r
r
r
rr�s
r�__main__)rrr�r�ZunittestrZjosepyrZcertbot.tests.utilZtestsrr�ZcertbotrrZcertbot.compatrrr�ryr�ZConfigTestCaserr!rur{r�ZTestCaserr�mainr
r
r
r�<module>s4

 'H


Anon7 - 2021