ó
Á£ô_c           @   sò   d  Z  d d l Z d d l Z y d d l Z Wn! e k
 rQ d d l m Z n Xd 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	 Z e j j e j d
 ƒ ƒ Z d e f d „  ƒ  YZ d „  Z d S(   s'   Base test class for DNS authenticators.iÿÿÿÿN(   t   mock(   t
   challenges(   t   achallenges(   t
   filesystem(   t	   acme_util(   t   utils   example.coms   rsa512_key.pemt   BaseAuthenticatorTestc           B   sJ   e  Z d  Z e j d e j d e d e ƒ Z	 d „  Z
 d „  Z d „  Z RS(   sÜ   
    A base test class to reduce duplication between test code for DNS Authenticator Plugins.

    Assumes:
     * That subclasses also subclass unittest.TestCase
     * That the authenticator is stored as self.auth
    t   challbt   domaint   account_keyc         C   s&   |  j  t |  j j ƒ  t j ƒ ƒ d  S(   N(   t
   assertTruet
   isinstancet   autht	   more_infot   sixt   string_types(   t   self(    (    sC   /usr/lib/python2.7/site-packages/certbot/plugins/dns_test_common.pyt   test_more_info!   s    c         C   s&   |  j  |  j j d  ƒ t j g ƒ d  S(   N(   t   assertEqualR   t   get_chall_preft   NoneR   t   DNS01(   R   (    (    sC   /usr/lib/python2.7/site-packages/certbot/plugins/dns_test_common.pyt   test_get_chall_pref$   s    c         C   sE   t  j ƒ  } |  j j | ƒ | j d d t d t  j d t  j ƒd  S(   Ns   propagation-secondst   typet   defaultt   help(   R    t	   MagicMockR   t   add_parser_argumentst   assert_any_callt   intt   ANY(   R   t   m(    (    sC   /usr/lib/python2.7/site-packages/certbot/plugins/dns_test_common.pyt   test_parser_arguments'   s    (   t   __name__t
   __module__t   __doc__R   t"   KeyAuthorizationAnnotatedChallengeR   R   t   DOMAINt   KEYt   achallR   R   R    (    (    (    sC   /usr/lib/python2.7/site-packages/certbot/plugins/dns_test_common.pyR      s   			c         C   sg   t  j ƒ  } x |  D] } |  | | | <q Wt | d ƒ  } | j d | ƒ Wd QXt j | d ƒ d S(   s”   Write the specified values to a config file.

    :param dict values: A map of values to write.
    :param str path: Where to write the values.
    t   wbt   outfileNi€  (   t	   configobjt	   ConfigObjt   opent   writeR   t   chmod(   t   valuest   patht   configt   keyt   f(    (    sC   /usr/lib/python2.7/site-packages/certbot/plugins/dns_test_common.pyR-   .   s    (   R#   R*   t   josepyt   joseR    t   ImportErrort   unittestR   t   acmeR   t   certbotR   t   certbot.compatR   t   certbot.testsR   R   t	   test_utilR%   t   JWKRSAt   loadt   load_vectorR&   t   objectR   R-   (    (    (    sC   /usr/lib/python2.7/site-packages/certbot/plugins/dns_test_common.pyt   <module>   s    