U
    ÓZj¥p  ã                   @   sv  d Z ddlZddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ ddl
mZ ddlmZ ddlmZ dd	lmZ ddlmZ G d
d„ dejƒZG dd„ deƒZG dd„ dejƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ dejƒZG dd„ dejƒZ G dd„ dejƒZ!G d d!„ d!ej"ƒZ#e$d"k�rre %¡  dS )#úTests for certbot.cert_manager.é    N)Úconfiguration)Úerrors)Úos)Ú
filesystem)Úutil)ÚALL_FOUR)Ústorage_testc                       s(   e Zd ZdZ‡ fdd„Zdd„ Z‡  ZS )ÚBaseCertManagerTestz2Base class for setting up Cert Manager tests.
    c              	      sŠ   t tˆ ƒ ¡  dˆ j_t ˆ jj¡ d tj	 
ˆ jjd¡dœˆ _t‡ fdd„ˆ jD ƒƒˆ _ttj	 
ˆ jjd¡dƒ�}| d¡ W 5 Q R X d S )	NFZspecialarchive)úexample.orgú	other.comc                 3   s$   | ]}|ˆ   |ˆ j| ¡fV  qd S ©N)Ú_set_up_configÚdomains)Ú.0Údomain©Úself© úb/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/certbot/tests/cert_manager_test.pyÚ	<genexpr>#   s   ÿz,BaseCertManagerTest.setUp.<locals>.<genexpr>zIGNORE.THISÚwzThis file should be ignored!)Úsuperr
   ÚsetUpÚconfigÚquietr   ÚmakedirsÚrenewal_configs_dirr   ÚpathÚjoinÚ
config_dirr   ÚdictÚconfig_filesÚopenÚwrite)r   Zjunk©Ú	__class__r   r   r      s    þÿ
zBaseCertManagerTest.setUpc                 C   sž   t  tj | jj|¡¡ t ¡ }|d k	r<t  |¡ ||d< nt  tj | jj	|¡¡ t
D ] }tj | jj||d ¡||< qXtj | jj|d ¡|_| ¡  |S )NÚarchive_dirz.pemz.conf)r   r   r   r   r   r   Zlive_dirÚ	configobjZ	ConfigObjÚdefault_archive_dirr   r   Úfilenamer$   )r   r   Úcustom_archiveÚconfig_fileÚkindr   r   r   r   ,   s    

ÿ
ÿz"BaseCertManagerTest._set_up_config)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__classcell__r   r   r%   r   r
      s   r
   c                   @   s   e Zd ZdZdd„ ZdS )ÚUpdateLiveSymlinksTestz8Tests for certbot.cert_manager.update_live_symlinks
    c           	   
      s<  ddl m} i }| jD ]˜}| j| }|dk	r2|‰ ntj | jj|¡‰ t‡ fdd„t	D ƒƒ||< t	D ]J}| j
| | }|| | }t|dƒ ¡  t tj | jj|d ¡|¡ qbq| | j¡ t ¡ }zf| jD ]Z}t	D ]P}t tj | j
| | ¡¡ |  t t | j
| | ¡¡t || | ¡¡ qÔqÌW 5 t |¡ X dS )zTest update_live_symlinksr   ©Úcert_managerNc                 3   s$   | ]}|t j ˆ |d  ¡fV  qdS )ú1.pemN)r   r   r   )r   r-   ©Zarchive_dir_pathr   r   r   Q   s   ÿÿzCUpdateLiveSymlinksTest.test_update_live_symlinks.<locals>.<genexpr>Úar6   )Úcertbotr5   r   r   r   r   r   r)   r!   r   r"   r#   ÚcloseÚsymlinkr    Zupdate_live_symlinksÚgetcwdÚchdirÚdirnameÚassertEqualr   ÚrealpathÚreadlink)	r   r5   Zarchive_pathsr   r+   r-   Z	live_pathÚarchive_pathZprev_dirr   r7   r   Útest_update_live_symlinksE   s4    

