JFIF$        dd7 

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

a

}|�g@��@sldZddlZddlZddlZddlZddlZddlZddlZddlmZddl	m
Z
ddlmZddl
Z
ddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmmZe�d�Ze�d
�ZGdd�dej�Z Gdd�dej�Z!Gdd�dej�Z"Gdd�de"�Z#Gdd�de"�Z$Gdd�dej%�Z&e'dk�rhe�(e
�)ej*dd�e+g��dS)z#Tests for certbot._internal.client.�N)�mock)�	MagicMock)�
interfaces)�errors)�util)�account)�	constants)�obj)�oszrsa512_key.pemzcsr-san_512.pemc@sTeZdZdZdd�Zej�ej	ddi�dd��Z
ej�ej	i�dd	��Zd
d�ZdS)
�DetermineUserAgentTestz8Tests for certbot._internal.client.determine_user_agent.cCsddlm}||j�S)Nr)�determine_user_agent)�certbot._internal.clientr�config)�selfr�r�G/usr/lib/python3.9/site-packages/certbot/_internal/tests/client_test.py�_call szDetermineUserAgentTest._callZCERTBOT_DOCS�1cCs|jdd�dS)NT��expect_doc_values��_test�rrrr�test_docs_value$sz&DetermineUserAgentTest.test_docs_valuecCs|jdd�dS)NFrrrrrr�test_real_values(sz'DetermineUserAgentTest.test_real_valuescCsZ|��}|r|j}|j}n|j}|j}|d|�|d|�|t��|�|t��|�dS)NzOS_NAME OS_VERSIONzmajor.minor.patchlevel)rZassertInZassertNotInrZget_os_info_ua�platformZpython_version)rrZuaZdoc_value_checkZreal_value_checkrrrr,s

zDetermineUserAgentTest._testN)
�__name__�
__module__�__qualname__�__doc__rr�patch�dictr
�environrrrrrrrrs

rcs
eZdZdZ�fdd�Zdd�Zedd��Zedd	��Zed
d��Z	edd
��Z
eejdd���Z
dd�Ze�d�dd��Ze��dd��Ze�d�dd��Zdd�Zdd�Ze�d�dd ��Ze�d�d!d"��Ze��d#d$��Ze��d%d&��Zd'd(�Zd)d*�Z�ZS)+�RegisterTestz,Tests for certbot._internal.client.register.csFt���d|j_d|j_d|j_t��|_t	�
�|_t�
t
��dS)NiFzalias@example.com)�super�setUpr�rsa_key_size�register_unsafely_without_email�emailrZAccountMemoryStorage�account_storagerr�tos_cb�display_objZset_displayr��	__class__rrr%?s


zRegisterTest.setUpcCsddlm}||j|j|j�S)Nr)�register)r
r.rr)r*)rr.rrrrHszRegisterTest._callcCstjtjd�}d|j_|S)Nr,z{"a": 1})r�MockrZJSONDeSerializableZto_partial_json�return_value)�mrrr�_public_key_mockLszRegisterTest._public_key_mockcCsdS)Nz/acme/new-accountrrrrr�_new_acct_dir_mockRszRegisterTest._new_acct_dir_mockcCsdS�NTrrrrr�
_true_mockVszRegisterTest._true_mockcCsdS�NFrrrrr�_false_mockZszRegisterTest._false_mockccs6t�d��}|jVWd�n1s(0YdS)N�$certbot._internal.client.acme_client)rr �ClientV2)Zmock_acme_clientrrr�_patched_acme_client^sz!RegisterTest._patched_acme_clientc
Cs�|����}d|��_|j|�j_t�d��~}tj	|�j_t
�tj	��|��Wd�n1sb0Y|j
duszJ�d|�j_|��|j
dus�J�Wd�n1s�0YWd�n1s�0YdS)Nz
http://tos�*certbot._internal.eff.prepare_subscriptionFT)r:�new_accountZterms_of_servicer7�external_account_required�side_effectrr r�Error�pytest�raisesr�called)r�mock_client�mock_preparerrr�test_no_tosds

