
    M/ey                        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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 dd
lmZ  G d dej0                        Z G d de      Z G d dej6                        Z G d de      Z G d de      Z G d de      Z G d de      Z  G d de      Z! G d dej6                        Z" G d dej6                        Z# G d d ej6                        Z$ G d! d"ejJ                        Z&e'd#k(  r4 ejP                   ejR                  ejT                  d$d e+gz                yy)%)Tests for certbot._internal.cert_manager.    N)mock)configuration)errors)ALL_FOUR)storage_test)
filesystem)os)utilc                   (     e Zd ZdZ fdZd Z xZS )BaseCertManagerTestz2Base class for setting up Cert Manager tests.
    c           	      Z   t         |           d| j                  _        t	        j
                  | j                  j                         d t        j                  j                  | j                  j                  d      d| _        | j                  D ci c]"  }|| j                  || j                  |         $ c}| _        t        t        j                  j                  | j                  j                  d      d      5 }|j                  d       d d d        y c c}w # 1 sw Y   y xY w)NFspecialarchive)example.org	other.comzIGNORE.THISwzThis file should be ignored!)supersetUpconfigquietr	   makedirsrenewal_configs_dirr
   pathjoin
config_dirdomains_set_up_configconfig_filesopenwrite)selfdomainjunk	__class__s      K/usr/lib/python3/dist-packages/certbot/_internal/tests/cert_manager_test.pyr   zBaseCertManagerTest.setUp   s    !DKK;;<  dkk&<&<>NO

 ,,( $T%8%8fAU%VV ( "'',,t{{>>NPST 	7X\JJ56	7 	7(	7 	7s   'DD!!D*c                    t        j                  t        j                  j	                  | j
                  j                  |             t        j                         }|t        j                  |       ||d<   nGt        j                  t        j                  j	                  | j
                  j                  |             t        D ]=  }t        j                  j	                  | j
                  j                  ||dz         ||<   ? t        j                  j	                  | j
                  j                  |dz         |_        |j                          |S )Narchive_dirz.pemz.conf)r	   r   r
   r   r   r   live_dir	configobj	ConfigObjdefault_archive_dirr   r   filenamer    )r!   r"   custom_archiveconfig_filekinds        r%   r   z"BaseCertManagerTest._set_up_config.   s     	BGGLL)=)=vFG))+%/)7K&T[[-L-Lf UV 	7D "T[[-A-A6(,v!7K	7  "ww||DKK,K,K'-'7 9    )__name__
__module____qualname____doc__r   r   __classcell__r$   s   @r%   r   r      s    7&r0   r   c                       e Zd ZdZd Zy)UpdateLiveSymlinksTestzBTests for certbot._internal.cert_manager.update_live_symlinks
    c           
         ddl m} i }| j                  D ]  }| j                  |   }||}n4t        j                  j                  | j                  j                  |      }t        D ci c]&  }|t        j                  j                  ||dz         ( c}||<   t        D ]  }| j                  |   |   }||   |   }t        |d      j                          t        j                  t        j                  j                  | j                  j                  |dz         |         |j                  | j                         t        j                         }		 | j                  D ]  }t        D ]  }t        j                   t        j                  j#                  | j                  |   |                t%        j&                  t%        j(                  | j                  |   |               t%        j&                  ||   |         k(  rJ   	 t        j                   |	       yc c}w # t        j                   |	       w xY w)zTest update_live_symlinksr   cert_managerNz1.pema)certbot._internalr;   r   r
   r   r   r   r+   r   r   r   closesymlinkr   update_live_symlinksgetcwdchdirdirnamer	   realpathreadlink)
r!   r;   archive_pathsr"   r-   archive_dir_pathr/   	live_patharchive_pathprev_dirs
             r%   test_update_live_symlinksz0UpdateLiveSymlinksTest.test_update_live_symlinksG   s    	3ll 	\F!\\&1N)#1 #%77<<0O0OQW#X KS%UCG &*-tg~>&? %UM&!  \ --f5d;	,V4T:\3'--/

277<<(>(>wOQZ[\	\  	))$++6 99;	,, I$ IDHHRWW__T->->v-Ft-LMN%..z/B/B4CTCTU[C\]aCb/cd"++M&,A$,GHI I III HHX+%U* HHXs   )+H"B.H' H' 'H>N)r1   r2   r3   r4   rK    r0   r%   r8   r8   D   s     r0   r8   c                   L   e Zd ZdZd Z ej                          ej                  d       ej                  d       ej                  d      d                             Z	 ej                          ej                  d       ej                  d      d                      Z
 ej                          ej                  d       ej                  d      d                      Z ej                          ej                  d       ej                  d      d	                      Z ej                          ej                  d       ej                  d      d
                      Z ej                          ej                  d       ej                  d      d                      Zy)
