
    M/eP                        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	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c mZ  ej,                  d	      Zd
 Zd Z G d dej4                        Z G d dej8                        Z G d de      Z G d de      Z G d de      Z e!dk(  r4 ejD                   ejF                  ejH                  dd e%gz                yy)$Tests for certbot._internal.storage.    N)mock)configuration)errors)ALL_FOUR)
filesystem)oscert_512.pemc                 X    t         D ]!  }t        j                  t        | |             # y)z9Unlink all four items associated with this RenewableCert.N)r   r	   unlinkgetattr)	rc_objectkinds     F/usr/lib/python3/dist-packages/certbot/_internal/tests/storage_test.py
unlink_allr      s$     ,
		')T*+,    c                     t         D ]2  }t        t        | |      d      5 }|j                  |       ddd       4 y# 1 sw Y   ?xY w)z9Put dummy data into all four files of this RenewableCert.wN)r   openr   write)r   r   fs      r   fill_with_sample_datar      sI     ')T*C0 	AGGDM	 		 	s	   =A	c                   d    e Zd ZdZd Zd Z ej                  d      d        Zd Z	d Z
d Zd	 Zy
)RelevantValuesTestz4Tests for certbot._internal.storage.relevant_values.c                     ddd| _         t        j                         | _        t        j                         | j                  _        y )Nexample.orgrsa)serverkey_type)valuesr   	MagicMockmock_configset_by_userselfs    r   setUpzRelevantValuesTest.setUp)   s2    !.EB>>+'+~~'7$r   c                 h    ddl m} || j                  j                  _         || j                        S )Nr   relevant_values)certbot._internal.storager)   r"   to_dictreturn_value)r%   r    r)   s      r   _callzRelevantValuesTest._call.   s*    =06  -t//00r   z8certbot._internal.plugins.disco.PluginsRegistry.find_allc                     dg|_         d| j                  j                  _         d| j                  d<   | j	                  | j                  j                               | j                  k(  sJ y )Nzcertbot-foo:barT*   zcertbot_foo:bar_baz)r,   r"   r#   r    r-   copy)r%   mock_find_alls     r   test_namespacez!RelevantValuesTest.test_namespace3   sX    &7%8"48$$1-/)*zz$++**,-<<<r   c                 &   d| j                   j                  _        d| j                  d<   d| j                  d<   d| j                  d<   | j                  j	                         }d| j                  d<   | j                  | j                        |k(  sJ y )	NTallow_subset_of_namesapacheauthenticatori9  rsa_key_sizetherehellor"   r#   r,   r    r0   r-   r%   expected_relevant_valuess     r   test_option_setz"RelevantValuesTest.test_option_set;   s~    48$$1/3+,'/O$&*N##';;#3#3#5 &Gzz$++&*BBBBr   c                     d| j                   j                  _        | j                  j	                         }d| j                  d<   | j                  | j                        |k(  sJ y )NFi   r7   r:   r;   s     r   test_option_unsetz$RelevantValuesTest.test_option_unsetF   sS    49$$1#';;#3#3#5 &*N#zz$++&*BBBBr   c                    dfd| j                   _        | j                  j                         }d | j                  <   | j	                  | j                        |k(  sJ d| j                  <   | j	                  | j                        |k(  sJ d| j                  <   | j	                  | j                        |k(  sJ y )Nmanual_public_ip_logging_okc                     | k(  rdS dS )NFT )vdeprected_options    r   <lambda>z9RelevantValuesTest.test_deprecated_item.<locals>.<lambda>P   s    !?O:O UY r   TF)r"   r#   r    r0   r-   )r%   r<   rE   s     @r   test_deprecated_itemz'RelevantValuesTest.test_deprecated_itemN   s    8'Y$#';;#3#3#5 (,$%zz$++&*BBBB(,$%zz$++&*BBBB(-$%zz$++&*BBBBr   c                     ddl m} ddlm} ddlm} ddlm} |j                  j                         }|j                  |g d      }|j                  d   dd	d
d} ||      |k(  sJ y )Nr   r(   )disco)cli)	constants)z--allow-subset-of-namesz--authenticatorr5   r   ecdsaTr5   )r   r   r4   r6   )r*   r)   certbot._internal.pluginsrI   certbot._internalrJ   rK   PluginsRegistryfind_allprepare_and_parse_argsCLI_DEFAULTS)r%   r)   rI   rJ   rK   PLUGINS	namespacer<   s           r   test_with_real_parserz(RelevantValuesTest.test_with_real_parserZ   sp    =3)/''002..w 9
 	
  ,,X6%)%	$
  y)-EEEEr   N)__name__
__module____qualname____doc__r&   r-   r   patchr2   r=   r?   rG   rU   rC   r   r   r   r   &   sH    >8
1
 TZZJK= L=	CC
CFr   r   c                   0     e Zd ZdZ fdZddZd Z xZS )BaseRenewableCertTestzBase class for setting up Renewable Cert tests.

    .. note:: It may be required to write out self.config for
    your test.  Check :class:`.cli_test.DuplicateCertTest` for an example.

    c                    ddl m} t        |           t	        j
                  t        j                  j                  | j                  j                  dd             t        j                  j                  | j                  j                  dd      }t	        j
                  |       t	        j
                  t        j                  j                  | j                  j                  d             t        j                         }t        D ]@  }t        j                  j                  | j                  j                  dd|dz         }|||<   B t        t        j                  j                  | j                  j                  ddd      d	      5  	 d d d        ||d<   t        j                  j                  | j                  j                  dd
      |_        |j!                          || _        t        t        j                  j                  | j                  j                  dd      d      5 }|j!                  d       d d d        t        j                         | _        t'        j(                  d      5 }d|_        |j-                  |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)Nr   storageliver   archiverenewal.pemREADMEaexample.org.confzIGNORE.THISr   zThis file should be ignored!z7certbot._internal.storage.RenewableCert._check_symlinksT)rN   r_   superr&   r   makedirsr	   pathjoinconfig
