ó
Y[c           @   sl  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 m	 Z	 d d l m
 Z
 d d l m Z d d f d d	 f g Z d
 d d g Z d d
 f d d f d d f g 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 e d k rhe j ƒ  n  d S(   s!   Test :mod:`certbot.display.util`.iÿÿÿÿN(   t   errors(   t
   interfaces(   t   utilt   Firstt   Description1t   Secondt   Description2t   tag1t   tag2t   tag3t   1t   2t   3t   InputWithTimeoutTestc           B   sS   e  Z d  Z e d „  ƒ Z d „  Z d d „ Z e j	 d ƒ d „  ƒ Z
 d „  Z RS(   s2   Tests for certbot.display.util.input_with_timeout.c         O   s   d d l  m } | | | Ž  S(   Niÿÿÿÿ(   t   input_with_timeout(   t   certbot.display.utilR   (   t   clst   argst   kwargsR   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   _call   s    c         C   sK   t  j d ƒ 6 } t j d d | ƒ |  j t |  j ƒ Wd  QXWd  QXd  S(   Ns   r+s   certbot.display.util.sys.stdint   new(   t   tempfilet   TemporaryFilet   mockt   patcht   assertRaisest   EOFErrorR   (   t   selft   f(    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_eof   s    c         C   sc   d } t  j | d ƒ } t j d ƒ 5 } | g g  g  f | _ |  j |  j | ƒ | ƒ Wd  QXd  S(   Ns   foo bars   
s"   certbot.display.util.select.select(   t   sixt   StringIOR   R   t   return_valuet   assertEqualR   (   R   t   promptt   expectedt   stdint   mock_select(    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt
   test_input"   s
    s   certbot.display.util.sys.stdoutc         C   s4   d } |  j  | ƒ | j j | ƒ | j j ƒ  d  S(   Ns   test prompt: (   R&   t   writet   assert_called_once_witht   flush(   R   t   mock_stdoutR"   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_input_with_prompt)   s    c      	   C   sk   t  j  t  j t  j ƒ } | j d ƒ | j d ƒ t j d | ƒ ! |  j t j	 |  j
 d d ƒWd  QXd  S(   Nt    i    i   s   certbot.display.util.sys.stdint   timeoutgü©ñÒMbP?(   R,   i    (   t   sockett   AF_INETt   SOCK_STREAMt   bindt   listenR   R   R   R    t   ErrorR   (   R   R$   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_timeout0   s
    N(   t   __name__t
   __module__t   __doc__t   classmethodR   R   t   NoneR&   R   R   R+   R4   (    (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyR      s   	t   FileOutputDisplayTestc           B   sm  e  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 d „  Z e j	 d ƒ d „  ƒ Z e j	 d ƒ d „  ƒ Z e j	 d ƒ d „  ƒ Z e j	 d ƒ 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  d „  Z! RS(    s®   Test stdout display.

    Most of this class has to deal with visual output.  In order to test how the
    functions look to a user, uncomment the test_visual function.

    c         C   s>   t  t |  ƒ j ƒ  t j ƒ  |  _ t j |  j t ƒ |  _	 d  S(   N(
   t   superR:   t   setUpR   t	   MagicMockR*   t   display_utilt   FileDisplayt   Falset	   displayer(   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyR<   @   s    c         C   sA   |  j  j d t ƒ |  j j j d d } |  j d | k ƒ d  S(   Nt   messagei    (   RA   t   notificationR@   R*   R'   t	   call_argst
   assertTrue(   R   t   string(    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_notification_no_pauseE   s    c         C   s`   d } t  j | d d ƒ |  j j d d t ƒWd  QX|  j d |  j j j d d k ƒ d  S(   Ns'   certbot.display.util.input_with_timeoutR    t   enterRB   t   force_interactivei    (	   R   R   RA   RC   t   TrueRE   R*   R'   RD   (   R   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_notification_pauseK   s    c         C   sD   |  j  |  j j d ƒ |  j j j d d } |  j d | k ƒ d  S(   NRB   i    (   t   _force_noninteractiveRA   RC   R*   R'   RD   RE   (   R   RF   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt    test_notification_noninteractiveR   s    c         C   s—   |  j  |  j j d ƒ |  j j j d d } |  j d | k ƒ |  j |  j j ƒ |  j  |  j j d ƒ |  j j j d d } |  j d | k ƒ d  S(   NRB   i    t   message2(   RL   RA   RC   R*   R'   RD   RE   t   skipped_interaction(   R   RF   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt!   test_notification_noninteractive2W   s    s3   certbot.display.util.FileDisplay._get_valid_int_ansc         C   sJ   t  j d f | _ |  j j d t d t ƒ} |  j | t  j d f ƒ d  S(   Ni   RB   RI   i    (   R>   t   OKR    RA   t   menut   CHOICESRJ   R!   (   R   t   mock_anst   ret(    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt	   test_menud   s    c         C   sD   d } |  j  |  j j d t d | ƒ} |  j | t j | f ƒ d  S(   Ni    t   msgt   default(   RL   RA   RR   RS   R!   R>   RQ   (   R   RX   t   result(    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_menu_noninteractivek   s    c         C   sW   d } t  j | d d ƒ# |  j j d d t ƒ\ } } Wd  QX|  j | t j ƒ d  S(   Ns'   certbot.display.util.input_with_timeoutR    t   cRB   RI   (   R   R   RA   t   inputRJ   RE   R>   t   CANCEL(   R   R   t   codet   _(    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_input_cancelq   s    $c         C   sg   d } t  j | d d ƒ# |  j j d d t ƒ\ } } Wd  QX|  j | t j ƒ |  j | d ƒ d  S(   Ns'   certbot.display.util.input_with_timeoutR    s
   domain.comRB   RI   (   R   R   RA   R\   RJ   R!   R>   RQ   (   R   R   R^   t   input_(    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_input_normalx   s
    $c         C   sQ   d } |  j  |  j j d d | ƒ\ } } |  j | t j ƒ |  j | | ƒ d  S(   Nt   fooRB   RX   (   RL   RA   R\   R!   R>   RQ   (   R   RX   R^   Ra   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_input_noninteractive€   s
    c         C   s)   |  j  t |  j |  j j d d d ƒd  S(   NRB   t   cli_flags   --flag(   R   t	   ExceptionRL   RA   R\   (   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_input_assertion_failˆ   s    c         C   sB   t  j d ƒ - |  j t j |  j |  j j d d d ƒWd  QXd  S(   Ns&   certbot.display.util.assert_valid_callRW   Re   s   --flag(   R   R   R   R    R3   RL   RA   R\   (   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_input_assertion_fail2Ž   s    c         C   s~  d } t  j | d d ƒ$ |  j |  j j d d t ƒƒ Wd  QXt  j | d d ƒ$ |  j |  j j d d t ƒƒ Wd  QXt  j | d d d g ƒ$ |  j |  j j d d t ƒƒ Wd  QXt  j | d d	 ƒ$ |  j |  j j d d t ƒƒ Wd  QXt  j | d d
 d g ƒ$ |  j |  j j d d t ƒƒ Wd  QXt  j | d d ƒ* |  j |  j j d d d d t ƒƒ Wd  QXd  S(   Ns'   certbot.display.util.input_with_timeoutR    t   YesRB   RI   t   yt   side_effectt   maybet   Not   cancelt   nt   aRW   t	   yes_labelt   Agree(   R   R   RE   RA   t   yesnoRJ   t   assertFalse(   R   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt
   test_yesno“   s&    c         C   s)   |  j  |  j |  j j d d t ƒƒ d  S(   NRB   RX   (   RE   RL   RA   Rs   RJ   (   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_yesno_noninteractive©   s    s'   certbot.display.util.input_with_timeoutc         C   s_   d | _  |  j j d t d t ƒ\ } } |  j | t | ƒ f t j t d d g ƒ f ƒ d  S(   Ns   2 1RW   RI   R   R   (	   R    RA   t	   checklistt   TAGSRJ   R!   t   setR>   RQ   (   R   t
   mock_inputR^   t   tag_list(    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_checklist_valid­   s
    		c         C   sb   d | _  |  j j d t d t ƒ\ } } |  j | t | ƒ f t j t d d d g ƒ f ƒ d  S(   NR,   RW   RI   R   R   R	   (	   R    RA   Rw   Rx   RJ   R!   Ry   R>   RQ   (   R   Rz   R^   R{   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_checklist_emptyµ   s    	!c         C   sM   d d d g | _  |  j j d t d t ƒ} |  j | t j d g f ƒ d  S(   Nt   10s   tag1 pleaseR
   RW   RI   R   (   Rk   RA   Rw   Rx   RJ   R!   R>   RQ   (   R   Rz   RU   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_checklist_miss_valid¼   s    c         C   sG   d d g | _  |  j j d t d t ƒ} |  j | t j g  f ƒ d  S(   NR~   R[   RW   RI   (   Rk   RA   Rw   Rx   RJ   R!   R>   R]   (   R   Rz   RU   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_checklist_miss_quitÃ   s    c         C   sT   t  } |  j |  j j d t  d | ƒ\ } } |  j | t j ƒ |  j | | ƒ d  S(   NRW   RX   (   Rx   RL   RA   Rw   R!   R>   RQ   (   R   RX   R^   Ra   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_checklist_noninteractiveÊ   s
    !c         C   s¡   d g d d d g d d g g } t  d g ƒ t  d d g ƒ t  d d g ƒ g } xI t | ƒ D]; \ } } t  |  j j | t ƒ ƒ } |  j | | | ƒ q^ Wd  S(   NR
   R   R   R   R   R	   (   Ry   t	   enumerateRA   t   _scrub_checklist_inputRx   R!   (   R   t   indicest   expt   it   list_t   set_tags(    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt    test_scrub_checklist_input_validÒ   s    c         C   sP   d d d t  g } d } | | _ |  j j | Œ  } |  j | t j | f ƒ d  S(   NRW   s   /var/www/htmls   --flag(   RJ   R    RA   t   directory_selectR!   R>   RQ   (   R   Rz   R   t
   user_inputt   returned(    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_directory_selectã   s
    	c         C   sQ   d } |  j  |  j j d d | ƒ\ } } |  j | t j ƒ |  j | | ƒ d  S(   Ns   /var/www/htmlRW   RX   (   RL   RA   RŠ   R!   R>   RQ   (   R   RX   R^   Ra   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt$   test_directory_select_noninteractiveí   s
    c         O   s   |  j  j } t j d ƒ : } t | j _ t j d ƒ  } | | | Ž  } Wd  QXWd  QX| rs |  j | j j	 ƒ n |  j
 | j j d ƒ | S(   Ns   certbot.display.util.sys.stdins   certbot.display.util.loggeri   (   RA   RO   R   R   R@   t   isattyR    Rt   t   warningt   calledR!   t
   call_count(   R   t   funcR   R   RO   t
   mock_stdint   mock_loggerRY   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyRL   õ   s    c         C   s^   d g d g d g d d g d d g g } x- | D]% } |  j  |  j j | t ƒ g  ƒ q1 Wd  S(   Nt   0t   4R   R
   R   t   o(   R!   RA   Rƒ   Rx   (   R   R„   R‡   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt"   test_scrub_checklist_input_invalid  s    	c         C   s*   |  j  j d t ƒ |  j  j d t ƒ d  S(   NRW   (   RA   t   _print_menuRS   Rx   (   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_print_menu  s    c         C   sA   d j  t j ƒ } t j | ƒ } |  j | j t j ƒ d ƒ d  S(   Ns·   This is just a weak test{0}This function is only meant to be for easy viewing{0}Test a really really really really really really really really really really really really long line...i   (   t   formatt   ost   linesepR>   t   _wrap_linesR!   t   count(   R   RW   t   text(    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_wrap_lines  s    c      
   C   s˜   d } t  j | d d ƒ* |  j |  j j d ƒ t j d f ƒ Wd  QXd } t  j | d | ƒ0 |  j |  j j d ƒ t j t | ƒ f ƒ Wd  QXd  S(   Ns'   certbot.display.util.input_with_timeoutR    R
   i   R   i   (   R   R   R!   RA   t   _get_valid_int_ansR>   RQ   t   int(   R   R   t   ans(    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_get_valid_int_ans_valid!  s    %c      	   C   s}   d d g d d d g d g g } d } xO | D]G } t  j | d | ƒ* |  j |  j j d ƒ t j d	 f ƒ Wd  QXq. Wd  S(
   NR–   R[   R—   t   onet   Cs'   certbot.display.util.input_with_timeoutRk   i   iÿÿÿÿ(   R   R   R!   RA   R£   R>   R]   (   R   t   answersR   R¥   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_get_valid_int_ans_invalid-  s    	c         C   sO   xH t  j j ƒ  D]7 } t j t |  j | ƒ ƒ } |  j d | j k ƒ q Wd  S(   NRI   (	   R   t   IDisplayt   namest   inspectt
   getargspect   getattrRA   RE   R   (   R   t   namet   arg_spec(    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt#   test_methods_take_force_interactive;  s    ("   R5   R6   R7   R<   RG   RK   RM   RP   R   R   RV   RZ   R`   Rb   Rd   Rg   Rh   Ru   Rv   R|   R}   R   R€   R   R‰   R   RŽ   RL   R™   R›   R¢   R¦   Rª   R²   (    (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyR:   8   s<   															
					
		t   NoninteractiveDisplayTestc           B   sV   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   sE   Test non-interactive display.

    These tests are pretty easy!

    c         C   s;   t  t |  ƒ j ƒ  t j ƒ  |  _ t j |  j ƒ |  _ d  S(   N(	   R;   R³   R<   R   R=   R*   R>   t   NoninteractiveDisplayRA   (   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyR<   I  s    c         C   sA   |  j  j d d ƒ |  j j j d d } |  j d | k ƒ d  S(   NRB   i
   i    (   RA   RC   R*   R'   RD   RE   (   R   RF   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyRG   N  s    c         C   sW   d } |  j  j d d | ƒ} |  j | t j | f ƒ |  j t j |  j  j d ƒ d  S(   Ns   an incomputable valueRB   RX   (   RA   R\   R!   R>   RQ   R   R    t   MissingCommandlineFlag(   R   t   dRU   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyR&   T  s    c         C   sW   |  j  j d t d d ƒ} |  j | t j d f ƒ |  j t j |  j  j d t ƒ d  S(   NRB   RX   i   (	   RA   RR   RS   R!   R>   RQ   R   R    Rµ   (   R   RU   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyRV   Z  s    c         C   sN   t  } |  j j d d | ƒ} |  j | | ƒ |  j t j |  j j d ƒ d  S(   NRB   RX   (   R@   RA   Rs   R!   R   R    Rµ   (   R   R¶   RU   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyRu   _  s    c         C   sc   d d g } |  j  j d t d | ƒ} |  j | t j | f ƒ |  j t j |  j  j d t ƒ d  S(   Ni   i   RB   RX   (	   RA   Rw   Rx   R!   R>   RQ   R   R    Rµ   (   R   R¶   RU   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_checkliste  s    c         C   sZ   d } t  j | f } |  j j d | ƒ } |  j | | ƒ |  j t j |  j j d ƒ d  S(   Ns   /var/www/htmlRW   (   R>   RQ   RA   RŠ   R!   R   R    Rµ   (   R   RX   R#   t   actual(    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyR   k  s    c         C   sO   xH t  j j ƒ  D]7 } t |  j | ƒ } |  j t j | ƒ j d  k ƒ q Wd  S(   N(
   R   R«   R¬   R¯   RA   Rt   R­   R®   t   keywordsR9   (   R   R°   t   method(    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_methods_take_kwargst  s    (   R5   R6   R7   R<   RG   R&   RV   Ru   R·   R   R»   (    (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyR³   C  s   								t   SeparateListInputTestc           B   sJ   e  Z d  Z d „  Z e d „  ƒ Z d „  Z d „  Z d „  Z d „  Z	 RS(   s   Test Module functions.c         C   s   d d d d g |  _  d  S(   NRp   t   bR[   t   test(   R…   (   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyR<     s    c         C   s   d d l  m } | | ƒ S(   Niÿÿÿÿ(   t   separate_list_input(   R   R¿   (   R   Ra   R¿   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyR   „  s    c         C   s    |  j  |  j d ƒ |  j ƒ d  S(   Ns
   a,b,c,test(   R!   R   R…   (   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_commas‰  s    c         C   s    |  j  |  j d ƒ |  j ƒ d  S(   Ns
   a b c test(   R!   R   R…   (   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_spacesŒ  s    c         C   s    |  j  |  j d ƒ |  j ƒ d  S(   Ns   a, b, c, test(   R!   R   R…   (   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt	   test_both  s    c         C   sR   |  j  d ƒ |  j  d ƒ |  j  d ƒ g } x! | D] } |  j | |  j ƒ q1 Wd  S(   Ns     a , b    c 	 tests   ,a, ,, , b c  test  s   ,,,,, , a b,,, , c,test(   R   R!   R…   (   R   R¸   t   act(    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt	   test_mess’  s
    (
   R5   R6   R7   R<   R8   R   RÀ   RÁ   RÂ   RÄ   (    (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyR¼     s   				t   PlaceParensTestc           B   s)   e  Z e d  „  ƒ Z d „  Z d „  Z RS(   c         C   s   d d l  m } | | ƒ S(   Niÿÿÿÿ(   t   _parens_around_char(   R   RÆ   (   R   t   labelRÆ   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyR   ž  s    c         C   s   |  j  d |  j d ƒ ƒ d  S(   Ns   (a)Rp   (   R!   R   (   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_single_letter£  s    c         C   s6   |  j  d |  j d ƒ ƒ |  j  d |  j d ƒ ƒ d  S(   Ns   (L)abelt   Labels   (y)es pleases
   yes please(   R!   R   (   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   test_multiple¦  s    (   R5   R6   R8   R   RÈ   RÊ   (    (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyRÅ     s   	t   __main__(   R7   R­   R   R.   R   t   unittestR   R   t   certbotR    R   t   certbot.displayR   R>   RS   Rx   t   TAGS_CHOICESt   TestCaseR   R:   R³   R¼   RÅ   R5   t   main(    (    (    sC   /usr/lib/python2.7/dist-packages/certbot/tests/display/util_test.pyt   <module>   s*   !"ÿ <