U
    ÔZj.&  ã                   @   sL   d Z ddlZddlZG dd„ dejƒZG dd„ dejƒZedkrHe ¡  dS )z-Test the helper objects in certbot_nginx.obj.é    Nc                   @   sH   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S )ÚAddrTestzTest the Addr class.c                 C   sp   ddl m} | d¡| _| d¡| _| d¡| _| d¡| _| d¡| _| d¡| _| d	¡| _	| d
¡| _
d S )Nr   ©ÚAddrú192.168.1.1ú192.168.1.1:* sslú192.168.1.1:80ú*:80 default_server sslÚmyhostz80 default_server spdyzunix:/var/run/nginx.sockz*:80 default ssl)Úcertbot_nginx.objr   Ú
fromstringÚaddr1Úaddr2Úaddr3Úaddr4Úaddr5Úaddr6Úaddr7Úaddr8)Úselfr   © r   ú_/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/certbot_nginx/tests/obj_test.pyÚsetUp   s    zAddrTest.setUpc                 C   s   |   | j ¡ d¡ |   | j ¡ d¡ |  | jj¡ |  | jj¡ |   | j ¡ d¡ |   | j ¡ d¡ |  | jj¡ |  | jj¡ |   | j	 ¡ d¡ |   | j	 ¡ d¡ |  | j	j¡ |  | j	j¡ |   | j
 ¡ d¡ |   | j
 ¡ d¡ |  | j
j¡ |  | j
j¡ |   | j ¡ d¡ |   | j ¡ d¡ |  | jj¡ |  | jj¡ |   | j ¡ d¡ |   | j ¡ d¡ |  | jj¡ |  | jj¡ |  | jj¡ |   d | j¡ d S )Nr   Ú Ú*Ú80r	   )ÚassertEqualr   Zget_addrZget_portÚassertFalseÚsslÚdefaultr   Ú
assertTruer   r   r   r   r   r   ©r   r   r   r   Útest_fromstring   s4    zAddrTest.test_fromstringc                 C   s‚   |   t| jƒd¡ |   t| jƒd¡ |   t| jƒd¡ |   t| jƒd¡ |   t| jƒd¡ |   t| jƒd¡ |   t| jƒd¡ d S )Nr   r   r   r   r	   ú80 default_server)	r   Ústrr   r   r   r   r   r   r   r    r   r   r   Útest_str6   s    zAddrTest.test_strc                 C   sœ   |   | j ¡ d¡ |   | j ¡ d¡ |   | j ¡ d¡ |   | j ¡ d¡ |   | jjdd�d¡ |   | j ¡ d¡ |   | j ¡ d	¡ |   | jjdd�d
¡ d S )Nr   r   r   r   F)Úinclude_defaultz*:80 sslr	   r"   r   )r   r   Z	to_stringr   r   r   r   r   r    r   r   r   Útest_to_string?   s    zAddrTest.test_to_stringc                 C   sH   ddl m} | d¡}|  | j|¡ |  | j| j¡ |  | jdk¡ d S )Nr   r   z192.168.1.1 spdyi  )r
   r   r   r   r   ÚassertNotEqualr   r   )r   r   Z	new_addr1r   r   r   Útest_eqI   s
    
zAddrTest.test_eqc                 C   s€   ddl m} d}t |d¡D ] \}}|  | |¡| |¡¡ q|  | |d ¡| d¡¡ |D ]}|  | d¡| |¡¡ q^d S )Nr   r   )z0.0.0.0:80 default_server sslz80 default_server sslr   z80 default sslé   z0.0.0.0:443 default_server sslz!192.168.1.2:80 default_server ssl)r
   r   Ú	itertoolsÚcombinationsr   r   r'   )r   r   Zany_addressesÚfirstÚsecondZany_addressr   r   r   Útest_equivalent_any_addressesP   s    ÿþz&AddrTest.test_equivalent_any_addressesc                 C   sL   ddl m} t| j| jgƒ}| d¡}| d¡}t||gƒ}|  ||¡ d S )Nr   r   r   r   )r
   r   Úsetr   r   r   r   )r   r   Zset_aZaddr1bZaddr2bZset_br   r   r   Útest_set_inclusionc   s    