config_dir	configobj	ConfigObjr   r   filenamer   config_filedefaultsr   rZ   r,   RenewableCerttest_rc)	r%   r_   archive_pathrp   r   	kind_pathjunkcheck	__class__s	           r   r&   zBaseRenewableCertTest.setUpw   s    - 	BGGLL)?)?WXww||DKK$:$:I}UL)BGGLL)?)?KL))+ 	*DT[[%;%;V](,v7I )K	* "'',,t{{55v}(02368 		 ".I!ww||DKK,B,BI'9 ;&
 "'',,t{{55y-PRUV 	7Z^JJ56	7 "++-ZZQR 	TV[!%E"001E1Et{{SDL	T 	T#	 		7 	7
	T 	Ts$   J/+J<33K/J9<KKc                 H   t        | j                  |      }t        j                  j	                  |      rt        j
                  |       t        j                  t        j                  j                  t        j                  j                  t        j                  j                  dddj                  ||            |       t        |d      5 }|j                  ||j                  d      n|       d d d        |dk(  rt        j                  |d       y y # 1 sw Y   &xY w)Nra   r   z
{0}{1}.pemwbasciiprivkey  )r   rs   r	   ri   lexistsr   symlinkrj   pardirformatr   r   encoder   chmod)r%   r   vervaluelinkr   s         r   _write_out_kindz%BaseRenewableCertTest._write_out_kind   s    t||T*77??4 IIdO