&
zRegisterTest.test_no_tosr;cCsj|���N}ddlm}|�i�|�_|j|�j_|��|j	j
dusHJ�Wd�n1s\0YdS)Nr)�	DirectoryF)r:Z
acme.messagesrFZ	from_json�	directoryr7r=r>rr*rB)rZunused_mock_preparerCrFrrr�test_empty_metars
zRegisterTest.test_empty_metac	Csz|���^}|j|�j_t�d��|��Wd�n1s>0Y|jjdusXJ�Wd�n1sl0YdS)N�)certbot._internal.eff.handle_subscriptionT)	r:r7r=r>rr rr*rB)r�unused_mock_get_utilityrCrrr�test_its

&zRegisterTest.test_itz.certbot._internal.client.display_ops.get_emailc	Cs�ddlm}d|j_d}|jjd|d�}|���|}|j|�j_	t
�d��F}|t
��g|�j
_	|��|jdksrJ�|jd	us�J�Wd�n1s�0YWd�n1s�0YdS)
Nr��messagesF�3DNS problem: NXDOMAIN looking up MX for example.com�invalidContact��detailr;�T)�acmerMr�noninteractive_moder?�	with_coder:r7r=r>rr rr<r�
call_countrB)r�mock_get_emailrM�msg�mx_errrCrDrrr�test_email_retry�s
zRegisterTest.test_email_retryc
Cs�ddlm}d|j_d}|jjd|d�}|����}|j|�j_	t
�d��V|t
��g|�j
_	t�tj��|��Wd�n1s�0YWd�n1s�0YWd�n1s�0YdS)NrrLTrNrOrPrI)rSrMrrTr?rUr:r7r=r>rr rr<r@rArr)rrMrXrYrCrrr�!test_email_invalid_noninteractive�s
z.RegisterTest.test_email_invalid_noninteractivecCs@d|j_t�tj��|��Wd�n1s20YdS�N)rr(r@rArr?rrrrr�test_needs_email�szRegisterTest.test_needs_email�certbot._internal.client.loggerc	Cs�t�d���}|���X}|j|�j_d|j_d|j_d|j_	|�
�|j�tj
�|jdus^J�Wd�n1sr0YWd�n1s�0YdS)Nr;TF)rr r:r7r=r>rr(r'�dry_runr�debug�assert_called_once_with�ANYrB)r�mock_loggerrDrCrrr�test_without_email�s
zRegisterTest.test_without_emailc	Cs�|���|}|j|�j_t�d��Fd|j_|��|j	dus@J�|�j
jddjrXJ�Wd�n1sl0YWd�n1s�0YdS)zJTests dry-run for no staging account, expect account created with no emailrITFrN)
r:r7r=r>rr rr_rrBr<�	call_argsZcontact)rrWrCrrr�test_dry_run_no_staging_account�s
z,RegisterTest.test_dry_run_no_staging_accountc
Cs�|����}tj|jd�|�jj_|j|�j_	t�
d��dd}t�
|��6}d|j_d|j_
|��|jdusnJ�Wd�n1s�0YWd�n1s�0YWd�n1s�0YdS)N�r>rI�Bcertbot._internal.client.messages.ExternalAccountBinding.from_dataztest-kidz+J2OAqW4MHXsrHVa_PVg0Y-L_R4SYw0_aL1le6mfblbET)r:rr/r3�clientrG�__getitem__r7r=r>r r�eab_kid�eab_hmac_keyrrB�rrJrC�targetZmock_eab_from_datarrr�test_with_eab_arguments�s
�z$RegisterTest.test_with_eab_argumentsc
Cs�|����}|j|�j_t�d��dd}t�|��6}d|j_d|j_|�	�|j
dusXJ�Wd�n1sl0YWd�n1s�0YWd�n1s�0YdS)NrIrhF)r:r7r=r>rr rrkrlrrBrmrrr�test_without_eab_arguments�s
z'RegisterTest.test_without_eab_argumentscCs�|����}tj|jd�|�jjj_|j|�j	_
t�d��~t�d��Td|j_
d|j_t�tj��|��Wd�n1s�0YWd�n1s�0YWd�n1s�0YWd�n1s�0YdS)NrgrIrh)r:rr/r2ri�net�keyZ
public_keyr5r=r>r rrkrlr@rArr?r)rrCrrr�4test_external_account_required_without_eab_arguments�s
zARegisterTest.test_external_account_required_without_eab_argumentsc
Cs�ddlm}d}|jjd|dd�}|����}tj|jd�|�jj	_
|j|�j_
t�d��V}|t��g|�j_
t�|j��|��Wd�n1s�0YWd�n1s�0YWd�n1s�0Y|jd	us�J�dS)
NrrLZTest�	malformed�title�rQrurgrIF)rSrMr?rUr:rr/r3rirGrjr7r=r>r rr<r@rArrB)rrMrXrYrCZmock_handlerrr�test_unsupported_error�s
�bz#RegisterTest.test_unsupported_error)rrrrr%r�staticmethodr2r3r5r7�
contextlib�contextmanagerr:rErr rH�	test_util�patch_display_utilrKrZr[r]rdrfrorprsrw�
__classcell__rrr,rr#<sB	











