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__/main_test.cpython-38.pyc
U

�]K�@s�dZddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddl
Z
ddlZddlZddlmZddlmZddlmmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lm Z ddlm!Z!ddlmZddl"m#Z#ddl"m$Z$ddl%m&Z&ddl%m'Z'ddl%m(Z(ddl%m)Z)e�*d�Z+e�*d�Z,e�*d�Z-e�*d�Z.ej/�0e�1d��Z2e�*d�Z3e�*d�Z4Gdd�de
j5�Z6Gdd�dej7�Z8Gd d!�d!e
j5�Z9Gd"d#�d#e
j5�Z:Gd$d%�d%ej;�Z<Gd&d'�d'ej7�Z=Gd(d)�d)ej7�Z>Gd*d+�d+ej7�Z?Gd,d-�d-e
j5�Z@Gd.d/�d/ej7�ZAGd0d1�d1ej7�ZBGd2d3�d3ej7�ZCeDd4k�r�e
� �dS)5zTests for certbot.main.�)�print_functionN)�
reload_module)�List)�account)�cli)�
configuration)�	constants)�crypto_util��errors)�
interfaces)�main)�updater)�util)�os)�
filesystem)�disco)�enhancements)�manual)�null�cert_512.pemzcsr_512.derzrsa256_key.pemzrsa512_key.pemzrsa2048_key.pemz
cert_2048.pemc@seZdZdZdd�ZdS)�TestHandleIdenticalCertsz4Test for certbot.main._handle_identical_cert_requestcCs4t��}d|j_t�t��|�}|�|d|f�dS)NF�	reinstall)�mock�MockZensure_deployed�return_valuer
Z_handle_identical_cert_request�assertEqual)�self�mock_lineage�ret�r �9/usr/lib/python3/dist-packages/certbot/tests/main_test.py�*test_handle_identical_cert_request_pending4szCTestHandleIdenticalCerts.test_handle_identical_cert_request_pendingN)�__name__�
__module__�__qualname__�__doc__r"r r r r!r2srcsZeZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	e
�d�dd��Z�Z
S)�RunTestzTests for certbot.main.run.c	s�tt|���d|_t�d�t�d�t�d�t�d�t�d�t�d�t�d�g|_|jd	��|_|jd
��|_	|jd��|_
|jd��|_|jd
��|_|jd��|_
|jd��|_dS)Nzexample.org�certbot.main._get_and_save_certz-certbot.main.display_ops.success_installationz(certbot.main.display_ops.success_renewal�certbot.main._init_le_client�-certbot.main._suggest_donation_if_appropriate�certbot.main._report_new_cert�certbot.main._find_certr������)�superr'�setUp�domainr�patch�patches�start�	mock_auth�mock_success_installation�mock_success_renewal�	mock_initZmock_suggest_donation�mock_report_cert�mock_find_cert�r��	__class__r r!r4?s"�	z
RunTest.setUpcCs|jD]}|��qdS�N)r7�stop�rr6r r r!�tearDownSs
zRunTest.tearDowncCsFd�|j���}tj��}t�t�	||��}ddl
m}|||�dS)Nz-a webroot -i null -d {0}r)�run)�formatr5�splitr�PluginsRegistry�find_allr�NamespaceConfigr�prepare_and_parse_args�certbot.mainrF)r�args�plugins�configrFr r r!�_callWs