277<<	 -|/B/B4/MO	 $ 	FGGEMDKK(uE	F9T5) 	F 	Fs   %DD!c                 b    t         D ]&  }| j                  |d       | j                  |d       ( y )N      )r   r   r%   r   s     r   _write_out_ex_kindsz)BaseRenewableCertTest._write_out_ex_kinds   s1     	+D  r*  r*	+r   N)rV   rW   rX   rY   r&   r   r   __classcell__rx   s   @r   r\   r\   o   s    $TL
*+r   r\   c                      e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Z ej                  d      d        Zd Zd Zd Zd Zd Zd Zd Zej                  j1                  ej4                  d       ej                  d      d               Zd Zej                  j1                  ej4                  d       ej                  d      d               Z ej                  d      d        Z ej@                  d       ej                  d      d               Z! ej                  d       ej                  d      d                Z" ej                  d      d!        Z# ej                  d      d"        Z$ ej                  d#      d$        Z%d% Z& ej                  d&      d'        Z'd( Z(d) Z)d* Z*d+ Z+d, Z,d- Z-d. Z.y/)0RenewableCertTestsr   c           	          | j                   j                  dk(  sJ t        D ]T  }t        | j                   |      t        j
                  j                  | j                  j                  dd|dz         k(  rTJ  y )Nr   r`   rc   )	rs   lineagenamer   r   r	   ri   rj   rk   rl   r   s     r   test_initializationz&RenewableCertTests.test_initialization   sr    ||''=888 	RD4<<."'',,KK**FM4&=3R R R R	Rr   c                 V   ddl m} t        j                  j	                  | j
                  j                  d      }t        |d      5 }|j                  d       ddd       t        j                  t        j                        5  |j                  || j
                         ddd       t        j                  |       t        j                  t        j                        5  |j                  d| j
                         ddd       y# 1 sw Y   xY w# 1 sw Y   sxY w# 1 sw Y   yxY w)zTest that the RenewableCert constructor will complain if
        the renewal configuration file doesn't end in ".conf"

        r   r^   zbroken.confr   z[No closing bracket for you!Nfun)rN   r_   r	   ri   rj   rk   rl   r   r   pytestraisesr   CertStorageErrorrr   r   )r%   r_   brokenr   s       r   test_renewal_bad_configz*RenewableCertTests.test_renewal_bad_config   s    
 	.dkk44mD&# 	4!GG23	4]]6223 	7!!&$++6	7
		&]]6223 	6!!%5	6 	6	4 	4	7 	7	6 	6s$   DD!DDDD(c                    ddl m} t        j                         }d|d<   d|d<   d|d<   t        j
                  j                  | j                  j                  d	      |_	        |j                          t        j                  t        j                        5  |j                  |j                  | j                         d
d
d
       y
# 1 sw Y   y
xY w)zTest that the RenewableCert constructor will complain if
        the renewal configuration file is missing a required file element.r   r^   zimaginary_cert.pemcertzimaginary_chain.pemchainzimaginary_fullchain.pem	fullchainzimaginary_config.confN)rN   r_   rm   rn   r	   ri   rj   rk   rl   ro   r   r   r   r   r   rr   )r%   r_   rk   s      r   test_renewal_incomplete_configz1RenewableCertTests.test_renewal_incomplete_config   s     	.$$&-v/w7{'',,t{{'='=?VW]]6223 	@!!&//4;;?	@ 	@ 	@s   'CCc                 8   ddl m} | j                          d| j                  vsJ t	        j
                  d      5 }|j                  | j                  j                  | j                         d d d        j                  j                  du sJ y # 1 sw Y   $xY w)Nr   r^   version certbot._internal.storage.loggerF)rN   r_   r   rp   r   rZ   rr   ro   rk   warningcalledr%   r_   mock_loggers      r   test_no_renewal_versionz*RenewableCertTests.test_no_renewal_version   s    -  " 0 0000ZZ:; 	J{!!$"2"2";";T[[I	J""))U222	J 	Js   1BBc                    ddl m} | j                          d| j                  d<   | j                  j	                          t        j                  d      5 }|j                  | j                  j                  | j                         d d d        j                  j                  sJ d|j                  j                  d   d   v sJ y # 1 sw Y   BxY w)Nr   r^   z99.99.99r   r   )rN   r_   r   rp   r   r   rZ   rr   ro   rk   infor   	call_argsr   s      r   test_renewal_newer_versionz-RenewableCertTests.test_renewal_newer_version   s    -  "&0# ZZ:; 	J{!!$"2"2";";T[[I	J&&&&K,,66q9!<<<<	J 	Js   1CCc                    | j                   j                  }d| j                   _        | j                   j                         rJ || j                   _        | j                   j                         rJ t        | j                          | j                   j                         rJ t	        | j                          t
        D ]M  }t        j                  t        j                  j                  d|dz         t        | j                   |             O | j                   j                         rJ t	        | j                          t
        D ]a  }t        j                  t        j                  j                  | j                  j                  |dz         t        | j                   |             c | j                   j                         rJ t	        | j                          t
        D ]P  }t        j                  t        j                  j                  dddd|dz         t        | j                   |             R | j                   j                         rJ t        | j                          | j                   j                         sJ t        j                  | j                   j                         t        j                  t        j                  j                  ddddd      | j                   j                         t        | j                   j                  d      5 }|j!                  d       d d d        | j                   j                         rJ y # 1 sw Y   &xY w)	Nzrelative/path..z17.pemra   r   zfullchain_17.pemr   zwrongly-named fullchain)rs   r   _consistentr   r   r   r	   r   ri   rj   r   rk   rl   r   r   r   r   )r%   oldcertr   r   s       r   test_consistentz"RenewableCertTests.test_consistent   sm   ,,##+<<++---#<<++---dll+<<++---4<<  	4DJJrww||D$/:t||T24	4 <<++---4<<  	4DJJrww||DKK$:$:D8OLt||T24	4 <<++---4<<  	4DJJrww||D$	=$(8O5t||T24	4 <<++---dll+||'')))
		$,,(()


277<<dI} 2459\\5K5K	M$,,((#. 	/!GG-.	/<<++----	/ 	/s   M

Mc           	      ~   | j                  dd       t        j                  j                  | j                  j                  d      t        j                  j                  | j                  j                  ddd            sJ t        j                  | j                  j                         t        j                  t        j                  j                  | j                  j                  ddd      | j                  j                         t        | j                  j                  d      5 }|j                  d       d d d        t        j                  j                  | j                  j                  d      t        j                  j                  | j                  j                  ddd            sJ y # 1 sw Y   yxY w)Nr      ra   r   z
cert17.pemr   )r   r	   ri   samefilers   current_targetrj   rk   rl   r   r   r   r   r   )r%   r   s     r   test_current_targetz&RenewableCertTests.test_current_target  sF   VR(ww ; ;F C)+dkk6L6Li6C6B*DE 	E E
 			$,,##$


277<< 6 6	= ,./3||/@/@	B$,,##S) 	QGGFO	ww ; ;F C)+dkk6L6Li6C6B*DE 	E E	 	s   )F33F<c           	      ^   dD ]  }| j                  d|        t        j                  | j                  j                         t        j
                  t        j                  j                  ddddd      | j                  j                         | j                  j                  d      dk(  sJ y )N)      
      r   r   ra   r   z
cert10.pemr   )	r   r	   r   rs   r   r   ri   rj   current_version)r%   r   s     r   test_current_versionz'RenewableCertTests.test_current_version'  s    ! 	.C  -	.
		$,,##$


277<<dI} ,./3||/@/@	B||++F3r999r   c                 >    | j                   j                  d      J y )Nr   )rs   r   r$   s    r   test_no_current_versionz*RenewableCertTests.test_no_current_version/  s    ||++F3;;;r   c                    t        dd      D ]  }t        D ]  }| j                  ||        ! | j                  j	                         dk(  sJ | j                  j                         dk(  sJ | j                  dd       | j                  j	                         dk(  sJ | j                  j                         dk(  sJ | j                  dd       | j                  dd       | j                  j	                         dk(  sJ t        D ]  }| j                  |d	        | j                  j	                         d	k(  sJ | j                  j                         d
k(  sJ y )Nr      r   r|         r   r   r      )ranger   r   rs   latest_common_versionnext_free_versionr%   r   r   s      r   test_latest_and_next_versionsz0RenewableCertTests.test_latest_and_next_versions2  sH   A; 	0C  0$$T3/0	0 ||113q888||--/1444 	Y*||113q888||--/1444VQ'[!,||113q888  	+D  r*	+||113r999||--/2555r   r   c                 "   t        j                         x}| j                  _        t        j                         x}| j                  _        t        j                         | j                  _        d|_        | j                  j                         du sJ |j                  dk(  sJ |j                  j                  dk(  sJ d|_        | j                  j                         du sJ |j                  dk(  sJ |j                  j                  dk(  sJ y )NFTr   r   )
r   Mockrs   update_all_links_tohas_pending_deploymentr   r,   ensure_deployed
call_countr   )r%   r   mock_updatemock_has_pendings       r   test_ensure_deployedz'RenewableCertTests.test_ensure_deployedI  s    9=Ddll6AEL4<<>-1YY[*(-%||++-555%%***""--222(,%||++-666%%***""--222r   c                    t        dd      D ]?  }t        D ]4  }| j                  ||       || j                  j	                  |      k(  r4J  A | j                  j                  dd       | j                  j                  dd       d| j                  j	                  d      k(  sJ d| j                  j	                  d      k(  sJ d| j                  j	                  d      k(  sJ d| j                  j	                  d	      k(  sJ | j                  j                  dd
       t        j                  j                  t        j                  | j                  j                              dk(  sJ y )Nr   r   r      r|      r   r   r   i  zchain3000.pem)r   r   r   rs   r   _update_link_tor	   ri   basenamer   readlinkr   r   s      r   test_update_link_toz&RenewableCertTests.test_update_link_toZ  sD   A; 	AC  A$$T3/dll::4@@@@A	A
 	$$VQ/$$Y2DLL008888DLL00;;;;DLL009999DLL00====$$Wd3 ww
 3 3DLL4F4F GH() 	) )r   c                     | j                  dd       dt        j                  j                  | j                  j                  dd            k(  sJ y )Nr   r   z	cert8.pemr   )r   r	   ri   r   rs   r   r$   s    r   test_versionzRenewableCertTests.test_versionm  sL    VR( ))$,,*>*>vq*IJK 	K Kr   c                    t        dd      D ]?  }t        D ]4  }| j                  ||       || j                  j	                  |      k(  r4J  A | j                  j                         dk(  sJ t        dd      D ]g  }| j                  j                  |       t        D ]"  }|| j                  j	                  |      k(  r"J  | j                  j                         dk(  rgJ  y Nr   r   r   )r   r   r   rs   r   r   r   r   s      r    test_update_all_links_to_successz3RenewableCertTests.test_update_all_links_to_successu  s    A; 	AC  A$$T3/dll::4@@@@A	A ||113q888A; 	=CLL,,S1  Adll::4@@@@A<<5571<<<		=r   c                    t         j                  fd}| j                          t        j                  d      5 }||_        t        j                  t              5  | j                  j                  d       d d d        d d d        t        D ]"  }| j                  j                  |      dk(  r"J  y # 1 sw Y   =xY w# 1 sw Y   AxY w)Nc                     t         j                  j                  |       }d|v r|j                  d      rt         ||        y )Nr   prev)r	   ri   r   
startswith
ValueError)ri   real_unlinkr   s      r   unlink_or_raisezTRenewableCertTests.test_update_all_links_to_partial_failure.<locals>.unlink_or_raise  s9    ww''-Hh&8+>+>v+F  r   #certbot._internal.storage.os.unlinkr   r	   r   r   r   rZ   side_effectr   r   r   rs   r   r   r   r%   r   mock_unlinkr   s       r   (test_update_all_links_to_partial_failurez;RenewableCertTests.test_update_all_links_to_partial_failure  s    .0ii 	 	  "ZZ=> 	5+&5K#z* 50045	5
  	<D<<//5;;;	<5 5	5 	5#   !B>B26B>2B;	7B>>Cc                    t         j                  fd}| j                          t        j                  d      5 }||_        t        j                  t              5  | j                  j                  d       d d d        d d d        t        D ]"  }| j                  j                  |      dk(  r"J  y # 1 sw Y   =xY w# 1 sw Y   AxY w)Nc                 b    dt         j                  j                  |       v rt         ||        y )Nr   )r	   ri   r   r   )ri   r   s     r   r   zQRenewableCertTests.test_update_all_links_to_full_failure.<locals>.unlink_or_raise  s'    bgg..t44  r   r   r   r   r   r   s       r   %test_update_all_links_to_full_failurez8RenewableCertTests.test_update_all_links_to_full_failure  s    .0ii 	 	  "ZZ=> 	5+&5K#z* 50045	5
  	<D<<//5;;;	<5 5	5 	5r   c                    t        dd      D ]?  }t        D ]4  }| j                  ||       || j                  j	                  |      k(  r4J  A t        dd      D ]  }| j                  j                  |       t        D ]"  }|| j                  j	                  |      k(  r"J  |dk  r| j                  j                         riJ | j                  j                         sJ  y r   )r   r   r   rs   r   r   r   r   s      r   test_has_pending_deploymentz.RenewableCertTests.test_has_pending_deployment  s    A; 	AC  A$$T3/dll::4@@@@A	A A; 	ACLL,,S1  Adll::4@@@@AQw||::<<<<<>>@@@	Ar   c                    | j                  ddt        j                  d             | j                  j	                         ddgk(  sJ t        j                  | j                  j                         t        j                  t        j                        5  | j                  j	                          d d d        y # 1 sw Y   y xY w)Nr   r   zcert-san_512.pemexample.comzwww.example.com)r   	test_utilload_vectorrs   namesr	   r   r   r   r   r   r   r$   s    r   
test_nameszRenewableCertTests.test_names  s    VR)>)>?Q)RS||!!#'):;< 	< < 			$,,##$]]6223 	!LL 	! 	! 	!s   B88Cr#   z"certbot._internal.storage.datetimec                 V   t        j                  d      }| j                          | j                  j	                  d       t        | j                  j                  d      5 }|j                  |       ddd       | j                  j	                  d       t        | j                  j                  d      5 }|j                  |       ddd       t        j                  |_	        d|_
        i | j                  j                  d<   dD ]  \  }}}t        j                  j                  |t        j                        }||j                  j                  _
        || j                  j                  d	<   | j                  j!                         |k(  rJ  y# 1 sw Y   !xY w# 1 sw Y   xY w)
z<Test should_autorenew() on the basis of expiry time windows.r
   r   rz   Nr   Frenewalparams))@*Tz2 monthsT)r   z1 weekT)r   z4 daysF)r   2 daysF)@Iz7 yearsT)r   z11 years 2 monthsT)r   z8 hoursF)r   r   F)r   z40 daysF)r   z9 monthsF) Tz	0 secondsT)r   z
10 secondsT)r   z
10 minutesT)r   z10 weeksT)r   z	10 monthsT)r   z10 yearsT)r   z	99 monthsTrenew_before_expiry)r   r   r   rs   r   r   r   r   datetime	timedeltar,   r   fromtimestamppytzUTCnowshould_autorenew)	r%   mock_datetimemock_set_by_user	test_certr   current_timeintervalresultsometimes	            r   test_time_interval_judgmentsz/RenewableCertTests.test_time_interval_judgments  sY    )).9	  "((,$,,##T* 	aGGI	((,$,,##T* 	aGGI	 #+"4"4(-%68""?31
 	=,\8V*  ((66|TXXNH6>M""&&3@HDLL&&'<=<<002f<<<1	=	 		 	s   !F6FFF(c                 N   i | j                   j                  d<   | j                   j                         sJ d| j                   j                  d   d<   | j                   j                         sJ d| j                   j                  d   d<   | j                   j                         rJ y )Nr   True	autorenewFalse)rs   r   autorenewal_is_enabledr$   s    r   test_autorenewal_is_enabledz.RenewableCertTests.test_autorenewal_is_enabled  s    68""?3||22444CI""?3K@||22444CJ""?3K@<<668888r   z4certbot._internal.storage.RenewableCert.ocsp_revokedc                 F   d|_         ddi| j                  j                  d<   | j                  j                         rJ d| j                  j                  d   d<   t        D ]  }| j                  |d        d|_         | j                  j                         sJ d|_         y)	zTTest should_autorenew on the basis of reasons other than
        expiry time window.Fr  r  r   r  r   TN)r,   rs   r   r  r   r   )r%   	mock_ocspr  r   s       r   test_should_autorenewz(RenewableCertTests.test_should_autorenew  s    
 ).%7BG6L""?3<<00222CI""?3K@ 	+D  r*	+ "&	||,,...!&	r   z)certbot._internal.storage.relevant_valuesc           
      
   d |_         t        dd      D ]  }t        D ]  }| j                  ||        ! | j                  j                  d       d| j                  j                  ddd d| j                        k(  sJ t        | j                  j                  dd            5 }|j                         dk(  sJ 	 d d d        t        | j                  j                  d	d            5 }|j                         d
k(  sJ 	 d d d        t        | j                  j                  dd            5 }|j                         dk(  sJ 	 d d d        t        j                  j                  | j                  j                  dd            rJ t        j                  j                  | j                  j                  dd            sJ d| j                  j                  ddd d| j                        k(  sJ d| j                  j                  ddd d| j                        k(  sJ dD ]  }t        j                  j                  | j                  j                  d|            sJ dt        j                  j                  t        j                   | j                  j                  d|                  k(  rJ  t        D ]U  }| j                  j#                  |      t%        t        dd            k(  sJ | j                  j'                  |      dk(  rUJ  | j                  j                  d       d| j                  j                  ddd d| j                        k(  sJ t        D ]U  }| j                  j#                  |      t%        t        dd            k(  sJ | j                  j'                  |      dk(  rUJ  t        | j                  j                  dd            5 }|j                         dk(  sJ 	 d d d        t        j                  j)                  | j                  j*                  | j                  j,                        dz   }t        |d      5 }|j/                  d       d d d        d| j                  j                  dddd | j                        k(  sJ t        j                  j1                  | j                  j                  dd            sJ t        j                  j                  | j                  j                  dd            rJ t        j                  j1                  |      rJ y # 1 sw Y   wxY w# 1 sw Y   @xY w# 1 sw Y   	xY w# 1 sw Y   hxY w# 1 sw Y   xY w)!Nc                 "    | j                         S r   r+   xs    r   rF   z8RenewableCertTests.test_save_successor.<locals>.<lambda>      		 r   r   r   r   s   new cert	   new chainr   znew certr   z	new chainr   znew certnew chainr|   r   s   agains   newer chainr   s   hellos   other chain)r   r   r   zprivkey3.pem	   s   lasts   attemptr   lastattemptz	.conf.newr   z)We previously crashed while writing me :(s   with   as   key)r   r   r   r   rs   r   save_successorrk   r   r   readr	   ri   islinkr   r   r   available_versionslistr   rj   renewal_configs_dirr   r   exists)r%   mock_rvr   r   r   itemp_config_files          r   test_save_successorz&RenewableCertTests.test_save_successor  s    4A; 	0C  0$$T3/0	0 	((+DLL//;+7F F 	F F$,,&&vq12 	*a668z)))	*$,,&&w23 	+q668{***	+$,,&&{A67 	816687777	8 77>>$,,"6"6y!"DEEEww~~dll229a@AAADLL//8T+94;;H H 	H HDLL//8T+94;;H H 	H H  	5A77>>$,,"6"6y!"DEEE!RWW%5%5j6I6I$$Y274 &5 5 5 5	5
  	;D<<2248Dq!<MMMM<<//5:::	; 	((+DLL//7D+5t{{D D 	D D 	;D<<2248!%2,/0 0 0<<//5:::	; $,,&&{A67 	216681111	277<<(G(G(,(@(@BDOP"C( 	AAGG?@	A T\\00GT,2DKKA A 	A Aww~~dll229bABBB77>>$,,"6"6y""EFFF77>>"23333Y	* 	*	+ 	+	8 	88	2 	2	A 	As<   %T1)T>-UUU%1T;>UUU"%U/z:Group/everybody permissions are not maintained on Windows.c                    d |_         t        D ]  }| j                  |d        | j                  j	                  d       t        j                  | j                  j                  dd      d      sJ t        j                  | j                  j                  dd      d       | j                  j                  ddd d| j                         t        j                  | j                  j                  dd      d      sJ | j                  j                  ddd	d| j                         t        j                  | j                  j                  dd
      d      sJ t        j                  | j                  j                  dd
      d       | j                  j                  d
dd	d| j                         t        j                  | j                  j                  dd      d      sJ y )Nc                 "    | j                         S r   r  r  s    r   rF   zMRenewableCertTests.test_save_successor_maintains_group_mode.<locals>.<lambda>B  r  r   r   r|   r}   i$     newcertr  r      new_privkeyr   i        )r   r   r   rs   r   r   
check_moder   r   r!  rk   )r%   r(  r   s      r   (test_save_successor_maintains_group_modez;RenewableCertTests.test_save_successor_maintains_group_mode=  s{   
 4 	*D  q)	*((+$$T\\%9%9)Q%GOOO--i;UC##Az4t{{S$$T\\%9%9)Q%GOOO##Az><QUQ\Q\]$$T\\%9%9)Q%GOOO--i;UC##Az><QUQ\Q\]$$T\\%9%9)Q%GOOOr   zBcertbot._internal.storage.filesystem.copy_ownership_and_apply_modec                 d   d |_         t        D ]  }| j                  |d        | j                  j	                  d       | j                  j                  ddd d| j                         |j                  du sJ | j                  j                  dddd| j                         |j                  sJ y )Nc                 "    | j                         S r   r  r  s    r   rF   zFRenewableCertTests.test_save_successor_maintains_gid.<locals>.<lambda>X  r  r   r   r.  r  Fr   r/  )r   r   r   rs   r   r!  rk   r   )r%   mock_ownershipr(  r   s       r   !test_save_successor_maintains_gidz4RenewableCertTests.test_save_successor_maintains_gidS  s    
 4 	*D  q)	*((+##Az4t{{S$$---##Az><QUQ\Q\]$$$$r   c                 ~
   d |_         ddlm} |j                  j	                  dddd| j
                        }|j                         sJ t        j                  j                  t        j                  j                  | j
                  j                  d            sJ t        j                  j                  t        j                  j                  | j
                  j                  d	            sJ t        j                  j                  t        j                  j                  | j
                  j                  dd	            sJ t        j                  |j                  d
      sJ t!        |j"                  d      5 }|j%                         dk(  sJ 	 ddd       |j                  j	                  dddd| j
                        }t        j                  j                  t        j                  j                  | j
                  j                  d            sJ t        j                  j                  t        j                  j                  | j
                  j                  dd	            sJ t        j&                  t        j                  j                  | j
                  j(                  d             |j                  j	                  dddd| j
                        }t        j                  j                  t        j                  j                  | j
                  j                  dd	            sJ t        j                  |j                  d
      sJ t+        j,                  t        j                  j                  | j
                  j                  d      t        j                  j                  | j
                  j                  d             t/        j0                  t2        j4                        5  |j                  j	                  dddd| j
                         ddd       t+        j,                  t        j                  j                  | j
                  j                  d      t        j                  j                  | j
                  j                  d             t/        j0                  t2        j4                        5  |j                  j	                  dddd| j
                         ddd       |j                  j	                  dddd| j
                        }y# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   MxY w)z$Test for new_lineage() class method.c                 "    | j                         S r   r  r  s    r   rF   z5RenewableCertTests.test_new_lineage.<locals>.<lambda>f  r  r   r   r^   the-lineage.coms   certs   privkeys   chainthe-lineage.com.confrd   r}   rbs	   certchainN   cert2   privkey2   chain2zthe-lineage.com-0001.confzthe-lineage.com-0001zthe-lineage.com-0002s   cert3s   privkey3s   chain3zthe-lineage.com-0003s   cert4s   privkey4s   chain4zother-example.coms   cert5s   privkey5s   chain5)r   rN   r_   rr   new_lineagerk   r   r	   ri   r'  rj   r&  live_dirr   r2  key_pathr   r   r"  mkdirdefault_archive_dirshutilcopytreer   r   r   r   )r%   r(  r_   r  r   s        r   test_new_lineagez#RenewableCertTests.test_new_lineagea  s   
 4-&&22w
HdkkK
 !!###ww~~bggllKK++-CE F 	F Fww~~bggllKK  (, - 	- -ww~~bggllKK  "3X? @ 	@ @$$V__e<<<&""D) 	2Q6681111	2 &&22xiNww~~bggllKK++-HJ K 	K Kww~~bggllKK  "8(D E 	E E 	dkk&E&EG]^_&&22xiNww~~bggllKK  "8(D E 	E E$$V__e<<<T[[%9%9;LMT[[%9%9;QR	T]]6223 	I!!--.?"KDKKI	I 	T[[%9%9;LMT[[%9%9;NO	Q]]6223 	?!!--.A8%y$++?	? &&22xiN9	2 	2&	I 	I
	? 	?s$   <T.*T&=*T3T#&T03T<c                 ^   d |_         ddlm} t        j                  | j
                  j                         t        j                  | j
                  j                         t        j                  | j
                  j                         |j                  j                  dddd| j
                         t        j                  j                  t        j                  j                  | j
                  j                  d            sJ t        j                  j                  t        j                  j                  | j
                  j                  dd	            sJ t        j                  j                  t        j                  j                  | j
                  j                  dd
            sJ y)z9Test that directories can be created if they don't exist.c                 "    | j                         S r   r  r  s    r   rF   zFRenewableCertTests.test_new_lineage_nonexistent_dirs.<locals>.<lambda>  r  r   r   r^   r:  r=  r>  r?  r;  zprivkey.pemzprivkey1.pemN)r   rN   r_   rE  rmtreerk   r&  rD  rA  rr   r@  r	   ri   r'  rj   )r%   r(  r_   s      r   !test_new_lineage_nonexistent_dirsz4RenewableCertTests.test_new_lineage_nonexistent_dirs  s3   
 4-dkk556dkk556dkk**+))xi	Nww~~GGLL//1GIJ 	J J ww~~bggllKK  "3]D E 	E Eww~~bggllKK++->P Q 	Q Qr   z2certbot._internal.storage.util.unique_lineage_namec                     ddl m} d|_        t        j                  t
        j                        5  |j                  j                  dddd| j                         d d d        y # 1 sw Y   y xY w)Nr   r^   )this_does_not_end_with_dot_confyikesr   r   r|   r   )
rN   r_   r,   r   r   r   r   rr   r@  rk   )r%   mock_ulnr_   s      r   test_invalid_config_filenamez/RenewableCertTests.test_invalid_config_filename  s\    - J]]6223 	C!!--m )WdkkC	C 	C 	Cs   *A$$A-c                    t        j                  t        j                        5  | j                  j                  d       d d d        t        j                  t        j                        5  | j                  j                  d       d d d        t        j                  t        j                        5  | j                  j                  dd       d d d        t        j                  t        j                        5  | j                  j                  d       d d d        t        j                  t        j                        5  | j                  j                  d       d d d        t        j                  t        j                        5  | j                  j                  dd       d d d        y # 1 sw Y   pxY w# 1 sw Y   6xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nelephantr   )r   r   r   r   rs   r   r   r   r$  newest_available_versionr   r$   s    r   test_bad_kindz RenewableCertTests.test_bad_kind  sc   ]]6223 	4LL''
3	4]]6223 	5LL((4	5]]6223 	1LL  R0	1]]6223 	8LL++J7	8]]6223 	>LL11*=	> ]]6223 	9LL((R8	9 	9	4 	4	5 	5	1 	1	8 	8	> 	>	9 	9sG   F.+F;2G:GG G,.F8;GGG G),G5z4certbot.ocsp.RevocationChecker.ocsp_revoked_by_pathsc                 \   t         D ]  }| j                  |d        | j                  j                         }| j                  j	                  d|      }| j                  j	                  d|      }d|_        | j                  j                  |      sJ |j                  d   d   |k(  sJ |j                  d   d   |k(  sJ d|_        | j                  j                  |      rJ |j                  d   d   |k(  sJ |j                  d   d   |k(  sJ t        |_	        t        j                  d      5 }| j                  j                  |      rJ 	 d d d        |j                  d   d   |k(  sJ |j                  d   d   |k(  sJ j                  d   d   }d|v sJ y # 1 sw Y   PxY w)	Nr   r   r   Tr   Fz(certbot._internal.storage.logger.warningz-An error occurred determining the OCSP status)r   r   rs   r   r   r,   ocsp_revokedr   r   r   r   rZ   )r%   mock_checkerr   r   expected_cert_pathexpected_chain_pathloggerlog_msgs           r   test_ocsp_revokedz$RenewableCertTests.test_ocsp_revoked  s     	*D  q)	*,,446!\\11&'B"ll227GD %)!||((111%%a(+/AAAA%%a(+/BBBB %*!<<,,W555%%a(+/AAAA%%a(+/BBBB $. ZZBC 	:v||009999	:%%a(+/AAAA%%a(+/BBBB""1%a(>'III	: 	:s   4F""F+c           
         ddl m} t        j                  ddddddt        j                        }t        j                  d	d
ddddt        j                        }t        j
                  d      j                  t        j                  dd
dddd            }i |df||df||df||df|t        j                  d      z   |df|t        j                  d      z   |df|t        j                  d      z   |df|t        j                  d      z   |df|t        j                  d      z   |df|t        j                  d      z   |df|t        j                  d      z   |df|t        j                  d      z   |df|t        j                  d      z   |df|t        j                  d      z   |df|t        j                  d       z   |df|t        j                  d      z   |d!f|t        j                  d      z   |d!f|t        j                  d"      z   |d#f|t        j                  d$      z   |d#f|t        j                  d$      z   i}|j                         D ]!  \  }}|\  }}	|j                  ||	      |k(  r!J  y )%Nr   r^   i  r   r   ;      )tzinfoi  r   r         zAsia/Shanghaii           )    z17 daysr   30   z7 weeks1   z1 monthz1 yearin  im  z1 year 1 dayio  z1 year-1 dayil  z4 yearsi  )
rN   r_   r   r  r  timezonefromutcr   itemsadd_time_interval)
r%   r_   time_1time_2time_3intended
parametersexcepted	base_timer
  s
             r   test_add_time_intervalz)RenewableCertTests.test_add_time_interval  s   - ""4RRDHHM ""4RRDHHM /77dBBB79
RL&
RL&
 RL&
 Y(*<*<R*@!@	

 Y(*<*<R*@!@
 TNFX%7%7%;;
 TNFX%7%7%;;
 Y(*<*<R*@!@
 Y(*<*<R*@!@
 Y(*<*<R*@!@
 Y(*<*<R*@!@
 X););C)@ @
 X););C)@ @
  ^$fx/A/A#/F&F!
" ^$fx/A/A#/F&F#
$ ^$fx/A/A#/F&F%
& ^$fx/A/A#/F&F'
( Y(*<*<T*B!BY(*<*<T*B!B+
0 %-NN$4 	& J",Ix,,YA%& & &	&r   c                     i | j                   j                  d<   | j                   j                  J | j                   j                  d   }d|d<   | j                   j                  dk(  sJ y )Nr   zhttps://acme.example/dirr   )rs   r   r   r%   rps     r   test_serverzRenewableCertTests.test_server  sb    68""?3||""***\\''818||""&@@@@r   c                    i | j                   j                  d<   | j                   j                  d   }| j                   j                  du sJ d|d<   | j                   j                  du sJ d|d<   | j                   j                  du sJ d|d<   | j                   j                  du sJ d|d<   | j                   j                  du sJ y )	Nr   Fz6https://acme-staging-v02.api.letsencrypt.org/directoryr   Tz)https://staging.someotherca.com/directoryz.https://acme-v01.api.letsencrypt.org/directoryz.https://acme-v02.api.letsencrypt.org/directory)rs   r   is_test_certrx  s     r   test_is_test_certz$RenewableCertTests.test_is_test_cert  s    68""?3\\''8||((E111O8||((D000B8||((D000G8||((E111G8||((E111r   c                    ddl m} t        j                  t        j
                        5  |j                  | j                  j                  | j                         d d d        t        j                  d| j                  t        d             t        j                  t        j
                        5  |j                  | j                  j                  | j                         d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r^   missing)rN   r_   r   r   r   r   rr   rp   ro   rk   r	   r   r   r%   r_   s     r   test_missing_certz$RenewableCertTests.test_missing_cert   s    -]]6223 	J!!$"2"2";";T[[I	J


9d..x{;<]]6223 	J!!$"2"2";";T[[I	J 	J	J 	J	J 	Js   1C*01C6*C36C?c                 f   t         j                  j                  | j                  j                  d      }t         j                  j                  | j                  j                  d      }t        |d      5 }|j                  d       d d d        t        j                  |d       i }t        D ]  }d||<   	 d}dd	i}d
dl
m} |j                  |||||       t        |d      5 }|j                         }	d d d        d	v sJ d|	v sJ d|	vsJ dj                  t        j                         |	v sJ t#        j$                  t        j&                  |      j(                        t#        j$                  t        j&                  |      j(                        k(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nzsample-filezsample-file.newr   zM[renewalparams]
useful = value # A useful value
useless = value # Not needed
i  	somewherethe_archiveuseful	new_valuer   r^   rzuseful = new_valuezA useful valueuselesszversion = {0})r	   ri   rj   rk   rl   r   r   r   r   r   rN   r_   write_renewal_configr"  r   certbot__version__statS_IMODElstatst_mode)
r%   temptemp2r   targetr  archive_dirrelevant_datar_   contents
             r   test_write_renewal_configz,RenewableCertTests.test_write_renewal_config(  s    ww||DKK22MBT[[335FG$_ 	6GG 5 6	6 	u% 	$A#F1I	$#!;/-$$T5+v}U% 	ffhG	 $w...7***'''%%g&9&9:gEEE||BHHTN223bhhuo&=&=>? 	? ?1	6 	6	 	s   5F$F'F$'F0c                    ddl m} t        j                  j	                  | j
                  j                  dd      }t        D ]  }| j                  |   }|dz   }t        j                  j	                  ||      }t        |d      j                          t        j                  t        j                  j	                  | j
                  j                  |      |        t        j                  t        j                        5  |j!                  | j                  j"                  | j
                         d d d        |j!                  | j                  j"                  | j
                  d       y # 1 sw Y   <xY w)	Nr   r^   ra   r   1.pemre   T)update_symlinks)rN   r_   r	   ri   rj   rk   rl   r   rp   r   closer   r   r   r   r   rr   ro   )r%   r_   archive_dir_pathr   	live_pathr   rt   s          r   test_update_symlinksz'RenewableCertTests.test_update_symlinksI  s   -77<<(>(>	=Y 	RD((.Ig~H77<<(8(CLs#))+JJrww||DKK$:$:HEyQ	R ]]6223 	'!!$"2"2";";++'	' 	d..77  	 	"	' 	's    1E,,E5c                 @   t         D ]  }| j                  |d        t        j                  d      5 }| j                  j                          |j                          d d d        t         D ]%  }t        dd      D ]  }| j                  ||        ' t        j                  d      5 }| j                  j                          |j                  dt        t               z  k(  sJ d|j                  d   d   d   v sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   zcertbot.compat.os.unlinkr   r   r  r   )r   r   r   rZ   rs   truncateassert_not_calledr   r   lencall_args_list)r%   r   r   r)  s       r   test_truncatez RenewableCertTests.test_truncateX  s    	*D  q)	*ZZ23 	,{LL!!#))+	,
  	.D1a[ .$$T1-.	. ZZ23 	B{LL!!#))QX->>>>k88;A>qAAAA	B 	B	, 	,	B 	Bs   +D)ADDDN)/rV   rW   rX   rY   r   r   r   r   r   r   r   r   r   r   r   rZ   r   r   r   r   r   r   r   r   objectr   NamespaceConfigr  r  r  r+  r   skip_on_windowsr3  r7  rG  rK  rP  rT  r\  rv  rz  r}  r  r  r  r  rC   r   r   r   r      sN   .R6@3
=(.TE$:<6. TZZ233 43 )&K
=<"< A
! 
ZZ}44mDTZZ45)= 6 E)=V9 
ZZ}44mDTZZFG' H E' TZZ;<74 =74r Y[\TZZ;<P = ]P( TZZ;<TZZTU
% V =
% TZZ;<1N =1Nj TZZ;<Q =Q* TZZDEC FC9 TZZFGJ HJ:(&TA2J?B"Br   r   c                   R     e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Z xZS )DeleteFilesTestz0Tests for certbot._internal.storage.delete_filesc                    t         |           t        D ]Q  }t        j                  j                  | j                  j                  dd|dz         }t        |d      5  	 d d d        S | j                  j                          t        j                  j                  t        j                  j                  | j                  j                  d            sJ t        j                  j                  t        j                  j                  | j                  j                  d            sJ t        j                  j                  t        j                  j                  | j                  j                  dd            sJ y # 1 sw Y   sxY w)Nr`   r   rc   re   rf   ra   )rg   r&   r   r	   ri   rj   rk   rl   r   rp   r   r'  r&  rA  )r%   r   ru   rx   s      r   r&   zDeleteFilesTest.setUpk  s.    	DT[[%;%;V](,v7Ii%  	
 	 ww~~bggllKK++-?A B 	B Bww~~bggllKK  -1 2 	2 2ww~~bggllKK""I}> ? 	? ? s   E??F		c                     ddl m} t        j                  d      5  |j	                  | j
                  d       d d d        y # 1 sw Y   y xY w)Nr   r^   r   r   )rN   r_   r   rZ   delete_filesrk   r  s     r   r-   zDeleteFilesTest._call{  s;    -ZZ:; 	=  m<	= 	= 	=s   AAc                    | j                          t        j                  j                  t        j                  j	                  | j
                  j                  d            rJ t        j                  j                  t        j                  j	                  | j
                  j                  d            rJ t        j                  j                  t        j                  j	                  | j
                  j                  dd            rJ y )Nrf   r   ra   )	r-   r	   ri   r'  rj   rk   r&  rA  rl   r$   s    r   test_delete_all_filesz%DeleteFilesTest.test_delete_all_files  s    

