U
    ÓZj\-  ã                   @   sä   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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 ejdd	d
ejdd�d�Zejddd
ejdd�d�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 certbot.plugins.disco.é    N)ÚList)Úerrors)Ú
interfaces)Ú
standalone)ÚwebrootÚsazcertbot.plugins.standalone)ÚAuthenticatorÚcertbot©Úkey)ÚattrsÚdistÚwrzcertbot.plugins.webrootc                   @   sˆ   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d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd S )!ÚPluginEntryPointTestz1Tests for certbot.plugins.disco.PluginEntryPoint.c                 C   s‚   t jddtjdd�d�| _t jddtjdd�d�| _t jdd	tjdd�d�| _t jd
dtjdd�d�| _ddlm	} |t
ƒ| _d S )NÚep1zp1.ep1Úp1r
   )r   zp2.ep2Zp2Úep2z
p2.foo.ep2Úep3za.ep3Zp3r   ©ÚPluginEntryPoint)Úpkg_resourcesÚ
EntryPointÚmockÚ	MagicMockr   Úep1primr   r   Úcertbot.plugins.discor   ÚEP_SAÚ	plugin_ep)Úselfr   © r   ú]/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/certbot/plugins/disco_test.pyÚsetUp   s,      
ÿ  
ÿ  
ÿ  
ÿzPluginEntryPointTest.setUpc              
   C   sV   ddl m} | jd| jd| jd| jdtdi}t |¡D ]\}}|  	|| 
|¡¡ q6d S )Nr   r   zp1:ep1zp2:ep1zp2:ep2zp3:ep3r   )r   r   r   r   r   r   r   ÚsixÚ	iteritemsÚassertEqualZentry_point_to_plugin_name)r   r   ÚnamesÚentry_pointÚnamer   r   r    Útest_entry_point_to_plugin_name.   s"         û ÿz4PluginEntryPointTest.test_entry_point_to_plugin_namec                 C   s   |   d| jjk¡ d S )Nztemporary webserver)Ú
assertTruer   Údescription©r   r   r   r    Útest_description=   s    z%PluginEntryPointTest.test_descriptionc                 C   s$   t jdd�| j_|  d| jj¡ d S )NZDesc)r*   z	Desc (sa))r   r   r   Ú
plugin_clsr$   Zdescription_with_namer+   r   r   r    Útest_description_with_name@   s
     ÿz/PluginEntryPointTest.test_description_with_namec                 C   s$   t jdd�| j_|  d| jj¡ d S )Nz	Long desc)Úlong_description©r   r   r   r-   r$   r/   r+   r   r   r    Útest_long_descriptionE   s    ÿ
 ÿz*PluginEntryPointTest.test_long_descriptionc                 C   s(   t jddgd�| j_|  d| jj¡ d S )NzLong desc not foundr*   )r*   Úspecr0   r+   r   r   r    Ú!test_long_description_nonexistentK   s     ÿ
 ÿz6PluginEntryPointTest.test_long_description_nonexistentc                 C   sJ   |   | j tjf¡¡ |  | j tjf¡¡ |  | j tjtjf¡¡ d S ©N)r)   r   Úifacesr   ZIAuthenticatorÚassertFalseZ
IInstallerr+   r   r   r    Útest_ifacesQ   s    
 ÿz PluginEntryPointTest.test_ifacesc                 C   s„   |   | jj¡ |   | jj¡ |   | jj¡ |   | jj¡ |  | jjd k¡ |  | jjt	k¡ |  
d| jj¡ |  | jjtjk¡ d S )Nr   )r6   r   ÚinitializedÚpreparedÚmisconfiguredÚ	availabler)   Úproblemr&   r   r$   r'   r-   r   r   r+   r   r   r    Útest__init__W   s    z!PluginEntryPointTest.test__init__c                 C   s¬   t  ¡ }| jj|d�}|  | jj¡ |  |j|k¡ |  | j ¡ |k¡ |  |j|k¡ |  | j d¡|k¡ |  |j|k¡ |  | jj¡ |  | jj	¡ |  | jj
¡ d S )N©Úconfigé{   )r   r   r   Úinitr)   r8   r?   r6   r9   r:   r;   )r   r?   Úpluginr   r   r    Ú	test_initb   s    zPluginEntryPointTest.test_initc              	      sÎ   t jdd�‰ t jdd�‰t jdd�‰t  ¡  | j_‰tjj}t  d¡�~‰|ˆ_‡ ‡‡‡‡fdd„}|ˆjj	_
|  | j ˆ f¡¡ |  | j ˆ ˆf¡¡ |  | j ˆf¡¡ |  | j ˆ ˆf¡¡ W 5 Q R X d S )NÚiface1)Ú__name__Úiface2Úiface3z$certbot.plugins.disco.zope.interfacec                    sB   |ˆkst ‚| ˆ ks(| ˆks(| ˆks(t ‚| ˆkr>ˆj d d ¡‚d S r4   )ÚAssertionErrorÚ
exceptionsZBrokenImplementation)ZifaceÚobj©rD   rF   rG   Z	mock_zoperB   r   r    Úverify_object~   s    z7PluginEntryPointTest.test_verify.<locals>.verify_object)r   r   r   Ú_initializedÚzopeZ	interfacerI   ÚpatchÚverifyZverifyObjectÚside_effectr)   r6   )r   rI   rL   r   rK   r    Útest_verifyr   s    

