
    M/e'                     z   d Z ddlZddlZddlm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 ej&                  j)                   ej*                  d            Z G d dej.                        Zedk(  r4 ej4                   ej6                  ej8                  dd egz                yy)z)Tests for certbot_nginx._internal.http_01    N)mock)
challenges)messages)achallenges)	acme_util)util)Addr)	test_utilzrsa512_key.pemc                   r    e Zd ZdZeZ ej                   ej                   e
j                  d      ej                        de       ej                   ej                   e
j                  d      ej                        de       ej                   ej                   e
j                  d      ej                        d	e       ej                   ej                   e
j                  d
      ej                        de       ej                   ej                   e
j                  d
      ej                        de      gZ fdZd Z ej$                  d      d        Zd Zd Z ej$                  d      d        Z ej$                  d       ej$                  d      d               Z ej$                  d      d        Zd Zd Z ej$                  d      d        Z ej$                  d      d        Z ej$                  d      d        Z ej$                  d      d        Z xZS )HttpPerformTestzTest the NginxHttp01 challenge.s   kNdwjwOeX0I_A8DXt9Msmgtokenzwww.example.comchallbdomainaccount_keys    ?<mwmx꭭vy_X	Ǥ	&5zipv6.coms    _-f\cw/9VMwuᇴzwww.example.org   kNdwjxOeX0I_A8DXt9Msmgzmigration.comzipv6ssl.comc                     t         |           | j                  | j                  | j                  | j
                  | j                        }ddlm} |j                  |      | _
        y )Nr   )http_01)supersetUpget_nginx_configuratorconfig_path
config_dirwork_dirlogs_dircertbot_nginx._internalr   NginxHttp01http01)selfconfigr   	__class__s      L/usr/lib/python3/dist-packages/certbot_nginx/_internal/tests/http_01_test.pyr   zHttpPerformTest.setUp5   sO    ,,doot}}dmmM 	4))&1    c                 F    | j                   j                         }g |k(  sJ y )N)r   perform)r    	responsess     r#   test_perform0zHttpPerformTest.test_perform0>   s     KK'')	Yr$   z;certbot_nginx._internal.configurator.NginxConfigurator.savec                 
   | j                   j                  | j                  d          | j                  d   j                  | j                        }| j                   j                         }|g|k(  sJ |j                  dk(  sJ y )Nr      )r   	add_challachallsresponser   r&   
call_count)r    	mock_saver-   r'   s       r#   test_perform1zHttpPerformTest.test_perform1B   sp    dll1o.<<?++D,<,<=KK'')	zY&&&##q(((r$   c                 B   g }| j                   D ]G  }| j                  j                  |       |j                  |j	                  | j
                               I | j                  j                         }t        |      dk(  sJ t        d      D ]  }||   ||   k(  rJ  y )N   )	r,   r   r+   appendr-   r   r&   lenrange)r    acme_responsesachallhttp_responsesis        r#   test_perform2zHttpPerformTest.test_perform2L   s    ll 	EFKK!!&)!!&//$2B2B"CD	E ,,.>"a'''q 	:A!!$q(9999	:r$   c                 |   | j                   j                  | j                  d          | j                   j                  | j                  d          | j                   j                          | j                   j                  j                          | j                   j                  j                  j                          y )Nr      )r   r+   r,   _mod_configconfiguratorsaveparserload)r    s    r#   test_mod_configzHttpPerformTest.test_mod_configX   sx    dll1o.dll1o.!  %%'  '',,.r$   z@certbot_nginx._internal.parser.NginxParser.add_server_directivesc                     d| j                   _        | j                  j                  | j                  d          | j                  j                          |j                  dk(  sJ y)zNA server_name with both HTTP and HTTPS vhosts should get modded in both vhostsi        N)configuration
https_portr   r+   r,   r=   r.   )r    mock_add_server_directivess     r#   test_mod_config_http_and_httpsz.HttpPerformTest.test_mod_config_http_and_httpsp   sR     ),%dll1o.! *44999r$   z/certbot_nginx._internal.parser.nginxparser.dumpc                     | j                   j                  | j                  d          | j                   j                          |j                  dk(  sJ |j
                  d   d   g k7  sJ y)z8A server_name with only an HTTPS vhost should get moddedrE   r<   r   N)r   r+   r,   r=   r.   	call_args)r    rH   	mock_dumps      r#   test_mod_config_only_httpsz*HttpPerformTest.test_mod_config_only_https{   sd     	dll1o.! *44999 ""1%a(B...r$   c                 4   t        j                  t        j                  t	        j
                  d      t        j                        dt              }| j                  j                  |       | j                  j                          |j                  dk(  sJ y)zHA vhost that appears in both HTTP and HTTPS vhosts only gets modded oncer   r   zssl.both.comr   
   N)r   "KeyAuthorizationAnnotatedChallenger   chall_to_challbr   HTTP01r   STATUS_PENDINGAUTH_KEYr   r+   r=   r.   )r    rH   r7   s      r#   test_mod_config_deduplicatez+HttpPerformTest.test_mod_config_deduplicate   sy     ??,,!!(ABHD[D[]!x9 	f%! *44;;;r$   c                    | j                   j                  j                  j                  d      }ddg}| j                   j                  j                  j                  |   }t        j                  ||d      rJ | j                   j                  | j                  d          | j                   j                          | j                   j                  j                          | j                   j                  j                  j                          | j                   j                  j                  j                  |   }t        j                  ||d      sJ y )N