77>>"'',,KK++-?#A B 	B B77>>"'',,KK  -#1 2 	2 277>>"'',,KK""I}#> ? 	? ? ?r   c                 l   t        | j                  j                  d      5 }|j                  d       d d d        t	        j
                  t        j                        5  | j                          d d d        t        j                  j                  t        j                  j                  | j                  j                  d            sJ t        j                  j                  t        j                  j                  | j                  j                  d            rJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nre   asdfasfasdfasdfr   rf   )r   rp   ro   r   r   r   r   r   r-   r	   ri   r'  rj   rk   rA  r&  )r%   rp   s     r   test_bad_renewal_configz'DeleteFilesTest.test_bad_renewal_config  s    $""++S1 	1[/0	1 ]]6223 	JJL	ww~~bggllKK  -1 2 	2 277>>"'',,KK++-?#A B 	B B B	1 	1	 	s   DD*D'*D3c                    t        j                  | j                  j                         t	        j
                  t        j                        5  | j                          d d d        t         j                  j                  t         j                  j                  | j                  j                  d            sJ t         j                  j                  | j                  j                        rJ y # 1 sw Y   xY wNr   )r	   removerp   ro   r   r   r   r   r-   ri   r'  rj   rk   rA  r$   s    r   test_no_renewal_configz&DeleteFilesTest.test_no_renewal_config  s    
		$""++,]]6223 	JJL	ww~~bggllKK  -1 2 	2 277>>$"2"2";";<<<<		 	s   C//C8c                 l   t        j                  t         j                  j                  | j                  j
                  dd             | j                          t         j                  j                  | j                  j                        rJ t         j                  j                  t         j                  j                  | j                  j
                  d            rJ t         j                  j                  t         j                  j                  | j                  j                  dd            rJ y )Nr   zcert.pemra   r	   r  ri   rj   rk   rA  r-   r'  rp   ro   rl   r$   s    r   test_no_cert_filez!DeleteFilesTest.test_no_cert_file  s    
		"'',,KK  -= 	>