z PluginEntryPointTest.test_verifyc                 C   sJ   t  ¡ }| jj|d� | j ¡  |  | jj¡ |  | jj¡ t	| jƒ d S )Nr>   )
r   r   r   rA   Úpreparer)   r9   r6   r:   Ústr)r   r?   r   r   r    Útest_prepare‰   s    
z!PluginEntryPointTest.test_preparec                 C   sv   t  ¡ }tj|j_|| j_|  t	| j ¡ tjƒ¡ |  | jj
¡ |  | jj¡ |  t	| jjtjƒ¡ |  | jj¡ d S r4   )r   r   r   ZMisconfigurationErrorrS   rQ   r   rM   r)   Ú
isinstancer9   r:   r<   r;   ©r   rB   r   r   r    Útest_prepare_misconfigured“   s    
ÿÿz/PluginEntryPointTest.test_prepare_misconfiguredc                 C   s`   t  ¡ }tj|j_|| j_|  t	| j ¡ tjƒ¡ |  | jj
¡ |  | jj¡ |  | jj¡ d S r4   )r   r   r   ZNoInstallationErrorrS   rQ   r   rM   r)   rV   r9   r6   r:   r;   rW   r   r   r    Útest_prepare_no_installation    s    
ÿz1PluginEntryPointTest.test_prepare_no_installationc                 C   s`   t  ¡ }tj|j_|| j_|  t	| j ¡ tjƒ¡ |  | jj
¡ |  | jj¡ |  | jj¡ d S r4   )r   r   r   ZPluginErrorrS   rQ   r   rM   r)   rV   r9   r6   r:   r;   rW   r   r   r    Ú!test_prepare_generic_plugin_error«   s    
z6PluginEntryPointTest.test_prepare_generic_plugin_errorc                 C   s   |   dt| jƒ¡ d S )NzPluginEntryPoint#sa)r$   Úreprr   r+   r   r   r    Ú	test_reprµ   s    zPluginEntryPointTest.test_reprN)rE   Ú
__module__Ú__qualname__Ú__doc__r!   r(   r,   r.   r1   r3   r7   r=   rC   rR   rU   rX   rY   rZ   r\   r   r   r   r    r      s    

r   c                   @   s”   e Zd ZdZe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d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"S )#ÚPluginsRegistryTestz0Tests for certbot.plugins.disco.PluginsRegistry.c                 C   s   ddl m} ||ƒS )Nr   ©ÚPluginsRegistry)r   rb   )ÚclsÚpluginsrb   r   r   r    Ú_create_new_registry¼   s    z(PluginsRegistryTest._create_new_registryc                 C   s>   t  ¡ | _d| j_t| jj_| jj| ji| _|  | j¡| _	d S ©Nr   )
r   r   r   r'   Ú	TypeErrorÚ__hash__rQ   rd   re   Úregr+   r   r   r    r!   Á   s
    

zPluginsRegistryTest.setUpc              	   C   sš   ddl m} t d¡�&}ttgƒttgƒg|j_| 	¡ }W 5 Q R X |  
|d jtjk¡ |  
|d jtk¡ |  
|d jtjk¡ |  
|d jtk¡ d S )Nr   ra   z#certbot.plugins.disco.pkg_resourcesr   r   )r   rb   r   rO   Úiterr   ÚEP_WRÚiter_entry_pointsrQ   Zfind_allr)   r-   r   r   r&   r   )r   rb   Zmock_pkgrd   r   r   r    Útest_find_allÈ   s    ÿz!PluginsRegistryTest.test_find_allc                 C   s   |   | j| jd ¡ d S rf   )r$   r   ri   r+   r   r   r    Útest_getitemÓ   s    z PluginsRegistryTest.test_getitemc                 C   s   |   dgt| jƒ¡ d S rf   )r$   Úlistri   r+   r   r   r    Ú	test_iterÖ   s    zPluginsRegistryTest.test_iterc                 C   s,   |   dt|  i ¡ƒ¡ |   dt| jƒ¡ d S )Nr   é   )r$   Úlenre   ri   r+   r   r   r    Útest_lenÙ   s    zPluginsRegistryTest.test_lenc                 C   s2   d| j j_|  dg| j d¡¡ | j j d¡ d S )NÚbazÚbar)r   rA   Úreturn_valuer$   ri   Úassert_called_once_withr+   r   r   r    rC   Ý   s    
zPluginsRegistryTest.test_initc                 C   s6   |   | j| j dd„ ¡¡ |   i | j dd„ ¡¡ d S )Nc                 S   s   | j  d¡S )NÚm©r'   Ú
startswith©Zp_epr   r   r    Ú<lambda>å   ó    z1PluginsRegistryTest.test_filter.<locals>.<lambda>c                 S   s   | j  d¡S )NÚbry   r{   r   r   r    r|   ç   r}   )r$   rd   ri   Úfilterr+   r   r   r    Útest_filterâ   s    þ ÿzPluginsRegistryTest.test_filterc                 C   sB   d| j j_|  | j| j ¡ j¡ d| j j_|  i | j ¡ j¡ d S ©NTF)r   r5   rv   r$   rd   ri   Ú_pluginsr+   r   r   r    r7   é   s    

