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	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dd„ Zddd„Zdd„ Zdd„ ZdS )z#Common utilities for certbot_nginx.é    N)Úconfiguration)Úutil)Úos)Úcommon)Úconfigurator)Únginxparserc                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )Ú	NginxTestc                    s\   t t| ƒ ¡  t dd¡\| _| _| _t 	d¡| _
tj | jd¡| _tj t d¡¡| _d S )NÚ	etc_nginxúcertbot_nginx.testsZlogszrsa512_key.pem)Úsuperr   ÚsetUpr   Z	dir_setupÚtemp_dirÚ
config_dirÚwork_dirÚtempfileÚmkdtempÚlogs_dirr   ÚpathÚjoinÚconfig_pathÚjoseZJWKRSAÚloadÚ	test_utilZload_vectorZ	rsa512jwk©Úself©Ú	__class__© ú[/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/certbot_nginx/tests/util.pyr      s     ÿ
ÿzNginxTest.setUpc                 C   s<   t  ¡  t | j¡ t | j¡ t | j¡ t | j¡ d S )N)r   Z_release_locksÚshutilÚrmtreer   r   r   r   r   r   r   r   ÚtearDown$   s
    zNginxTest.tearDown)Ú__name__Ú
__module__Ú__qualname__r   r!   Ú__classcell__r   r   r   r   r      s   r   c                 C   s   t  dtj dd| ¡¡S )z&Gets the filename of a test data file.r
   Ztestdatar	   )Úpkg_resourcesÚresource_filenamer   r   r   )Úfilenamer   r   r   Úget_data_filename1   s       ÿÿr)   ©é   é   é   ú1.0.2gc           
      C   s¦   t j |d¡}t d¡�l t d¡�V}d|_tjtj| d||||t j |d¡t j |d¡dd	d
d�d||d�}| 	¡  W 5 Q R X W 5 Q R X t
 |j¡}	tj |	¡ |S )z8Create an Nginx Configurator with the specified options.Úbackupsz8certbot_nginx.configurator.NginxConfigurator.config_testz*certbot_nginx.configurator.util.exe_existsTz-le-ssl.confZtemp_checkpointsZIN_PROGRESSzhttps://acme-server.org:443/newéP   i‰  )Znginx_server_rootZle_vhost_extr   r   r   Ú
backup_dirZtemp_checkpoint_dirZin_progress_dirÚserverZhttp01_portZ
https_portÚnginx)ÚconfigÚnameÚversionÚopenssl_version)r   r   r   ÚmockÚpatchZreturn_valuer   ZNginxConfiguratorZ	MagicMockÚpreparer   ZNamespaceConfigr4   ÚzopeÚ	componentZprovideUtility)
r   r   r   r   r6   r7   r/   Zmock_exe_existsr4   Znsconfigr   r   r   Úget_nginx_configurator8   s6    
õðr=   c                 C   s   dd„ }t || ƒƒS )z0Filter comment nodes from parsed configurations.c                 s   s„   | D ]z}dd„ |D ƒ}|r<|d }t |ƒdkr6|d nd}nd }}t|tƒrlt |¡}t|ƒ|d< |V  q|dkr|r|V  qdS )z Generator dropping comment nodesc                 S   s   g | ]}t  |¡s|‘qS r   )r   Zspacey)Ú.0Úer   r   r   Ú
<listcomp>d   s     
 z5filter_comments.<locals>.traverse.<locals>.<listcomp>r   r+   NÚ ú#)ÚlenÚ
isinstanceÚlistÚcopyÚdeepcopyÚfilter_comments)ÚtreeÚentryZ	spacelessÚkeyÚvaluesÚnewr   r   r   Útraverse`   s    

z!filter_comments.<locals>.traverse)rE   )rI   rN   r   r   r   rH   ]   s    rH   c                 C   sL   t | dƒrt | dƒrdS |dkr(|| kS | D ]}t|||d ƒr, dS q,dS )zªIs the needle in haystack at depth n?

    Return true if the needle is present in one of the sub-iterables in haystack
    at depth n. Haystack must be an iterable.
    Ú__iter__ÚstripFr   r+   T)ÚhasattrÚcontains_at_depth)ZhaystackÚneedleÚnÚitemr   r   r   rR   u   s    rR   )r*   r.   )Ú__doc__rF   r   r   ZunittestZjosepyr   r8   r&   Zzope.componentr;   Zcertbotr   r   Zcertbot.compatr   Zcertbot.pluginsr   Zcertbot.testsr   Zcertbot_nginxr   r   ZTestCaser   r)   r=   rH   rR   r   r   r   r   Ú<module>   s,      ÿ
%