�z
RunTest._callcCs0t��|j_d|j_|��|j�|jg�dS)N)TN�	rrr9rr>rQr:�assert_called_once_withr5r?r r r!�test_newcert_success`szRunTest.test_newcert_successcCs8t��|j_dt��f|j_|��|j�|jg�dS�NFrRr?r r r!�test_reinstall_successfszRunTest.test_reinstall_successcCs8t��|j_dt��f|j_|��|j�|jg�dS)NT)	rrr9rr>rQr;rSr5r?r r r!�test_renewal_successlszRunTest.test_renewal_success�1certbot.main.plug_sel.choose_configurator_pluginscCs@t�|jd�df|_tj��}d|j_|�t	j
tj|j|�dS)NrT)
r�	InstallerrPrrrIrJ�	auto_hsts�assertRaisesr�NotSupportedErrorr
rF)r�mock_chooserOr r r!�"test_run_enhancement_not_supportedrs
�z*RunTest.test_run_enhancement_not_supported)r#r$r%r&r4rErQrTrVrWrr6r^�
__classcell__r r r@r!r'<s	r'c@s�eZdZdZdd�Zdd�Zdd�Ze�d�e�d	�e�d
�dd����Z	ddd�Z
e�d�e�d�e�d�e�d
�dd�����Ze�d�e�d�e�d�e�d
�dd�����ZdS)�CertonlyTestz Tests for certbot.main.certonly.cCst��|_|j��|_dSrB)�	test_util�patch_get_utility�get_utility_patchr8�mock_get_utilityr?r r r!r4s
zCertonlyTest.setUpcCs|j��dSrB�rcrCr?r r r!rE�szCertonlyTest.tearDownc
CsZtj��}t�t�||��}t�d��(}t�d��t	�
||�W5QRXW5QRX|�S)Nr)r*)rrIrJrrKrrLrr6r
�certonly)rrNrOrPr<r r r!rQ�s

� zCertonlyTest._callr,r(r+cCs4|��j}|j|_t��|_d|_|�d���dS)N)FNz!certonly --webroot -d example.com)	rd�notification�_assert_no_pause�side_effectrrrrQrH)rZ
unused_reportr9r>Zmock_notificationr r r!�test_no_reinstall_text_pause�s


z)CertonlyTest.test_no_reinstall_text_pauseTcCs|�|�dSrB)�assertFalse)r�message�pauser r r!rh�szCertonlyTest._assert_no_pause�)certbot.cert_manager.lineage_for_certname�)certbot.cert_manager.domains_for_certnamezcertbot.renewal.renew_certcCs�ddg}||_||j_|�d���|�|jdk�|�|jdk�|�|jdk�|�|jdk�|�d���|�|jdk�|�|jdk�|�|jdk�|�|jdk�d|��j_|�t	j
|jd���dS)N�example.comztest.orgzEcertonly --webroot -d example.com -d test.org --cert-name example.comr-�Ecertonly --webroot -d example.com -d test.com --cert-name example.comr.F)r�namesrQrH�
assertTrue�
call_countrd�yesnor[r�ConfigurationError)rr=�mock_renew_cert�mock_domainsr�domainsr r r!�*test_find_lineage_for_domains_and_certname�s"�z7CertonlyTest.test_find_lineage_for_domains_and_certname� certbot.display.ops.choose_namescCs`d|_|�d���|�|jdk�|�|jdk�dg|_d|_|�d���|�|j�dS)Nrqr-Zsomenamez*certonly --webroot --cert-name example.com)rrQrHrsrt�called)rr=r�mock_choose_namesZmock_domains_for_certnamer r r!�*test_find_lineage_for_domains_new_certname�sz7CertonlyTest.test_find_lineage_for_domains_new_certnameN)T)
r#r$r%r&r4rErQrr6rjrhrzr~r r r r!r`|s&
r`c@sFeZdZdZe�d�dd��Ze�d�dd��Ze�d�dd	��Zd
S)�FindDomainsOrCertnameTestz1Tests for certbot.main._find_domains_or_certname.r{cCs,tjddd�}d|_|�t�|d�d�dS)N�ry�certname�
domainname)r�N�rrrrr
�_find_domains_or_certname�rr}�mock_configr r r!�test_display_ops�s
�z*FindDomainsOrCertnameTest.test_display_opscCs,tjddd�}g|_|�tjtj|d�dS)Nr�)rrrr[r�Errorr
r�r�r r r!�test_no_results�sz)FindDomainsOrCertnameTest.test_no_resultsrocCs8tjddd�}ddg|_|�t�|d�ddgdf�dS)Nzone.comr�ztwo.comr�)rrxr�r r r!�test_grab_domains�s


�z+FindDomainsOrCertnameTest.test_grab_domainsN)	r#r$r%r&rr6r�r�r�r r r r!r�s

rcs�eZdZdZ�fdd�Z�fdd�Zddd�Ze�d	�e�d
�dd���Z	e�d	�e�d
�dd���Z
e�d	�dd��Zdd�Ze�d	�e�d�e
��dd����Z�ZS)�
RevokeTestzTests for certbot.main.revoke.cs"tt|���t�t|j�tj�	tj�
|jd��|_t|jd��}|j|�
�f|_W5QRXt�d�t�d�t�d�t�d�g|_|jd��|_|jd��|jd	��|_|jd
��|_ddlm}t��|_|jdtjd
dddddtjd�d�|_||jt|j�|_ |j df|j_!dS)Nr�rz'acme.client.BackwardsCompatibleClientV2zcertbot.client.Client�certbot.main._determine_accountz+certbot.main.display_ops.success_revocationrr-r.r/)�Accountztest.certbot.orgi��r0��
)Ztzinfo)Z
creation_hostZcreation_dt)"r3r�r4�shutil�copy�	CERT_PATHZtempdirr�path�abspath�join�
tmp_cert_path�open�read�tmp_certrr6r7r8�mock_acme_client�mock_determine_account�mock_success_revokeZcertbot.accountr��	MagicMock�regrZMeta�datetime�pytzZUTC�meta�JWK�accr)r�fr�r@r r!r4�s@��
��zRevokeTest.setUpcs&tt|���|jD]}|��qdSrB)r3r�rEr7rCrDr@r r!rE
s
zRevokeTest.tearDownNcCsN|sd}|�|j���}tj��}t�t�	||��}ddl
m}|||�dS)Nzrevoke --cert-path={0} r)�revoke)rGr�rHrrIrJrrKrrLrMr�)rrNrOrPr�r r r!rQs

�zRevokeTest._call�#certbot.main._delete_if_appropriate�certbot.main.client.acme_clientcCs�d|_|��j}g}tj��D]l\}}d�|j|���}|�	|�|�
t�tj
|��d�|j|�����}|�	|�|�
t�tj
|��q|�||j�dS)NFz#revoke --cert-path={0} --reason {1})r�BackwardsCompatibleClientV2r�rZREVOCATION_REASONS�itemsrGr�rHrQ�appendrZcall�ANY�upperr�call_args_list)rr��mock_delete_if_appropriate�mock_revokeZexpected�reason�coderNr r r!�test_revoke_with_reasons

�
z"RevokeTest.test_revoke_with_reasonz'certbot.storage.cert_path_for_cert_namecCs2d��}|j|_d|_|�|�|j�|j�dS)Nzrevoke --cert-name=example.comF)rHr�rrQr�rSr�)rZmock_cert_path_for_cert_namer�rNr r r!�test_revoke_by_certname/s

z"RevokeTest.test_revoke_by_certnamecCs |��d|_|j�|j�dSrU)rQrr�rSr�)rr�r r r!�test_revocation_success9sz"RevokeTest.test_revocation_successcCs6ddlm}|��|j_|�|j|j�|j��dS)Nrr
)	�acmerZClientErrorr�rir[rQr��assert_not_called)rZacme_errorsr r r!�test_revocation_error?sz RevokeTest.test_revocation_error�certbot.cert_manager.deletecCs(d|�j_d|_|��|�|j�dSrU)rurrQrkr|)rrd�mock_deleter�r r r!�test_revocation_with_promptEs
z&RevokeTest.test_revocation_with_prompt)N)r#r$r%r&r4rErQrr6r�r�r�r�rarbr�r_r r r@r!r��s"

r�c@sHeZdZdZdd�Zdd�Ze��dd��Ze��dd	��Z	e
�d
�e
�d�e
�d�e
�d
�e
�d�e��dd�������Ze
�d
�e
�d�e
�d
�e
�d�e
�d�e��dd�������Z
e
�d
�e
�d�e
�d
�e
�d�e
�d�e��dd�������Ze
�d
�e
�d�e
�d
�e
�d�e
�d�e��dd�������ZdS)�DeleteIfAppropriateTestz.Tests for certbot.main._delete_if_appropriate cCsddlm}||�dS)Nr)�_delete_if_appropriate)rMr�)rr�r�r r r!rQRszDeleteIfAppropriateTest._callc	Cs>t�d��}|�|j�W5QRX|��|�|�jj�dS)Nr�)rr6rQrPr�rs�add_messager|)rrdr�r r r!�_test_delete_opt_out_commonVsz3DeleteIfAppropriateTest._test_delete_opt_out_commoncCsd|j_|�|�dSrU)rP�delete_after_revoker��rrdr r r!�test_delete_flag_opt_out\sz0DeleteIfAppropriateTest.test_delete_flag_opt_outcCs|�}d|j_|�|�dSrU)rurr�)rrd�	util_mockr r r!�test_delete_prompt_opt_outasz2DeleteIfAppropriateTest.test_delete_prompt_opt_outz)certbot.storage.renewal_file_for_certnamer�z-certbot.cert_manager.match_and_check_overlapsz!certbot.storage.full_archive_pathz)certbot.cert_manager.cert_path_to_lineagecCs8|j}d|_d|_d|_t��|_|�|�|��dS)N�/some/reasonable/path�rp)	rP�	cert_pathr�rrZOverlappingMatchFoundrirQr�)rrd�mock_cert_path_to_lineage�mock_archive�mock_match_and_check_overlapsr��mock_renewal_file_for_certnamerPr r r!�test_overlapping_archive_dirshs

z5DeleteIfAppropriateTest.test_overlapping_archive_dirscCs:|j}d|_d|_d|_d|_|�|�|�|jd�dS)Nr�r�rpFr-)rPr�r�rrQrrt)rrdr�r�r�Zmock_overlapping_archive_dirsr�rPr r r!�test_cert_path_only|s

z+DeleteIfAppropriateTest.test_cert_path_onlycCsH|j}d|j_d|_d|_d|_d|_d|_|�|�|�|jd�dS�NTr�r�rpr-)	rP�	namespaceZnoninteractive_moder�r�rrQrrt�rrdr�r�Zmock_full_archive_dirr�r�rPr r r!�test_noninteractive_deletion�s

z4DeleteIfAppropriateTest.test_noninteractive_deletioncCsX|j}d|j_d|_d|_d|_d|_d|_|�|�|�|jd�|�	|�j
j�dSr�)rPr�r�r�r�rrQrrtrkrur|r�r r r!�test_opt_in_deletion�s

z,DeleteIfAppropriateTest.test_opt_in_deletionN)r#r$r%r&rQr�rarbr�r�rr6r�r�r�r�r r r r!r�OsF


r�csdeZdZdZ�fdd�Zdd�Zdd�Zdd	�Ze�	d
�dd��Z
e�	d
�dd��Zdd�Z�Z
S)�DetermineAccountTestz*Tests for certbot.main._determine_account.csbtt|���d|j_d|j_d|j_tjdd�tjdd�g|_	t�
�|_t��|_d|jj
_dS)NF�x)�id�y�hi)r3r�r4rPr�emailZregister_unsafely_without_emailrr��accsZAccountMemoryStorage�account_storage�mock_client�	directoryZ	new_authzr?r@r r!r4�s

zDetermineAccountTest.setUpc
Cs@ddlm}t�d�� }|j|_||j�W5QR�SQRXdS)Nr)�_determine_accountz'certbot.main.account.AccountFileStorage)rMr�rr6r�rrP)rr�Zmock_storager r r!rQ�szDetermineAccountTest._callcCsn|j�|jd|j�|jdj|j_|�|jddf|���|�|jdj|jj�|�	|jj
dk�dS)Nr-)r��saver�r�r�rPrrrQrsr�r?r r r!�test_args_account_set�s
z*DetermineAccountTest.test_args_account_setcCs^|j�|jd|j�|�|jddf|���|�|jdj|jj�|�	|jj
dk�dS)Nr)r�r�r�r�rrQr�rPrrsr�r?r r r!�test_single_account�sz(DetermineAccountTest.test_single_accountz)certbot.client.display_ops.choose_accountcCs�|jD]}|j�||j�q|jd|_|�|jddf|���|�t|jdd�t|j��|�|jdj	|j
j�|�|j
j
dk�dS)Nr-r)r�r�r�r�rrrQ�set�	call_argsr�rPrrsr�)rZmock_choose_accountsr�r r r!�test_multiple_accounts�s
�z+DetermineAccountTest.test_multiple_accountsz$certbot.client.display_ops.get_emailc	Cs�d|_t�d��:}|jdtjjf|j_|�|jdtjjf|���W5QRX|jj	|j
|jtjd�|�|jdj
|j
j�|�d|j
j�dS)Nzfoo@bar.baz�certbot.main.clientr)Ztos_cb)rrr6r��sentinelr��registerrrQrSrPr�r�r�rr�)rZmock_get_email�clientr r r!�test_no_accounts_no_email�s�(�z.DetermineAccountTest.test_no_accounts_no_emailc	Cshd|j_t�d��$}|jdtjjf|j_|�	�W5QRX|�
|jdj|jj�|�
d|jj�dS)Nzother emailr�r-)
rPr�rr6r�r�r�r�rrQrr�r)rr�r r r!�test_no_accounts_email�sz+DetermineAccountTest.test_no_accounts_email)r#r$r%r&r4rQr�r�rr6r�r�r�r_r r r@r!r��s



r�csDeZdZdZ�fdd�Z�fdd�Zd�dd	�Zd�d
d�Zdd
�Zdd�Z	dd�Z
e�d�dd��Z
e�d�e�d�e�d�e�d�e�d�e�d�dd�������Ze�d�e�d�dd���Ze�d �e�d�e�d�d!d"����Ze�d�e�d �e�d�e�d�d#d$�����Ze�d�e�d�d%d&���Ze�d�e�d�e�d'�e�d �d(d)�����Ze�d�e�d�e�d*�d+d,����Ze�d�d-d.��Zd/d0�Ze�d1�d2d3��Ze�d4�d5d6��Ze�d7�d8d9��Ze�d:�d;d<��Ze�d�d=d>��Ze�d?�e�d@�dAdB���Ze�d?�e�d@�dCdD���Ze�d?�e�d@�dEdF���Ze�d?�e�d@�dGdH���ZdIdJ�Z dKdL�Z!dMdN�Z"dOdP�Z#dQdR�Z$dSdT�Z%dUdV�Z&d�dWdX�Z'e(�)�dYdZ��Z*e�d[�e(�)�d\d]���Z+d^d_�Z,ddd`dde-j-�.�dfdadb�Z/e�d[�dcdd��Z0e�de�e�d[�dfdg���Z1dhdi�Z2djdk�Z3dldm�Z4e�dn�dodp��Z5e�dq�drds��Z6e�dq�dtdu��Z7e�dv�dwdx��Z8e�d�dydz��Z9d{d|�Z:d}d~�Z;dd��Z<d�d��Z=d�d��Z>d�d��Z?d�d�d��Z@d�d��ZAd�d��ZBd�d��ZCd�d��ZDd�d��ZEe�d��d�d���ZFd�d��ZGd�d��ZHd�d��ZId�d��ZJd�d��ZKd�d��ZLe(�)�e�d��e�d��d�d�����ZMd�d�d��ZNd�d��ZOd�d��ZPe�d��e�d��d�d����ZQd�d��ZRe�d��e�d�d�d����ZSe�d�d�d���ZTd�d��ZUd�d��ZVd�d��ZWe�d��e(�)�d�d����ZXe�d��e(�)�d�d����ZYe�d��e�d��d�d��ZZ�Z[S)��MainTestzTests for different commands.csPtt|���t�|jj�d|jjd|jjd|jjdg|_	t
�d���|_
dS)Nz--config-dirz
--work-dirz
--logs-dirz--textz
time.sleep)r3r�r4r�mkdirrP�logs_dir�
config_dir�work_dir�
standard_argsrr6r8�
mock_sleepr?r@r r!r4s�zMainTest.setUpcstt�tt|���dSrB)rrr3r�rEr?r@r r!rEszMainTest.tearDownNFc	s�|r~tjj��fdd�}t�d��T}||_t�d��8}|�||�\}}}||||fW5QR�W5QR�SQRXW5QRXn<t�d��,}|�||�\}}}||||fW5QR�SQRXdS)zaRun the cli with output streams, actual client and optionally
        os.path.isfile() mocked outcs*|�d�s|�d�s|�d�r"dS�|�S)zMock os.path.isfile()�cert�chain�privkeyT)�endswith)�fnrN�kwargs�Z	orig_openr r!�mock_isfiles