zAddrTest.test_set_inclusionN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r!   r$   r&   r(   r.   r0   r   r   r   r   r      s   #	
r   c                   @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚVirtualHostTestzTest the VirtualHost class.c                 C   sj  ddl m} ddl m} ddgdddd	gd
ddgggddgg}|dt| d¡gƒddtdgƒ|g ƒ| _ddgdddd	gd
ddgggg}|dt| d¡gƒddtdgƒ|g ƒ| _ddgddddgg}|dt| d¡gƒddtdgƒ|g ƒ| _ddgddgg}|dt| d¡gƒddtdgƒ|g ƒ| _ddgddgdddddgg}|dt| d¡gƒddtdgƒ|g ƒ| _	d S )Nr   ©ÚVirtualHostr   Úlistenz69.50.225.155:9000Úifú($schemeú!=z	"https") ÚreturnÚ301úhttps://$host$request_uriú#ú managed by CertbotÚfilepÚ	localhostFZrewritez^(.*)$z$scheme://www.domain.com$1Z	permanentÚserver_namez
return.comÚfilpÚ
add_headerÚalwaysr/   úStrict-Transport-Securityz"max-age=31536000")
r
   r7   r   r/   r   Úvhost1Zvhost2Zvhost3Zvhost4Úvhost_has_hsts)r   r7   r   Zraw1Zraw2Zraw3Zraw4Zraw_has_hstsr   r   r   r   o   sˆ    

ÿû    ý

ÿþ    ý
þ    ýþ    ýý    ýzVirtualHostTest.setUpc                 C   st   ddl m} ddl m} |dt| d¡gƒddtdgƒg g ƒ}|  || j¡ |  t|ƒt| jƒ¡ |  |dk¡ d S )	Nr   r   r6   rA   zlocalhost blahFrB   iÒ  )	r
   r   r7   r/   r   r   rH   r#   r   )r   r   r7   Zvhost1br   r   r   r(   ¡   s        ýzVirtualHostTest.test_eqc                 C   s*   d  dddddg¡}|  |t| jƒ¡ d S )NÚ
zfile: filepzaddrs: localhostznames: ['localhost']z
ssl: Falsezenabled: False)Újoinr   r#   rH   )r   Zstringifiedr   r   r   r$   ­   s     þzVirtualHostTest.test_strc                 C   sL   |   | j d¡¡ |  | j d¡¡ |  | j d¡¡ |  | j d¡¡ d S )NrG   zBogus-Header)r   rI   Ú
has_headerr   rH   r    r   r   r   Útest_has_header³   s    zVirtualHostTest.test_has_headerc           
      C   s`  ddl m} ddl m} ddlm} dddddd	gd
gg}||ƒ}ddgddgddgddgddgddgddgddgddgddgddd	gddgg g}|dt| d¡gƒddtdgƒ|g ƒ}ddgddgddgddgddgddgddgddgddgddgdddd gdd!d	gggddgg g}|dt| d¡gƒddtdgƒ|g ƒ}	|  | |¡¡ |  	|	 |¡¡ d S )"Nr   r6   r   )Ú_test_block_from_blockz
    r<   ú r=   r>   rJ   r8   r   Úrootz/var/www/htmlÚindexz,index.html index.htm index.nginx-debian.htmlrC   ztwo.functorkitten.xyzz443 sslr?   r@   Zssl_certificatez9/etc/letsencrypt/live/two.functorkitten.xyz/fullchain.pemZssl_certificate_keyz7/etc/letsencrypt/live/two.functorkitten.xyz/privkey.pemrD   rB   Fr9   r:   r;   z"https")Z302)
r
   r7   r   Zcertbot_nginx.configuratorrN   r/   r   r   Zcontains_listr   )
r   r7   r   rN   Z
test_blockZtest_needleZtest_haystackZvhost_haystackZtest_bad_haystackZvhost_bad_haystackr   r   r   Útest_contains_list¹   sn    þ  ÷
    ý 

ÿ õ    ýz"VirtualHostTest.test_contains_listN)	r1   r2   r3   r4   r   r(   r$   rM   rR   r   r   r   r   r5   m   s   2r5   Ú__main__)r4   Zunittestr*   ZTestCaser   r5   r1   Úmainr   r   r   r   Ú<module>   s   gv