77>>$"2"2";";<<<77>>"'',,KK  -#1 2 	2 277>>"'',,KK""I}#> ? 	? ? ?r   c                 l   t        j                  t         j                  j                  | j                  j
                  dd             | j                          t         j                  j                  | j                  j                        rJ t         j                  j                  t         j                  j                  | j                  j
                  d            rJ t         j                  j                  t         j                  j                  | j                  j                  dd            rJ y )Nr   rd   ra   r  r$   s    r   test_no_readme_filez#DeleteFilesTest.test_no_readme_file  s    
		"'',,KK  -; 	<

77>>$"2"2";";<<<77>>"'',,KK  -#1 2 	2 277>>"'',,KK""I}#> ? 	? ? ?r   c                    t        t        j                  j                  | j                  j
                  dd      d      5  	 d d d        | j                          t        j                  j                  | j                  j                        rJ t        j                  j                  t        j                  j                  | j                  j
                  d            sJ t        j                  j                  t        j                  j                  | j                  j                  dd            rJ y # 1 sw Y   xY w)Nr   
other_filere   ra   )r   r	   ri   rj   rk   rA  r-   r'  rp   ro   rl   r$   s    r   test_livedir_not_emptyz&DeleteFilesTest.test_livedir_not_empty  s    "'',,KK  -?@CE 		 	