ÿ"
þz0UpdateLiveSymlinksTest.test_update_live_symlinksN)r.   r/   r0   r1   rC   r   r   r   r   r3   B   s   r3   c                   @   s„   e Zd ZdZdd„ Ze ¡ e d¡e d¡dd„ ƒƒƒZ	e ¡ e d¡e d¡dd	„ ƒƒƒZ
e ¡ e d¡e d¡d
d„ ƒƒƒZdS )Ú
DeleteTestz*Tests for certbot.cert_manager.delete
    c                 C   s   ddl m} | | j¡ d S ©Nr   r4   )r9   r5   Údeleter   )r   r5   r   r   r   Ú_calln   s    zDeleteTest._callú)certbot.cert_manager.lineage_for_certnamezcertbot.storage.delete_filesc                 C   s*   | j |_d| j_|  ¡  | | jd¡ dS ©úTest deleter   N)Útest_rcÚreturn_valuer   ÚcertnamerG   Úassert_called_once_with)r   Úmock_delete_filesÚmock_lineage_for_certnameÚunused_get_utilityr   r   r   Útest_delete_from_configr   s    z"DeleteTest.test_delete_from_configc                 C   s4   | j |_tjdgf|ƒ j_|  ¡  | | jd¡ dS rI   )rK   rL   Údisplay_utilÚOKÚ	checklistrG   rN   r   ©r   rO   rP   Z	mock_utilr   r   r   Útest_delete_interactive_single}   s    z)DeleteTest.test_delete_interactive_singlec                 C   sR   | j |_tjddgf|ƒ j_|  ¡  | | jd¡ | | jd¡ |  |j	d¡ dS )rJ   r   z	other.orgé   N)
rK   rL   rS   rT   rU   rG   Zassert_any_callr   r?   Z
call_countrV   r   r   r   Ú test_delete_interactive_multipleˆ   s    z+DeleteTest.test_delete_interactive_multipleN)r.   r/   r0   r1   rG   Ú	test_utilÚpatch_get_utilityÚmockÚpatchrR   rW   rY   r   r   r   r   rD   j   s   rD   c                   @   s°   e Zd ZdZdd„ Ze d¡e ¡ dd„ ƒƒZ	e d¡e ¡ dd„ ƒƒZ
e d	¡e d¡e ¡ e d
¡e d¡dd„ ƒƒƒƒƒZe d¡e ¡ dd„ ƒƒZe d¡dd„ ƒZdS )ÚCertificatesTestz0Tests for certbot.cert_manager.certificates
    c                 O   s   ddl m} |||ŽS )Nr   )Úcertificates)Úcertbot.cert_managerr_   )r   ÚargsÚkwargsr_   r   r   r   Ú_certificates™   s    zCertificatesTest._certificateszcertbot.cert_manager.loggerc                 C   s*   |   | j¡ |  |jj¡ |  |j¡ d S r   )rc   r   Ú
