ó
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 e d k r˜ e j ƒ  n  d S(	   s/   Tests for certbot.plugins.storage.PluginStorageiÿÿÿÿN(   t   errors(   t   common(   t   utilt   PluginStorageTestc           B   s_   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z RS(
   s.   Test for certbot.plugins.storage.PluginStoragec      	   C   sj   t  t |  ƒ j ƒ  t j |  _ t j |  j j	 ƒ t
 j d ƒ # |  j d |  j d d ƒ |  _ Wd  QXd  S(   Ns   certbot.reverter.utilt   configt   namet
   mockplugin(   t   superR   t   setUpR   t	   Installert
   plugin_clst   ost   mkdirR   t
   config_dirt   mockt   patcht   plugin(   t   self(    (    s@   /usr/lib/python2.7/dist-packages/certbot/plugins/storage_test.pyR      s
    c         C   sÞ   t  t j j |  j j d ƒ d ƒ  } | j d ƒ Wd  QXt j ƒ  } t	 | _
 t j j |  j j d ƒ |  j j _ t j d | ƒ S t j d d t ƒ7 t j d ƒ ! |  j t j |  j j j ƒ Wd  QXWd  QXWd  QXd  S(   Ns   .pluginstorage.jsont   wt   dummys   six.moves.builtins.opens   os.path.isfilet   return_values   certbot.reverter.util(   t   openR   t   patht   joinR   R   t   writeR   t	   mock_opent   IOErrort   side_effectR   t   storaget   storagepathR   t   Truet   assertRaisesR    t   PluginStorageErrort   _load(   R   t   fhR   (    (    s@   /usr/lib/python2.7/dist-packages/certbot/plugins/storage_test.pyt   test_load_errors_cant_read   s    	c         C   sÈ   t  t j j |  j j d ƒ d ƒ  } | j d ƒ Wd  QXt j d ƒ y } t j d ƒ  |  j	 |  j d ƒ } Wd  QX|  j
 t | j j d ƒ |  j | j ƒ |  j d | j d	 d	 k ƒ Wd  QXd  S(
   Ns   .pluginstorage.jsonR   t    s$   certbot.plugins.storage.logger.debugs   certbot.reverter.utilR   t   values   no values loadedi    (   R   R   R   R   R   R   R   R   R   R
   R   t   KeyErrorR   t   fetcht
   assertTruet   calledt	   call_args(   R   R"   t   mock_logt	   nocontent(    (    s@   /usr/lib/python2.7/dist-packages/certbot/plugins/storage_test.pyt   test_load_errors_empty%   s    '	c         C   s»   t  t j j |  j j d ƒ d ƒ  } | j d ƒ Wd  QXt j d ƒ l } t j d ƒ  |  j	 |  j d ƒ } Wd  QX|  j
 t j | j j d ƒ |  j d | j d	 d	 k ƒ Wd  QXd  S(
   Ns   .pluginstorage.jsonR   s   invalid jsons$   certbot.plugins.storage.logger.errors   certbot.reverter.utilR   R%   s   is corruptedi    (   R   R   R   R   R   R   R   R   R   R
   R   R    t   PluginErrorR   R'   R(   R*   (   R   R"   R+   t	   corrupted(    (    s@   /usr/lib/python2.7/dist-packages/certbot/plugins/storage_test.pyt   test_load_errors_corrupted1   s    	c         C   s†   t  j d ƒ q } t |  j j _ d |  j j _ |  j |  j j _ |  j	 t
 j |  j j j ƒ |  j d | j d d k ƒ Wd  QXd  S(   Ns$   certbot.plugins.storage.logger.errors   /tmp/whatevers   Could not serializei    (   R   R   R   R   R   t   _initializedR   R
   t   _dataR   R    R    t   saveR(   R*   (   R   R+   (    (    s@   /usr/lib/python2.7/dist-packages/certbot/plugins/storage_test.pyt   test_save_errors_cant_serialize=   s    c         C   s©   t  j ƒ  } t | _ t  j d | ƒ | t  j d ƒ f } i d d 6|  j j _ t |  j j _	 |  j
 t j |  j j j ƒ |  j d | j d d k ƒ Wd  QXWd  QXd  S(   Ns   os.opens$   certbot.plugins.storage.logger.errort   datat   valids   Could not writei    (   R   R   R   R   R   R   R   R2   R   R1   R   R    R    R3   R(   R*   (   R   R   R+   (    (    s@   /usr/lib/python2.7/dist-packages/certbot/plugins/storage_test.pyt%   test_save_errors_unable_to_write_fileG   s    	c      	   C   sB   t  j d ƒ - |  j t j |  j |  j d ƒ j j ƒ Wd  QXd  S(   Ns   certbot.reverter.utilt   x(	   R   R   R   R    R    R
   R   R   R3   (   R   (    (    s@   /usr/lib/python2.7/dist-packages/certbot/plugins/storage_test.pyt   test_save_uninitializedR   s    c         C   s¥   t  j d ƒ / |  j |  j d ƒ } |  j |  j d ƒ } Wd  QX| j j d d ƒ |  j t | j j d ƒ |  j t | j j d ƒ |  j	 | j j d ƒ d ƒ d  S(   Ns   certbot.reverter.utilt   firstt   secondt	   first_keyt   first_value(
   R   R   R
   R   R   t   putR   R&   R'   t   assertEqual(   R   t   plugin1t   plugin2(    (    s@   /usr/lib/python2.7/dist-packages/certbot/plugins/storage_test.pyt   test_namespace_isolationW   s    		c         C   s   |  j  j j d d ƒ |  j  j j ƒ  t j d ƒ  |  j |  j d ƒ } Wd  QX|  j | j j	 d ƒ d ƒ t
 t j j |  j j d ƒ d ƒ  } | j ƒ  } Wd  QXt j | ƒ } |  j d | j ƒ  k ƒ |  j t | ƒ d ƒ |  j | d d d ƒ d  S(   Nt   testkeyt	   testvalues   certbot.reverter.utilR   s   .pluginstorage.jsont   ri   (   R   R   R>   R3   R   R   R
   R   R?   R'   R   R   R   R   R   t   readt   jsont   loadsR(   t   keyst   len(   R   t   anotherR"   t   psdatat   psjson(    (    s@   /usr/lib/python2.7/dist-packages/certbot/plugins/storage_test.pyt   test_saved_statec   s    (   t   __name__t
   __module__t   __doc__R   R#   R-   R0   R4   R7   R9   RB   RN   (    (    (    s@   /usr/lib/python2.7/dist-packages/certbot/plugins/storage_test.pyR      s   					
			t   __main__(   RQ   RG   R   R   t   unittestt   certbotR    t   certbot.pluginsR   t   certbot.testsR   t	   test_utilt   ConfigTestCaseR   RO   t   main(    (    (    s@   /usr/lib/python2.7/dist-packages/certbot/plugins/storage_test.pyt   <module>   s   h