U
    ÝÁ]p	  ã                   @   sd   d Z ddlZddlZddlmZ ddlmZ ddlm  mZ	 G dd„ de	j
ƒZedkr`e ¡  dS )z Tests for new style enhancementsé    N)Úenhancements)Únullc                       sH   e Zd ZdZ‡ fdd„Ze ¡ dd„ ƒZdd„ Zdd	„ Z	d
d„ Z
‡  ZS )ÚEnhancementTestz@Tests for new style enhancements in certbot.plugins.enhancementsc                    s"   t t| ƒ ¡  tjtjd| _d S )N)Úspec)Úsuperr   ÚsetUpÚmockZ	MagicMockr   ZAutoHSTSEnhancementÚmockinstaller©Úself©Ú	__class__© úC/usr/lib/python3/dist-packages/certbot/plugins/enhancements_test.pyr      s    zEnhancementTest.setUpc              	   C   sˆ   dddœdddœg}t  d|¡& d| j_d| j_tt | j¡ƒ}W 5 Q R X |  t	|ƒd¡ |  
d	d
„ |D ƒ¡ |  
dd
„ |D ƒ¡ d S )NÚautohstsÚ	auto_hsts)ÚnameZcli_destÚsomethingelseÚ	somethingz#certbot.plugins.enhancements._INDEXTé   c                 S   s   g | ]}|d  dkr|‘qS )r   r   r   ©Ú.0Úir   r   r   Ú
<listcomp>$   s      zIEnhancementTest.test_enhancement_enabled_enhancements.<locals>.<listcomp>c                 S   s   g | ]}|d  dkr|‘qS )r   r   r   r   r   r   r   r   %   s      )r   ZpatchÚconfigr   r   Úlistr   Úenabled_enhancementsÚassertEqualÚlenÚ
assertTrue)r   Ú_Z	FAKEINDEXÚenabledr   r   r   Ú%test_enhancement_enabled_enhancements   s    þþû
z5EnhancementTest.test_enhancement_enabled_enhancementsc                 C   st   |   tdd„ t | j¡D ƒƒd¡ |  t | j¡¡ d| j_|   tdd„ t | j¡D ƒƒd¡ |  t | j¡¡ d S )Nc                 S   s   g | ]}|‘qS r   r   r   r   r   r   r   )   s     z6EnhancementTest.test_are_requested.<locals>.<listcomp>r   Tc                 S   s   g | ]}|‘qS r   r   r   r   r   r   r   -   s     é   )	r   r   r   r   r   ÚassertFalseZare_requestedr   r   r
   r   r   r   Útest_are_requested'   s     ÿ ÿz"EnhancementTest.test_are_requestedc                 C   sD   d| j _t | j d¡}|  t | j | j¡¡ |  t | j |¡¡ d S )NTr   )	r   r   r   Z	Installerr   r   Zare_supportedr	   r$   )r   Zunsupportedr   r   r   Útest_are_supported0   s    z"EnhancementTest.test_are_supportedc                 C   sV   d| j _ddg}d}t ||| j| j ¡ |  | jjj¡ |  | jjj	d ||f¡ d S )NTzexample.comzwww.example.comÚlineager   )
r   r   r   Úenabler	   r   Zenable_autohstsZcalledr   Z	call_args)r   Zdomainsr'   r   r   r   Útest_enable6   s    ÿzEnhancementTest.test_enable)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú	test_utilZpatch_get_utilityr"   r%   r&   r)   Ú__classcell__r   r   r   r   r      s   
	r   Ú__main__)r-   Zunittestr   Zcertbot.pluginsr   r   Zcertbot.tests.utilZtestsÚutilr.   ZConfigTestCaser   r*   Úmainr   r   r   r   Ú<module>   s   5