nginx.confserver_names_hash_bucket_size128r<   r   )r   r>   r@   abs_pathparsedr   contains_at_depthr+   r,   r=   r?   rA   )r    
nginx_confexpectedoriginal_confgenerated_confs        r#   'test_mod_config_insert_bucket_directivez7HttpPerformTest.test_mod_config_insert_bucket_directive   s    [[--44==lK
3U;0077>>zJ))-1EEEdll1o.!  %%'  '',,.1188??
K%%nhBBBr$   c                    | j                   j                  j                  j                  d      }t	        |      5 }|j                         }d d d        dz   }t	        |d      5 }|j                  |       d d d        | j                   j                  j                  j                          | j                   j                  | j                  d          | j                   j                          | j                   j                  j                          | j                   j                  j                  j                          ddg}| j                   j                  j                  j                  d      }| j                   j                  j                  j                  |   }t        j                  ||d      rJ | j                   j                  j                  j                  |   }t        j                  ||d      sJ t	        |d      5 }|j                  |       d d d        | j                   j                  j                  j                          y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   RxY w)	Nzsites-enabled/example.comz"server_names_hash_bucket_size 64;
wr   rX   rY   rW   r<   )r   r>   r@   rZ   openreadwriterA   r+   r,   r=   r?   r[   r   r\   )	r    example_com_locforiginal_example_commodified_example_comr^   nginx_conf_locr]   r`   s	            r#   8test_mod_config_update_bucket_directive_in_included_filezHHttpPerformTest.test_mod_config_update_bucket_directive_in_included_file   s   ++2299BBC^_/" 	,a#$668 	,  EG[[/3' 	*1GG()	*  '',,. 	dll1o.!  %%'  '',,. 4U;1188AA,O[[--44;;NK
))*hBBB 1188??P%%nhBBB /3' 	*1GG()	*  '',,.9	, 	,
	* 	**	* 	*s#   I%I"I/I"I,/I8z@certbot_nginx._internal.configurator.NginxConfigurator.ipv6_infoc                     d|_         | j                  j                          |j                  dk(  sJ d|_         | j                  j                          |j                  dk(  sJ y )NTTr*   FFr<   )return_valuer   _default_listen_addressesr.   )r    	ipv6_infos     r#   ,test_default_listen_addresses_no_memoizationz<HttpPerformTest.test_default_listen_addresses_no_memoization   s\     ".	--/##q(((!/	--/##q(((r$   c                     d|_         | j                  j                         }t        j                  d      }t        j                  d      }|||gk(  sJ y )Nrn   80z[::]:80rp   r   rq   r	   
fromstringr    rr   addrs	http_addrhttp_ipv6_addrs        r#   !test_default_listen_addresses_t_tz1HttpPerformTest.test_default_listen_addresses_t_t   sM     ".	557OOD)	3N3333r$   c                     d|_         | j                  j                         }t        j                  d      }t        j                  d      }|||gk(  sJ y )N)TFru   z[::]:80 ipv6only=onrv   rx   s        r#   !test_default_listen_addresses_t_fz1HttpPerformTest.test_default_listen_addresses_t_f   sN     "/	557OOD)	)>?N3333r$   c                     d|_         | j                  j                         }t        j                  d      }||gk(  sJ y )Nro   ru   rv   )r    rr   ry   rz   s       r#   !test_default_listen_addresses_f_fz1HttpPerformTest.test_default_listen_addresses_f_f   s<     "0	557OOD)	###r$   ) __name__
__module____qualname____doc__rT   r   r   rP   r   rQ   r   rR   r   rS   r,   r   r(   r   patchr0   r:   rB   rI   rM   rU   ra   rl   rs   r|   r~   r   __classcell__)r"   s   @r#   r   r      s   )K666,9,,!
!!(ABHD[D[]$+	? 	766,9,,!
!!F **	,
 ;	8 	766,9,,!
!!O **	,
 %+	? 	766,9,,!
!!(ABHD[D[]"	= 	766,9,,!
!!(ABHD[D[] k	;/G:2 TZZMN) O)
:/0 TZZRS: T: TZZABTZZRS	/ T C	/ TZZRS
< T
<C/B TZZRS) T) TZZRS4 T4 TZZRS4 T4 TZZRS$ T$r$   r   __main__r*   )r   sysunittestr   josepyjosepytestacmer   r   certbotr   certbot.testsr   r   r
   certbot_nginx._internal.objr	   certbot_nginx._internal.testsJWKRSArA   load_vectorrT   	NginxTestr   r   exitmainargv__file__ r$   r#   <module>r      s    / 
        # + , ;;;1I112BCDS$dnn S$j zCHH[V[[!"
234 r$   