DeleteTestz4Tests for certbot._internal.cert_manager.delete
    c                 F    ddl m} |j                  | j                         y Nr   r:   )r=   r;   deleter   )r!   r;   s     r%   _callzDeleteTest._calln   s    2DKK(r0   zcertbot.display.util.notify3certbot._internal.cert_manager.lineage_for_certnamez&certbot._internal.storage.delete_filesc                     | j                   |_        d |       j                  _        d| j                  _        | j                          |j                  | j                  d       |j                  d       y)Test deleteTr   z6Deleted all files relating to certificate example.org.N)test_rcreturn_valueyesnor   certnamerR   assert_called_once_with)r!   mock_delete_filesmock_lineage_for_certnamemock_notify	mock_utils        r%   test_delete_from_config_yesz&DeleteTest.test_delete_from_config_yesr   s[     26!.)-	&,

11$++}M++D	
r0   c                     | j                   |_        d |       j                  _        d| j                  _        | j                          |j                  dk(  sJ y)rU   Fr   r   N)rV   rW   rX   r   rY   rR   
call_countr!   r[   r\   r^   s       r%   test_delete_from_config_noz%DeleteTest.test_delete_from_config_no   sJ     26!.).	&,

 ++q000r0   c                     | j                   |_        t        j                  dgf |       j                  _        d |       j
                  _        | j                          |j                  | j                  d       y)rU   r   TN)	rV   rW   display_utilOK	checklistrX   rR   rZ   r   rb   s       r%   "test_delete_interactive_single_yesz-DeleteTest.test_delete_interactive_single_yes   sY     26!..:oo-O	*)-	&

11$++}Mr0   c                     | j                   |_        t        j                  dgf |       j                  _        d |       j
                  _        | j                          |j                  dk(  sJ y)rU   r   Fr   NrV   rW   re   rf   rg   rX   rR   ra   rb   s       r%   !test_delete_interactive_single_noz,DeleteTest.test_delete_interactive_single_no   sY     26!..:oo-O	*).	&

 ++q000r0   c                 T   | j                   |_        t        j                  ddgf |       j                  _        d |       j
                  _        | j                          |j                  | j                  d       |j                  | j                  d       |j                  dk(  sJ y)rU   r   	other.orgT   N)
rV   rW   re   rf   rg   rX   rR   assert_any_callr   ra   rb   s       r%   $test_delete_interactive_multiple_yesz/DeleteTest.test_delete_interactive_multiple_yes   s     26!..:oo{?[-\	*)-	&

))$++}E))$++{C ++q000r0   c                     | j                   |_        t        j                  ddgf |       j                  _        d |       j
                  _        | j                          |j                  dk(  sJ y)rU   r   rm   Fr   Nrj   rb   s       r%   #test_delete_interactive_multiple_noz.DeleteTest.test_delete_interactive_multiple_no   s\     26!..:oo{?[-\	*).	&

 ++q000r0   N)r1   r2   r3   r4   rR   	test_utilpatch_display_utilr   patchr_   rc   rh   rk   rp   rr   rL   r0   r%   rN   rN   j   s   ) "Y!!#TZZ-.TZZEFTZZ89

 : G / $

 "Y!!#TZZEFTZZ891 : G $1 "Y!!#TZZEFTZZ89N : G $N "Y!!#TZZEFTZZ891 : G $1 "Y!!#TZZEFTZZ89	1 : G $	1 "Y!!#TZZEFTZZ891 : G $1r0   rN   c                   N   e Zd ZdZd Z ej                  d       ej                         d               Z	 ej                  d       ej                         d               Z
 ej                  d       ej                  d       ej                          ej                  d       ej                  d      d	                                    Z ej                  d       ej                         d
               Z ej                  d       ej                  d      d               Zy)CertificatesTestz:Tests for certbot._internal.cert_manager.certificates
    c                     ddl m}  ||i |S )Nr   )certificates)certbot._internal.cert_managerry   )r!   argskwargsry   s       r%   _certificateszCertificatesTest._certificates   s    ?T,V,,r0   z%certbot._internal.cert_manager.loggerc                     | j                  | j                         |j                  j                  sJ |j                  sJ y N)r}   r   warningcalledr!   mock_utilitymock_loggers      r%   test_certificates_parse_failz-CertificatesTest.test_certificates_parse_fail   s:     	4;;'""))))""""r0   c                     d| j                   _        | j                  | j                          |j                  j                  du sJ |j
                  j                  sJ y )NTF)r   r   r}   notificationr   r   r   s      r%   test_certificates_quietz(CertificatesTest.test_certificates_quiet   sQ     !4;;'((//5888""))))r0   z)certbot.crypto_util.verify_renewable_cert'certbot._internal.storage.RenewableCertz5certbot._internal.cert_manager._report_human_readablec                     d |_         d|_         | j                  | j                         |j                  j                  du sJ |j                  sJ |j                  sJ |j                  sJ y )N F)rW   r}   r   r   r   )r!   mock_reportmock_renewable_certr   r   mock_verifiers         r%   test_certificates_parse_successz0CertificatesTest.test_certificates_parse_success   sm     &*"#% 4;;'""))U222!!!!"""""))))r0   c           
         t        j                         }t        j                  t	        j
                  t        j                  j                  |d      t        j                  j                  |d      t        j                  j                  |d      d            }t        j                  |j                         | j                  |       |j                  j                  du sJ |j                  sJ t        j                   |       y )Nr   worklogsF)r   work_dirlogs_dirr   )tempfilemkdtempr   NamespaceConfigr   	MagicMockr
   r   r   r	   r   r   r}   r   r   shutilrmtree)r!   r   r   empty_tempdirempty_configs        r%   test_certificates_no_filesz+CertificatesTest.test_certificates_no_files   s     !((*$44T^^ww||M8<WW\\-8WW\\-8	6
  	L<<=<(""))U222""""m$r0   z(certbot.crypto_util.get_serial_from_certzBcertbot._internal.cert_manager.ocsp.RevocationChecker.ocsp_revokedc                   	
 d |_         d|_         dd l}dd l}ddlm	 |j                  j                  |j                        }t        j                  d      }||_	        ddg|j                  _         d|_        |gt        j                  d d       
	
