U
    ÝÁ]K  ã                   @   s|   d 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
  mZ G dd„ dejƒZed	krxe ¡  dS )
z$Tests for renewal updater interfacesé    N)Ú
interfaces)Úmain)Úupdater)Úenhancementsc                       sÈ   e Zd ZdZ‡ fdd„Ze d¡e d¡e d¡e ¡ dd„ ƒƒƒƒZ	d	d
„ Z
e d¡dd„ ƒZe d¡dd„ ƒZe d¡dd„ ƒZdd„ Ze d¡dd„ ƒZdd„ Ze d¡dd„ ƒZdd„ Z‡  ZS )ÚRenewUpdaterTestz@Tests for interfaces.RenewDeployer and interfaces.GenericUpdaterc                    sN   t t| ƒ ¡  tjtjd| _t ¡ | j_tjtj	d| _
tjtjd| _d S )N)Úspec)Úsuperr   ÚsetUpÚmockÚ	MagicMockr   ZGenericUpdaterÚgeneric_updaterÚrestartZRenewDeployerÚrenew_deployerr   ÚAutoHSTSEnhancementÚmockinstaller©Úself©Ú	__class__© úA/usr/lib/python3/dist-packages/certbot/tests/renewupdater_test.pyr	      s
    zRenewUpdaterTest.setUpzcertbot.main._get_and_save_certz5certbot.plugins.selection.choose_configurator_pluginsz2certbot.plugins.selection.get_unprepared_installerc              	   C   s¢   t  ¡ |_| j}|d f|_||_t  d¡ t | jd t  ¡ ¡ W 5 Q R X |  |j	j
¡ |j	 ¡  |j ¡  t | jt  ¡ d ¡ |  |jjd¡ |  |j	j
¡ d S )Nzcertbot.main._init_le_clienté   )r
   r   Úreturn_valuer   Úpatchr   Z
renew_certÚconfigÚ
assertTruer   ÚcalledZ
reset_mockZgeneric_updatesr   Úrun_generic_updatersÚassertEqualÚ
call_countÚassertFalse)r   Ú_Ú	mock_getiZmock_selectZmock_getsaveZmock_generic_updaterr   r   r   Útest_server_updates   s    



z$RenewUpdaterTest.test_server_updatesc                 C   s4   t  ¡ }| j}t | j||¡ |  |j |¡¡ d S ©N)	r
   r   r   r   Úrun_renewal_deployerr   r   Zrenew_deployZcalled_with)r   ZlineageZmock_deployerr   r   r   Útest_renew_deployer-   s    z$RenewUpdaterTest.test_renew_deployerzcertbot.updater.logger.debugc                 C   s>   d| j _t | j d d ¡ |  |j¡ |  |jd d d¡ d S )NTr   z"Skipping updaters in dry-run mode.)r   Údry_runr   r   r   r   r   Ú	call_args©r   Zmock_logr   r   r   Útest_updater_skip_dry_run3   s    ÿz*RenewUpdaterTest.test_updater_skip_dry_runc                 C   s>   d| j _t | j d d ¡ |  |j¡ |  |jd d d¡ d S )NTr   z*Skipping renewal deployer in dry-run mode.)r   r'   r   r%   r   r   r   r(   r)   r   r   r   Útest_deployer_skip_dry_run;   s    ÿz+RenewUpdaterTest.test_deployer_skip_dry_runc                 C   sB   | j |_t | jt ¡ d ¡ |  | j jj	¡ |  
| j jjd¡ d S )Nr   )r   r   r   r   r   r
   r   r   Úupdate_autohstsr   r   r   ©r   r"   r   r   r   Útest_enhancement_updatesC   s    z)RenewUpdaterTest.test_enhancement_updatesc                 C   s*   t  | jt ¡ | j¡ |  | jjj¡ d S r$   )	r   r%   r   r
   r   r   r   Údeploy_autohstsr   r   r   r   r   Útest_enhancement_deployerJ   s    ÿz*RenewUpdaterTest.test_enhancement_deployerc                 C   s8   d| j _| j|_t | j t ¡ d ¡ |  | jj	j
¡ d S ©NT)r   Údisable_renew_updatesr   r   r   r   r
   r   r    r,   r   r-   r   r   r   Ú#test_enhancement_updates_not_calledO   s    z4RenewUpdaterTest.test_enhancement_updates_not_calledc                 C   s2   d| j _t | j t ¡ | j¡ |  | jjj	¡ d S r1   )
r   r2   r   r%   r
   r   r   r    r/   r   r   r   r   r   Ú$test_enhancement_deployer_not_calledV   s
    ÿz5RenewUpdaterTest.test_enhancement_deployer_not_calledc              	   C   s\   dt jd dddœg}| j|_t d|¡ t | jt 	¡ d ¡ W 5 Q R X |  
| jjj¡ d S ©NZTestr/   Zenable_autohsts)ÚnameÚclassZupdater_functionZdeployer_functionZenable_functionz#certbot.plugins.enhancements._INDEX)r   r   r   r   r
   r   r   r   r   r   r    r,   r   )r   r"   Ú	FAKEINDEXr   r   r   Útest_enhancement_no_updater\   s    ûÿ	z,RenewUpdaterTest.test_enhancement_no_updaterc              	   C   sV   dt jdd ddœg}t d|¡ t | jt ¡ | j¡ W 5 Q R X |  	| jj
j¡ d S r5   )r   r   r
   r   r   r%   r   r   r   r    r/   r   )r   r8   r   r   r   Útest_enhancement_no_deployerl   s    ûÿ	ÿz-RenewUpdaterTest.test_enhancement_no_deployer)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r
   r   Ú	test_utilZpatch_get_utilityr#   r&   r*   r+   r.   r0   r3   r4   r9   r:   Ú__classcell__r   r   r   r   r      s*   




r   Ú__main__)r>   Zunittestr
   Zcertbotr   r   r   Zcertbot.pluginsr   Zcertbot.tests.utilZtestsÚutilr?   ZConfigTestCaser   r;   r   r   r   r   Ú<module>   s   n