
    M/e$                         d Z ddlZddlZddlZddlZ G d dej
                        Z G d dej
                        Zedk(  r4 ej                   ej                  ej                  dd egz                yy)	z7Test the helper objects in certbot_nginx._internal.obj.    Nc                   :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)
AddrTestzTest the Addr class.c                 p   ddl m} |j                  d      | _        |j                  d      | _        |j                  d      | _        |j                  d      | _        |j                  d      | _        |j                  d      | _        |j                  d	      | _	        |j                  d
      | _
        y )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._internal.objr   
fromstringaddr1addr2addr3addr4addr5addr6addr7addr8)selfr   s     H/usr/lib/python3/dist-packages/certbot_nginx/_internal/tests/obj_test.pysetUpzAddrTest.setUp   s    4__]3
__%89
__%56
__%>?
__X.
__%=>
__%?@
__%78
    c                    | j                   j                         dk(  sJ | j                   j                         dk(  sJ | j                   j                  du sJ | j                   j                  du sJ | j
                  j                         dk(  sJ | j
                  j                         dk(  sJ | j
                  j                  du sJ | j
                  j                  du sJ | j                  j                         dk(  sJ | j                  j                         dk(  sJ | j                  j                  du sJ | j                  j                  du sJ | j                  j                         dk(  sJ | j                  j                         dk(  sJ | j                  j                  du sJ | j                  j                  du sJ | j                  j                         dk(  sJ | j                  j                         dk(  sJ | j                  j                  du sJ | j                  j                  du sJ | j                  j                         dk(  sJ | j                  j                         dk(  sJ | j                  j                  du sJ | j                  j                  du sJ | j                  j                  du sJ | j                  J y )Nr    F*T80r   )r   get_addrget_portssldefaultr   r   r   r   r   r   r   r   s    r   test_fromstringzAddrTest.test_fromstring   s   zz""$555zz""$***zz~~&&&zz!!U***zz""$555zz""$+++zz~~%%%zz!!U***zz""$555zz""$,,,zz~~&&&zz!!U***zz""$+++zz""$,,,zz~~%%%zz!!T)))zz""$000zz""$***zz~~&&&zz!!U***zz""$***zz""$,,,zz~~&&&zz!!T)))zz!!T)))zz!!!r   c                 p   t        | j                        dk(  sJ t        | j                        dk(  sJ t        | j                        dk(  sJ t        | j                        dk(  sJ t        | j
                        dk(  sJ t        | j                        dk(  sJ t        | j                        dk(  sJ y )Nr   r	   r
   r   r   80 default_server)strr   r   r   r   r   r   r   r#   s    r   test_strzAddrTest.test_str9   s    4::-///4::"55554::"22224::";;;;4::(***4::"55554::";;;;r   c                    | j                   j                         dk(  sJ | j                  j                         dk(  sJ | j                  j                         dk(  sJ | j                  j                         dk(  sJ | j                  j                  d      dk(  sJ | j
                  j                         dk(  sJ | j                  j                         d	k(  sJ | j                  j                  d      d
k(  sJ y )Nr   r	   r
   r   F)include_defaultz*:80 sslr   r&   r   )r   	to_stringr   r   r   r   r   r#   s    r   test_to_stringzAddrTest.test_to_stringB   s    zz##%666zz##%)<<<<zz##%)9999zz##%)BBBBzz##E#:jHHHzz##%111zz##%)<<<<zz##E#:dBBBr   c                     ddl m} |j                  d      }| j                  |k(  sJ | j                  | j                  k7  sJ | j                  dk7  sJ y )Nr   r   z192.168.1.1 spdyi  )r   r   r   r   r   )r   r   	new_addr1s      r   test_eqzAddrTest.test_eqL   sN    4OO$67	zzY&&&zzTZZ'''zzT!!!r   c                 B   ddl m} d}t        j                  |d      D ]*  \  }}|j	                  |      |j	                  |      k(  r*J  |j	                  |d         |j	                  d      k7  sJ |D ]'  }|j	                  d      |j	                  |      k7  r'J  y )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   any_addressesfirstsecondany_addresss         r   test_equivalent_any_addressesz&AddrTest.test_equivalent_any_addressesS   s    4+ '33M1E 	EME6??5)T__V-DDDD	E }Q/0 OO,LMN 	N N ) 	-K??#FG,- - -	-r   c                     ddl m} | j                  | j                  h}|j	                  d      }|j	                  d      }||h}||k(  sJ y )Nr   r   r   r	   )r   r   r   r   r   )r   r   set_aaddr1baddr2bset_bs         r   test_set_inclusionzAddrTest.test_set_inclusione   sJ    4TZZ(/!45 ~~r   N)__name__
__module____qualname____doc__r   r$   r(   r,   r/   r8   r>    r   r   r   r   	   s*    	9!"F<C"-$r   r   c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)VirtualHostTestzTest the VirtualHost class.c           	         ddl m} ddl m} ddgg dg dggdd	gg} |d
|j                  d      hdddh|g       | _        ddgg dg dggg} |d
|j                  d      hdddh|g       | _        ddgg dg} |d
|j                  d      hdddh|g       | _        ddgddgg} |d|j                  d      hdddh|g       | _        ddgddgg dg} |d
|j                  d      hdddh|g       | _        y )Nr   r   VirtualHostlistenz69.50.225.155:9000)if($scheme!=z	"https") return301https://$host$request_uri# managed by Certbotfilep	localhostF)rewritez^(.*)$z$scheme://www.domain.com$1	permanentserver_namez
return.comfilp)
add_headeralwayssetStrict-Transport-Securityz"max-age=31536000")	r   r   rH   r   vhost1vhost2vhost3vhost4vhost_has_hsts)r   r   rH   raw1raw2raw3raw4raw_has_hstss           r   r   zVirtualHostTest.setUpq   s   4;+,2?@ '(
 "__[)*E5M4%
 +,2?@
 "__[)*E5M4%
 +,L
 "__[)*E5M4%
 +,L)
 "__[)*E5M4%
 +,L)`

 *__[)*E5M<-r   c           	          ddl m} ddl m}  |d|j                  d      hdddhg g       }|| j                  k(  sJ t        |      t        | j                        k(  sJ |dk7  sJ y )	Nr   r   rG   rS   zlocalhost blahFrT   i  )r   r   rH   r   r]   r'   )r   r   rH   vhost1bs       r   r/   zVirtualHostTest.test_eq   sm    4;__-./M2r#
 $++%%%7|s4;;////$r   c                 ^    dj                  g d      }|t        | j                        k(  sJ y )N
)zfile: filepzaddrs: localhostznames: ['localhost']z
ssl: Falsezenabled: False)joinr'   r]   )r   stringifieds     r   r(   zVirtualHostTest.test_str   s.    ii !3 4 c$++....r   c                     | j                   j                  d      du sJ | j                   j                  d      du sJ | j                  j                  d      du sJ | j                  j                  d      du sJ y )Nr\   TzBogus-HeaderF)ra   
has_headerr]   r#   s    r   test_has_headerzVirtualHostTest.test_has_header   s|    ""--.IJdRRR""--n=FFF{{%%&ABeKKK{{%%n5>>>r   c                    ddl m} ddlm} ddlm} g d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g dddgg g} |d|j                  d      hdddh|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g dg dggddgg g} |d|j                  d      hdddh|g       }	|j                  |      sJ |	j                  |      rJ y )Nr   )_test_block_from_blockr   rG   )z
    rN    rO   rr   rP   rj   rI   r   rootz/var/www/htmlindexz,index.html index.htm index.nginx-debian.htmlrW   ztwo.functorkitten.xyzz443 sslrQ   rR   ssl_certificatez9/etc/letsencrypt/live/two.functorkitten.xyz/fullchain.pemssl_certificate_keyz7/etc/letsencrypt/live/two.functorkitten.xyz/privkey.pemrM   rX   rT   F)rJ   rK   rL   z"https"))rN   302rP   )$certbot_nginx._internal.configuratorrq   r   r   rH   r   contains_list)
r   rq   r   rH   
test_blocktest_needletest_haystackvhost_haystacktest_bad_haystackvhost_bad_haystacks
             r   test_contains_listz"VirtualHostTest.test_contains_list   s   O4;NF

 -Z8"D)FO+DDE34x6K'( [\'("$]^'(:'("	. %__[)*E5M=". '-/HDE34x6K'( [\'("$]^'(1<= '(". )__[)*E5M,b2 ++K888%33K@@@@r   N)	r?   r@   rA   rB   r   r/   r(   ro   r   rC   r   r   rE   rE   o   s     %0-d
/?(Ar   rE   __main__   )rB   r2   sysunittestpytestTestCaser   rE   r?   exitmainargv__file__rC   r   r   <module>r      sy    =  
  cx   cLtAh'' tAn zCHH[V[[!"
234 r   