fd	} |       }d
|v sJ |xj                  |j                  d      z  c_	         |       }d|v xs d|v du sJ d|v sJ d|vsJ |xj                  |j                  d      z  c_	         |       }d|v sJ d|vsJ d|v sJ d|vsJ |xj                  |j                  d      z  c_	         |       }d|v sJ d|v sJ d|vsJ d|_        d|_          |       }d|v sJ t        j                  d      }||_	        ddg|j                  _         d|_        j                  |        |       }t        t        j                   d|            dk(  sJ dg
_         |       }t        t        j                   d|            dk(  sJ dg
_         |       }t        t        j                   d|            dk(  sJ d
_         |       }t        t        j                   d|            dk(  sJ d
_         |       }t        t        j                   d|            dk(  sJ y )NiIr   r:   nameonelineagenamenametwoF)rY   r   c                  (     j                        S r   )_report_human_readable)r;   mock_configparsed_certss   r%   <lambda>z=CertificatesTest.test_report_human_readable.<locals>.<lambda>  s    \@@l[ r0   zINVALID: EXPIREDrn   )hoursz1 hourz	2 hour(s)TVALIDINVALID   )daysz1 dayunderz3 dayszINVALID: TEST_CERT, REVOKEDindescribablezthrice.namedzINVALID:horror)rW   datetimepytzr=   r;   nowUTCr   r   target_expirynamesis_test_cert	timedeltaappendlenrefindallr   rY   )r!   mock_revokedmock_serialr   r   expirycert
get_reportoutr;   r   r   s            @@@r%   test_report_human_readablez+CertificatesTest.test_report_human_readable   s    %)!#- 2""&&txx0~~)4##,i"8