��z#MainTest._call.<locals>.mock_isfilezcertbot.compat.os.path.isfiler�N)rr��isfilerr6ri�_call_no_clientmock)	rrN�stdout�
mockisfiler�Zmock_ifr�r�stderrr r�r!rQs6zMainTest._callcCs||j|}|r|nt��}tjd|d��Dt�d��.}t�d��t�|dd��}W5QRXW5QRXW5QRX|||fS)z-Run the client with output streams mocked out�certbot.main.sys.stdout��new�certbot.main.sys.stderrzcertbot.util.atexitN)r��six�StringIOrr6r
)rrNr�Z
toy_stdoutr�rr r r!r�*s
0zMainTest._call_no_clientmockc	Cs2t�d��}|�g�|�d|j�W5QRXdS)Nzcertbot.main.runr-)rr6rQrrt)r�mock_runr r r!�
test_no_flags5s
zMainTest.test_no_flagscCs�t��}t��}tjd|d��ttjd|d��Zz*zt�dg�Wntk
rVYnXW5|��pj|��}|�d|kd�|��XW5QRXW5QRXdS)Nr�rr�certbotz
Output is {0}z	--version)	rrrr6�getvaluersrGr
�
SystemExit)rZtoy_outZtoy_err�outputr r r!� test_version_string_program_name:s
z)MainTest.test_version_string_program_namec
Cs�d}z2t�d��t�|j|dd��W5QRXWn:tjk
rp}z|}|�|t|�k�W5d}~XYnX|�|dk	�dS)zQEnsure that a particular error raises a missing cli flag error containing messageNr)rr6r
r�rZMissingCommandlineFlagrs�str)rrNrl�excZexc_r r r!�_cli_missing_flagGs&$zMainTest._cli_missing_flagz certbot.log.post_arg_parse_setupcCs4ddg}|�|d�|�dddg�|�|d�dS)Nz-nrfzspecify a plugin�--standalone�-dzeg.iszregister before running)r�extend�r�_rNr r r!�test_noninteractiveRszMainTest.test_noninteractiver+z&certbot.main.client.acme_client.Clientr�z8certbot.main.client.Client.obtain_and_enroll_certificater(c
	Cs�dddddddg|j}t��df|_t��|_t�d��b}|�|�t��}	|jd	d
}
|�	|	|
k�ddl
}|�
�}d|��kr�|�	t��|
k�W5QRXt�d��6}d
}
|d|
g7}|�|�|jtj
tj
d|
d�W5QRXdS)Nrrfz-mz
none@none.comrrpz--agree-tosz-certbot.main.client.acme_client.ClientNetworkr-�
user_agentrZlinuxZbandersnatchz--user-agentT)rZ
verify_sslr)r�rr�rr6r�rZget_os_info_uar�rs�platform�lowerrSr�)
rZgscZ_obtZdetZ_clientr�__rNZacme_netZos_verZuarZplatr r r!�test_user_agentYs2	��


�zMainTest.test_user_agent�+certbot.main.plug_sel.record_chosen_plugins�$certbot.main.plug_sel.pick_installerc
Cs2|jddddddddd	g	d
d�|�|jd�dS)
N�installz	--domains�foo.bar�--cert-pathr��
--key-pathr��--chain-pathr�T�r�r-)rQrrt)rZmock_pick_installer�_recr r r!�test_installer_selectionxs��z!MainTest.test_installer_selectionzcertbot.main._install_certc	Cs�tjt�d�t�d�t�d�t�d�d�}t�d��j}||_|jdddgd	d
�|jdd}|�|j	t�d��|�|j
t�d��|�|jt�d��W5QRXdS)Nr�r�r��r��
chain_path�fullchain_path�key_pathrnr�--cert-name�whateverTr!r)rr�ra�	temp_joinr6rrQr�rr�r&r')r�_instr"�mock_installr�mock_getlin�call_configr r r!�test_installer_certnames�z MainTest.test_installer_certnamec	Cs6tjt�d�t�d�t�d�t�d�d�}t�d���}||_|jdddd	t�d
�gdd�|jd
d
}|�|j	t�d��|�|j
t�d��|�|jt�d��|�|jt�d
��|�
�|jddddt�d�gdd�|jd
d
}|�|j	t�d��|�|j
t�d��|�|jt�d��W5QRXdS)Nr�r�r�r$rnrr(r)rZoverriding_privkeyTr!rrZoverriding_cert)rr�rar*r6rrQr�rr�r&r%r'�reset)rr+r"r,rrr-r.r r r!�test_installer_param_override�s:�
��
��z&MainTest.test_installer_param_overridec	Cs |�tj|jdddddg�dS)Nrr(ZnotfoundrZinvalid�r[rrvrQ)rr+r"r r r!�test_installer_param_error�s��z#MainTest.test_installer_param_error�"certbot.cert_manager.get_certnamesc	Csrtjt�d�t�d�t�d�t�d�d�}t�d��}||_|jdgdd�W5QRX|�|j�|�|j�dS)	Nr�r�r�r$rnrTr!)	rr�rar*r6rrQrsr|)r�	mock_instZmock_getcertr+r"rr-r r r!�test_installer_select_cert�s�z#MainTest.test_installer_select_certzcertbot.util.exe_existsc
Cs$d|_tj��}dddg}dddt�d�d	t�d�d
ddd
dg}d|krv|�|�\}}}}|�d|k�|�d|k�|�dgd�t	�
d��Z}t	�
d��D}t	��|_|�ddddg�|jd\}	}
}|�t
|
tj��W5QRXW5QRXt	�
d��"}|�ddg�|�d|j�W5QRXdS)NTz--apachez--authenticator�
standalonerz--nginxrZblahrz--nginx-server-rootz/nonexistent/thingrrp�--debugZnginxzThe nginx plugin is not working�MisconfigurationErrorrz(With the standalone plugin, you probablyr)r(rfz--manualrr�certbot.main.certonly�authr-)rrrIrJrar*rQrsrrr6r�r��
isinstancerZ
Authenticatorrrt)
rZmock_exe_existsrrZreal_pluginsrNrr<Zmock_gscZ
unused_configr;Zunused_installer�
mock_certonlyr r r!�test_configurator_selection�s6


�
&z$MainTest.test_configurator_selectioncCsX|�dg�\}}}}|�d|jj�|�dddg�\}}}}|j�tjdtjtj�dS)N�rollbackr-z
--checkpointsZ123�{)rQrr?rtrSrr��rrr�r r r!�
test_rollback�s�zMainTest.test_rollbackcCs(|�dg�\}}}}|�d|jj�dS)N�config_changesr-)rQrZview_config_changesrtrAr r r!�test_config_changes�szMainTest.test_config_changeszcertbot.main.logger.warningcCs6|�dg�|�|j�|jdd}|�d|�dS)NrCrz-config_changes subcommand has been deprecated)rQrsr|r�ZassertIn)rZmock_warning�msgr r r!�test_config_changes_deprecation�sz(MainTest.test_config_changes_deprecationz)certbot.cert_manager.update_live_symlinkscCs|�dg�|�d|j�dS)NZupdate_symlinksr-�r�rrt�rZmock_cert_managerr r r!�test_update_symlinks�szMainTest.test_update_symlinksz!certbot.cert_manager.certificatescCs|�dg�|�d|j�dS)NZcertificatesr-rGrHr r r!�test_certificatesszMainTest.test_certificatesr�cCs|�dg�|�d|j�dS)N�deleter-rGrHr r r!�test_delete	szMainTest.test_deletecsNddddg�tj�fdd�tj�t���D��D]}|�dgt|��q0dS)N�--init�	--preparez--authenticatorsz--installersc3s|]}t��|�VqdSrB)�	itertools�combinations)�.0r���flagsr r!�	<genexpr>s�z(MainTest.test_plugins.<locals>.<genexpr>rO)rOr�rZmoves�range�lenrQ�listrr rRr!�test_pluginss
��zMainTest.test_pluginszcertbot.main.plugins_discoz<certbot.main.cli.HelpfulArgumentParser.determine_help_topicsc	Cs�g}|j��}t��}tj|d��|�dg|�\}}}}W5QRX|j��|��j	�|�|���	�}|�
|����t
|��dS)N�r�rO)rIrJrrra�patch_get_utility_with_stdoutrQ�visiblerS�ifacesrr�stripr)r�_det�
mock_discor\rOr�r�filteredr r r!�test_plugins_no_argss
 
zMainTest.test_plugins_no_argsc

Cs�g}|j��}dd�}t��}t�d��:}tj|d��"||_|�	dg|�\}}}}W5QRXW5QRX|j
��|�
�j�|�|�
���}	|�
|����t|	��dS)NcSs|||}}}t���dS)zRaises error.Error.N)rr�)r��mode�strictrr r r!�throw_error+sz?MainTest.test_plugins_no_args_unprivileged.<locals>.throw_errorzcertbot.util.set_up_core_dirrYrO)rIrJrrrr6rarZrirQr[rSr\rrr]r)
rr^r_r\rOrdr�Zmock_set_up_core_dirrr`r r r!�!test_plugins_no_args_unprivileged%s
*
z*MainTest.test_plugins_no_args_unprivilegedc		Cs�g}|j��}t��}tj|d��|�ddg|�\}}}}W5QRX|j��|��j	�|�|���	�}|�
|jjd�|j
�|�|�
�}|�
|����t|��dS)NrYrOrMr-)rIrJrrrarZrQr[rSr\r�initrt�verifyrr]r)	rr^r_r\rOr�rr`�verifiedr r r!�test_plugins_init;s
"
zMainTest.test_plugins_initc
	Cs�g}|j��}t��}tj|d�� |�dddg|�\}}}}W5QRX|j��|��j	�|�|���	�}|�
|jjd�|j
�|�|�
�}|j��|j��|��}	|�
|����t|	��dS)NrYrOrMrNr-)rIrJrrrarZrQr[rSr\rrfrtrgZprepare�	availablerr]r)
rr^r_r\rOr�rr`rhrjr r r!�test_plugins_prepareMs
$


zMainTest.test_plugins_preparecCs�d}d}d}d}t�d��"}|�dd|ddd	dd
dg	�W5QRX|jd\}}|�|jtj�|��|�|j	tj�|��|�|j
tj�|��|�|jtj�|��dS)Nr��keyr��	fullchainr:rfrrr z--fullchain-pathr)rr6rQr�rr�rr�r�r'r%r&)rr�rlr�rmr=rP�unused_pluginsr r r!�test_certonly_abspathbs �zMainTest.test_certonly_abspathc
Cs\z |�dddg�dstd��Wn6tjk
rV}z|�dt|�k�W5d}~XYnXdS)N�-aZbad_authrfFz!Exception should have been raisedz-The requested bad_auth plugin does not appear)rQ�AssertionErrorr�PluginSelectionErrorrsr�r�er r r!�test_certonly_bad_argsss
zMainTest.test_certonly_bad_argscCsF|�tj|jddg�|�tj|jddg�|�tj|jddg�dS)NrZ@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.z
204.11.231.35r2r?r r r!�test_check_config_sanity_domainzs���z(MainTest.test_check_config_sanity_domaincCs |�tj|jd�t����dS)Nz*certonly --csr {0} --allow-subset-of-names�r[rr�rQrG�CSRrHr?r r r!�test_csr_with_besteffort�s
�z!MainTest.test_csr_with_besteffortc
Cs^z|�dtg�Wn:tjk
rL}zdt|�ks6t�WY�dSd}~XYnXdsZtd��dS)Nz--csrzPlease try the certonlyFz2Expected supplying --csr to fail with default verb)rQrxrr��reprrqrsr r r!�test_run_with_csr�szMainTest.test_run_with_csrc	Cs&|�tj|jd�t�d�����dS)Nzcertonly --csr {0}zcsr-nonames_512.pem)r[rr�rQrGra�vector_pathrHr?r r r!�test_csr_with_no_domains�s��z!MainTest.test_csr_with_no_domainscCs |�tj|jd�t����dS)Nz!certonly -d example.org --csr {0}rwr?r r r!�"test_csr_with_inconsistent_domains�s
�z+MainTest.test_csr_with_inconsistent_domainsc
Cs^t�d��J}d|_t�d��.}||_|dkr0g}|d��7}|�|�W5QRXW5QRXdS)N�3certbot.main._find_lineage_for_domains_and_certname)ZnewcertNr)z!-d foo.bar -a standalone certonly)rr6rrHrQ)rr�rN�mock_renewalr<r r r!�_certonly_new_request_common�sz%MainTest._certonly_new_request_commoncCs`t��}d|j_|�|dg�|�|jjd�|�d|�jj	ddk�|�|�jjd�dS�N�	--dry-runr-�dry runr)
rr��obtain_and_enroll_certificaterr�rrtrsr�r�)rrdr�r r r!�)test_certonly_dry_run_new_request_success�s��z2MainTest.test_certonly_dry_run_new_request_successzcertbot.crypto_util.notAfterc	Cs�tj�tj�|jjd��}tj�tj�|jjd��}d}||�j_tj	||||d�}t�	�}||j
_|�|�|�|j
j
d�|�jjddd}|�||k�|�||k�|�||k�|�d|�jjddk�dS)Nzlive/foo.barzlive/baz.quxz
1970-01-01)r�rmr&r'r-r�donate)rr��normpathr�rPr��daterrr�r�r�rrtr�r�rsr�)	rrdZ
mock_notAfterr�r'r�rr��cert_msgr r r!�!test_certonly_new_request_success�s,
�
��z*MainTest.test_certonly_new_request_successcCs&t��}d|j_|�tj|j|�dSrU)rr�r�rr[rr�r�)rr�r r r!�!test_certonly_new_request_failure�s�z*MainTest.test_certonly_new_request_failureTc
s�t�d�}
tj�tj�|jjd��}tj	|
||
|d�}||j
_d|j_dg|j
_t�	�}
tj	dd�}t�	�}t���|
d|d	f|j_�fd
d�}�z��z�t�d
���"}|df|_t�d���}||_t����}|s�||�j_t�d���}t�	�}d|j_||jj_t�d���}||j_|�s*dddddg}|�r8||7}z>|�|��\}�}}|�rftd|�t|��|�rttd��Wn"|�s�tdt �!���YnXW5QRXW5QRXW5QRXW5QRXW5QRX|�r|	�r|j�"dgtj�tj�|jjd���n|j�"dgd�n|�#|jj$d�Wn|�%��YnXW5|�rzttj�|jjd���}|�||��k�W5QRXX||�fS)Nrzlive/foo.bar/fullchain.pem)r�rmr�r&Fz	isnot.orgZpem_key)Zpemr�Zcsrcs��|�dS)zWrite message to stdout.N)�write)rlrNr�rYr r!�	write_msg�sz0MainTest._test_renewal_common.<locals>.write_msg�letsencrypt.logz+certbot.cert_manager.find_duplicative_certsr)zcertbot.main.renewal.OpenSSLz	Fake fakez certbot.main.renewal.crypto_utilrrpr7rfZReturnedzrenewal should have erroredzUnexpected renewal error:
zlive/sample-renewal/privkey.pemr)&rar|rr�r�r�rPr�rr�Zshould_autorenewrZhas_pending_deploymentrrrr�obtain_certificater�r�rsr�r6rbrgriZ
get_issuerZcryptoZload_certificateZnotAfterrQ�printrq�	traceback�
format_excrSrrt�	_dump_log)r�due_for_renewal�
extra_args�log_outrN�should_renew�error_expected�
quiet_mode�expiry_date�	reuse_keyr�r%rZ
mock_certrZmock_keyr�r��lfZmock_fdcr<rdZmock_sslZmock_latestZmock_crypto_utilrrr rYr!�_test_renewal_common�s�
��
�




��<
��zMainTest._test_renewal_commoncCsv|�dg�\}}}|�|jjd�|j�|���|�jjddd}|�	d|k�|�	d|�jj
ddk�dS)NTr-r�
fullchain.pemr�)r�rZsave_successorrtZupdate_all_links_torSZlatest_common_versionr�r�rsr�)rrZlineage�get_utilityr�r r r!�test_certonly_renewals�zMainTest.test_certonly_renewalz;certbot.log.logging.handlers.RotatingFileHandler.doRollovercCs�|jdddgdd�\}}}|�|�jjd�|�d|�jjddk�|jdd	d
dgdd�|�|�jjd�|jdd
ddgd
dd�dS)NFr�z--keepzsimulating renewal)r�r-r�rz--renew-by-default�-tvvr8zAuto-renewal forcedznot yet due)r�r�)r�rr�rtrsr�)rrrr�r r r!�test_certonly_renewal_triggers(s���z'MainTest.test_certonly_renewal_triggersc	CsJtd�tj�|jjd�}tj�|�rFt|��}t|���W5QRXdS)NzLogs:r�)	r�rr�r�rPr��existsr�r�)rZlog_pathr�r r r!r�8s

zMainTest._dump_logcCs0t�|jjd�dddg}|jdg|dd�dS)N�sample-renewal.conf�renewr�r�T�rNr��ra�make_lineagerPr�r��rrNr r r!�test_renew_verb?s
zMainTest.test_renew_verbcCs2t�|jjd�dddg}|jdg|ddd�dS)Nr�r�r��--reuse-keyT�rNr�r�r�r�r r r!�test_reuse_keyDs
zMainTest.test_reuse_keyz,certbot.storage.RenewableCert.save_successorcCs0t�|jjd�ddg}|jdg|ddd�dS)Nr�r�r�Tr�r�)rZunused_save_successorrNr r r!�test_reuse_key_no_dry_runIsz"MainTest.test_reuse_key_no_dry_runz	sys.stdincCsvd|j_t�|jjd�dddg}|jdg|dd�|�|jj	d�|jj
d	d	}|�d|kojd
kn�dS)NFr�r�r�r�Tr�r-ri�)�isattyrrar�rPr�r�rr�rtr�rs)r�stdinrNZsleep_call_argr r r!�!test_noninteractive_renewal_delayOs
z*MainTest.test_noninteractive_renewal_delaycCsHd|j_t�|jjd�dddg}|jdg|dd�|�|jj	d�dS)NTr�r�r�r�r�r)
r�rrar�rPr�r�rr�rt)rr�rNr r r!�!test_interactive_no_renewal_delay[s

z*MainTest.test_interactive_no_renewal_delayzcertbot.renewal.should_renewcCspd|_t�|jjd�tj��tjdd�}|jddddg|d�\}}}|�	d|�
�k�|�	d|�
�k�dS)	NFr��Z)Zdaysr�)r�r�rNr�zNo renewals were attempted.z0The following certs are not due for renewal yet:)rrar�rPr�r��nowZ	timedeltar�rsr)rr�Zexpiryrr�r r r!�test_renew_skips_recent_certscs
�z&MainTest.test_renew_skips_recent_certscCs�t�|jjd�ddg}|jdg|dd�\}}}|��}|�d|k�dddg}|jdg|ddd�\}}}|��}|�d|�dS)	Nr�r�r�Tr�z-q)rNr�r�r�)rar�rPr�r�rrsr)rrrNr��outr r r!�test_quiet_renewms

�zMainTest.test_quiet_renewcCs2t�|jjd�dddg}|jdg|ddd�dS)Nr�r�r��--post-hook=no-such-commandTF�rNr�r�r�r�r r r!�test_renew_hook_validation{s

�z#MainTest.test_renew_hook_validationc	CsJt�|jjd�ddddg}t�d��|jdg|ddd	�W5QRXdS)
Nr�r�r�r�z--disable-hook-validationzcertbot.hooks.post_hookTFr�)rar�rPr�rr6r�r�r r r!�test_renew_no_hook_validation�s��z&MainTest.test_renew_no_hook_validationc	Csjtj�|jjd�}tj�|�s(t�|�ttj�|d�d��W5QRXdddg}|j	dg|ddd	�dS)
N�renewalz
empty.conf�wr�r�r�FTr�)
rr�r�rPr�r�r�makedirsr�r�)rZrdrNr r r!�test_renew_verb_empty_config�s


z%MainTest.test_renew_verb_empty_configcCs.t�|jjd�|jdgdddddgd�dS)Nr�Tr�r�r(�sample-renewal)r�rNr�r?r r r!�test_renew_with_certname�s

�z!MainTest.test_renew_with_certnamecCs |jdgdddddgdd�dS)NTFr�r�r(r�)r�rNr�)r�r?r r r!�test_renew_with_bad_certname�s