r#cs eZdZdZ�fdd�Z�ZS)�ClientTestCommonz<Common base class for certbot._internal.client.Client tests.cs�t���d|j_d|j_tjfidti��|_ddl	m
}t�d��H}|j|_
t��|_|j
_|j|_||j|jddd�|_Wd�n1s�0YdS)NFzkey.pemr)�Clientr8)rZaccount_Zauth�	installer)r$r%rZ
no_verify_ssl�allow_subset_of_namesrr�KEYrr
rr r9Zacme_clientrSr0Z
ClientNetwork�client_networkri)rrrSr,rrr%�s
�zClientTestCommon.setUp)rrrrr%r}rrr,rr~�sr~cs�eZdZdZ�fdd�Zdd�Zdd�Zd?d	d
�Ze�	d�e�	d�d
d���Z
e�	d�dd��Ze�	d�dd��Ze�	d�dd��Z
e�	d�dd��Ze�	d�dd��Ze�	d�dd��Ze�	d�dd��Ze�	d�dd��Ze�	d�e�	d�d d!���Ze�	d�e�	d�e�	d�d"d#����Zd$d%�Zd&d'�Zd@d)d*�Ze�	d+�e�	d,�d-d.���Ze�	d/�d0d1��Ze��d2d3��Ze�	d4�e��d5d6���Ze��d7d8��Ze�	d4�e��d9d:���Ze�	d�e��d;d<���Z d=d>�Z!�Z"S)A�
ClientTestz*Tests for certbot._internal.client.Client.csFt���d|j_d|j_d|j_ddg|_tjdgtj	j
d�|_dS)NFT�example.com�www.example.com)�authorizations�csr_pem)r$r%rr�r_�strict_permissions�
eg_domainsrr�sentinelr��eg_orderrr,rrr%s