!vnndE \
l!S(((h00q099lC5;##5$>>>#~~###h00a088l#~~c!!!#~~###h00a088l3#~~### $(!l,333~~/:##,n"=

 D!l2::j#./1444-.l2::j#./1444(kl2::j#./1444.l2::j#./1444'l2::j#./1444r0   N)r1   r2   r3   r4   r}   r   ru   rs   rt   r   r   r   r   r   rL   r0   r%   rw   rw      sL   - TZZ78!Y!!## $ 9#
 TZZ78!Y!!#* $ 9* TZZ;<TZZ78!Y!!#TZZ9:TZZGH* I ; $ 9 =
* TZZ78!Y!!#% $ 9% TZZ:;TZZTUG5 V <G5r0   rw   c                       e Zd ZdZ ej
                  d       ej
                  d       ej
                  d      d                      Zy)SearchLineagesTestz:Tests for certbot._internal.cert_manager._search_lineages.certbot.util.make_or_verify_dir,certbot._internal.storage.renewal_conf_filesr   c                     dg|_         t        j                  |_        ddlm} |j                  | j                  d d      dk(  sJ |j                  sJ y )Nbadfiler   r:   c                     | S r   rL   xs    r%   r   z<SearchLineagesTest.test_cert_storage_error.<locals>.<lambda>P  s    A r0   check)	rW   r   CertStorageErrorside_effectr=   r;   _search_lineagesr   r   )r!   r   mock_renewal_conf_filesmock_make_or_verify_dirr;   s        r%   test_cert_storage_errorz*SearchLineagesTest.test_cert_storage_errorF  sT    
 1:{,*0*A*A'2 ,,T[[+wOSZZZZ&----r0   N)r1   r2   r3   r4   r   ru   r   rL   r0   r%   r   r   C  sL    DTZZ12TZZ>?TZZ9:. ; @ 3.r0   r   c                   H   e Zd ZdZ ej
                  d       ej
                  d       ej
                  d      d                      Z ej
                  d       ej
                  d      d               Z ej
                  d       ej
                  d      d               Zy)	LineageForCertnameTestz=Tests for certbot._internal.cert_manager.lineage_for_certnamer   3certbot._internal.storage.renewal_file_for_certnamer   c                     d|_         t        j                  d      }||_         ddlm} |j                  | j                  d      |k(  sJ |j                  sJ y )Nsomefile.confexample.comr   r   r:   )rW   r   Mockr=   r;   lineage_for_certnamer   r   )r!   r   mock_renewal_conf_filer   
mock_matchr;   s         r%   test_found_matchz'LineageForCertnameTest.test_found_matchW  sV    
 />+YY=9
+5(200mLPZZZZ&----r0   c                 v    d|_         ddlm} |j                  | j                  d      J |j
                  sJ y )Nzother.com.confr   r:   r   )rW   r=   r;   r   r   r   r!   r   r   r;   s       r%   test_no_matchz$LineageForCertnameTest.test_no_matchc  s<     /?+200mLTTT&----r0   c                     t        j                         |_        ddlm} |j                  | j                  d      J |j                  sJ y )Nr   r:   r   )r   r   r   r=   r;   r   r   r   r   s       r%   test_no_renewal_filez+LineageForCertnameTest.test_no_renewal_filek  sE     .4-D-D-F*200mLTTT&----r0   N)	r1   r2   r3   r4   r   ru   r   r   r   rL   r0   r%   r   r   T  s    GTZZ12TZZEFTZZ9:. ; G 3. TZZ12TZZEF. G 3. TZZ12TZZEF. G 3.r0   r   c                       e Zd ZdZ ej
                  d       ej
                  d       ej
                  d      d                      Z ej
                  d       ej
                  d      d               Zy)DomainsForCertnameTestz=Tests for certbot._internal.cert_manager.domains_for_certnamer   r   r   c                     d|_         t        j                  d      }ddg}||j                  _         ||_         ddlm} |j                  | j                  d      |k(  sJ |j                  sJ y )Nr   r   r   r   r   r:   )	rW   r   r   r   r=   r;   domains_for_certnamer   r   )r!   r   r   r   r   r   r;   s          r%   r   z'DomainsForCertnameTest.test_found_matchw  st    
 />+YY=9
 -0(/
%+5(200mL 	 &----r0   c                 v    d|_         ddlm} |j                  | j                  d      J |j
                  sJ y )Nr   r   r:   r   )rW   r=   r;   r   r   r   r   s       r%   r   z$DomainsForCertnameTest.test_no_match  s<     />+200kJRRR&----r0   N)r1   r2   r3   r4   r   ru   r   r   rL   r0   r%   r   r   t  s    GTZZ12TZZEFTZZ9:
. ; G 3
. TZZ12TZZEF. G 3.r0   r   c                       e Zd ZdZ fdZd Z ej                  d       ej                         d               Z
 ej                         d        Z ej                          ej                  d      d               Z ej                          ej                  d	      d
               Z ej                          ej                  d	      d               Z ej                          ej                  d	      d               Z xZS )RenameLineageTestz7Tests for certbot._internal.cert_manager.rename_lineagec                 f    t         |           d| j                  _        d| j                  _        y )Nr   after)r   r   r   rY   new_certnamer!   r$   s    r%   r   zRenameLineageTest.setUp  s$    ,#* r0   c                 2    ddl m}  |j                  |i |S rP   )r=   r;   rename_lineage)r!   r{   r|   r;   s       r%   rR   zRenameLineageTest._call  s    2*|**D;F;;r0   r   c                    d | j                   _        d| j                   _        g |_        t	        j
                  t        j                        5  | j                  | j                          d d d        dg|_         |       }t        j                  df|j                  _        t	        j
                  t        j                        5  | j                  | j                          d d d        t        j                  df|j                  _        t	        j
                  t        j                        5  | j                  | j                          d d d        y # 1 sw Y   xY w# 1 sw Y   ~xY w# 1 sw Y   y xY w)Ntwozone.confr   )r   rY   r   rW   pytestraisesr   ErrorrR   re   CANCELmenurf   )r!   mock_get_utilityr   	util_mocks       r%   test_no_certnamez"RenameLineageTest.test_no_certname  s     $#(  02,]]6<<( 	$JJt{{#	$ 1;|,$&	'3':':A&>	#]]6<<( 	$JJt{{#	$ (4&;	#]]6<<( 	$JJt{{#	$ 	$	$ 	$	$ 	$	$ 	$s$   EE,E)EE&)E2c                 &   d| j                   _        d | j                   _         |       }t        j                  df|j
                  _        t        j                  t        j                        5  | j                  | j                          d d d        t        j                  d f|j
                  _        t        j                  t        j                        5  | j                  | j                          d d d        y # 1 sw Y   rxY w# 1 sw Y   y xY w)Nonename)r   rY   r   re   r   inputrW   r   r   r   r   rR   rf   )r!   r   r   s      r%   test_no_new_certnamez&RenameLineageTest.test_no_new_certname  s    $#' $&	(4(;(;V'D	$]]6<<( 	$JJt{{#	$ )5'>	$]]6<<( 	$JJt{{#	$ 	$		$ 	$	$ 	$s   .C;D;DDrS   c                     d| j                   _        d| j                   _        d |_        t	        j
                  t        j                        5  | j                  | j                          d d d        y # 1 sw Y   y xY w)Nr   r   )	r   rY   r   rW   r   r   r   ConfigurationErrorrR   )r!   r\   unused_get_utilitys      r%   test_no_existing_certnamez+RenameLineageTest.test_no_existing_certname  s\      %#( 15!.]]6445 	$JJt{{#	$ 	$ 	$s   A22A;z7certbot._internal.storage.RenewableCert._check_symlinksc                    d|_         | j                  | j                         ddlm} |j                  | j                  | j                  j                        }|J |j                  | j                  j                  k(  sJ y NTr   r:   )rW   rR   r   r=   r;   r   r   r   )r!   
mock_checkr  r;   updated_lineages        r%   test_rename_certz"RenameLineageTest.test_rename_cert  si     #'


4;;2&;;DKKIaIab*****dkk.F.FFFFr0   c                 x   d|_         d | j                  _         |       }t        j                  df|j
                  _         | j                  | j                         ddlm} |j                  | j                  | j                  j                        }|J |j                  | j                  j                  k(  sJ y r  )rW   r   rY   re   rf   r   rR   r=   r;   r   r   r   )r!   r  r   r   r;   r  s         r%   %test_rename_cert_interactive_certnamez7RenameLineageTest.test_rename_cert_interactive_certname  s     #'
#$&	'3&:	#

