ó
Y[c           @   s  d  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 e j f d „  ƒ  YZ d e
 j f d	 „  ƒ  YZ d
 e
 j f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e j f d „  ƒ  YZ d e
 j f d „  ƒ  YZ d „  Z e d k r‰e j ƒ  n  d S(   s   Tests for certbot.hooks.iÿÿÿÿN(   t   List(   t   errors(   t   utilt   ValidateHooksTestc           B   s5   e  Z d  Z e d „  ƒ Z e j d ƒ d „  ƒ Z RS(   s'   Tests for certbot.hooks.validate_hooks.c         O   s   d d l  m } | | | Ž  S(   Niÿÿÿÿ(   t   validate_hooks(   t   certbot.hooksR   (   t   clst   argst   kwargsR   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   _call   s    s   certbot.hooks.validate_hookc         C   su   t  j ƒ  } |  j | ƒ g  | j D] } | d d ^ q# } |  j t d ƒ t | d  ƒ ƒ |  j d | d ƒ d  S(	   Ni    i   t   pret   postt   deployiÿÿÿÿt   renew(   R
   R   R   (   t   mockt	   MagicMockR	   t   call_args_listt   assertEqualt   set(   t   selft   mock_validate_hookt   configt   callt   types(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_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/hook_test.pyR      s   t   ValidateHookTestc           B   sV   e  Z d  Z e d „  ƒ Z d „  Z e j d ƒ d „  ƒ Z e j d ƒ d „  ƒ Z	 RS(   s&   Tests for certbot.hooks.validate_hook.c         O   s   d d l  m } | | | Ž  S(   Niÿÿÿÿ(   t   validate_hook(   R   R   (   R   R   R   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR	   #   s    c      	   C   st   t  j j |  j d ƒ } t  j t  j | t  j t  j Bd ƒ ƒ t j	 d ƒ ! |  j
 t j |  j | d ƒ Wd  QXd  S(   Nt   fooi¶  s$   certbot.hooks.plug_util.path_surgery(   t   ost   patht   joint   tempdirt   closet   opent   O_CREATt   O_WRONLYR   R   t   assertRaisesR   t   HookCommandNotFoundR	   (   R   t	   file_path(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_not_executable(   s
    &s   certbot.hooks.util.exe_existsc      	   C   sQ   t  | _ t j d ƒ # } |  j t j |  j d d ƒ Wd  QX|  j | j	 ƒ d  S(   Ns$   certbot.hooks.plug_util.path_surgeryR    t   bar(
   t   Falset   return_valueR   R   R)   R   R*   R	   t
   assertTruet   called(   R   t   mock_exe_existst   mock_ps(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_not_found1   s
    	s   certbot.hooks._progc         C   s$   |  j  d  d ƒ |  j | j ƒ d  S(   NR    (   R	   t   Nonet   assertFalseR1   (   R   t	   mock_prog(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt
   test_unset9   s    (
   R   R   R   R   R	   R,   R   R   R4   R8   (    (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR       s
   		t   HookTestc           B   s,   e  Z d  Z e d „  ƒ Z e d „  ƒ Z RS(   s!   Common base class for hook tests.c         O   s
   t  ‚ d S(   s7   Calls the method being tested with the given arguments.N(   t   NotImplementedError(   R   R   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR	   B   s    c         O   s5   t  j d ƒ   } d | _ |  j | | Ž  Wd QX| S(   s¤   Calls self._call after mocking out certbot.hooks.execute.

        The mock execute object is returned rather than the return value
        of self._call.

        s   certbot.hooks.executet    N(   R;   R;   (   R   R   R/   R	   (   R   R   R   t   mock_execute(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   _call_with_mock_executeG   s    	(   R   R   R   R   R	   R=   (    (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR9   ?   s   t   PreHookTestc           B   s€   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 d „  Z RS(   s!   Tests for certbot.hooks.pre_hook.c         O   s   d d l  m } | | | Ž  S(   Niÿÿÿÿ(   t   pre_hook(   R   R?   (   R   R   R   R?   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR	   X   s    c         C   sk   t  t |  ƒ j ƒ  d |  j _ t j |  j j ƒ t j j	 |  j j d ƒ |  _
 t |  j
 ƒ |  j ƒ  d  S(   NR    R-   (   t   superR>   t   setUpR   R?   R!   t   makedirst   renewal_pre_hooks_dirR"   R#   t   dir_hookt   create_hookt   _reset_pre_hook_already(   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRA   ]   s    c         C   s!   |  j  ƒ  t t |  ƒ j ƒ  d  S(   N(   RF   R@   R>   t   tearDown(   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRG   h   s    
c         C   s   d d l  m } | j ƒ  d  S(   Niÿÿÿÿ(   t   executed_pre_hooks(   R   RH   t   clear(   R   RH   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRF   m   s    c         C   s   d |  j  _ |  j ƒ  d  S(   Nt   certonly(   R   t   verbt   _test_nonrenew_common(   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_certonlyq   s    c         C   s   d |  j  _ |  j ƒ  d  S(   Nt   run(   R   RK   RL   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_runu   s    c         C   s3   |  j  |  j ƒ } | j |  j j ƒ |  j ƒ  d  S(   N(   R=   R   t   assert_called_once_withR?   t   _test_no_executions_common(   R   R<   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRL   y   s    c         C   sy   d  |  j _ d |  j _ t j |  j ƒ t j d ƒ  } |  j	 |  j ƒ } Wd  QX|  j
 | j ƒ |  j
 | j j ƒ d  S(   NR   s   certbot.hooks.logger(   R5   R   R?   RK   R!   t   removeRD   R   R   R=   R6   R1   t   info(   R   t   mock_loggerR<   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_no_hooks~   s    c         C   s?   t  |  j _ |  j |  j ƒ } | j |  j j ƒ |  j ƒ  d  S(   N(   R.   R   t   directory_hooksR=   RP   R?   RQ   (   R   R<   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_renew_disabled_dir_hooksˆ   s    c         C   sO   d |  j  _ |  j |  j  ƒ } | j |  j ƒ | j |  j  j ƒ |  j ƒ  d  S(   NR   (   R   RK   R=   t   assert_any_callRD   t   assert_called_withR?   RQ   (   R   R<   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_renew_no_overlapŽ   s
    c         C   sK   |  j  |  j _ d |  j _ |  j |  j ƒ } | j |  j  ƒ |  j ƒ  d  S(   NR   (   RD   R   R?   RK   R=   RP   RQ   (   R   R<   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_renew_with_overlap•   s
    c         C   sQ   t  j d ƒ  } |  j |  j ƒ } Wd  QX|  j | j ƒ |  j | j j ƒ d  S(   Ns   certbot.hooks.logger(   R   R   R=   R   R6   R1   R0   RS   (   R   RT   R<   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRQ   œ   s    (   R   R   R   R   R	   RA   RG   RF   RM   RO   RL   RU   RW   RZ   R[   RQ   (    (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR>   U   s   							
			t   PostHookTestc           B   s’   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 d „  Z d „  Z d „  Z RS(   s"   Tests for certbot.hooks.post_hook.c         O   s   d d l  m } | | | Ž  S(   Niÿÿÿÿ(   t	   post_hook(   R   R]   (   R   R   R   R]   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR	   ¦   s    c         C   sk   t  t |  ƒ j ƒ  d |  j _ t j |  j j ƒ t j j	 |  j j d ƒ |  _
 t |  j
 ƒ |  j ƒ  d  S(   NR-   R    (   R@   R\   RA   R   R]   R!   RB   t   renewal_post_hooks_dirR"   R#   RD   RE   t   _reset_post_hook_eventually(   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRA   «   s    c         C   s!   |  j  ƒ  t t |  ƒ j ƒ  d  S(   N(   R_   R@   R\   RG   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRG   ¶   s    
c         C   s   d d l  m } | 2d  S(   Niÿÿÿÿ(   t
   post_hooks(   R   R`   (   R   R`   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR_   »   s    c         C   sY   xR d D]J } | |  j  _ |  j |  j  ƒ } | j |  j  j ƒ |  j |  j ƒ  ƒ q Wd  S(   NRJ   RN   (   s   certonlys   run(   R   RK   R=   RP   R]   R6   t   _get_eventually(   R   RK   R<   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_certonly_and_run_with_hook¿   s
    c         C   s\   d  |  j _ xI d D]A } | |  j _ |  j |  j |  j ƒ j ƒ |  j |  j ƒ  ƒ q Wd  S(   NRJ   RN   (   s   certonlys   run(   R5   R   R]   RK   R6   R=   R1   Ra   (   R   RK   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt#   test_cert_only_and_run_without_hookÆ   s
    c         C   s&   t  |  j _ |  j |  j j g ƒ d  S(   N(   R.   R   RV   t   _test_renew_commonR]   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRW   Í   s    c         C   s#   d  |  j _ |  j |  j g ƒ d  S(   N(   R5   R   R]   Rd   RD   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_renew_no_config_hookÑ   s    c         C   s*   t  j |  j ƒ |  j |  j j g ƒ d  S(   N(   R!   RR   RD   Rd   R   R]   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_renew_no_dir_hookÕ   s    c         C   s-   d  |  j _ t j |  j ƒ |  j g  ƒ d  S(   N(   R5   R   R]   R!   RR   RD   Rd   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_renew_no_hooksÙ   s    c         C   sR   |  j  |  j j g } |  j | ƒ d |  j _ | j |  j j ƒ |  j | ƒ d  S(   Nt   baz(   RD   R   R]   Rd   t   append(   R   t   expected(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRZ   Þ   s
    c         C   s&   |  j  |  j _ |  j |  j  g ƒ d  S(   N(   RD   R   R]   Rd   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR[   æ   s    c         C   sM   d |  j  _ x: t d ƒ D], } |  j |  j  ƒ |  j |  j ƒ  | ƒ q Wd  S(   NR   i   (   R   RK   t   rangeR	   R   Ra   (   R   Rj   t   _(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRd   ê   s    c         C   s   d d l  m } | S(   Niÿÿÿÿ(   R`   (   R   R`   (   R   R`   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRa   ñ   s    (   R   R   R   R   R	   RA   RG   R_   Rb   Rc   RW   Re   Rf   Rg   RZ   R[   Rd   Ra   (    (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR\   £   s   												t   RunSavedPostHooksTestc           B   sJ   e  Z d  Z e d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   s-   Tests for certbot.hooks.run_saved_post_hooks.c         O   s   d d l  m } | ƒ  S(   Niÿÿÿÿ(   t   run_saved_post_hooks(   R   Rn   (   R   R   R   Rn   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR	   ù   s    c         O   s9   d } t  j | d |  j ƒ |  j | | Ž  SWd QXd S(   sõ   Call run_saved_post_hooks but mock out execute and eventually

        certbot.hooks.post_hooks is replaced with
        self.eventually. The mock execute object is returned rather than
        the return value of run_saved_post_hooks.

        s   certbot.hooks.post_hookst   newN(   R   R   t
   eventuallyR=   (   R   R   R   t   eventually_path(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt&   _call_with_mock_execute_and_eventuallyþ   s    c         C   s    t  t |  ƒ j ƒ  g  |  _ d  S(   N(   R@   Rm   RA   Rp   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRA   
  s    c         C   s   |  j  |  j ƒ  j ƒ d  S(   N(   R6   Rr   R1   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt
   test_empty  s    c         C   si   d d d d g |  _  |  j ƒ  } | j } x8 t | |  j  ƒ D]$ \ } } |  j | d d | ƒ q= Wd  S(   NR    R-   Rh   t   quxi    (   Rp   Rr   R   t   zipR   (   R   R<   t   callst   actual_callt   expected_arg(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_multiple  s
    	c         C   s0   d g |  _  |  j ƒ  } | j |  j  d ƒ d  S(   NR    i    (   Rp   Rr   RP   (   R   R<   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_single  s    (
   R   R   R   R   R	   Rr   RA   Rs   Ry   Rz   (    (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRm   ö   s   				t   RenewalHookTestc           B   s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   s1   Common base class for testing deploy/renew hooks.c            sŠ   d | k r | d n | d ‰  d | k r6 | d n | d ‰ ‡  ‡ ‡ f d †  } t  j d ƒ   } | | _ ˆ j | | Ž  Wd QX| S(   sú   Calls self._call after mocking out certbot.hooks.execute.

        The mock execute object is returned rather than the return value
        of self._call. The mock execute object asserts that environment
        variables were properly set.

        t   domainsi   t   lineagei   c             s;   ˆ j  t j d d j ˆ  ƒ ƒ ˆ j  t j d ˆ ƒ d S(   s¦   Assert environment variables are properly set.

            :returns: two strings imitating no output from the hook
            :rtype: `tuple` of `str`

            t   RENEWED_DOMAINSt    t   RENEWED_LINEAGER;   (   R;   R;   (   R   R!   t   environR#   (   t   unused_argst   unused_kwargs(   R|   R}   R   (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   execute_side_effect/  s     s   certbot.hooks.executeN(   R   R   t   side_effectR	   (   R   R   R   R„   R<   (    (   R|   R}   R   s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR=   $  s      	c         C   s0   t  t |  ƒ j ƒ  t d „  d Dƒ ƒ |  _ d  S(   Nc         s   s$   |  ] } | t  j k r | Vq d  S(   N(   R!   R   (   t   .0t   var(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pys	   <genexpr>B  s    R~   R€   (   s   RENEWED_DOMAINSs   RENEWED_LINEAGE(   R@   R{   RA   R   t   vars_to_clear(   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRA   ?  s    c         C   s>   x$ |  j  D] } t j j | d  ƒ q
 Wt t |  ƒ j ƒ  d  S(   N(   Rˆ   R!   R   t   popR5   R@   R{   RG   (   R   R‡   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRG   E  s    (   R   R   R   R=   RA   RG   (    (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR{     s   		t   DeployHookTestc           B   sV   e  Z d  Z e d „  ƒ Z e j d ƒ d „  ƒ Z e j d ƒ d „  ƒ Z d „  Z	 RS(   s$   Tests for certbot.hooks.deploy_hook.c         O   s   d d l  m } | | | Ž  S(   Niÿÿÿÿ(   t   deploy_hook(   R   R‹   (   R   R   R   R‹   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR	   N  s    s   certbot.hooks.loggerc         C   sZ   d |  j  _ t |  j  _ |  j |  j  d g d ƒ } |  j | j ƒ |  j | j j ƒ d  S(   NR    s   example.orgs   /foo/bar(	   R   R‹   t   Truet   dry_runR=   R6   R1   R0   t   warning(   R   RT   R<   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_dry_runS  s    c         C   sN   d  |  j _ |  j |  j d g d ƒ } |  j | j ƒ |  j | j j ƒ d  S(   Ns   example.orgs   /foo/bar(   R5   R   R‹   R=   R6   R1   RS   (   R   RT   R<   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_no_hook\  s
    c         C   sM   d d g } d } d |  j  _ |  j |  j  | | ƒ } | j |  j  j ƒ d  S(   Ns   example.orgs   example.nets   /foo/barR    (   R   R‹   R=   RP   (   R   R|   R}   R<   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_successd  s    (
   R   R   R   R   R	   R   R   R   R   R‘   (    (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRŠ   K  s
   	t   RenewHookTestc           B   sb   e  Z d  Z e d „  ƒ Z d „  Z d „  Z e j d ƒ d „  ƒ Z	 d „  Z
 d „  Z d „  Z RS(	   s"   Tests for certbot.hooks.renew_hookc         O   s   d d l  m } | | | Ž  S(   Niÿÿÿÿ(   t
   renew_hook(   R   R“   (   R   R   R   R“   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR	   p  s    c         C   sa   t  t |  ƒ j ƒ  d |  j _ t j |  j j ƒ t j j	 |  j j d ƒ |  _
 t |  j
 ƒ d  S(   NR    R-   (   R@   R’   RA   R   R“   R!   RB   t   renewal_deploy_hooks_dirR"   R#   RD   RE   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRA   u  s    c         C   s>   t  |  j _ |  j |  j d g d ƒ } | j |  j j ƒ d  S(   Ns   example.orgs   /foo/bar(   R.   R   RV   R=   RP   R“   (   R   R<   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_disabled_dir_hooks~  s    s   certbot.hooks.loggerc         C   sQ   t  |  j _ |  j |  j d g d ƒ } |  j | j ƒ |  j | j j d ƒ d  S(   Ns   example.orgs   /foo/bari   (	   RŒ   R   R   R=   R6   R1   R   RŽ   t
   call_count(   R   RT   R<   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR   „  s
    c         C   sv   d  |  j _ t j |  j ƒ t j d ƒ " } |  j |  j d g d ƒ } Wd  QX|  j	 | j
 ƒ |  j	 | j j
 ƒ d  S(   Ns   certbot.hooks.loggers   example.orgs   /foo/bar(   R5   R   R“   R!   RR   RD   R   R   R=   R6   R1   RS   (   R   RT   R<   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRU   Œ  s    c         C   sA   |  j  |  j _ |  j |  j d d g d ƒ } | j |  j  ƒ d  S(   Ns   example.nets   example.orgs   /foo/bar(   RD   R   R“   R=   RP   (   R   R<   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_overlap–  s    c         C   sB   |  j  |  j d g d ƒ } | j |  j ƒ | j |  j j ƒ d  S(   Ns   example.orgs   /foo/bar(   R=   R   RX   RD   RY   R“   (   R   R<   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   test_no_overlapœ  s    (   R   R   R   R   R	   RA   R•   R   R   R   RU   R—   R˜   (    (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR’   m  s   				
	t   ExecuteTestc           B   s/   e  Z d  Z e d „  ƒ Z d „  Z d „  Z RS(   s    Tests for certbot.hooks.execute.c         O   s   d d l  m } | | | Ž  S(   Niÿÿÿÿ(   t   execute(   R   Rš   (   R   R   R   Rš   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR	   ¦  s    c         C   sS   xL t  d d ƒ D]; } x2 d D]* } x! d D] } |  j | | | ƒ q* Wq Wq Wd  S(   Ni    i   R;   s   Hello World!s   Goodbye Cruel World!(   R;   s   Hello World!(   R;   s   Goodbye Cruel World!(   Rk   t   _test_common(   R   t
   returncodet   stdoutt   stderr(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR   «  s    c         C   sì   d } t  j d ƒ _ } | | f | j j _ | | j _ t  j d ƒ & } |  j |  j | ƒ | | f ƒ Wd  QXWd  QX| j d j d | j d d ƒ } |  j | | ƒ | rÆ |  j	 | j
 j ƒ n  | sÒ | rè |  j	 | j j ƒ n  d  S(   NR    s   certbot.hooks.Popens   certbot.hooks.loggeri   R   i    (   R   R   R/   t   communicateRœ   R   R	   t	   call_argst   getR0   RS   R1   t   error(   R   Rœ   R   Rž   t   given_commandt
   mock_popenRT   t   executed_command(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR›   ±  s    +(   R   R   R   R   R	   R   R›   (    (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR™   £  s   	t   ListHooksTestc           B   s8   e  Z d  Z e d „  ƒ Z d „  Z d „  Z d „  Z RS(   s#   Tests for certbot.hooks.list_hooks.c         O   s   d d l  m } | | | Ž  S(   Niÿÿÿÿ(   t
   list_hooks(   R   R§   (   R   R   R   R§   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR	   Æ  s    c         C   s   |  j  |  j |  j ƒ ƒ d  S(   N(   R6   R	   R$   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRs   Ë  s    c            sW   t  ‡  f d †  d Dƒ ƒ } x | D] } t | ƒ q# Wˆ  j ˆ  j ˆ  j ƒ | ƒ d  S(   Nc         3   s'   |  ] } t  j j ˆ  j | ƒ Vq d  S(   N(   R!   R"   R#   R$   (   R†   t   basename(   R   (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pys	   <genexpr>Ð  s   R    R-   Rh   Rt   (   s   foos   bars   bazs   qux(   t   sortedRE   R   R	   R$   (   R   t   namest   name(    (   R   s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRy   Î  s    c         C   sE   t  j j |  j d ƒ } t | ƒ |  j |  j |  j ƒ | g ƒ d  S(   NR    (   R!   R"   R#   R$   RE   R   R	   (   R   R«   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRz   Ø  s    
(   R   R   R   R   R	   Rs   Ry   Rz   (    (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyR¦   Ã  s
   		
c         C   s:   t  |  d ƒ j ƒ  t j |  t j |  ƒ j t j Bƒ d S(   sm   Creates an executable file at the specified path.

    :param str file_path: path to create the file at

    t   wN(   R&   R%   R!   t   chmodt   statt   st_modet   S_IXUSR(   R+   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyRE   ß  s    t   __main__(   R   R!   R®   t   unittestR   t   acme.magic_typingR    t   certbotR   t   certbot.testsR   t   TestCaseR   t   TempDirTestCaseR   t   ConfigTestCaseR9   R>   R\   Rm   R{   RŠ   R’   R™   R¦   RE   R   t   main(    (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/hook_test.pyt   <module>   s*   NS),"6 	