assertTrueÚwarningÚcalled©r   Úmock_utilityÚmock_loggerr   r   r   Útest_certificates_parse_fail�   s    z-CertificatesTest.test_certificates_parse_failc                 C   s4   d| j _|  | j ¡ |  |jj¡ |  |jj¡ d S )NT)r   r   rc   ÚassertFalseZnotificationrf   rd   re   rg   r   r   r   Útest_certificates_quiet¤   s    z(CertificatesTest.test_certificates_quietz)certbot.crypto_util.verify_renewable_certúcertbot.storage.RenewableCertz+certbot.cert_manager._report_human_readablec                 C   sN   d |_ d|_ |  | j¡ |  |jj¡ |  |j¡ |  |j¡ |  |j¡ d S )NÚ )rL   rc   r   rk   re   rf   rd   )r   Zmock_reportÚmock_renewable_certrh   ri   Zmock_verifierr   r   r   Útest_certificates_parse_success¬   s    z0CertificatesTest.test_certificates_parse_successc              	   C   s|   t  ¡ }t tjtj |d¡tj |d¡tj |d¡dd�¡}t	 
|j¡ |  |¡ |  |jj¡ |  |j¡ t |¡ d S )Nr   ZworkZlogsF)r    Zwork_dirZlogs_dirr   )ÚtempfileÚmkdtempr   ZNamespaceConfigr\   Ú	MagicMockr   r   r   r   r   r   rc   rk   re   rf   rd   ÚshutilÚrmtree)r   rh   ri   Zempty_tempdirZempty_configr   r   r   Útest_certificates_no_files»   s    ü
z+CertificatesTest.test_certificates_no_filesz8certbot.cert_manager.ocsp.RevocationChecker.ocsp_revokedc                    sn  d |_ ddlm‰  dd l}dd l}|j |j ¡ ¡}tj	dd�}||_
ddg|j_ d|_|g‰tj	d d d�‰‡ ‡‡fdd	„}|ƒ }|  d
|k¡ | j
|jdd�7  _
|ƒ }|  d|kp¾d|k¡ |  d|koÔd|k¡ | j
|jdd�7  _
|ƒ }|  d|k¡ |  d|k¡ |  d|k�o$d|k¡ | j
|jdd�7  _
|ƒ }|  d|k¡ |  d|k�ofd|k¡ d|_d|_ |ƒ }|  d|k¡ tj	dd�}||_
ddg|j_ d|_ˆ |¡ |ƒ }|  tt d|¡ƒd¡ dgˆ_|ƒ }|  tt d|¡ƒd¡ dgˆ_|ƒ }|  tt d|¡ƒd¡ dˆ_|ƒ }|  tt d|¡ƒd¡ dˆ_|ƒ }|  tt d|¡ƒd¡ d S )Nr   r4   Znameone©ÚlineagenameZnametwoF)rM   rx   c                      s   ˆ   ˆˆ¡S r   )Z_report_human_readabler   ©r5   Zmock_configZparsed_certsr   r   Ú<lambda>Þ   ó    z=CertificatesTest.test_report_human_readable.<locals>.<lambda>zINVALID: EXPIREDrX   )Úhoursz	1 hour(s)z	2 hour(s)ZVALIDÚINVALIDé   )Údaysz1 dayZunderz3 daysTzINVALID: TEST_CERT, REVOKEDZindescribablezthrice.namedzINVALID:Zhorror)rL   r9   r5   ÚdatetimeÚpytzÚUTCÚfromutcÚutcnowr\   rs   Ztarget_expiryÚnamesZis_test_certrd   Ú	timedeltark   Úappendr?   ÚlenÚreÚfindallr   rM   )r   Zmock_revokedr€   r�   ZexpiryÚcertZ
get_reportÚoutr   ry   r   Útest_report_human_readableÌ   sd    
z+CertificatesTest.test_report_human_readableN)r.   r/   r0   r1   rc   r\   r]   rZ   r[   rj   rl   rp   rv   r�   r   r   r   r   r^   –   s&   
r^   c                   @   s6   e Zd ZdZe d¡e d¡e d¡dd„ ƒƒƒZdS )ÚSearchLineagesTestz0Tests for certbot.cert_manager._search_lineages.úcertbot.util.make_or_verify_dirú"certbot.storage.renewal_conf_filesrm   c                 C   sH   dg|_ tj|_ddlm} |  | | jdd„ d¡d¡ |  	|j
¡ d S )NÚbadfiler   r4   c                 S   s   | S r   r   ©Úxr   r   r   rz     r{   z<SearchLineagesTest.test_cert_storage_error.<locals>.<lambda>Úcheck)rL   r   ÚCertStorageErrorÚside_effectr9   r5   r?   Z_search_lineagesr   rd   rf   )r   ro   Úmock_renewal_conf_filesÚmock_make_or_verify_dirr5   r   r   r   Útest_cert_storage_error  s
    z*SearchLineagesTest.test_cert_storage_errorN)r.   r/   r0   r1   r\   r]   r™   r   r   r   r   rŽ     s
   rŽ   c                   @   sn   e Zd ZdZe d¡e d¡e d¡dd„ ƒƒƒZe d¡e d¡dd„ ƒƒZe d¡e d¡d	d