4;;2&;;DKKIaIab*****dkk.F.FFFFr0   c                    d|_         d| j                  _        t        j                  t
        j                        5  | j                  | j                         d d d        dj                  t        j                  j                        | j                  _        t        j                  t
        j                        5  | j                  | j                         d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NTr   z	one{0}two)rW   r   r   r   r   r   r  rR   formatr
   r   sep)r!   r  r  s      r%   !test_rename_cert_bad_new_certnamez3RenameLineageTest.test_rename_cert_bad_new_certname  s     #'
 $1 ]]6445 	$JJt{{#	$ $/#5#5bggkk#B ]]6445 	$JJt{{#	$ 	$		$ 	$	$ 	$s   C ;C, C),C5)r1   r2   r3   r4   r   rR   r   ru   rs   rt   r   r   r  r  r
  r  r5   r6   s   @r%   r   r     s7   A+
< TZZ>?!Y!!#$ $ @$& "Y!!#$ $$ "Y!!#TZZEF$ G $$ "Y!!#TZZIJG K $G "Y!!#TZZIJ	G K $	G "Y!!#TZZIJ
$ K $
$r0   r   c                   R     e Zd ZdZ fdZ ej                  d      d        Z xZS )DuplicativeCertsTestz!Test to avoid duplicate lineages.c                 v    t         |           | j                  j                          | j	                          y r   )r   r   r.   r    _write_out_ex_kindsr   s    r%   r   zDuplicativeCertsTest.setUp  s*       "r0   r   c                 N   ddl m} t        j                  d      }t	        | j
                  j                  d      5 }|j                  |       d d d         || j                  ddg      }|dk(  sJ  || j                  dd	g      }|d   j                  j                  j                  d
      sJ |d   J  || j                  g d      }|d   J |d   j                  j                  j                  d
      sJ  || j                  ddg      }|dk(  sJ y # 1 sw Y   xY w)Nr   )find_duplicative_certszcert-san_512.pemwbzwow.netz
hooray.org)NNr   www.example.comzexample.org.confr   )r   r  something.newr  )rz   r  rs   load_vectorr   rV   r   r    r   
configfiler,   endswith)r!   unused_makedirr  	test_certfresults         r%   test_find_duplicative_namesz0DuplicativeCertsTest.test_find_duplicative_names  s9   I))*<=	$,,##T* 	aGGI	 (KK)\24%%% (KK-):;=ay##,,556HIIIay    (KKLNay   ay##,,556HIII (KK-9;%%%/	 	s   DD$)	r1   r2   r3   r4   r   r   ru   r  r5   r6   s   @r%   r  r    s+    +#
 TZZ12& 3&r0   r  c                        e Zd ZdZ fdZd Z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d Z xZS )CertPathToLineageTestz=Tests for certbot._internal.cert_manager.cert_path_to_lineagec                 "   t         |           | j                  j                          | j	                          t
        j                  j                  | j                  j                  ddd      | _
        | j                  | j                  _        y Nliver   fullchain.pemr   r   r.   r    r  r
   r   r   r   r   	fullchain	cert_pathr   s    r%   r   zCertPathToLineageTest.setUp  a       "dkk&<&<fm! $r0   c                     ddl m}  ||      S )Nr   )cert_path_to_lineage)rz   r+  )r!   
cli_configr+  s      r%   rR   zCertPathToLineageTest._call  s    G#J//r0   c                      ddl m}  |||      S )Nr   _archive_files)rz   r/  )r!   r,  filetyper/  s       r%   r/  z$CertPathToLineageTest._archive_files"  s    Aj(33r0   c                 D    d| j                  | j                        k(  sJ y Nr   )rR   r   r!   s    r%   test_basic_matchz&CertPathToLineageTest.test_basic_match&  s    

4;; 7777r0   c                 $   | j                   }t        j                  j                  | j                   j                  ddd      |_        t        j                  t        j                        5  | j                  |       d d d        y # 1 sw Y   y xY w)Nr$  
SailorMoonr%  )r   r
   r   r   r   r(  r   r   r   r   rR   )r!   bad_test_configs     r%   test_no_match_existsz*CertPathToLineageTest.test_no_match_exists)  sd    ++$&GGLL1G1Go%/!]]6<<( 	(JJ'	( 	( 	(s   +BBz2certbot._internal.cert_manager._acceptable_matchesc                     d g|_         | j                  | j                  _        d| j	                  | j                        k(  sJ y )Nc                     | j                   S r   )fullchain_pathr   s    r%   r   z>CertPathToLineageTest.test_options_fullchain.<locals>.<lambda>2  s    !:J:J r0   r   )rW   r'  r   r;  rR   r!   mock_acceptable_matchess     r%   test_options_fullchainz,CertPathToLineageTest.test_options_fullchain0  s9    0J/K,%)^^"

4;; 7777r0   c                     d g|_         t        j                  j                  | j                  j
                  ddd      }|| j                  _        d| j                  | j                        k(  sJ y )Nc                     | j                   S r   )r(  r   s    r%   r   z>CertPathToLineageTest.test_options_cert_path.<locals>.<lambda>8  s
    !++ r0   r$  r   zcert.pem)rW   r
   r   r   r   r   r(  rR   )r!   r=  test_cert_paths      r%   test_options_cert_pathz,CertPathToLineageTest.test_options_cert_path6  sZ    0E/F,dkk&<&<fm .