�z%MainTest.test_renew_with_bad_certnamec	CsJtj�|jjd�}t�|�ttj�|d�d��}|�d�W5QRXdS)Nr�z	test.confr�zMy contents don't matter)	rr�r�rPr�rr�r�r�)rZrenewer_configs_dirr�r r r!�_make_dummy_renewal_config�s
z#MainTest._make_dummy_renewal_configc
Ks�|��t�d���}t��}d|_|dk	r4d|i|_|dk	rD||j_||_t�d��(}|�ddg�|j	d
dd	i|��W5QRX|dk	r�|r�|�
|j�n|�|j�W5QRXdS)N�certbot.storage.RenewableCertzsomepath/fullchain.pem�
renewalparams�certbot.main.renew_certrNr�Tr�F)TN)
r�rr6r�rmrrrr�
setdefaultr�rsr|rk)rr�rr�assert_oc_calledr��mock_rcrrwr r r!�_test_renew_common�s 
zMainTest._test_renew_commoncCs|jddd�dS)NFT�r�r��r�r?r r r!�test_renew_no_renewalparams�sz$MainTest.test_renew_no_renewalparamscCs|jiddd�dS)NFT)r�r�r�r�r?r r r!�test_renew_no_authenticator�s�z$MainTest.test_renew_no_authenticatorcCsddd�}|j|ddd�dS)N�webrootz	over 9000)�
authenticatorZrsa_key_sizeTF)r�r�r�r��rr�r r r!�test_renew_with_bad_int�s��z MainTest.test_renew_with_bad_intcCsddd�}|j|dd�dS)Nr��None)r�Zhttp01_portT�r�r�r�r�r r r!�test_renew_with_nonetype_http01�s��z(MainTest.test_renew_with_nonetype_http01cCs$ddi}dg}|j|d|dd�dS)Nr�r�u
uniçodé.comTF)r�r�rrr�r�)rr�rrr r r!�test_renew_with_bad_domain�s�z#MainTest.test_renew_with_bad_domainz5certbot.plugins.selection.choose_configurator_pluginscCs2t��t��f|_ddi}|j|dd��d�dS)Nr�r�Tzrenew --configurator apache�r�r�rN)rr�rr�rH)rZmock_selr�r r r!�test_renew_with_configurator�s�z%MainTest.test_renew_with_configuratorcCsdddd�}|j|dd�dS)Nr�r�Z42)r�Zwebroot_pathZwebroot_imaginary_flagTr�r�r�r r r!�$test_renew_plugin_config_restoration�s��z-MainTest.test_renew_plugin_config_restorationc
Cs0ddi}|j|dddt�dt��i�gd�dS)Nr�r�Tr�z
--webroot-maprpr�)r��json�dumps�tempfileZ
gettempdirr�r r r!�test_renew_with_webroot_map�s�z$MainTest.test_renew_with_webroot_mapc	Cs.t�d��}t|_|jddd�W5QRXdS)Nz"certbot.main.renewal._reconstituteFTr�)rr6�	Exceptionrir�)rZmock_reconstituter r r!�test_renew_reconstitute_error�sz&MainTest.test_renew_reconstitute_errorc
Csv|��t�d��Z}t��}d|_||_dddii|_t�d��"}t|_|j	ddddgd	d
�W5QRXW5QRXdS)Nr�zsomewhere/fullchain.pemr�r�r�r�Tr�F)r�rNr�)
r�rr6r�rmrrr�rir�)rr�rrwr r r!�test_renew_obtain_cert_error�s�
�z%MainTest.test_renew_obtain_cert_errorcCs:|jddd��ddd�|jddd�t���ddd�dS)NTzrenew -d example.comFr�zrenew --csr {0})r�rHrGrxr?r r r!�test_renew_with_bad_cli_args�s��z%MainTest.test_renew_with_bad_cli_argsc	Cs<|jdddddd�tj�gd�\}}}|�d|��k�dS)NFr�z--post-hookzE{0} -c "from __future__ import print_function; print('hello world');")r�r�r�rNzNo hooks were run.)r�rG�sys�
executablersr)rrr�r r r!�test_no_renewal_with_hooks�s���z#MainTest.test_no_renewal_with_hooksrr)cCsbdt��f|_t��|_}|�dddddg�|�|jj�|�|jj�|�|�j	j
d�dS)Nrrrrpr7rfr)rr�rrQrkr�r|r�rr�rt)rr<r�rdr�r r r!�test_certonly_reinstallsz MainTest.test_certonly_reinstallcCsd}d}t��}||f|j_tj�tj�|jj	d��}tj�tj�|jj	d��}|d|f|j
_t�d��z}||_t�
��`}tj�tj�|jj	d��}	d�t||	|���}
|r�|
|7}
t�d��|�|
�W5QRXW5QRXW5QRXd	|
k�r|�|j
j�n|j
�||||	|�|S)
N�certrr�zlive/example.com/cert_512.pemzlive/example.com/fullchain.pemr)zlive/example.com/chain.pemzV-a standalone certonly --csr {0} --cert-path {1} --chain-path {2} --fullchain-path {3}zcertbot.main.crypto_utilr�)rr�Zobtain_certificate_from_csrrrr�r�r�rPr�Zsave_certificater6rarbrGrxrHrQrkr|rS)rr�r�r�r�r��	full_pathr<rdr%rNr r r!�_test_certonly_csr_commonsP��
��(
�z"MainTest._test_certonly_csr_commoncCsZ|��}|�jjddd}|�d|k�|�d|k�|�d|�jjddk�dS)Nrr�zYour key file has been saved atr�)r�r�r�rsrkr�)rrdr�r r r!�test_certonly_csr4s�zMainTest.test_certonly_csrcCs>|�dg�}|�|�jjd�|�d|�jjddk�dSr�)r�rr�rtrsr�r�r r r!�test_certonly_csr_dry_run<s
�z"MainTest.test_certonly_csr_dry_runr�r�c	Cs�d|_d}|�dtdtd|dg�ttd��$}|j�tjt	j
�|���|�W5QRXttd��6}t
�|���d}|��j}|�t	�|�tj�W5QRXdS)	NFrrr�--serverr��rbr)rr��SS_CERT_PATH�RSA2048_KEY_PATHr�r�rSrr��joser��loadr�r	�pyopenssl_load_certificater��ComparableX509)rr�r��serverr�r�r�r r r!�test_revoke_with_keyBs(��
�zMainTest.test_revoke_with_keycCs(d}|�tj|jdtdtd|dg�dS)Nrrrr�r�)r[rr�r��CERT�KEY)rr�r r r!�test_revoke_with_key_mismatchTs��z&MainTest.test_revoke_with_key_mismatchc	Cstd|_t��df|_|�dtdg�\}}}}tt��6}t�|���d}|�	�j
}|�t�
|�tj�W5QRXdS)NFrr�r)rrr�rQr�r�r	r�r�Zacme_from_config_keyr�rSr�r�r�)rr�r�rr�r�r�r�r r r!�test_revoke_without_keyZs

�z MainTest.test_revoke_without_keyc
Cs�t�d���}t��}d|_|df|j_|�dddg�t�d��B}t��}||j_dg|j_|�dddg�}|�	d	|d
k�W5QRXW5QRXdS)Nr�Zimaginary_accountZworkedr��--email�user@example.org�certbot.main.account�
an accountzThere is an existing accountr)
rr6r�r�r�rr��AccountFileStoragerJrs)rr�
mocked_clientr��mocked_account�mocked_storager�r r r!�
test_registerhs
zMainTest.test_registerc	CsTt�d��@}t��}||j_g|j_|�dddg�}|�d|dk�W5QRXdS)Nr��update_accountr�r��"Could not find an existing accountr�rr6r�r�rrJr�rs�rrrr�r r r!�(test_update_account_no_existing_accountsys��z1MainTest.test_update_account_no_existing_accountsc	CsVt�d��B}t��}||j_g|j_|�ddddg�}|�d|dk�W5QRXdS)Nr�r��--update-registrationr�r�rrrrr r r!�8test_update_registration_no_existing_accounts_deprecated�s��zAMainTest.test_update_registration_no_existing_accounts_deprecatedc	CsTt�d��@}t��}||j_dg|j_|�d���}|�d|dk�W5QRXdS)Nr�r�z@register --update-registration --register-unsafely-without-emailz!--register-unsafely-without-emailr)	rr6r�r�rrJr�rHrsrr r r!�,test_update_registration_unsafely_deprecated�s
�z5MainTest.test_update_registration_unsafely_deprecatedz"certbot.main.display_ops.get_emailcCsd}||_t�d���}t�d���}t�d���}t�d���}t��}||j_dg|j_t��df|_t��}	|	|j_|�dg�}
|�|
d	dk�|�|	j	j
j�|�|jj�|�||�j
jd	d	k�|�|j�W5QRXW5QRXW5QRXW5QRXdS)
N�user@example.com�certbot.eff.handle_subscriptionr�r�r�r��foorr)rrr6r�r�rJ�Clientr�rsr��update_registrationr|�	save_regrr�r�)r�mock_utility�
mock_emailr��mock_handle�
mocked_detrr�r�	cb_clientr�r r r!�test_update_account_with_email�s0
���z'MainTest.test_update_account_with_emailcCs"d}||_t�d���}t�d���}t�d���}t�d���}t��}||j_dg|j_t��}	|	j}
|	df|_t��}||j_|�dd	g�}|�	|d
dk�|j
jjd
d
}
|�
|
|
���|�	|jj�|�	||�jjd
d
k�|�	|j�W5QRXW5QRXW5QRXW5QRXdS)Nrrr�r�r�r�r
r�rr)rrr6r�r�rJr�rr�rsr�rr�r�updaterr|r�)rrrr�rrrr�rZmock_accZ	mock_regrrr�Zreg_argr r r!�.test_update_registration_with_email_deprecated�s2

��z7MainTest.test_update_registration_with_email_deprecatedzcertbot.updater._run_updaterscCsFtj|_|�tjtjddd�d|j_t�	|jdd�|�
|j�dSrU)rrrrir[r
Z
renew_certrPZdry_runrZrun_generic_updatersrkr|)rrr]r r r!�test_plugin_selection_error�s�z$MainTest.test_plugin_selection_error)NF)N)N)NNN)N)\r#r$r%r&r4rErQr�rrrrr6rrr#r/r1r3r6r>rBrDrFrIrJrLrXrarerirkrorurvryr{r}r~r�rarbr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr	r
rrrr_r r r@r!r��s8




%






	


�
K
	



	

	�


	
"


 r�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�UnregisterTestcCsDt�d�t�d�t�d�t��d�|_tdd�|j��D��|_dS)Nr�r�r�)r�rr�r�css|]\}}||��fVqdSrB)r8)rQ�k�vr r r!rT�sz'UnregisterTest.setUp.<locals>.<genexpr>)rr6rarb�patchers�dictr��mocksr?r r r!r4�s�zUnregisterTest.setUpcCs|j��D]}|��q
dSrB)r�valuesrCrDr r r!rE�szUnregisterTest.tearDowncCsRt��|jdj_|jd�}d|j_t��}t��}t�||�}|�|d�dS)Nrr�FzDeactivation aborted.)	rrrr�rrur
�
unregisterr)rr�rPrn�resr r r!�test_abort_unregister�sz$UnregisterTest.test_abort_unregistercCs�t��}dg|j_||jdj_t��df|jd_t��}||jdj_t��}t��}t�||�}|�	|dk�|�	|j
jj�d}|�	||jd�j
jddk�dS)	Nr�rr
r�r�zAccount deactivated.r�r)rr�rJrrr�rr
r!rsr��deactivate_registrationr|r�r��rrrrPrnr"�mr r r!�test_unregisters
zUnregisterTest.test_unregistercCstt��}g|j_||jdj_t��}||jdj_t��}t��}t�||�}d}|�	||�|�
|jjj
�dS)Nrr�z.Could not find existing account to deactivate.)rr�rJrrr�rr
r!rrkr�r$r|r%r r r!�test_unregister_no_accountsz)UnregisterTest.test_unregister_no_accountN)r#r$r%r4rEr#r'r(r r r r!r�s
rc@s"eZdZdZe�d�dd��ZdS)�MakeOrVerifyNeededDirsz2Tests for certbot.main.make_or_verify_needed_dirs.zcertbot.main.utilcCspt�|j�|jj|jjfD]}|j�|tj|jj	�q|jj
|jj|jjf}|D]}|j
j||jj	d�qRdS)N)rc)r
Zmake_or_verify_needed_dirsrPr�r�Zset_up_core_dirZassert_any_callrZCONFIG_DIRS_MODEZstrict_permissionsZrenewal_pre_hooks_dirZrenewal_deploy_hooks_dirZrenewal_post_hooks_dirZmake_or_verify_dir)rZ	mock_utilZcore_dirZ	hook_dirsZhook_dirr r r!�test_it0s ���zMakeOrVerifyNeededDirs.test_itN)r#r$r%r&rr6r*r r r r!r)-sr)cs�eZdZdZ�fdd�Zdd�Zdd�Ze�d�e�d	�e�d
�e�d�dd
�����Z	e�d�e�d	�e�d
�e�d�dd�����Z
e�d	�e�d
�e�d�dd����Ze�d	�e�d
�e�d�dd����Ze�d
�e�d�dd���Z
dd�Ze�d�e�d
�e�d�dd����Ze�d	�e�d
�e�d�e�d�e��dd������Ze�d	�e�d
�e�d�e�d�e��dd������Zd d!�Z�ZS)"�EnhanceTestzTests for certbot.main.enhance.cs8tt|���t��|_|j��|_tj	t
jd�|_dS�N)�spec)
r3r+r4rarbrcr8rdrr�r�AutoHSTSEnhancement�
mockinstallerr?r@r r!r4Es
zEnhanceTest.setUpcCs|j��dSrBrer?r r r!rEKszEnhanceTest.tearDowncCs�tj��}t�t�||��}t�d���}dg|_	t�d��h}dg|_	t�d��J}t�
�}||_||_	t�
||�|W5QR�W5QR�W5QR�SQRXW5QRXW5QRXdS)Nr4rpror))rrIrJrrKrrLrr6rr�rPr
�enhance)rrNrOrPZ
mock_certsZmock_domr<r�r r r!rQNs

�zEnhanceTest._callrrnz&certbot.main.display_ops.choose_valuesz&certbot.main._find_domains_or_certnamec	Cshtjdd�|_dg|_d|_t�d��8}|�ddg�|�|j�|�d|jd	d
k�W5QRXdS)N�/tmp/nonexistent�r%rp�NNrr0�
--redirectrrr/)rr�rr6rQrsr|r�)r�	mock_findr]rr"�	mock_pickr r r!�test_selection_question^sz#EnhanceTest.test_selection_questionc
Cs�tjdd�|_dg|_d|_t�d��`t�d��J}|�ddd	d
g�}|�|j�|�d|jddk�|�|jj�W5QRXW5QRXdS)
Nr1r2rpr3rz$certbot.main.plug_sel.logger.warningr0rpr�r4z
make senser)	rr�rr6rQrsr|r��enhance_config)rr5r]rr"Zmock_logr�r r r!�test_selection_auth_warninglsz'EnhanceTest.test_selection_auth_warningc	s�tjdd�|_dg|_t�d���|�dddg��dd	g}d
g}|��jj�|�t�fdd�|D���|�	t
�fd
d�|D���|�d�jjddk�W5QRXdS)Nr1r2rprr0r4�--hstsZredirectZhstsZuircsg|]}t�j|��qSr ��getattrrP�rQrt�r�r r!�
<listcomp>�sz8EnhanceTest.test_enhance_config_call.<locals>.<listcomp>csg|]}t�j|��qSr r;r=r>r r!r?�sr)rr�rr6rQrsr8r|�allrk�anyr�)rr"r]rZreq_enhZnot_req_enhr r>r!�test_enhance_config_call{s ���z$EnhanceTest.test_enhance_config_callc	Cs\tjdd�|_dg|_t�d��2|�ddddg�}|�|jj�|�|j�W5QRXdS)	Nr1r2rprr0r4r:z--non-interactive)	rr�rr6rQrsr8r|rk)rr"r]rr�r r r!�test_enhance_noninteractive�s��z'EnhanceTest.test_enhance_noninteractivec	Cs8g|_t�d��|�tj|jdddg�W5QRXdS)Nrr0r4r:)rrr6r[rr�rQ)rr"r]r r r!�test_user_abort_domains�s�z#EnhanceTest.test_user_abort_domainscCs|�tj|jdddg�dS)Nr0rpr)r[rr9rQr?r r r!�test_no_enhancements_defined�s�z(EnhanceTest.test_no_enhancements_definedrXcCs8dg|_d|_t��|_|�ddg�}|�|jj�dS)Nrpr3r0r:)rrrrrirQrkr8r|)rr"r]r6r�r r r!r�s