77>>$"2"2";";<<<ww~~bggllKK  -1 2 	2 277>>"'',,KK""I}#> ? 	? ? ?	 	s    D77E c                 
   t         j                  j                  | j                  j                  dd      }t        j
                  |       | j                          t         j                  j                  | j                  j                        rJ t         j                  j                  t         j                  j                  | j                  j                  d            rJ t         j                  j                  |      rJ y )Nra   r   )r	   ri   rj   rk   rl   rmdirr-   r'  rp   ro   rA  )r%   r  s     r   test_no_archivezDeleteFilesTest.test_no_archive  s    ggll4;;#9#99mT


77>>$"2"2";";<<<77>>"'',,KK  -#1 2 	2 277>>+....r   )rV   rW   rX   rY   r&   r-   r  r  r  r  r  r  r  r   r   s   @r   r  r  i  s4    :? =
?	B=??	?/r   r  c                   4     e Zd ZdZ fdZd Zd Zd Z xZS )CertPathForCertNameTestz:Test for certbot._internal.storage.cert_path_for_cert_namec                 "   t         |           | j                  j                          | j	                          t
        j                  j                  | j                  j                  ddd      | _
        | j                  | j                  _        y )Nr`   r   zfullchain.pem)rg   r&   rp   r   r   r	   ri   rj   rk   rl   r   	cert_path)r%   rx   s    r   r&   zCertPathForCertNameTest.setUp  sa       "dkk&<&<fm! $r   c                      ddl m}  |||      S )Nr   )cert_path_for_cert_name)r*   r  )r%   
cli_configcertnamer  s       r   r-   zCertPathForCertNameTest._call  s    E&z8<<r   c                 Z    | j                  | j                  d      | j                  k(  sJ y r  )r-   rk   r   r$   s    r   test_simple_cert_namez-CertPathForCertNameTest.test_simple_cert_name  s#    zz$++}5GGGr   c                     t        j                  t        j                        5  | j	                  | j
                  d       d d d        y # 1 sw Y   y xY w)Nzfake-example.org)r   r   r   r   r-   rk   r$   s    r   test_no_such_cert_namez.CertPathForCertNameTest.test_no_such_cert_name  s<    ]]6223 	8JJt{{$67	8 	8 	8s   A

A)	rV   rW   rX   rY   r&   r-   r  r  r   r   s   @r   r  r    s    D/=H8r   r  __main__r   )&rY   r   rE  r  sysunittestr   rm   r   r  r  r   r   r*   r   certbot.compatr   r	   certbot.tests.utiltestsutilr   	load_certCERTr   r   TestCaser   ConfigTestCaser\   r   r  r  rV   exitmainargv__file__rC   r   r   <module>r     s    *    
       !  . %  & &y>*,FF** FFR=+I44 =+@x
B. x
BtZ/+ Z/x83 8* zCHH[V[[!"
234 r   