4;; 7777r0   c                      t         j                  j                   j                  j                  ddd       j                  _         fdg|_        d j                   j                        k(  sJ y )Narchiver   z
cert11.pemc                 (    j                  | d      S )Nr   r.  r   r!   s    r%   r   zACertPathToLineageTest.test_options_archive_cert.<locals>.<lambda>C  s    $:M:MaQW:X r0   r
   r   r   r   r   r(  rW   rR   r<  s   ` r%   test_options_archive_certz/CertPathToLineageTest.test_options_archive_cert>  sY     !#T[[-C-CYP]!0X/Y,

4;; 7777r0   c                      t         j                  j                   j                  j                  ddd       j                  _         fdg|_        d j                   j                        k(  sJ y )NrD  r   zfullchain11.pemc                 (    j                  | d      S )Nr'  r.  rF  s    r%   r   zFCertPathToLineageTest.test_options_archive_fullchain.<locals>.<lambda>J  s    ##A{3 r0   rG  r<  s   ` r%   test_options_archive_fullchainz4CertPathToLineageTest.test_options_archive_fullchainF  s[     "T[[-C-CY,!.14 05,

4;; 7777r0   c                 z    | j                   | j                  _        d| j                  | j                        k(  sJ y r2  )r'  r   r(  rR   r3  s    r%   test_only_pathz$CertPathToLineageTest.test_only_pathN  s-     $

4;; 7777r0   )r1   r2   r3   r4   r   rR   r/  r4  r8  r   ru   r>  rB  rH  rK  rM  r5   r6   s   @r%   r!  r!    s    G/048( TZZDE8 F8
 TZZDE8 F8 TZZDE8 F8 TZZDE8 F88r0   r!  c                        e Zd ZdZ fdZd Zd Z ej                  d      d        Z	 ej                  d      d        Z
 xZS )MatchAndCheckOverlapszfTests for certbot._internal.cert_manager.match_and_check_overlaps w/o overlapping
       archive dirs.c                 "   t         |           | j                  j                          | j	                          t
        j                  j                  | j                  j                  ddd      | _
        | j                  | j                  _        y r#  r&  r   s    r%   r   zMatchAndCheckOverlaps.setUpW  r)  r0   c                 $    ddl m}  |||||      S )Nr   )match_and_check_overlaps)rz   rR  )r!   r,  acceptable_matches
match_funcrv_funcrR  s         r%   rR   zMatchAndCheckOverlaps._call_  s    K'
4F
T[\\r0   c                 l     ddl m} dg j                   j                   |        fdd       k(  sJ y )Nr   )_acceptable_matchesr   c                 0    j                   j                  S r   )r   r(  rF  s    r%   r   z8MatchAndCheckOverlaps.test_basic_match.<locals>.<lambda>f  s    dkk++ r0   c                     | j                   S r   r   r   s    r%   r   z8MatchAndCheckOverlaps.test_basic_match.<locals>.<lambda>f  s
    q}} r0   )rz   rW  rR   r   )r!   rW  s   ` r%   r4  z&MatchAndCheckOverlaps.test_basic_matchc  s;    F$**T[[:M:O+-D#F F 	F Fr0   z/certbot._internal.cert_manager._search_lineagesc                     g |_         t        j                  t        j                        5  | j                  | j                  d d d        d d d        y # 1 sw Y   y xY wr   )rW   r   r   r   r   rR   r   r!   mock_search_lineagess     r%   test_no_matchesz%MatchAndCheckOverlaps.test_no_matchesh  sF    ,.)]]6<<( 	6JJt{{D$5	6 	6 	6s   AAc                     ddg|_         t        j                  t        j                        5  | j                  | j                  d d d        d d d        y # 1 sw Y   y xY w)Nspiderdance)rW   r   r   r   OverlappingMatchFoundrR   r   r[  s     r%   test_too_many_matchesz+MatchAndCheckOverlaps.test_too_many_matchesn  sM    -5w,?)]]6778 	6JJt{{D$5	6 	6 	6s   AA)r1   r2   r3   r4   r   rR   r4  r   ru   r]  rb  r5   r6   s   @r%   rO  rO  S  s[    /]F
 TZZAB6 C6
 TZZAB6 C6r0   rO  c                   2   e Zd ZdZd Z ej                  d       ej                  d      d               Z ej                  d       ej                  d      d               Z ej                  d       ej                  d      d               Z	 ej                  d       ej                  d      d               Z
 ej                  d       ej                  d      d	               Z ej                  d       ej                  d      d
               Zy)GetCertnameTestr   c                     t        j                         }|j                         | _        | j	                  |j
                         t        j                         | _        d | j                  _	        y r   )
rs   rt   startr   
addCleanupstopr   r   r   rY   )r!   get_utility_patchs     r%   r   zGetCertnameTest.setUpx  sO    %88: 1 7 7 9)../nn&#r0   r   z2certbot._internal.storage.lineagename_for_filenamec                 4   dg|_         d|_         ddlm} d}t        j                  df| j                         j                  _         |j                  | j                  dd      dgk(  sJ || j                         j                  j                  d   d   v sJ y )	Nexample.com.confr   r   r:   zWhich certificate would youverbFallow_multiple
rW   r=   r;   re   rf   r   r   get_certnamesr   	call_argsr!   	mock_name
mock_filesr;   prompts        r%   test_get_certnamesz"GetCertnameTest.test_get_certnames  s     $6"6
!.	2.5A__a4H$$1))VE * ;?LoN 	N N..055??B1EEEEr0   c                 8   dg|_         d|_         ddlm} d}t        j                  df| j                         j                  _         |j                  | j                  dd|      dgk(  sJ | j                         j                  j                  d   d   |k(  sJ y )	Nrk  r   r   r:   custom promptrl  Frn  custom_promptro  rr  s        r%    test_get_certnames_custom_promptz0GetCertnameTest.test_get_certnames_custom_prompt  s     $6"6
!.	2 5A__a4H$$1))VE * QO 	  $$&++55a8; ! 	! !r0   c                 8   dg|_         d|_         ddlm} t        j                  df| j                         j                  _         t        j                  t        j                        5  |j                  | j                  dd       d d d        y # 1 sw Y   y xY w)Nrk  r   r   r:   erroring_anywayFrm  )rW   r=   r;   re   r   r   r   r   r   r   r   rp  r   r!   rs  rt  r;   s       r%   test_get_certnames_user_abortz-GetCertnameTest.test_get_certnames_user_abort  s     $6"6
!.	25A5H5H!4L$$1]]6<<( 	]&&t{{4EV[&\	] 	] 	]   (BBc                 6   dg|_         d|_         ddlm} d}t        j                  dgf| j                         j                  _         |j                  | j                  dd      dgk(  sJ || j                         j                  j                  d   d   v sJ y )	Nrk  r   r   r:   zWhich certificate(s) would yourl  Trm  
rW   r=   r;   re   rf   r   rg   rp  r   rq  rr  s        r%   !test_get_certnames_allow_multiplez1GetCertnameTest.test_get_certnames_allow_multiple  s     $6"6
!.	21:F//;H/:K))6))VD * :>K_M 	M M..0::DDQGJJJJr0   c                 :   dg|_         d|_         ddlm} d}t        j                  dgf| j                         j                  _         |j                  | j                  dd|      dgk(  sJ | j                         j                  j                  d   d   |k(  sJ y )	Nrk  r   r   r:   rx  rl  Try  r  rr  s        r%   /test_get_certnames_allow_multiple_custom_promptz?GetCertnameTest.test_get_certnames_allow_multiple_custom_prompt  s     $6"6
!.	2 :F//;H/:K))6))VD * PO 	  $$&00::1=a@ 	 r0   c                 8   dg|_         d|_         ddlm} t        j                  g f| j                         j                  _         t        j                  t        j                        5  |j                  | j                  dd       d d d        y # 1 sw Y   y xY w)Nrk  r   r   r:   r}  Trm  )rW   r=   r;   re   r   r   rg   r   r   r   r   rp  r   r~  s       r%   ,test_get_certnames_allow_multiple_user_abortz<GetCertnameTest.test_get_certnames_allow_multiple_user_abort  s     $6"6
!.	2:F:M:Mr9R))6]]6<<( 	\&&t{{4EVZ&[	\ 	\ 	\r  N)r1   r2   r3   r4   r   r   ru   rv  r{  r  r  r  r  rL   r0   r%   rd  rd  u  sV   3$ TZZ>?TZZDEF F @F TZZ>?TZZDE
! F @
! TZZ>?TZZDE] F @] TZZ>?TZZDE	K F @	K TZZ>?TZZDE F @ TZZ>?TZZDE\ F @\r0   rd  __main__r   ),r4   r   r   sysr   unittestr   r)   r   certbotr   r   certbot._internal.storager   certbot._internal.testsr   certbot.compatr	   r
   certbot.displayr   re   certbot.testsrs   ConfigTestCaser   r8   BaseRenewableCertTestrN   rw   r   r   r   r   r  r!  rO  TestCaserd  r1   exitmainargv__file__rL   r0   r%   <module>r     s?   / 	  
      !  . 0 %  0 +))22 )X#0 #LT133 T1n5* 5D., .".0 .@.0 .6[$+ [$|#&<== #&L=8L>> =8@6L>> 6DR\h'' R\j zCHH[V[[!"
234 r0   