zPluginsRegistryTest.test_ifacesc                 C   sN   d| j j_|  | j| j t ¡ ¡j¡ d| j j_|  i | j t ¡ ¡j¡ d S r�   )	r   rP   rv   r$   rd   ri   r   r   r‚   r+   r   r   r    rR   ð   s    
 ÿ
zPluginsRegistryTest.test_verifyc                 C   s.   d| j j_|  dg| j ¡ ¡ | j j ¡  d S )Nrt   )r   rS   rv   r$   ri   rw   r+   r   r   r    rU   ø   s    
z PluginsRegistryTest.test_preparec                    sD   g ‰ t ‡ fdd„tjD ƒƒ}|  |¡}| ¡  |  ˆ ttjƒ¡ d S )Nc                 3   s(   | ] }|t jt ˆ j|¡d �fV  qdS ))rS   N)r   r   Ú	functoolsÚpartialÚappend)Ú.0Úc©Úorderr   r    Ú	<genexpr>ÿ   s   ÿz9PluginsRegistryTest.test_prepare_order.<locals>.<genexpr>)ÚdictÚstringÚascii_lettersre   rS   r$   Úsorted©r   rd   ri   r   rˆ   r    Útest_prepare_orderý   s    þ
z&PluginsRegistryTest.test_prepare_orderc                 C   s>   d| j _|  | j| j ¡ j¡ d| j _|  i | j ¡ j¡ d S r�   )r   r;   r$   rd   ri   r‚   r+   r   r   r    Útest_available  s    z"PluginsRegistryTest.test_availablec                 C   sD   |   | j t ¡ ¡d k¡ d| j_|   | j | j ¡ ¡| jk¡ d S )NT)r)   ri   Z	find_initr   ÚMockr   r8   rA   r+   r   r   r    Útest_find_init  s
    ÿz"PluginsRegistryTest.test_find_initc                 C   s"   dd„ | j _|  dt| jƒ¡ d S )Nc                 S   s   dS )NzPluginEntryPoint#mockr   ©Ú_r   r   r    r|     r}   z/PluginsRegistryTest.test_repr.<locals>.<lambda>z&PluginsRegistry(PluginEntryPoint#mock))r   Ú__repr__r$   r[   ri   r+   r   r   r    r\     s    ÿzPluginsRegistryTest.test_reprc                 C   sd   |   dt|  i ¡ƒ¡ dd„ | j_|   dt| jƒ¡ | jj| jddi}|  |¡}|   dt|ƒ¡ d S )Nz
No pluginsc                 S   s   dS )Nr’   r   r”   r   r   r    r|     r}   z.PluginsRegistryTest.test_str.<locals>.<lambda>r’   ZfooZBarz	Bar

Mock)r$   rT   re   r   Ú__str__ri   r'   r�   r   r   r    Útest_str  s    
zPluginsRegistryTest.test_strN)rE   r]   r^   r_   Úclassmethodre   r!   rm   rn   rp   rs   rC   r€   r7   rR   rU   r�   r‘   r“   r\   r˜   r   r   r   r    r`   ¹   s$   
r`   Ú__main__)r_   rƒ   rŒ   Zunittestr   r   r"   Zzope.interfacerN   Zacme.magic_typingr   r	   r   r   Zcertbot.pluginsr   r   r   r   r   rk   ZTestCaser   r`   rE   Úmainr   r   r   r    Ú<module>   s:    
ý 
ý j