z'EnhanceTest.test_plugin_selection_errorrcCs`|j|_ddg|_tjdd�|_|�ddg�|�|jjj�|�|jjj	ddddg�dS)	Nrp�another.tldr1r2r0�--auto-hstsrr-)
r/rrr�rQrsZenable_autohstsr|rr��rrr"r5r]rr r r!�test_enhancement_enable�s
�z#EnhanceTest.test_enhancement_enablecCsBt�|jd�|_ddg|_tjdd�|_|�tj|j	ddg�dS)NrrprFr1r2r0rG)
rrYrPrrr�r[rr\rQrHr r r!�%test_enhancement_enable_not_supported�s
�z1EnhanceTest.test_enhancement_enable_not_supportedcCs|�tj|jdddg�dS)Nr0rGr:)r[rr�rQr?r r r!� test_enhancement_enable_conflict�s
�z,EnhanceTest.test_enhancement_enable_conflict)r#r$r%r&r4rErQrr6r7r9rBrCrDrErrarbrIrJrKr_r r r@r!r+BsV

	r+csXeZdZdZ�fdd�Ze�d�e�d�dd���Ze�d�e�d�dd	���Z�Z	S)
�InstallTestzTests for certbot.main.install.cs"tt|���tjtjd�|_dSr,)r3rLr4rr�rr.r/r?r@r r!r4�szInstallTest.setUprrcCsDt�|jd�|_tj��}d|j_d|j_|�	t
jtj
|j|�dS)NrTZnonexistent)rrYrPrrrIrJrZr�r[rr\r
r�rr5r"rOr r r!�&test_install_enhancement_not_supported�s
�z2InstallTest.test_install_enhancement_not_supportedcCsL|j|_tj��}d|j_d|j_d|j_d|j_	|�
tjt
j|j|�dS)NTr1)r/rrrIrJrPrZr�r'r�r[rrvr
rrMr r r!�$test_install_enhancement_no_certname�s
�z0InstallTest.test_install_enhancement_no_certname)
r#r$r%r&r4rr6rNrOr_r r r@r!rL�s	rL�__main__)Er&Z
__future__rr�rOr�r�r�r�r�ZunittestZjosepyr�rr�rZ	six.movesrZacme.magic_typingrZcertbot.tests.utilZtestsrrarrrrrr	rrr
rZcertbot.compatrrZcertbot.pluginsrrrrr|r�r�rxr�ZJWKRSAr�Zload_vectorr�r�r�ZTestCaserZConfigTestCaser'r`rZTempDirTestCaser�r�r�r�rr)r+rLr#r r r r!�<module>sz






@TdkDx> 


Anon7 - 2021