„ ƒƒZdS )ÚLineageForCertnameTestz3Tests for certbot.cert_manager.lineage_for_certnamer�   ú)certbot.storage.renewal_file_for_certnamerm   c                 C   sJ   d|_ tjdd�}||_ ddlm} |  | | jd¡|¡ |  |j	¡ d S )Núsomefile.confúexample.comrw   r   r4   )
rL   r\   ÚMockr9   r5   r?   Úlineage_for_certnamer   rd   rf   )r   ro   Úmock_renewal_conf_filer˜   Ú
mock_matchr5   r   r   r   Útest_found_match$  s    z'LineageForCertnameTest.test_found_matchc                 C   s8   d|_ ddlm} |  | | jd¡d ¡ |  |j¡ d S )Nzother.com.confr   r4   r�   )rL   r9   r5   r?   rŸ   r   rd   rf   ©r   r    r˜   r5   r   r   r   Útest_no_match0  s    z$LineageForCertnameTest.test_no_matchc                 C   s<   t  ¡ |_ddlm} |  | | jd¡d ¡ |  |j	¡ d S )Nr   r4   r�   )
r   r•   r–   r9   r5   r?   rŸ   r   rd   rf   r£   r   r   r   Útest_no_renewal_file8  s    
z+LineageForCertnameTest.test_no_renewal_fileN)	r.   r/   r0   r1   r\   r]   r¢   r¤   r¥   r   r   r   r   rš   !  s   	rš   c                   @   sR   e Zd ZdZe d¡e d¡e d¡dd„ ƒƒƒZe d¡e d¡dd„ ƒƒZd	S )
ÚDomainsForCertnameTestz3Tests for certbot.cert_manager.domains_for_certnamer�   r›   rm   c                 C   sZ   d|_ tjdd�}ddg}||j_ ||_ ddlm} |  | | jd¡|¡ |  	|j
¡ d S )Nrœ   r�   rw   r   r   r4   )rL   r\   rž   r…   r9   r5   r?   Údomains_for_certnamer   rd   rf   )r   ro   r    r˜   r¡   r   r5   r   r   r   r¢   D  s    ÿz'DomainsForCertnameTest.test_found_matchc                 C   s8   d|_ ddlm} |  | | jd¡d ¡ |  |j¡ d S )Nrœ   r   r4   r   )rL   r9   r5   r?   r§   r   rd   rf   r£   r   r   r   r¤   S  s    z$DomainsForCertnameTest.test_no_matchN)r.   r/   r0   r1   r\   r]   r¢   r¤   r   r   r   r   r¦   A  s   r¦   c                       sº   e Zd ZdZ‡ fdd„Zdd„ Ze d¡e 	¡ dd„ ƒƒZ
e 	¡ d	d
„ ƒZe 	¡ e d¡dd„ ƒƒZe 	¡ e d¡dd„ ƒƒZe 	¡ e d¡dd„ ƒƒZe 	¡ e d¡dd„ ƒƒZ‡  ZS )ÚRenameLineageTestz-Tests for certbot.cert_manager.rename_lineagec                    s"   t t| ƒ ¡  d| j_d| j_d S )Nr   Úafter)r   r¨   r   r   rM   Únew_certnamer   r%   r   r   r   _  s    zRenameLineageTest.setUpc                 O   s   ddl m} |j||ŽS rE   )r9   r5   Zrename_lineage)r   ra   rb   r5   r   r   r   rG   d  s    zRenameLineageTest._callr�   c                 C   s€   d | j _d| j _g |_|  tj| j| j ¡ dg|_|ƒ }tj	df|j
_|  tj| j| j ¡ tjdf|j
_|  tj| j| j ¡ d S )NÚtwozone.confr   éÿÿÿÿ)r   rM   rª   rL   ÚassertRaisesr   ÚErrorrG   rS   ÚCANCELÚmenurT   )r   Úmock_get_utilityr—   Ú	util_mockr   r   r   Útest_no_certnameh  s    z"RenameLineageTest.test_no_certnamec                 C   s^   d| j _d | j _|ƒ }tjdf|j_|  tj	| j
| j ¡ tjd f|j_|  tj	| j
| j ¡ d S )NÚoneÚname)r   rM   rª   rS   r¯   ÚinputrL   r­   r   r®   rG   rT   )r   r±   r²   r   r   r   Útest_no_new_certnamez  s    z&RenameLineageTest.test_no_new_certnamerH   c                 C   s.   d| j _d| j _d |_|  tj| j| j ¡ d S )Nr´   r«   )r   rM   rª   rL   r­   r   ÚConfigurationErrorrG   )r   rP   rQ   r   r   r   Útest_no_existing_certname†  s     ÿz+RenameLineageTest.test_no_existing_certnamez-certbot.storage.RenewableCert._check_symlinksc                 C   sT   d|_ |  | j¡ ddlm} | | j| jj¡}|  |d k	¡ |  |j	| jj¡ d S ©NTr   r4   )
rL   rG   r   r9   r5   rŸ   rª   rd   r?   rx   )r   Ú
mock_checkrQ   r5   Úupdated_lineager   r   r   Útest_rename_cert�  s    z"RenameLineageTest.test_rename_certc                 C   sp   d|_ d | j_|ƒ }tjdf|j_ |  | j¡ ddlm} | 	| j| jj
¡}|  |d k	¡ |  |j| jj
¡ d S rº   )rL   r   rM   rS   rT   r°   rG   r9   r5   rŸ   rª   rd   r?   rx   )r   r»   r±   r²   r5   r¼   r   r   r   Ú%test_rename_cert_interactive_certname™  s    z7RenameLineageTest.test_rename_cert_interactive_certnamec                 C   sL   d|_ d| j_|  tj| j| j¡ d tj	j
¡| j_|  tj| j| j¡ d S )NTr   z	one{0}two)rL   r   rª   r­   r   r¸   rG   Úformatr   r   Úsep)r   r»   rQ   r   r   r   Ú!test_rename_cert_bad_new_certname¦  s
    z3RenameLineageTest.test_rename_cert_bad_new_certname)r.   r/   r0   r1   r   rG   r\   r]   rZ   r[   r³   r·   r¹   r½   r¾   rÁ   r2   r   r   r%   r   r¨   \  s(   
r¨   c                       s2   e Zd ZdZ‡ fdd„Ze d¡dd„ ƒZ‡  ZS )ÚDuplicativeCertsTestz!Test to avoid duplicate lineages.c                    s$   t t| ƒ ¡  | j ¡  |  ¡  d S r   )r   rÂ   r   r,   r$   Ú_write_out_ex_kindsr   r%   r   r   r   ¶  s    
zDuplicativeCertsTest.setUpr�   c              	   C   sè   ddl m} t d¡}t| jjdƒ�}| |¡ W 5 Q R X || jddgƒ}|  	|d¡ || jdd	gƒ}|  
|d jj d
¡¡ |  	|d d ¡ || jdd	dgƒ}|  	|d d ¡ |  
|d jj d
¡¡ || jddgƒ}|  	|d¡ d S )Nr   )Úfind_duplicative_certszcert-san_512.pemÚwbzwow.netz
hooray.org)NNr�   zwww.example.comzexample.org.confr~   zsomething.new)r`   rÄ   rZ   Zload_vectorr#   rK   r‹   r$   r   r?   rd   Z
configfiler*   Úendswith)r   Zunused_makedirrÄ   Z	test_certÚfÚresultr   r   r   Útest_find_duplicative_names»  s4    
 ÿ ÿ ÿ ÿz0DuplicativeCertsTest.test_find_duplicative_names)	r.   r/   r0   r1   r   r\   r]   rÉ   r2   r   r   r%   r   rÂ   ³  s   rÂ   c                       sˆ   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Zd
d„ Ze	 
d¡dd„ ƒZe	 
d¡dd„ ƒZe	 
d¡dd„ ƒZe	 
d¡dd„ ƒZ‡  ZS )ÚCertPathToLineageTestz3Tests for certbot.cert_manager.cert_path_to_lineagec                    sJ   t t| ƒ ¡  | j ¡  |  ¡  tj | j	j
ddd¡| _| jdf| j	_d S ©NÚliver   úfullchain.pemrn   )r   rÊ   r   r,   r$   rÃ   r   r   r   r   r    Ú	fullchainÚ	cert_pathr   r%   r   r   r   Ü  s    
ÿzCertPathToLineageTest.setUpc                 C   s   ddl m} ||ƒS )Nr   )Úcert_path_to_lineage)r`   rÐ   )r   Ú
cli_configrÐ   r   r   r   rG   ä  s    zCertPathToLineageTest._callc                 C   s   ddl m} |||ƒS )Nr   ©Ú_archive_files)r`   rÓ   )r   rÑ   ZfiletyperÓ   r   r   r   rÓ   è  s    z$CertPathToLineageTest._archive_filesc                 C   s   |   d|  | j¡¡ d S )Nr   )r?   rG   r   r   r   r   r   Útest_basic_matchì  s    z&CertPathToLineageTest.test_basic_matchc                 C   s4   | j }tj | j jddd¡|_|  tj| j	|¡ d S )NrÌ   Z
SailorMoonrÍ   )
r   r   r   r   r    rÏ   r­   r   r®   rG   )r   Zbad_test_configr   r   r   Útest_no_match_existsï  s     ÿz*CertPathToLineageTest.test_no_match_existsz(certbot.cert_manager._acceptable_matchesc                 C   s.   dd„ g|_ | j| j_|  d|  | j¡¡ d S )Nc                 S   s   | j S r   )Úfullchain_pathr’   r   r   r   rz   ÷  r{   z>CertPathToLineageTest.test_options_fullchain.<locals>.<lambda>r   )rL   rÎ   r   rÖ   r?   rG   ©r   Úmock_acceptable_matchesr   r   r   Útest_options_fullchainõ  s    
z,CertPathToLineageTest.test_options_fullchainc                 C   sF   dd„ g|_ tj | jjddd¡}|df| j_|  d|  | j¡¡ d S )Nc                 S   s   | j S r   )rÏ   r’   r   r   r   rz   ý  r{   z>CertPathToLineageTest.test_options_cert_path.<locals>.<lambda>rÌ   r   zcert.pemrn   )	rL   r   r   r   r   r    rÏ   r?   rG   )r   rØ   Ztest_cert_pathr   r   r   Útest_options_cert_pathû  s    ÿz,CertPathToLineageTest.test_options_cert_pathc                    sF   t j ˆ jjddd¡dfˆ j_‡ fdd„g|_ˆ  dˆ  ˆ j¡¡ d S )NÚarchiver   z
cert11.pemrn   c                    s   ˆ   | d¡S )Nr‹   rÒ   r’   r   r   r   rz     r{   zACertPathToLineageTest.test_options_archive_cert.<locals>.<lambda>©	r   r   r   r   r    rÏ   rL   r?   rG   r×   r   r   r   Útest_options_archive_cert  s    ÿÿz/CertPathToLineageTest.test_options_archive_certc                    sF   t j ˆ jjddd¡dfˆ j_‡ fdd„g|_ˆ  dˆ  ˆ j¡¡ d S )NrÛ   r   zfullchain11.pemrn   c                    s   ˆ   | d¡S )NrÎ   rÒ   r’   r   r   r   rz     s    zFCertPathToLineageTest.test_options_archive_fullchain.<locals>.<lambda>rÜ   r×   r   r   r   Útest_options_archive_fullchain  s     ÿÿz4CertPathToLineageTest.test_options_archive_fullchain)r.   r/   r0   r1   r   rG   rÓ   rÔ   rÕ   r\   r]   rÙ   rÚ   rÝ   rÞ   r2   r   r   r%   r   rÊ   Ù  s   


rÊ   c                       sT   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Ze d¡d	d
„ ƒZ	e d¡dd„ ƒZ
‡  ZS )ÚMatchAndCheckOverlapszUTests for certbot.cert_manager.match_and_check_overlaps w/o overlapping archive dirs.c                    sJ   t t| ƒ ¡  | j ¡  |  ¡  tj | j	j
ddd¡| _| jdf| j	_d S rË   )r   rß   r   r,   r$   rÃ   r   r   r   r   r    rÎ   rÏ   r   r%   r   r   r     s    
ÿzMatchAndCheckOverlaps.setUpc                 C   s   ddl m} |||||ƒS )Nr   )Úmatch_and_check_overlaps)r`   rà   )r   rÑ   Zacceptable_matchesÚ
match_funcZrv_funcrà   r   r   r   rG     s    zMatchAndCheckOverlaps._callc              
      s:   ddl m} ˆ  dgˆ  ˆ j|ƒ ‡ fdd„dd„ ¡¡ d S )Nr   )Ú_acceptable_matchesr   c                    s   ˆ j jd S )Nr   )r   rÏ   r’   r   r   r   rz   &  r{   z8MatchAndCheckOverlaps.test_basic_match.<locals>.<lambda>c                 S   s   | j S r   rw   r’   r   r   r   rz   &  r{   )r`   râ   r?   rG   r   )r   râ   r   r   r   rÔ   #  s
    
 ÿz&MatchAndCheckOverlaps.test_basic_matchz%certbot.cert_manager._search_lineagesc                 C   s$   g |_ |  tj| j| jd d d ¡ d S r   )rL   r­   r   r®   rG   r   ©r   Zmock_search_lineagesr   r   r   Útest_no_matches(  s    z%MatchAndCheckOverlaps.test_no_matchesc                 C   s(   ddg|_ |  tj| j| jd d d ¡ d S )NÚspiderZdance)rL   r­   r   ZOverlappingMatchFoundrG   r   rã   r   r   r   Útest_too_many_matches-  s    
z+MatchAndCheckOverlaps.test_too_many_matches)r.   r/   r0   r1   r   rG   rÔ   r\   r]   rä   ræ   r2   r   r   r%   r   rß     s   
rß   c                   @   sÈ   e Zd ZdZdd„ Zdd„ Ze d¡e d¡dd	„ ƒƒZe d¡e d¡d
d„ ƒƒZ	e d¡e d¡dd„ ƒƒZ
e d¡e d¡dd„ ƒƒZe d¡e d¡dd„ ƒƒZe d¡e d¡dd„ ƒƒZdS )ÚGetCertnameTestr   c                 C   s,   t  ¡ | _| j ¡ | _t ¡ | _d | j_d S r   )	rZ   r[   Úget_utility_patchÚstartr±   r\   rs   r   rM   r   r   r   r   r   6  s    

zGetCertnameTest.setUpc                 C   s   | j  ¡  d S r   )rè   Ústopr   r   r   r   ÚtearDown<  s    zGetCertnameTest.tearDownr�   z(certbot.storage.lineagename_for_filenamec                 C   sn   dg|_ d|_ ddlm} d}tjdf|  ¡ j_ |  |j| j	ddd�dg¡ |  
||  ¡ jjd d k¡ d S )	Núexample.com.confr�   r   r4   zWhich certificate would youÚverbF©Úallow_multiple)rL   r9   r5   rS   rT   r±   r°   r?   Úget_certnamesr   rd   Ú	call_args©r   Ú	mock_nameÚ
mock_filesr5   Úpromptr   r   r   Útest_get_certnames?  s       ÿþÿz"GetCertnameTest.test_get_certnamesc                 C   sn   dg|_ d|_ ddlm} d}tjdf|  ¡ j_ |  |j| j	dd|d�dg¡ |  |  ¡ jj
d d |¡ d S )	Nrì   r�   r   r4   úcustom promptrí   F©rï   Zcustom_prompt)rL   r9   r5   rS   rT   r±   r°   r?   rð   r   rñ   rò   r   r   r   Ú test_get_certnames_custom_promptM  s"       ÿýÿz0GetCertnameTest.test_get_certnames_custom_promptc                 C   sJ   dg|_ d|_ ddlm} tjdf|  ¡ j_ | jtj	|j
| jddd� d S )Nrì   r�   r   r4   Úerroring_anywayFrî   )rL   r9   r5   rS   r¯   r±   r°   r­   r   r®   rð   r   ©r   ró   rô   r5   r   r   r   Útest_get_certnames_user_abort\  s      ýz-GetCertnameTest.test_get_certnames_user_abortc                 C   sp   dg|_ d|_ ddlm} d}tjdgf|  ¡ j_ |  |j| j	ddd�dg¡ |  
||  ¡ jjd d k¡ d S )	Nrì   r�   r   r4   zWhich certificate(s) would yourí   Trî   )rL   r9   r5   rS   rT   r±   rU   r?   rð   r   rd   rñ   rò   r   r   r   Ú!test_get_certnames_allow_multipleh  s$    ÿ  ÿþÿz1GetCertnameTest.test_get_certnames_allow_multiplec                 C   sp   dg|_ d|_ ddlm} d}tjdgf|  ¡ j_ |  |j| j	dd|d�dg¡ |  |  ¡ jj
d d |¡ d S )	Nrì   r�   r   r4   r÷   rí   Trø   )rL   r9   r5   rS   rT   r±   rU   r?   rð   r   rñ   rò   r   r   r   Ú/test_get_certnames_allow_multiple_custom_promptw  s(    ÿ   ÿýþz?GetCertnameTest.test_get_certnames_allow_multiple_custom_promptc                 C   sJ   dg|_ d|_ ddlm} tjg f|  ¡ j_ | jtj	|j
| jddd� d S )Nrì   r�   r   r4   rú   Trî   )rL   r9   r5   rS   r¯   r±   rU   r­   r   r®   rð   r   rû   r   r   r   Ú,test_get_certnames_allow_multiple_user_abortˆ  s      ýz<GetCertnameTest.test_get_certnames_allow_multiple_user_abortN)r.   r/   r0   r1   r   rë   r\   r]   rö   rù   rü   rý   rþ   rÿ   r   r   r   r   rç   3  s*   
rç   Ú__main__)&r1   r‰   rt   rq   Zunittestr(   r\   r9   r   r   Zcertbot.compatr   r   Zcertbot.displayr   rS   Zcertbot.storager   Zcertbot.testsr	   rZ   ZConfigTestCaser
   r3   ZBaseRenewableCertTestrD   r^   rŽ   rš   r¦   r¨   rÂ   rÊ   rß   ZTestCaserç   r.   Úmainr   r   r   r   Ú<module>   s8   ,(,{ W&;b