�zClientTest.setUpcCs|jjdddusJ�dS)NrRZ
verify_sslT)r�rerrrr�test_init_acme_verify_sslsz$ClientTest.test_init_acme_verify_sslcCsRt��|j_dg|jjj_ggf|jjj_|j|jj	_|j|jj
_|j|jj_dSr\)rrri�auth_handler�handle_authorizationsr0�deactivate_valid_authorizationsr�rS�finalize_order�	new_order�updaterrrr�_mock_obtain_certificatesz#ClientTest._mock_obtain_certificaterRcCs^|dkr&|jjj�|j|j|jj�n|jjjj|ks:J�|jj	j|jt
j|jjdud�dS)NrR)Zfetch_alternative_chains)
rir�r�rar�rr�rVrSr�rrb�preferred_chain)r�
auth_countrrr�_check_obtain_certificate%s
�
�z$ClientTest._check_obtain_certificatez$certbot._internal.client.crypto_utilr^c	Cs|��tjddtd�}|jj}|�|j�|j�	|j
�}|�||jd�t
jjt
jjf|jj||d�ksnJ�|j��|��d|j_t
jjt
jjf|jj||d�ks�J�|j�|jg|jdd�d|j_tj��tjtjdd�}|jj||d�|jjjj\\}}}t ||�tjd	d�k�s,J�tj��tjd
d�}d
|j_!|jj||d�|jjjj\\}}}t ||�tjd	d�k�s�J�t
jjt
jjf|jj|dd�k�s�J�|j�"|j#|jd�d|j_t$�%t&j'��|j�|�Wd�n1�s�0Y|j(�t
j)�dS)N�pem�Zform�file�dataF)�orderrzsome issuerT�issuance_timeout)ZsecondsrRi,)*r�r�CSR�CSR_SANrir��_set_mock_from_fullchain�cert_and_chain_from_fullchainrSr�r�r�rrr��cert�chainZobtain_certificate_from_csrZfind_chain_with_issuer�assert_not_calledr�r�ra�
fullchain_pemZalternative_fullchains_pem�datetimeZnowZ	timedeltarZCLI_DEFAULTSr�re�absr��assert_called_withr�r@rArr?�errorrb)	rrc�mock_crypto_utilZtest_csrr�r�Zexpected_deadline�_Zdeadlinerrr� test_obtain_certificate_from_csr2sd��
��������
,z+ClientTest.test_obtain_certificate_from_csrcCs�tjddtd�}||j_tjj|j_|�	|j
�|�tjj|�|jj|j
jd|j
jddd�|j�tjj|jddd�|j
�|jj�dS)Nr�r��	secp256r1T)Zkey_sizeZkey_dir�key_type�elliptic_curver�F)rr�r��generate_csrr0rr�rr�generate_keyr�r��_test_obtain_certificate_commonrarr&r�r�r�r�)rr��csrrrr�test_obtain_certificatels$���z"ClientTest.test_obtain_certificatecCs�tjdtjjtd�}tjdtjjtd�}||j_||j	_|�
|j�|�dg�}d|j
_|j|||dd�|j	jdkszJ�|jjdks�J�|jjdks�J�dS)Nr�r�r�T�)�
authzr_retr�rR)rr�rr��csr_filer��key_filer�r0r�r�r��_authzr_from_domainsrr�r�rV)rr�r�rr�authzrrrr�'test_obtain_certificate_partial_success�sz2ClientTest.test_obtain_certificate_partial_successc
Cs�ddlm}tjdtjjtd�}tjdtjjtd�}||j	_
||j_
|�|j
�|��|�|j�}||j_||jjj_
|j|jdd�}|jjddd	|d
�}|jjddd	|gd
�}|tjg|jjj_d|j_t� ��|j�!|j�}	Wd�n1s�0Y|	tjj"tjj#||fk�s J�|jjjj$dk�s6J�|jjj$dk�sJJ�dd�|jD�}
|jj$dk�slJ�|j	�%t�&||jd|jj'|jj(�t�&||
d|jj'|jj(�g�|j
j$dk�s�J�dS)NrrLr�r�r���typ�value�caa�barru�rQru�
identifierrt�foo�rQruZsubproblemsTr�cSsg|]}|dkr|�qS�r�r��.0�drrr�
<listcomp>��zUClientTest.test_obtain_certificate_finalize_order_partial_success.<locals>.<listcomp>rR))rSrMrr�rr�r�r�r�r�r0r�r�r�r�r�r�r�r�rir�r��
Identifier�IDENTIFIER_FQDNr?rU�DEFAULTr�r>rr�r{r|�obtain_certificater�r�rV�assert_has_calls�call�must_stapler��rr�rMr�rrr�r�Z
subproblem�error_with_subproblems�resultZsuccessful_domainsrrr�6test_obtain_certificate_finalize_order_partial_success�s:
,�
�zAClientTest.test_obtain_certificate_finalize_order_partial_successcCszddlm}tjdtjjtd�}tjdtjjtd�}||j	_
||j_
|�|j
�|��|�|j�}||j_||jjj_
|j|jdd�}|j|jdd�}|jjdd	d
|d�}|jjdd	d
|d�}	|jjdd
d
||	gd�}
|
|jjj_d|j_t�|j��|j� |j�Wd�n1�s0Y|jjjj!dk�s>J�|jjj!dk�sRJ�|jj!dk�sdJ�|j
j!dk�svJ�dS�NrrLr�r�r�r�r�r�r�rur�rtr�r�TrR)"rSrMrr�rr�r�r�r�r�r0r�r�r�r�r�r�r�r�rir�r�r�r�r?rUr�r>rr�r@rAr�rV�rr�rMr�rrr�Zidentifier1Zidentifier2Zsubproblem1Zsubproblem2r�rrr�;test_obtain_certificate_finalize_order_no_retryable_domains�s..zFClientTest.test_obtain_certificate_finalize_order_no_retryable_domainscCs&ddlm}tjdtjjtd�}tjdtjjtd�}||j	_
||j_
|�|j
�|��|�|j�}||j_||jjj_
|jjdddd�}||jjj_d	|j_t�|j��|j�|j�Wd�n1s�0Y|jjjjd
ks�J�|jjjd
ks�J�|jjd
k�sJ�|j
jdk�s"J�dS�NrrLr�r�r�r�rurvTrR) rSrMrr�rr�r�r�r�r�r0r�r�r�r�r�r�r�r�rir�r�r?rUr�r>rr�r@rAr�rV�rr�rMr�rrr�r�rrr�Itest_obtain_certificate_finalize_order_rejected_identifier_no_subproblems�s&,zTClientTest.test_obtain_certificate_finalize_order_rejected_identifier_no_subproblemsc
Cs�ddlm}tjdtjjtd�}tjdtjjtd�}||j	_
||j_
|�|j
�|��|�|j�}||j_||jjj_
|j|jdd�}|jjddd	|d
�}|jjddd	|gd
�}|tjg|jjj_d|j_t� ��|j�!|j�}	Wd�n1s�0Y|	tjj"tjj#||fk�s J�|jjjj$dk�s6J�|jjj$dk�sJJ�dd�|jD�}
|jj$dk�slJ�|j	�%t�&||jd|jj'|jj(�t�&||
d|jj'|jj(�g�|j
j$dk�s�J�dS)NrrLr�r�r�r�r�r�rur�rtr�r�TrRr�cSsg|]}|dkr|�qSr�rr�rrrr�
r�zPClientTest.test_obtain_certificate_get_order_partial_success.<locals>.<listcomp>))rSrMrr�rr�r�r�r�r�r0r�r�r�r�r�r�r�r�rir�r�r�r�r?rUr�r�r>rr�r{r|r�r�r�rVr�r�r�r�r�rrr�1test_obtain_certificate_get_order_partial_success�s:
,�
�z<ClientTest.test_obtain_certificate_get_order_partial_successcCszddlm}tjdtjjtd�}tjdtjjtd�}||j	_
||j_
|�|j
�|��|�|j�}||j_||jjj_
|j|jdd�}|j|jdd�}|jjdd	d
|d�}|jjdd	d
|d�}	|jjdd
d
||	gd�}
|
|jjj_d|j_t�|j��|j� |j�Wd�n1�s0Y|jjjj!dk�s>J�|jjj!dk�sRJ�|jj!dk�sdJ�|j
j!dk�svJ�dSr�)"rSrMrr�rr�r�r�r�r�r0r�r�r�r�r�r�r�r�rir�r�r�r�r?rUr�r>rr�r@rAr�rVr�rrr�6test_obtain_certificate_get_order_no_retryable_domainss..zAClientTest.test_obtain_certificate_get_order_no_retryable_domainscCs&ddlm}tjdtjjtd�}tjdtjjtd�}||j	_
||j_
|�|j
�|��|�|j�}||j_||jjj_
|jjdddd�}||jjj_d	|j_t�|j��|j�|j�Wd�n1s�0Y|jjjjdks�J�|jjjd
ks�J�|jjd
k�sJ�|j
jdk�s"J�dSr�) rSrMrr�rr�r�r�r�r�r0r�r�r�r�r�r�r�r�rir�r�r?rUr�r>rr�r@rAr�rVr�rrr�Dtest_obtain_certificate_get_order_rejected_identifier_no_subproblems/s&,zOClientTest.test_obtain_certificate_get_order_rejected_identifier_no_subproblemsz)certbot._internal.client.acme_crypto_utilcCs�tjddtd�}t|j_tjj|j_tj	dtjjd�}|�
|j�d|jj
_|�||�|jj|j
jd|j
jd�|j�tjj|j|j
j�|j��|j��|jjdks�J�dS)Nr�r��r�r�Tr�)�bitsr�r�rR)rr�r��make_csrr0rr��key_pem�make_key�Keyr�r�rirr_r�rar&r�r�r�r�r�r�rV)r�mock_acme_crypto�mock_cryptor�rrrrr�test_obtain_certificate_dry_runIs$
��

z*ClientTest.test_obtain_certificate_dry_runcCsRddlm}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�}
Wd�n1s�0Y|
tjjtjj ||fk�s
J�|�!d	�|	jj"d	k�s*Jd
��|jj#j"dk�sBJd��|j$�%d
�dS)NrrLr�r�r�Tr�r�rRz*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.)&rSrMrr�r�r�r0rr�r�r�r�r�r�r�rirr_r�ZSTATUS_VALID�body�statusr�r�r�r�r�r{r|r�r�r�r�r�rVr��warningr�)rr�r��mock_logrMr�rrZauthzrsr�r�r�rrr�:test_obtain_certificate_dry_run_authz_deactivations_failed`s4

,
��zEClientTest.test_obtain_certificate_dry_run_authz_deactivations_failedcCs6t��}tjj|j_t��}tjj|j_||f|_dSr\)rr/r�r��encoder0r�)rZmock_from_fullchainZ	mock_certZ
mock_chainrrrr��s
z#ClientTest._set_mock_from_fullchaincCs8g}t|�D]&}|�tjtjtj|d�d�d��q|S)N)r�)r�)r�)�reversed�appendrr)r�domainsr��domainrrrr��s����zClientTest._authzr_from_domainsNcCs�|��|p|�|j�}||j_||jjj_t	�
��|j�|j�}Wd�n1sX0Y|tj
jtj
j||fks~J�|�|�dSr\)r�r�r�r�r�rir�r�r0r{r|r�rr�r�r�r�)rrrr�r�r�r�r�rrrr��s
,�z*ClientTest._test_obtain_certificate_commonz2certbot._internal.client.Client.obtain_certificatez3certbot._internal.storage.RenewableCert.new_lineagecCs�ddg}t��t��t��df|_d|jj_|j�|d�s>J�|j�|d�sPJ�|j�|dd�d�sjJ�d|jj_|j�|d�r�J�dd�|jD�}|gd	�ks�J�dS)
Nz
*.example.comr�F�example_certrRTcSsg|]}|dd�qS)rr)r�r�rrrr��r�zAClientTest.test_obtain_and_enroll_certificate.<locals>.<listcomp>)r�r�r�)rrr0rirr_Zobtain_and_enroll_certificate�call_args_list)rZmock_storageZmock_obtain_certificater��namesrrr�"test_obtain_and_enroll_certificate�s�

z-ClientTest.test_obtain_and_enroll_certificatez$certbot._internal.cli.helpful_parsercCs�ddg}t��}t�|d�}t�|d�t�|d�}tj�|dd�}tj�|dd�}tj�|dd�}d	|_d
|d|d|g|_|j	�
|||||�\}	}
}tj�|	�tj�|�ks�J�tj�|
�tj�|�ks�J�tj�|�tj�|�ks�J�t|	d
��}|�
�}
Wd�n1�s0Y|
t�|d�k�s<J�t|
d
��}|�
�}Wd�n1�sf0Y|t�|d�t�|d�k�s�J�t�|�dS)Nzcert_512.pemzcert-san_512.pemrrR�certsZchainsz	chain.pemz
fullchain.pemZcertonlyz--cert-pathz--chain-pathz--fullchain-path�rb)�tempfileZmkdtempr{�load_vectorr
�path�joinZverb�argsriZsave_certificate�dirname�open�read�shutil�rmtree)rZmock_parserr�Ztmp_pathZcert_pemZ	chain_pemZcandidate_cert_pathZcandidate_chain_pathZcandidate_fullchain_path�	cert_path�
chain_path�fullchain_pathZ	cert_fileZ
cert_contentsZ
chain_fileZchain_contentsrrr�test_save_certificate�sD��


�

�

�((�z ClientTest.test_save_certificatecCs�t�tj��&|j�dgdddd�Wd�n1s80Yt��}||j_|j�dgdddd�|j	j
tj�
d�tj�
d�ddtj�
d�d�|jjdks�J�|j�
�dS)N�foo.barrrr�r��	fullchain)rrr�rZkey_pathr�)r@rArr?ri�deploy_certificaterrr��deploy_certrar
r��abspath�saverV�restart�r�	mock_utilr�rrr�test_deploy_certificate_success�s4


�z*ClientTest.test_deploy_certificate_successz,certbot._internal.client.display_util.notifycCs|t��}||j_d|j_tj|j_t	�
tj��&|j�dgdddd�Wd�n1sZ0Y|j�
�|�d�dS)NZfoobarrrrr�r�rzDeploying certificate)rrrir�rr�PluginErrorr	r>r@rAr�recovery_routineraZassert_any_call)rr�mock_notifyr�rrr�test_deploy_certificate_failure�s
4
z*ClientTest.test_deploy_certificate_failurecCsjt��}||j_tj|j_t�	tj��&|j�
dgdddd�Wd�n1sR0Y|j��dS)Nrrrr�r�r)
rrrir�rrrr>r@rArrrar
rrr�$test_deploy_certificate_save_failure	s
4z/ClientTest.test_deploy_certificate_save_failurecCs�t��}tjdg|j_||j_t�	tj��&|j�
dgdddd�Wd�n1sV0Y|�d�|j�
�|jjdks�J�dS)Nrrrr�r�rzuWe were unable to install your certificate, however, we successfully restored your server to its prior configuration.r�)rrrrrr>rir�r@rArr��rollback_checkpointsrarV)r�mock_get_utilityrr�rrr�'test_deploy_certificate_restart_failures4�
z2ClientTest.test_deploy_certificate_restart_failurecCs�t��}tj|j_tj|j_||j_	t
�tj��&|j�dgdddd�Wd�n1s\0Y|j
jdksvJ�d|j
jddvs�J�|j��|jjdks�J�dS)	Nrrrr�r�rrRz6An error occurred and we failed to restore your configr)rrrrrr>�
ReverterErrorrrir�r@rArr�rVrera)rrrcr�rrr�(test_deploy_certificate_restart_failure2"s

4�
z3ClientTest.test_deploy_certificate_restart_failure2cCs6tjj}d|�d�g}dg}d|�d�}d}d|�d�g}t�tj��|j�|d�Wd�n1sj0Yt�tj��|j�||�Wd�n1s�0Yt�tj��|j�||�Wd�n1s�0Yt�tj��|j�|d�Wd�n1�s0Y|j�||�dS)NZexamzple.comr�r�z.barrz*.exam)	r
r��sepr@rArr?riZ_choose_lineagename)rrZinvalid_domainsZ
valid_domainsZinvalid_certnameZvalid_certnameZinvalid_wildcard_domainrrr�test_choose_lineage_name2s,,,.z#ClientTest.test_choose_lineage_name)rR)NrR)#rrrrr%r�r�r�rr r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr{r|rrrrrrr}rrr,rr�sj

8


#


#

&

$


	
r�cs�eZdZdZ�fdd�Zdd�Zdd�Ze�d�d	d
��Z	e�d�dd��Z
e�d�d
d��Ze�d�dd��Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd*d$d%�Zd&d'�Zd(d)�Z�ZS)+�EnhanceConfigTestz9Tests for certbot._internal.client.Client.enhance_config.cs4t���d|j_d|j_d|j_d|j_d|_dS)NFzexample.org)r$r%r�hsts�redirect�staple�uirr�rr,rrr%Is
zEnhanceConfigTest.setUpcCsBt�tj��"|j�|jgd�Wd�n1s40YdSr\)r@rArr?ri�enhance_configr�rrrr�test_no_installerRsz#EnhanceConfigTest.test_no_installercCs�t��|j_g|jjj_d|j_d|j_t�	d��"}|j�
|jgd�Wd�n1sZ0Y|jj
dkstJ�|jjj��dS)NTr^rR)rrrir��supported_enhancementsr0rrrr r!r�r�rV�enhancer�)rrcrrr�test_unsupportedVs0z"EnhanceConfigTest.test_unsupportedr^cCs<d|j_|��|jjdus J�|jjdddks8J�dS)NTrrR�Strict-Transport-Security)rr�_test_with_already_existing�inforBre�rr�rrr�test_already_exists_headeras�z,EnhanceConfigTest.test_already_exists_headercCs<d|j_|��|jjdus J�|jjdddks8J�dS)NTrrRr)rrr'r(rBrer)rrr�test_already_exists_redirectis�z.EnhanceConfigTest.test_already_exists_redirectcCs$d|j_|��|jjdus J�dSr6)rrr'r�rBr)rrr�#test_config_set_no_warning_redirectqsz5EnhanceConfigTest.test_config_set_no_warning_redirectcCs$d|j_|��|jjdus J�dSr6)rr�_test_with_all_supportedr�rBr)rrr�test_no_warn_redirectwsz'EnhanceConfigTest.test_no_warn_redirectcCs*d|j_|��|jjj�|jdd�dS)NT�ensure-http-headerr&)rrr-rir�r$r�r�rrrr�test_no_ask_hsts}s

�z"EnhanceConfigTest.test_no_ask_hstscCs*d|j_|��|jjj�|jdd�dS)NTr)rrr-rir�r$r�r�rrrr�test_no_ask_redirect�s

�z&EnhanceConfigTest.test_no_ask_redirectcCs*d|j_|��|jjj�|jdd�dS)NT�staple-ocsp)rrr-rir�r$r�r�rrrr�test_no_ask_staple�s

�z$EnhanceConfigTest.test_no_ask_staplecCs*d|j_|��|jjj�|jdd�dS)NTr/zUpgrade-Insecure-Requests)rr r-rir�r$r�r�rrrr�test_no_ask_uir�s

�z!EnhanceConfigTest.test_no_ask_uircCs8t��|j_tj|jjj_|jdd�|jjj	�
�dS)NT)�
enhance_error)rrrir�rrr$r>�_test_errorrrarrrr�test_enhance_failure�sz&EnhanceConfigTest.test_enhance_failurecCsFt��|j_tj|jjj_|��|jjj	�
�|jjj�
tj�dSr\)rrrir�rrrr>r6rrarbrrrr�test_save_failure�s
z#EnhanceConfigTest.test_save_failurecCs*t��|j_tjdg|jjj_|��dSr\)	rrrir�rrrr>�_test_error_with_rollbackrrrr�test_restart_failure�sz&EnhanceConfigTest.test_restart_failurecCs0t��}tj|j_tj|j_||j_	|�
�dSr\)rrrrrr>rrrir�r9)rr�rrr�test_restart_failure2�s


z'EnhanceConfigTest.test_restart_failure2cCs |��|jjjjdusJ�dSr4)r6rir�rrBrrrrr9�sz+EnhanceConfigTest._test_error_with_rollbackFc
Cs�d|j_t�d��l}t���D}t�tj	��|�
�Wd�n1sH0YWd�n1sf0YWd�n1s�0Y|r�|jjdks�J�d|jj
dddks�J�|r�|j�d�dS)NTr^rRz(Unable to set the %s enhancement for %s.rz0Rolling back to previous server configuration...)rrrr r{r|r@rArrr-r�rVr�Zcriticalr�)rr5Z
restart_errorrcZmock_gurrrr6�s�b�zEnhanceConfigTest._test_errorcCsf|jjdurt��|j_gd�|jjj_|j�|jgd�|jjjj	dksNJ�|jjj
j	dksbJ�dS)N�r/rr2rR)rir�rrr#r0r!r�rrVrrrrrr-�sz*EnhanceConfigTest._test_with_all_supportedcCsBt��|j_gd�|jjj_t��|jjj_	|j�
|jgd�dS)Nr<)rrrir�r#r0rZPluginEnhancementAlreadyPresentr$r>r!r�rrrrr'�sz-EnhanceConfigTest._test_with_already_existing)FF)rrrrr%r"r%rr r*r+r,r.r0r1r3r4r7r8r:r;r9r6r-r'r}rrr,rrFs0	




	rc@s4eZdZdZdd�Zedd��Zdd�Zdd	�Zd
S)�RollbackTestz,Tests for certbot._internal.client.rollback.cCst��|_dSr\)rr�	m_installrrrrr%�szRollbackTest.setUpcCsRddlm}t�d��(}||_|d|it���Wd�n1sD0YdS)Nr)�rollbackz8certbot._internal.client.plugin_selection.pick_installer)r
r?rr r>r)�clsZcheckpointsr>r?Zmpirrrr�szRollbackTest._callcCs:|�d|j�|��jjdks"J�|��jjdks6J�dS�NrR)rr>rrVrrrrr�test_no_problems�szRollbackTest.test_no_problemscCs|�dd�dSrA)rrrrrr"�szRollbackTest.test_no_installerN)	rrrrr%�classmethodrrBr"rrrrr=�s
r=�__main__rR),rryr�rr�sysr�ZunittestrZ
unittest.mockrZjosepyrr@ZcertbotrrZcertbot._internalrrZcertbot._internal.displayr	r+Zcertbot.compatr
Zcertbot.tests.utilZtestsr{r�r�r�ZConfigTestCaserr#r~r�rZTestCaser=r�exit�main�argv�__file__rrrr�<module>sD

=>

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