
Y[c           @   s  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 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 e j f d	     YZ d
 e j f d     YZ d e j f d     YZ d e j f d     YZ d e j f d     YZ d e j f d     YZ d e j f d     YZ d e j f d     YZ d e j f d     YZ e d k re j    n  d S(   s   Tests for certbot.log.iN(   t   messages(   t   Optional(   t	   constants(   t   errors(   t   utilt   PreArgParseSetupTestc           B   sb   e  Z d  Z e d    Z e j d  e j d  e j d  e j d  d       Z RS(   s*   Tests for certbot.log.pre_arg_parse_setup.c         O   s   d d l  m } |   S(   Ni(   t   pre_arg_parse_setup(   t   certbot.logR   (   t   clst   argst   kwargsR   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   _call   s    s   certbot.log.syss%   certbot.log.pre_arg_parse_except_hooks   certbot.log.logging.getLoggers    certbot.log.util.atexit_registerc   
   	   C   s0  d g | _  t j | _ |  j   |   } | j j t j  |  j | j	 j
 d  d  } xn | j	 j D]` } | d d } | d  k r t | t j j  r | } | j }	 qg |  j t | t j   qg W|  j t |	 t j   | j t j  | j d d d  | j | d d d d t d t j d  S(   Ns   --debugi   i    i   i   t   debugt   log_path(   t   argvt   syst   version_infoR   t   setLevelt   assert_called_once_witht   loggingt   DEBUGt   assertEqualt
   addHandlert
   call_countt   Nonet   call_args_listt
   isinstancet   handlerst   MemoryHandlert   targett
   assertTruet   StreamHandlert   shutdownt
   excepthookt   Truet   mockt   ANY(
   t   selft   mock_registert   mock_gett   mock_except_hookt   mock_syst   mock_root_loggert   memory_handlert   callt   handlerR   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   test_it   s&    
	!(   t   __name__t
   __module__t   __doc__t   classmethodR   R#   t   patchR.   (    (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR      s   t   PostArgParseSetupTestc           B   sJ   e  Z d  Z e d    Z d   Z d   Z d   Z d   Z d   Z	 RS(   s+   Tests for certbot.log.post_arg_parse_setup.c         O   s   d d l  m } | | |   S(   Ni(   t   post_arg_parse_setup(   R   R5   (   R   R	   R
   R5   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR   >   s    c         C   s   t  t |   j   t |  j _ d |  j _ t |  j _ t j	 d |  j _
 t t j d  |  _ d d l m } | t j    |  _ d d l m } m } |   |  _ |  j j |  _ | |  j  |  _ t j d |  j |  j g  |  _ d  S(   Ni  t   verbose_countt   wi(   t   ColoredStreamHandler(   R   t   TempHandlerR   (   t   superR4   t   setUpt   Falset   configR   t   max_log_backupst   quietR   t   CLI_DEFAULTSR6   t   opent   ost   devnullR   R8   t   sixt   StringIOt   stream_handlerR   R9   t   temp_handlert   patht	   temp_pathR+   R#   t	   MagicMockt   root_logger(   R%   R8   R   R9   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR;   C   s    	c         C   s>   |  j  j   |  j j   |  j j   t t |   j   d  S(   N(   R+   t   closeRF   RG   R:   R4   t   tearDown(   R%   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyRM   T   s    c         C   sw  t  j d  e } |  j | _ d } t  j |  ; } t  j d  # } t j | _ |  j |  j  Wd  QXWd  QXWd  QX|  j j j	 |  j
  |  j |  j j j  |  j t j j t j j |  j j d    |  j t j j |  j   | j d d d  | j	 d d d d |  j j d	 |  j j |  j j } |  j j rX|  j | t j  n |  j | |  j j d
  d  S(   Ns   certbot.log.logging.getLoggers&   certbot.log.post_arg_parse_except_hooks   certbot.log.syss   letsencrypt.logi   i   i   R   R   i
   (   R#   R3   RK   t   return_valueR   R   R   R=   t   removeHandlerR   R+   R   R   t   calledRB   RH   t   existst   joint   logs_dirt   assertFalseRI   R!   R   RF   t   levelR?   R   R   t   QUIET_LOGGING_LEVELR6   (   R%   t   mock_get_loggert   except_hook_pathR(   R)   RU   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   test_commonZ   s(    "
%c         C   s   t  |  j _ |  j   d  S(   N(   R"   R=   R   RY   (   R%   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt
   test_debugs   s    c         C   s   t  |  j _ |  j   d  S(   N(   R"   R=   R?   RY   (   R%   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt
   test_quietw   s    (
   R/   R0   R1   R2   R   R;   RM   RY   RZ   R[   (    (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR4   ;   s   				t   SetupLogFileHandlerTestc           B   sq   e  Z d  Z e d    Z d   Z e j d  d    Z d   Z	 d   Z
 d   Z e j d  d	    Z RS(
   s-   Tests for certbot.log.setup_log_file_handler.c         O   s   d d l  m } | | |   S(   Ni(   t   setup_log_file_handler(   R   R]   (   R   R	   R
   R]   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR      s    c         C   s#   t  t |   j   d |  j _ d  S(   Ni*   (   R:   R\   R;   R=   R>   (   R%   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR;      s    s1   certbot.main.logging.handlers.RotatingFileHandlerc         C   sf   t  | _ y |  j |  j d d  Wn/ t j k
 rT } |  j d t |  k  n X|  j d  d  S(   Ns   test.logs   %(message)ss
   --logs-dirs   Error not raised.(	   t   IOErrort   side_effectR   R=   R   t   ErrorR   t   strt   fail(   R%   t   mock_handlert   err(    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   test_failure   s    	c         C   s   |  j  d t  d  S(   Nt   should_rollover(   t   _test_success_commonR"   (   R%   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   test_success_with_rollover   s    c         C   s    d |  j  _ |  j d t  d  S(   Ni    Rf   (   R=   R>   Rg   R<   (   R%   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   test_success_without_rollover   s    c         C   s   d } |  j  |  j | d  \ } } | j   |  j | j t j  |  j | j j t	 j
  t j j |  j j |  } |  j | |  t j j |  j j | d  } |  j t j j |  |  d  S(   Ns   test.logs   %(message)ss   .1(   R   R=   RL   R   RU   R   R   t	   formattert	   convertert   timet	   localtimeRB   RH   RR   RS   RQ   (   R%   Rf   t   log_fileR-   R   t   expected_patht   backup_path(    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyRg      s    
s0   certbot.log.logging.handlers.RotatingFileHandlerc         C   sA   |  j  |  j d d  | j d d } |  j |  j j |  d  S(   Ns   test.logs   %(message)si   t   backupCount(   R   R=   t	   call_argsR   R>   (   R%   Rc   t   backup_count(    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   test_max_log_backups_used   s    (   R/   R0   R1   R2   R   R;   R#   R3   Re   Rh   Ri   Rg   Rt   (    (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR\   |   s   				t   ColoredStreamHandlerTestc           B   s2   e  Z d  Z d   Z d   Z d   Z d   Z RS(   s*   Tests for certbot.log.ColoredStreamHandlerc         C   sy   t  j   |  _ d   |  j _ t j   |  _ |  j j t j  d d l	 m
 } | |  j  |  _ |  j j |  j  d  S(   Nc           S   s   t  S(   N(   R"   (    (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   <lambda>   s    i(   R8   (   RD   RE   t   streamt   isattyR   t	   getLoggert   loggerR   R   R   R8   R-   R   (   R%   R8   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR;      s    c         C   s   |  j  j   d  S(   N(   R-   RL   (   R%   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyRM      s    c         C   s<   d } |  j  j |  |  j |  j j   d j |   d  S(   Ns   I did a things   {0}
(   Rz   R   R   Rw   t   getvaluet   format(   R%   t   msg(    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   test_format   s    c         C   sW   d } t  j |  j _ |  j j |  |  j |  j j   d j	 t
 j | t
 j   d  S(   Ns   I did another things
   {0}{1}{2}
(   R   R   R-   t	   red_levelRz   R   R   Rw   R{   R|   R   t   ANSI_SGR_REDt   ANSI_SGR_RESET(   R%   R}   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   test_format_and_red_level   s    (   R/   R0   R1   R;   RM   R~   R   (    (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyRu      s
   	
		t   MemoryHandlerTestc           B   sD   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   s#   Tests for certbot.log.MemoryHandlerc         C   s   t  j t  |  _ |  j j t  j  d |  _ t j   |  _	 t  j
 |  j	  |  _ d d l m } | |  j  |  _ |  j j |  j  d  S(   Ns   hi therei(   R   (   R   Ry   R/   Rz   R   R   R}   RD   RE   Rw   R   RF   R   R   R-   R   (   R%   R   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR;      s    	c         C   s   |  j  j   |  j j   d  S(   N(   R-   RL   RF   (   R%   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyRM      s    c         C   sA   |  j    |  j j d t  |  j |  j j   |  j d  d  S(   Nt   forces   
(   t   _test_log_debugR-   t   flushR"   R   Rw   R{   R}   (   R%   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt
   test_flush   s    
c         C   s=   |  j  j |  j  |  j j   |  j |  j j   d  d  S(   Nt    (   Rz   t   criticalR}   R-   R   R   Rw   R{   (   R%   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   test_not_flushed   s    c         C   s   |  j    t j   } t j |  } |  j j |  |  j j d t  |  j	 |  j
 j   d  |  j	 | j   |  j d  | j   d  S(   NR   R   s   
(   R   RD   RE   R   R   R-   t	   setTargetR   R"   R   Rw   R{   R}   RL   (   R%   t
   new_streamt   new_stream_handler(    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   test_target_reset   s    
c         C   s   |  j  j |  j  d  S(   N(   Rz   R   R}   (   R%   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR      s    (	   R/   R0   R1   R;   RM   R   R   R   R   (    (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR      s   					t   TempHandlerTestc           B   s;   e  Z d  Z d   Z d   Z d   Z d   Z d   Z RS(   s"   Tests for certbot.log.TempHandler.c         C   s)   t  |  _ d d l m } |   |  _ d  S(   Ni(   R9   (   R<   t   closedR   R9   R-   (   R%   R9   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR;      s    	c         C   s   |  j  j   d  S(   N(   R-   RL   (   R%   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyRM     s    c         C   s,   |  j  t j |  j j d t j     d  S(   Ni  (   R   R   t   check_permissionsR-   RH   RB   t   getuid(   R%   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   test_permissions  s    c         C   s0   |  j  j   |  j t j j |  j  j   d  S(   N(   R-   RL   RT   RB   RH   RQ   (   R%   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   test_delete  s    c         C   sY   |  j  j t j    |  j  j   |  j t j j |  j  j   t j	 |  j  j  d  S(   N(
   R-   t   emitR#   RJ   RL   R   RB   RH   RQ   t   remove(   R%   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   test_no_delete  s    (   R/   R0   R1   R;   RM   R   R   R   (    (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR      s   				t   PreArgParseExceptHookTestc           B   s5   e  Z d  Z e d    Z e j d  d    Z RS(   s0   Tests for certbot.log.pre_arg_parse_except_hook.c         O   s   d d l  m } | | |   S(   Ni(   t   pre_arg_parse_except_hook(   R   R   (   R   R	   R
   R   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR     s    s&   certbot.log.post_arg_parse_except_hookc         C   sY   t  j   } d } i d d 6} |  j | | |  | j | |   | j j d t  d  S(   Nt   someR	   R
   R   (   R   s   args(   R#   RJ   R   R   R   R"   (   R%   t   mock_post_arg_parse_except_hookR+   R	   R
   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR.     s    
(   R/   R0   R1   R2   R   R#   R3   R.   (    (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR     s   t   PostArgParseExceptHookTestc           B   sw   e  Z d  Z e d    Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z d
   Z d   Z RS(   s1   Tests for certbot.log.post_arg_parse_except_hook.c         O   s   d d l  m } | | |   S(   Ni(   t   post_arg_parse_except_hook(   R   R   (   R   R	   R
   R   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR   *  s    c         C   s   d |  _  d |  _ d  S(   Ns   test error messages   foo.log(   t	   error_msgR   (   R%   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR;   /  s    	c         C   sE   t  } |  j | d t \ } } |  j | j |  |  j |  d  S(   NR   (   t   KeyboardInterruptt   _test_commonR<   t   _assert_exception_loggedt   errort   _assert_logfile_output(   R%   t   exc_typet   mock_loggert   output(    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   test_base_exception3  s    c         C   sE   t  } |  j | d t \ } } |  j | j |  |  j |  d  S(   NR   (   t
   ValueErrorR   R"   R   R   R   (   R%   R   R   R   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyRZ   9  s    c         C   sK   t  j } |  j | d t \ } } |  j | j |  |  j | |  d  S(   NR   (   R   t   PluginErrorR   R<   R   R   t   _assert_quiet_output(   R%   R   R   R   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   test_custom_error?  s    	c            s   t  t j t j       f d   } |  j | d t \ } } |  j | j t j	  |  j
 | |  |  j t j | k  d  S(   Nc            s   t  j j   d |  S(   s6   Wraps ACME errors so the constructor takes only a msg.t   detail(   R    R`   t	   with_code(   R}   (   t	   acme_code(    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   get_acme_errorI  s    R   (   t   nextRD   t   iterkeysR    t   ERROR_CODESR   R<   R   R   R`   R   RT   t   ERROR_PREFIX(   R%   R   R   R   (    (   R   s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   test_acme_errorE  s    c         C   sH   t  } |  j | d t \ } } |  j | j |  |  j | |  d  S(   NR   (   R   R   R<   R   R   R   (   R%   R   R   R   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   test_other_errorR  s    c            s   t  j       f d   } y | |  j   Wn t k
 r t j   } t j d   } | | j _	 t j d    [ y  |  j
 d | d |  j |  Wn& t k
 r }   j t |   n X|  j d  Wd QXWd QXn X  j   } | | f S(   s,   Returns the mocked logger and stderr output.c             s     j  |  d  d S(   s   Write error to mock_err.i    N(   t   write(   R	   t   unused_kwargs(   t   mock_err(    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt	   write_err\  s    s   certbot.log.loggers   certbot.log.sys.stderrR   R   s   SystemExit not raised.N(   RD   RE   R   t   BaseExceptionR   t   exc_infoR#   R3   R   R_   R   R   t
   SystemExitR   Ra   Rb   R{   (   R%   t
   error_typeR   R   R   R   t   exit_errR   (    (   R   s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR   X  s"    	c         C   sc   |  j  | j  | j d } |  j  d | k  | d } | t j t j f } |  j | |  d  S(   Ni   R   (   R   RP   Rr   R#   R$   R   (   R%   t   log_funcR   t   call_kwargst   actual_exc_infot   expected_exc_info(    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR   s  s    
c         C   s-   |  j  d | k  |  j  |  j | k  d  S(   Ns   Please see the logfile(   R   R   (   R%   R   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR   |  s    c         C   s@   |  j  | j j  |  j | j j  |  j |  j | k  d  S(   N(   RT   t	   exceptionRP   R   R   R   (   R%   R   R   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR     s    (   R/   R0   R1   R2   R   R;   R   RZ   R   R   R   R   R   R   R   (    (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR   (  s   										t   ExitWithLogPathTestc           B   s8   e  Z d  Z e d    Z d   Z d   Z d   Z RS(   s)   Tests for certbot.log.exit_with_log_path.c         O   s   d d l  m } | | |   S(   Ni(   t   exit_with_log_path(   R   R   (   R   R	   R
   R   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR     s    c         C   sd   t  j j |  j d  } t | d  j   |  j |  } |  j d | k  |  j | | k  d  S(   Ns   test.logR7   t   logfiles(   RB   RH   RR   t   tempdirRA   RL   R   R   (   R%   Rn   t   err_str(    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   test_log_file  s
    c         C   s?   |  j  |  j  } |  j d | k  |  j |  j | k  d  S(   NR   (   R   R   R   (   R%   R   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   test_log_dir  s    c         O   sB   y |  j  | |   Wn t k
 r0 } t |  SX|  j d  d  S(   Ns   SystemExit was not raised.(   R   R   Ra   Rb   (   R%   R	   R
   Rd   (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR     s
    (   R/   R0   R1   R2   R   R   R   R   (    (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyR     s
   		t   __main__(!   R1   R   t   logging.handlersRB   R   Rl   t   unittestR#   RD   t   acmeR    t   acme.magic_typingR   t   certbotR   R   R   t   certbot.testst	   test_utilt   TestCaseR   t   ConfigTestCaseR4   R\   Ru   R   R   R   R   t   TempDirTestCaseR   R/   t   main(    (    (    s:   /usr/lib/python2.7/dist-packages/certbot/tests/log_test.pyt   <module>   s2   &A3 +^