U
    ÓZj#  ã                   @   sÔ   d 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 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rÐe ¡  dS )z'Tests for letsencrypt.plugins.selectioné    N)ÚList)Úerrors)Ú
interfaces)Úos)Úutil)ÚPluginsRegistryc                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚConveniencePickPluginTestz+Tests for certbot.plugins.selection.pick_*.c              	   C   s`   t  ¡ }t  ¡ }t  ¡ }t  d¡�"}d|_|  d||||dƒ¡ W 5 Q R X | |||d|¡ d S )Nz%certbot.plugins.selection.pick_pluginÚfooú	Question?)ÚmockÚMockÚpatchÚreturn_valueÚassertEqualÚassert_called_once_with)ÚselfZfunÚifacesÚconfigÚdefaultÚpluginsZmock_p© r   úa/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/certbot/plugins/selection_test.pyÚ_test   s         ÿzConveniencePickPluginTest._testc                 C   s    ddl m} |  |tjf¡ d S )Nr   )Úpick_authenticator)Úcertbot.plugins.selectionr   r   r   ÚIAuthenticator)r   r   r   r   r   Útest_authenticator    s    z,ConveniencePickPluginTest.test_authenticatorc                 C   s    ddl m} |  |tjf¡ d S )Nr   )Úpick_installer)r   r   r   r   Ú
IInstaller)r   r   r   r   r   Útest_installer$   s    z(ConveniencePickPluginTest.test_installerc                 C   s$   ddl m} |  |tjtjf¡ d S )Nr   )Úpick_configurator)r   r    r   r   r   r   )r   r    r   r   r   Útest_configurator(   s    
ÿz+ConveniencePickPluginTest.test_configuratorN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r!   r   r   r   r   r      s
   r   c                   @   sX   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚPickPluginTestz0Tests for certbot.plugins.selection.pick_plugin.c                 C   s.   t jdd�| _d | _t  ¡ | _d| _g | _d S )NF)Znoninteractive_moder
   )r   r   r   r   Ú	MagicMockÚregÚquestionr   ©r   r   r   r   ÚsetUp1   s
    
zPickPluginTest.setUpc                 C   s&   ddl m} || j| j| j| j| jƒS )Nr   )Úpick_plugin)r   r,   r   r   r(   r)   r   )r   r,   r   r   r   Ú_call8   s
     ÿzPickPluginTest._callc                 C   s$   d| _ |  ¡  |  d| jjj¡ d S )Nr	   é   )r   r-   r   r(   ÚfilterÚ
call_countr*   r   r   r   Útest_default_provided=   s    z$PickPluginTest.test_default_providedc                 C   s"   |   ¡  |  d| j ¡ jj¡ d S ©Nr.   )r-   r   r(   Úvisibler   r0   r*   r   r   r   Útest_no_defaultB   s    zPickPluginTest.test_no_defaultc                 C   s   |   |  ¡ d k¡ d S ©N)Ú
assertTruer-   r*   r   r   r   Útest_no_candidateF   s    z PickPluginTest.test_no_candidatec                 C   sD   t  ¡ }d|j_d|_d|i| j ¡  ¡  ¡ j	_|  
d|  ¡ ¡ d S )Nr	   FÚbar)r   r'   Úinitr   Úmisconfiguredr(   r3   r   ÚverifyÚ	availabler   r-   ©r   Ú	plugin_epr   r   r   Útest_singleI   s     ÿzPickPluginTest.test_singlec                 C   sF   t  ¡ }d|j_d|_d|i| j ¡  ¡  ¡ j	_|  
|  ¡ d k¡ d S )Nr	   Tr8   )r   r'   r9   r   r:   r(   r3   r   r;   r<   r6   r-   r=   r   r   r   Útest_single_misconfiguredR   s     ÿz(PickPluginTest.test_single_misconfiguredc              	   C   sn   t  ¡ }d|j_||dœ| j ¡  ¡  ¡ j_t  	d¡�}||_|  
d|  ¡ ¡ W 5 Q R X | ||g| j¡ d S )Nr	   ©r8   Zbazú'certbot.plugins.selection.choose_plugin)r   r'   r9   r   r(   r3   r   r;   r<   r   r   r-   r   r)   )r   r>   Úmock_chooser   r   r   Útest_multiple[   s    þ ÿzPickPluginTest.test_multiplec              	   C   sN   d d dœ| j  ¡  ¡  ¡ j_t d¡�}d |_|  |  	¡ d k¡ W 5 Q R X d S )NrA   rB   )
r(   r3   r   r;   r<   r   r   r   r6   r-   )r   rC   r   r   r   Útest_choose_plugin_noneh   s    þz&PickPluginTest.test_choose_plugin_noneN)r"   r#   r$   r%   r+   r-   r1   r4   r7   r?   r@   rD   rE   r   r   r   r   r&   .   s   		r&   c                   @   sh   e Zd Z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dS )ÚChoosePluginTestz2Tests for certbot.plugins.selection.choose_plugin.c                 C   s^   t j t tjd¡¡ tjddd�| _	d| j	_
tjddd�| _d| j ¡ j_| j	| jg| _d S )NFÚaT©Údescription_with_namer:   ÚapacheÚsÚ
standalone)ÚzopeÚ	componentZprovideUtilityÚdisplay_utilZFileDisplayÚsysÚstdoutr   r   Zmock_apacheÚnameÚ
mock_standr9   Ú	more_infor   r   r*   r   r   r   r+   v   s     ÿ ÿ ÿþzChoosePluginTest.setUpc                 C   s   ddl m} || jdƒS )Nr   )Úchoose_pluginr
   )r   rU   r   )r   rU   r   r   r   r-   „   s    zChoosePluginTest._callz certbot.plugins.selection.z_utilc                 C   sB   t jdft jdfg|ƒ j_|  | j|  ¡ ¡ |  |ƒ jjd¡ d S )Nr   r.   )	rO   ÚOKÚmenuÚside_effectr   rS   r-   Znotificationr0   ©r   Ú	mock_utilr   r   r   Útest_selectionˆ   s
    ÿ
zChoosePluginTest.test_selectionc                 C   s(   t jdfg|ƒ j_|  | j|  ¡ ¡ d S r2   )rO   rV   rW   rX   r   rS   r-   rY   r   r   r   Útest_more_info�   s    ÿ
zChoosePluginTest.test_more_infoc                 C   s&   t jdf|ƒ j_|  |  ¡ d k¡ d S )Nr   )rO   ÚCANCELrW   r   r6   r-   rY   r   r   r   Útest_no_choice—   s    zChoosePluginTest.test_no_choicec                 C   s�   t jddd�}d| ¡ j_d|_|| jd< tjdf|ƒ j	_t
j d¡d k}|rXd	t
jd< z|  ¡  W 5 |rrt
jd= X |  d
|ƒ j	jd k¡ d S )NÚnFrH   znginx pluginÚnginxr.   r   ZCERTBOT_AUTOr	   r   )r   r   r9   rT   r   rR   r   rO   r]   rW   r   ÚenvironÚgetr-   r6   Z	call_args)r   rZ   Z
mock_nginxZunset_cb_autor   r   r   Útest_new_interaction_avoidanceœ   s      ÿ


z/ChoosePluginTest.test_new_interaction_avoidanceN)r"   r#   r$   r%   r+   r-   Ú	test_utilZpatch_get_utilityr[   r\   r^   rc   r   r   r   r   rF   s   s   


rF   c                       sH   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	‡  Z
S )ÚGetUnpreparedInstallerTestz=Tests for certbot.plugins.selection.get_unprepared_installer.c                    sh   t t| ƒ ¡  tjdd�| _d| j_tjdd�| _d| j_t ¡ | _	| j	| jj
_t| j| jdœƒ| _d S )NÚafail)rI   rJ   )rf   rJ   )Úsuperre   r+   r   r   Úmock_apache_fail_eprR   Zmock_apache_epr'   Úmock_apache_pluginr9   r   r   r   r*   ©Ú	__class__r   r   r+   ³   s    ÿÿ
þz GetUnpreparedInstallerTest.setUpc                 C   s   ddl m} || j| jƒS )Nr   )Úget_unprepared_installer)r   rl   r   r   )r   rl   r   r   r   r-   Â   s    z GetUnpreparedInstallerTest._callc                 C   s   d | j _|  |  ¡ d ¡ d S r5   )r   Úconfiguratorr   r-   r*   r   r   r   Útest_no_installer_definedÆ   s    z4GetUnpreparedInstallerTest.test_no_installer_definedc                 C   s&   d| j _ti ƒ| _|  tj| j¡ d S ©NrJ   )r   rm   r   r   ÚassertRaisesr   ÚPluginSelectionErrorr-   r*   r   r   r   Útest_no_available_installersÊ   s    
z7GetUnpreparedInstallerTest.test_no_available_installersc                 C   s$   d| j _|  ¡ }|  || jk¡ d S ro   )r   rm   r-   r6   ri   )r   Ú	installerr   r   r   Útest_get_pluginÏ   s    z*GetUnpreparedInstallerTest.test_get_pluginc                 C   s$   d| j _d| j_|  tj| j¡ d S ro   )r   rm   rh   rR   rp   r   rq   r-   r*   r   r   r   Ú!test_multiple_installers_returnedÔ   s    z<GetUnpreparedInstallerTest.test_multiple_installers_returned)r"   r#   r$   r%   r+   r-   rn   rr   rt   ru   Ú__classcell__r   r   rj   r   re   °   s   re   Ú__main__)r%   rP   Zunittestr   Zzope.componentrM   Zacme.magic_typingr   Zcertbotr   r   Zcertbot.compatr   Zcertbot.displayr   rO   Zcertbot.plugins.discor   Zcertbot.testsrd   ZTestCaser   r&   rF   ZConfigTestCasere   r"   Úmainr   r   r   r   Ú<module>   s"   E=+