ó
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 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 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.plugins.dns_common.iÿÿÿÿN(   t   errors(   t   util(   t
   dns_common(   t   dns_test_commont   DNSAuthenticatorTestc           B   sÄ   e  Z d  e j f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d „  Z d „  Z	 e
 j ƒ  d „  ƒ Z e
 j ƒ  d „  ƒ Z e
 j ƒ  d	 „  ƒ Z e
 j ƒ  d
 „  ƒ Z d „  Z e
 j ƒ  d „  ƒ Z RS(   t   _FakeDNSAuthenticatorc           B   s>   e  Z e j ƒ  Z e j ƒ  Z e j ƒ  Z d  „  Z d „  Z RS(   c         O   s    t  t j |  ƒ j | | Ž  d  S(   N(   t   superR   R   t   __init__(   t   selft   argst   kwargs(    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyR      s    c         C   s   d S(   Ns!   A fake authenticator for testing.(    (   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt	   more_info   s    (	   t   __name__t
   __module__t   mockt	   MagicMockt   _setup_credentialst   _performt   _cleanupR   R   (    (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyR      s
   	t   _FakeConfigc           B   s    e  Z d  Z d Z d Z d Z RS(   i    i   N(   R   R   t   fake_propagation_secondst   fake_config_keyt   Nonet   fake_other_keyt   fake_file_path(    (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyR       s   c         C   s>   t  t |  ƒ j ƒ  t j ƒ  |  _ t j |  j d ƒ |  _ d  S(   Nt   fake(   R   R   t   setUpR   t   configR   t   auth(   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyR   &   s    c         C   s<   |  j  j |  j g ƒ |  j  j j t j t j t j ƒ d  S(   N(	   R   t   performt   achallR   t   assert_called_once_withR   t   DOMAINR   t   ANY(   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt   test_perform-   s    c         C   sH   t  |  j _ |  j j |  j g ƒ |  j j j t j t	 j
 t	 j
 ƒ d  S(   N(   t   TrueR   t   _attempt_cleanupt   cleanupR   R   R   R   R    R   R!   (   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt   test_cleanup2   s    c         C   s]   | ƒ  } t  j d f t  j d f f | j _ |  j j d d ƒ |  j |  j j j d ƒ d  S(   Nt    t   valuet	   other_key(	   t   display_utilt   OKt   inputt   side_effectR   t
   _configuret   assertEqualR   R   (   R   t   mock_get_utilityt   mock_display(    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt   test_prompt9   s
    	c         C   sD   | ƒ  } t  j d f f | j _ |  j t j |  j j d d ƒ d  S(   Nt   cR)   R'   (	   R*   t   CANCELR,   R-   t   assertRaisesR    t   PluginErrorR   R.   (   R   R0   R1   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt   test_prompt_canceledB   s    	c         C   s£   t  j j |  j d ƒ } t | d ƒ j ƒ  | ƒ  } t j d f t j d f t j |  j f t j | f f | j _	 |  j
 j d d ƒ |  j |  j
 j j | ƒ d  S(   Ns   file.init   wbR'   s   not-a-file.init	   file_path(   t   ost   patht   joint   tempdirt   opent   closeR*   R+   t   directory_selectR-   R   t   _configure_fileR/   R   R   (   R   R0   R;   R1   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt   test_prompt_fileI   s    	c         C   sD   | ƒ  } t  j d f f | j _ |  j t j |  j j d d ƒ d  S(   NR3   R9   R'   (	   R*   R4   R@   R-   R5   R    R6   R   RA   (   R   R0   R1   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt   test_prompt_file_canceledW   s    	c         C   s~   t  j j |  j d ƒ } t j i d d 6| ƒ t |  j d | ƒ |  j j	 d d i d d 6ƒ } |  j
 | j d ƒ d ƒ d  S(   Ns   file.iniR(   t	   fake_testt   fake_credentialst   credentialsR'   t   test(   R:   R;   R<   R=   R   t   writet   setattrR   R   t   _configure_credentialsR/   t   conf(   R   R;   RF   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt   test_configure_credentials^   s
    c         C   s  t  j j |  j d ƒ } t j i d d 6| ƒ t  j j |  j d ƒ } t j i d d 6| ƒ t |  j d d ƒ | ƒ  } t j	 d f t j	 d	 f t j	 |  j f t j	 | f t j	 | f f | j
 _ |  j j d
 d i d d 6ƒ } |  j | j d ƒ d ƒ d  S(   Ns   bad-file.init   other_valuet
   fake_others   file.iniR(   RD   RE   R'   s   not-a-file.iniRF   RG   (   R:   R;   R<   R=   R   RH   RI   R   R*   R+   R@   R-   R   RJ   R/   RK   (   R   R0   t   bad_pathR;   R1   RF   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt   test_prompt_credentialsg   s    	(   R   R   R   t   DNSAuthenticatorR   t   objectR   R   R"   R&   R   t   patch_get_utilityR2   R7   RB   RC   RL   RP   (    (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyR      s   						t   CredentialsConfigurationTestc           B   s<   e  Z d  e j f d „  ƒ  YZ d „  Z d „  Z d „  Z RS(   t   _MockLoggingHandlerc           B   s)   e  Z d Z d  „  Z d „  Z d „  Z RS(   c         O   s$   |  j  ƒ  t j j |  | | Ž d  S(   N(   t   resett   loggingt   HandlerR   (   R   R	   R
   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyR      s    
c         C   s'   |  j  | j j ƒ  j | j ƒ  ƒ d  S(   N(   t   messagest	   levelnamet   lowert   appendt
   getMessage(   R   t   record(    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt   emitƒ   s    c         C   s   t  j t ƒ |  _ d S(   s-   Allows the handler to be reset between tests.N(   t   collectionst   defaultdictt   listRY   (   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyRV   †   s    N(   R   R   R   RY   R   R_   RV   (    (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyRU   |   s   		c         C   s{   t  j j |  j d ƒ } t j i d d 6d d 6| ƒ t j | ƒ } |  j d | j	 d ƒ ƒ |  j d | j	 d ƒ ƒ d  S(   Ns   too-permissive-file.iniR(   RG   i   t   othert   1(
   R:   R;   R<   R=   R   RH   R   t   CredentialsConfigurationR/   RK   (   R   R;   t   credentials_configuration(    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt   test_valid_fileŠ   s
    c         C   s5   t  j j |  j d ƒ } |  j t j t j | ƒ d  S(   Ns   not-a-file.ini(	   R:   R;   R<   R=   R5   R    R6   R   Re   (   R   R;   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt   test_nonexistent_file“   s    c         C   s—   |  j  ƒ  } t j j | ƒ t j j |  j d ƒ } t | d ƒ j	 ƒ  t j
 | ƒ |  j d t g  | j d D] } | j d ƒ rn | ^ qn ƒ ƒ d  S(   Ns   too-permissive-file.iniR8   i   t   warningt   Unsafe(   RU   R   t   loggert
   addHandlerR:   R;   R<   R=   R>   R?   Re   R/   t   lenRY   t
   startswith(   R   t   logR;   t   _(    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt'   test_valid_file_with_unsafe_permissions˜   s    (   R   R   RW   RX   RU   Rg   Rh   Rq   (    (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyRT   {   s   			t#   CredentialsConfigurationRequireTestc           B   sP   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   c         C   s2   t  t |  ƒ j ƒ  t j j |  j d ƒ |  _ d  S(   Ns   file.ini(   R   Rr   R   R:   R;   R<   R=   (   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyR   ¦   s    c         C   s   t  j | |  j ƒ d  S(   N(   R   RH   R;   (   R   t   values(    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt   _write«   s    c         C   sL   |  j  i d d 6d d 6ƒ t j |  j ƒ } | j i d d 6d d 6ƒ d  S(   NR(   RG   i   Rc   R'   (   Rt   R   Re   R;   t   require(   R   Rf   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt
   test_valid®   s    c         C   sE   |  j  i d d 6d d 6ƒ t j |  j ƒ } | j i d d 6ƒ d  S(   NR(   RG   i   Rc   R'   (   Rt   R   Re   R;   Ru   (   R   Rf   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt   test_valid_but_extra´   s    c         C   s0   |  j  i  ƒ t j |  j ƒ } | j i  ƒ d  S(   N(   Rt   R   Re   R;   Ru   (   R   Rf   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt   test_valid_emptyº   s    c         C   sC   |  j  i  ƒ t j |  j ƒ } |  j t j | j i d d 6ƒ d  S(   NR'   RG   (   Rt   R   Re   R;   R5   R    R6   Ru   (   R   Rf   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt   test_missingÀ   s    c         C   sJ   |  j  i d d 6ƒ t j |  j ƒ } |  j t j | j i d d 6ƒ d  S(   NR'   RG   (   Rt   R   Re   R;   R5   R    R6   Ru   (   R   Rf   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt
   test_blankÆ   s    c         C   sJ   |  j  i d d 6ƒ t j |  j ƒ } |  j t j | j i d d 6ƒ d  S(   Ns   typo!t   tetsR'   RG   (   Rt   R   Re   R;   R5   R    R6   Ru   (   R   Rf   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt	   test_typoÌ   s    (
   R   R   R   Rt   Rv   Rw   Rx   Ry   Rz   R|   (    (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyRr   ¤   s   							t   DomainNameGuessTestc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s    |  j  d t j d ƒ k ƒ d  S(   Ns   example.com(   t
   assertTrueR   t   base_domain_name_guesses(   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt   test_simple_caseÕ   s    c         C   s    |  j  d t j d ƒ k ƒ d  S(   Ns   example.coms   foo.bar.baz.example.com(   R~   R   R   (   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt   test_sub_domainÛ   s    c         C   s    |  j  d t j d ƒ k ƒ d  S(   Ns   example.co.uks   foo.bar.baz.example.co.uk(   R~   R   R   (   R   (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt   test_second_level_domainá   s    (   R   R   R€   R   R‚   (    (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyR}   Ó   s   		t   __main__(   t   __doc__R`   RW   R:   t   unittestR   t   certbotR    t   certbot.displayR   R*   t   certbot.pluginsR   R   t   certbot.testst   TempDirTestCaset   BaseAuthenticatorTestR   RT   Rr   t   TestCaseR}   R   t   main(    (    (    sC   /usr/lib/python2.7/dist-packages/certbot/plugins/dns_common_test.pyt   <module>   s    j)/