U
    ÔZj &  ã                   @   s‚   d 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
„ ZG dd„ dejƒZedkr~e ¡  dS )z;Test for certbot_apache.configurator for CentOS 6 overridesé    N)Úos)ÚMisconfigurationError)Úobj)Úoverride_centos)Úparser)Úutilc              	   C   sˆ   t j | |d¡}d| }t t j |d¡t j |d¡ttj d¡gƒddd¡t t j |d	¡t j |d
¡ttj d¡gƒddd¡g}|S )z4Return the ground truth for the specified directory.zhttpd/conf.dz/filesztest.example.com.confz!test.example.com.conf/VirtualHostz*:80FTútest.example.comússl.confzssl.conf/VirtualHostz_default_:443N)r   ÚpathÚjoinr   ZVirtualHostÚsetZAddrÚ
fromstring)Útemp_dirZconfig_nameÚprefixZaug_preÚvh_truth© r   úd/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/certbot_apache/tests/centos6_test.pyÚget_vh_truth   s0      ÿ  ü  üúr   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	dd„ Z
dd„ Zdd„ Zdd„ Z‡  ZS )ÚCentOS6TestszTests for CentOS 6c                    sT   d}d}d}t t| ƒj|||d� tj| j| j| j| jddd�| _	t
| jdƒ| _d S )Nzcentos6_apache/apachezcentos6_apache/apache/httpdz"centos6_apache/apache/httpd/conf.d)Útest_dirÚconfig_rootÚ
vhost_root)é   r   é   Zcentos)ÚversionZos_info)Úsuperr   ÚsetUpr   Zget_apache_configuratorZconfig_pathZ
vhost_pathZ
config_dirZwork_dirÚconfigr   r   r   )Úselfr   r   r   ©Ú	__class__r   r   r   $   s&    þ    þ ÿzCentOS6Tests.setUpc                 C   s   |   t| jjtjƒ¡ d S )N)Ú
assertTrueÚ
isinstancer   r   r   ZCentOSParser©r   r   r   r   Útest_get_parser2   s    ÿzCentOS6Tests.test_get_parserc                 C   sd   | j  ¡ }|  t|ƒd¡ d}|D ]0}| jD ]}||kr,|d7 } q"q,td| ƒ‚q"|  |d¡ dS )z.Make sure all vhosts are being properly found.r   r   é   z
Missed: %sN)r   Zget_virtual_hostsÚassertEqualÚlenr   Ú	Exception)r   ÚvhsÚfoundZvhostZcentos_truthr   r   r   Útest_get_virtual_hosts6   s    

z#CentOS6Tests.test_get_virtual_hostsc                 C   sô   | j jjdddd�}|  t|ƒd¡ |  d|d k¡ |  d|d k¡ | jd | j jd	< | j  	d
dddd¡ | j  
¡  | j jjdddd�}|  t|ƒd¡ |D ]N}| j j |d d… ¡}|  |ddg¡ | j j |d d… ¡}|  d|k¡ q d S )NÚ
LoadModuleÚ
ssl_moduleF©Úexcluder%   r	   r   ZIfModuler   úrandom.demoúexample/cert.pemúexample/key.pemúexample/cert_chain.pemúexample/fullchain.pemr   éùÿÿÿúmodules/mod_ssl.soiïÿÿÿú
!mod_ssl.c)r   r   Úfind_dirr&   r'   r!   ÚassertFalser   ÚassocÚdeploy_certÚsaveÚget_all_args)r   Zssl_loadmodsÚpost_loadmodsÚlmÚ	argumentsZ
ifmod_argsr   r   r   Útest_loadmod_defaultE   s8      ÿ   þ
  ÿz!CentOS6Tests.test_loadmod_defaultc                 C   s¶   ddg}| j j | j jjd d|¡ | j  ¡  | j jjdddd�}|  tdd„ |D ƒƒ¡ | jd	 | j j	d
< | j  
ddddd¡ | j jjdddd�}|D ]}|  | j j |¡¡ q˜d S )Nr-   r6   Údefaultr,   Fr.   c                 S   s   g | ]}d |  ¡ k‘qS )Zifmodule)Úlower)Ú.0Úmr   r   r   Ú
<listcomp>l   s     z6CentOS6Tests.test_loadmod_multiple.<locals>.<listcomp>r   r   r0   r1   r2   r3   r4   )r   r   Úadd_dirÚlocr<   r8   r9   Úanyr   r:   r;   r!   Únot_modssl_ifmodule)r   Ússlmod_argsÚpre_loadmodsr>   Úmodr   r   r   Útest_loadmod_multiplec   s4    ÿ
  ÿ   þ  ÿz"CentOS6Tests.test_loadmod_multiplec                    sî   ddg}ˆ j jjt ˆ j jjd ¡ddd�}ˆ j j |d d… d|¡ ˆ j  ¡  ˆ jd	 ˆ j jd
< ˆ j  	ddddd¡ ˆ j  ¡  ˆ j jj
ddt ˆ j jjd ¡dd�}‡ fdd„|D ƒ}ˆ  t|ƒd¡ ˆ  ˆ j j |d	 d d… ¡|¡ d S )Nr-   r6   rB   r7   T©Z	beginningéÿÿÿÿr,   r   r   r0   r1   r2   r3   r4   F©Ústartr/   c                    s"   g | ]}ˆ j jjd  |kr|‘qS )rB   )r   r   rH   )rD   r?   r#   r   r   rF   Š   s      z=CentOS6Tests.test_loadmod_rootconf_exists.<locals>.<listcomp>r%   r5   )r   r   Ú	get_ifmodÚget_aug_pathrH   rG   r<   r   r:   r;   r8   r&   r'   r=   )r   rK   Úrootconf_ifmodZroot_loadmodsZmodsr   r#   r   Útest_loadmod_rootconf_existsw   s:     þ
   þ
 ýþz)CentOS6Tests.test_loadmod_rootconf_existsc                 C   sò   ddg}| j jj| jd jddd�}| j j |d d… d|¡ | j j | jd jd|¡ | j  ¡  | j jjdd| jd jd	d
�}|  t	|ƒd¡ | jd | j j
d< | j  ddddd¡ | j  ¡  | j jjdd| jd jd	d
�}|  t	|ƒd¡ d S )Nr-   r6   r%   r7   TrO   rP   r,   FrQ   r   r   r   r0   r1   r2   r3   r4   )r   r   rS   r   r
   rG   r<   r8   r&   r'   r:   r;   )r   Zloadmod_argsZifmodrL   r>   r   r   r   Ú test_neg_loadmod_already_on_path’   s@    
  ÿ
  
 ÿ   þ
  
 ÿz-CentOS6Tests.test_neg_loadmod_already_on_pathc              	   C   s´   ddg}| j jjt | j jjd ¡ddd�}| j j |d d… d|¡ | j  ¡  | jd	 | j jd
< | j jj	dddd�}|  
t| j jddddd¡ | j jj	dddd�}|  ||¡ d S )Nr-   zmodules/mod_somethingelse.sorB   r7   TrO   rP   r,   r   r   Fr.   r0   r1   r2   r3   r4   )r   r   rS   rT   rH   rG   r<   r   r:   r8   ZassertRaisesr   r;   r&   )r   rK   rU   Zpre_matchesZpost_matchesr   r   r   Útest_loadmod_non_duplicate¨   s2     þ

 ÿ   þ
 ÿz'CentOS6Tests.test_loadmod_non_duplicatec                 C   s|   | j jjdddd�}|D ]"}| d¡d }| j jj |¡ q| j  ¡  | j  ddd	d
d¡ | j jjdddd�}|  |¡ d S )Nr,   r-   Fr.   ú/r   r0   r1   r2   r3   r4   )	r   r   r8   Ú
rpartitionÚaugÚremover<   r;   r9   )r   Zorig_loadmodsrM   Z
noarg_pathr>   r   r   r   Útest_loadmod_not_found½   s(    
þ
   þ
þz#CentOS6Tests.test_loadmod_not_foundc                 C   s@   |   | jj d¡¡ |   | jj d¡¡ |   | jj d¡¡ d S )Nz/path/does/not/include/ifmodÚ z(/path/includes/IfModule/but/no/arguments)r9   r   r   rJ   r#   r   r   r   Útest_no_ifmod_search_falseÏ   s    ÿÿÿz'CentOS6Tests.test_no_ifmod_search_false)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r$   r+   rA   rN   rV   rW   rX   r]   r_   Ú__classcell__r   r   r   r   r   !   s   r   Ú__main__)rc   ZunittestZcertbot.compatr   Zcertbot.errorsr   Zcertbot_apacher   r   r   Zcertbot_apache.testsr   r   Z
ApacheTestr   r`   Úmainr   r   r   r   Ú<module>   s    =