ó
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 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 j j Z e j j e j d ƒ ƒ 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 e d k r<e j ƒ  n  d S(   s   Tests for certbot.account.iÿÿÿÿN(   t   messages(   t   errorss   rsa512_key.pemt   AccountTestc           B   s;   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s"   Tests for certbot.account.Account.c         C   sø   d d l  m } t j ƒ  |  _ | j d d d t j d d d d	 d d
 d t j ƒƒ |  _	 | |  j t
 |  j	 ƒ |  _ t j d d ƒ |  j _ t j d ƒ U } d | j _ t j d ƒ 1 } |  j	 j | j j _ | |  j t
 ƒ |  _ Wd  QXWd  QXd  S(   Niÿÿÿÿ(   t   Accountt   creation_hosts   test.certbot.orgt   creation_dtiß  i   i   i   i
   t   tzinfot   return_valuet   i_am_a_regrs   certbot.account.sockets   certbot.account.datetime(   t   certbot.accountR   t   mockt	   MagicMockt   regrt   Metat   datetimet   pytzt   UTCt   metat   KEYt   acct   __repr__t   patcht   getfqdnR   R   t   nowt   acc_no_meta(   t   selfR   t   mock_sockett   mock_dt(    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   setUp   s    	'c         C   sL   |  j  |  j |  j j ƒ |  j  t |  j j ƒ |  j  |  j |  j j ƒ d  S(   N(   t   assertEqualR   R   R   t   keyR   R   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt	   test_init*   s    c         C   s   |  j  |  j j d ƒ d  S(   Nt    7adac10320f585ddf118429c0c4af2cd(   R   R   t   id(   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_id/   s    c         C   s   |  j  |  j j d ƒ d  S(   Ns,   test.certbot.org@2015-07-04T14:04:10Z (7ada)(   R   R   t   slug(   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt	   test_slug3   s    c         C   s#   |  j  t |  j ƒ j d ƒ ƒ d  S(   Ns=   <Account(i_am_a_regr, 7adac10320f585ddf118429c0c4af2cd, Meta((   t
   assertTruet   reprR   t
   startswith(   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt	   test_repr7   s    (   t   __name__t
   __module__t   __doc__R   R   R"   R$   R(   (    (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyR      s   				t   ReportNewAccountTestc           B   sG   e  Z d  Z d „  Z e j d ƒ d „  ƒ Z e j d ƒ d „  ƒ Z RS(   s-   Tests for certbot.account.report_new_account.c         C   s!   d d l  m } | |  j ƒ d  S(   Niÿÿÿÿ(   t   report_new_account(   R	   R-   t   config(   R   R-   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   _call>   s    s+   certbot.account.zope.component.queryUtilityc         C   s   d  | _ |  j ƒ  d  S(   N(   t   NoneR   R/   (   R   t	   mock_zope(    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_no_reporterB   s    	c         C   sB   |  j  ƒ  | ƒ  j j } |  j |  j j | d d d k ƒ d  S(   Ni    (   R/   t   add_messaget   call_args_listR%   R.   t
   config_dir(   R   R1   t	   call_list(    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_itG   s    
(   R)   R*   R+   R/   R
   R   R2   R7   (    (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyR,   ;   s   	t   AccountMemoryStorageTestc           B   s    e  Z d  Z d „  Z d „  Z RS(   s/   Tests for certbot.account.AccountMemoryStorage.c         C   s    d d l  m } | ƒ  |  _ d  S(   Niÿÿÿÿ(   t   AccountMemoryStorage(   R	   R9   t   storage(   R   R9   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyR   Q   s    c         C   sÅ   t  j d d ƒ } |  j g  |  j j ƒ  ƒ |  j t j |  j j d ƒ |  j j	 | d  ƒ |  j | g |  j j ƒ  ƒ |  j | |  j j d ƒ ƒ |  j j	 | d  ƒ |  j | g |  j j ƒ  ƒ d  S(   NR!   t   x(   R
   t   MockR   R:   t   find_allt   assertRaisesR   t   AccountNotFoundt   loadt   saveR0   (   R   t   account(    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyR7   U   s    (   R)   R*   R+   R   R7   (    (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyR8   N   s   	t   AccountFileStorageTestc           B   s=  e  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 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 d „  Z  d „  Z! d „  Z" d  „  Z# d! „  Z$ RS("   s-   Tests for certbot.account.AccountFileStorage.c      	   C   s£   t  t |  ƒ j ƒ  d d l m } | |  j ƒ |  _ d d l m } d } | d t j	 d d  d t j ƒ  d | ƒ d	 t ƒ |  _ t j ƒ  |  _ | |  j j _ d  S(
   Niÿÿÿÿ(   t   AccountFileStorage(   R   t   hiR   t   urit   bodyt   new_authzr_uriR   (   t   superRC   R   R	   RD   R.   R:   R   R    t   RegistrationResourceR0   t   RegistrationR   R   R
   R   t   mock_clientt	   directoryt	   new_authz(   R   RD   R   RH   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyR   d   s    		c         C   s#   |  j  t j j |  j j ƒ ƒ d  S(   N(   R%   t   ost   patht   isdirR.   t   accounts_dir(   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_init_creates_dirt   s    c         C   s÷   |  j  j |  j |  j ƒ t j j |  j j |  j j	 ƒ } |  j
 t j j | ƒ ƒ x6 d D]. } |  j
 t j j t j j | | ƒ ƒ ƒ qZ W|  j
 t t j t j j | d ƒ ƒ t j d @ƒ d k ƒ |  j  j |  j j	 ƒ } |  j |  j | ƒ d  S(	   Ns	   regr.jsons	   meta.jsons   private_key.jsoniÿ  t   0400t   0o400(   s	   regr.jsons	   meta.jsons   private_key.json(   RT   RU   (   R:   RA   R   RL   RO   RP   t   joinR.   RR   R!   R%   t   existst   octt   statt   ST_MODER@   R   (   R   t   account_patht	   file_namet   loaded(    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_save_and_restorew   s    !$c         C   s{   |  j  j |  j |  j ƒ t j j |  j j |  j j	 d ƒ } t
 | d ƒ  } t j | ƒ } Wd QX|  j d | k ƒ d S(   s=   Saved regr should include a new_authzr_uri for older Certbotss	   regr.jsont   rNRH   (   R:   RA   R   RL   RO   RP   RV   R.   RR   R!   t   opent   jsonR@   R%   (   R   RP   t   fR   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt!   test_save_and_restore_old_version…   s
    $c         C   s¸   |  j  j |  j |  j ƒ t j j |  j j |  j j	 ƒ } |  j
 t j j | ƒ ƒ |  j
 t j j t j j | d ƒ ƒ ƒ x6 d D]. } |  j t j j t j j | | ƒ ƒ ƒ q‚ Wd  S(   Ns	   regr.jsons	   meta.jsons   private_key.json(   s	   meta.jsons   private_key.json(   R:   t	   save_regrR   RL   RO   RP   RV   R.   RR   R!   R%   RW   t   assertFalse(   R   R[   R\   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_save_regr   s    !c         C   s<   |  j  j |  j |  j ƒ |  j |  j g |  j  j ƒ  ƒ d  S(   N(   R:   RA   R   RL   R   R=   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_find_all—   s    c         C   s   |  j  g  |  j j ƒ  ƒ d  S(   N(   R   R:   R=   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_find_all_none_empty_list›   s    c         C   s0   t  j |  j j ƒ |  j g  |  j j ƒ  ƒ d  S(   N(   RO   t   rmdirR.   RR   R   R:   R=   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt!   test_find_all_accounts_dir_absentž   s    c         C   sq   t  j d d t j d g ƒ |  j _ t  j d ƒ 8 } d d d g | _ |  j d d g |  j j	 ƒ  ƒ Wd  QXd  S(   Nt   side_effectR;   t   zs   certbot.account.os.listdirt   y(
   R
   R   R   t   AccountStorageErrorR:   t   _load_for_server_pathR   R   R   R=   (   R   t   mock_listdir(    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_find_all_load_skips¢   s
    	c         C   s    |  j  t j |  j j d ƒ d  S(   Nt   missing(   R>   R   R?   R:   R@   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt#   test_load_non_existent_raises_errorª   s    c         C   s   |  j  j |  j |  j ƒ t j t j j |  j	 j
 |  j j ƒ t j j |  j	 j
 d |  j j ƒ ƒ |  j t j |  j  j d |  j j ƒ d  S(   NR;   (   R:   RA   R   RL   t   shutilt   moveRO   RP   RV   R.   RR   R!   R>   R   Rn   R@   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt"   test_load_id_mismatch_raises_error­   s
    $&c         C   s2   | |  j  _ d d l m } | |  j  ƒ |  _ d  S(   Niÿÿÿÿ(   RD   (   R.   t   serverR	   RD   R:   (   R   Rw   RD   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   _set_server´   s    c         C   sb   |  j  d ƒ |  j g  |  j j ƒ  ƒ |  j g  |  j j ƒ  ƒ |  j t j j |  j j	 ƒ ƒ d  S(   Ns6   https://acme-staging-v02.api.letsencrypt.org/directory(
   Rx   R   R:   R=   Re   RO   RP   t   islinkR.   RR   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_find_all_neither_exists¹   s    c         C   sË   |  j  d ƒ |  j g  |  j j ƒ  ƒ |  j j |  j |  j ƒ |  j |  j g |  j j ƒ  ƒ |  j |  j g |  j j ƒ  ƒ |  j t j	 j
 |  j j ƒ ƒ d } |  j t j	 j |  j j | ƒ ƒ ƒ d  S(   Ns6   https://acme-staging-v02.api.letsencrypt.org/directorys2   https://acme-staging.api.letsencrypt.org/directory(   Rx   R   R:   R=   RA   R   RL   Re   RO   RP   Ry   R.   RR   RQ   t   accounts_dir_for_server_path(   R   t   prev_server_path(    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_find_all_find_before_save¿   s    c         C   sÑ   |  j  d ƒ |  j j |  j |  j ƒ |  j |  j g |  j j ƒ  ƒ |  j |  j g |  j j ƒ  ƒ |  j t j	 j
 |  j j ƒ ƒ |  j t j	 j |  j j ƒ ƒ d } |  j t j	 j |  j j | ƒ ƒ ƒ d  S(   Ns6   https://acme-staging-v02.api.letsencrypt.org/directorys2   https://acme-staging.api.letsencrypt.org/directory(   Rx   R:   RA   R   RL   R   R=   Re   RO   RP   Ry   R.   RR   R%   RQ   R{   (   R   R|   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_find_all_save_before_findÊ   s    c         C   sˆ   |  j  d ƒ |  j g  |  j j ƒ  ƒ |  j j |  j |  j ƒ |  j |  j g |  j j ƒ  ƒ |  j  d ƒ |  j g  |  j j ƒ  ƒ d  S(   Ns6   https://acme-staging-v02.api.letsencrypt.org/directorys2   https://acme-staging.api.letsencrypt.org/directory(   Rx   R   R:   R=   RA   R   RL   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_find_all_server_downgradeÔ   s    c         C   sV   |  j  d ƒ |  j j |  j |  j ƒ |  j  d ƒ |  j |  j g |  j j ƒ  ƒ d  S(   Ns2   https://acme-staging.api.letsencrypt.org/directorys6   https://acme-staging-v02.api.letsencrypt.org/directory(   Rx   R:   RA   R   RL   R   R=   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_upgrade_version_stagingÝ   s    c         C   sV   |  j  d ƒ |  j j |  j |  j ƒ |  j  d ƒ |  j |  j g |  j j ƒ  ƒ d  S(   Ns.   https://acme-v01.api.letsencrypt.org/directorys.   https://acme-v02.api.letsencrypt.org/directory(   Rx   R:   RA   R   RL   R   R=   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_upgrade_version_productionã   s    s   os.rmdirc         C   st   |  j  d ƒ |  j j |  j |  j ƒ t | _ t j d t	 j
 ƒ |  j _ |  j  d ƒ |  j g  |  j j ƒ  ƒ d  S(   Ns2   https://acme-staging.api.letsencrypt.org/directoryRk   s6   https://acme-staging-v02.api.letsencrypt.org/directory(   Rx   R:   RA   R   RL   t   OSErrorRk   R
   R   R   Rn   Ro   R   R=   (   R   t
   mock_rmdir(    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_corrupted_accounté   s    		c         C   sw   |  j  d ƒ |  j j |  j |  j ƒ |  j j |  j j ƒ } |  j  d ƒ |  j j |  j j ƒ } |  j | | ƒ d  S(   Ns2   https://acme-staging.api.letsencrypt.org/directorys6   https://acme-staging-v02.api.letsencrypt.org/directory(   Rx   R:   RA   R   RL   R@   R!   R   (   R   t   prev_accountRB   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_upgrade_loadô   s    c         C   sw   |  j  d ƒ |  j j |  j |  j ƒ |  j j |  j j ƒ } |  j d ƒ |  j j |  j j ƒ } |  j | | ƒ d  S(   Ns2   https://acme-staging.api.letsencrypt.org/directorys6   https://acme-staging-v02.api.letsencrypt.org/directory(	   Rx   R:   RA   R   RL   R@   R!   t   _set_server_and_stop_symlinkR   (   R   R…   RB   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt    test_upgrade_load_single_accountü   s    c         C   sm   |  j  j |  j |  j ƒ t j ƒ  } t | _ t j d | ƒ ' |  j	 t
 j |  j  j |  j j ƒ Wd  QXd  S(   Ns   six.moves.builtins.open(   R:   RA   R   RL   R
   t	   mock_opent   IOErrorRk   R   R>   R   Rn   R@   R!   (   R   R‰   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_load_ioerror  s    	c      	   C   sW   t  j ƒ  } t | _ t  j d | ƒ * |  j t j |  j j	 |  j
 |  j ƒ Wd  QXd  S(   Ns   six.moves.builtins.open(   R
   R‰   RŠ   Rk   R   R>   R   Rn   R:   RA   R   RL   (   R   R‰   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_save_ioerrors  s    	c         C   sU   |  j  j |  j |  j ƒ |  j  j |  j j ƒ |  j t j |  j  j	 |  j j ƒ d  S(   N(
   R:   RA   R   RL   t   deleteR!   R>   R   R?   R@   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_delete  s    c         C   s&   |  j  t j |  j j |  j j ƒ d  S(   N(   R>   R   R?   R:   R   R   R!   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_delete_no_account  s    c         C   sr   |  j  d ƒ |  j j |  j |  j ƒ t j d i  ƒ 4 |  j  d ƒ |  j t j	 |  j j
 |  j j ƒ Wd  QXd  S(   Ns2   https://acme-staging.api.letsencrypt.org/directorys"   certbot.constants.LE_REUSE_SERVERSs6   https://acme-staging-v02.api.letsencrypt.org/directory(   Rx   R:   RA   R   RL   R
   R   R>   R   R?   R@   R!   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt!   _assert_symlinked_account_removed  s
    c         C   sÎ   |  j  d ƒ |  j j |  j |  j ƒ |  j  d ƒ |  j j |  j j ƒ |  j  | ƒ |  j j |  j j ƒ |  j  d ƒ |  j t	 j
 |  j j |  j j ƒ |  j  d ƒ |  j t	 j
 |  j j |  j j ƒ d  S(   Ns2   https://acme-staging.api.letsencrypt.org/directorys6   https://acme-staging-v02.api.letsencrypt.org/directory(   Rx   R:   RA   R   RL   R@   R!   R   R>   R   R?   (   R   t
   server_url(    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   _test_delete_folders%  s    "c         C   s   |  j  d ƒ |  j ƒ  d  S(   Ns2   https://acme-staging.api.letsencrypt.org/directory(   R’   R   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_delete_folders_up6  s    c         C   s   |  j  d ƒ |  j ƒ  d  S(   Ns6   https://acme-staging-v02.api.letsencrypt.org/directory(   R’   R   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_delete_folders_down:  s    c         C   sK   |  j  | ƒ t t j j |  j j d ƒ d ƒ  } | j d ƒ Wd  QXd  S(   Nt   foot   wt   bar(   Rx   R`   RO   RP   RV   R.   RR   t   write(   R   t   server_pathRb   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyR‡   >  s    'c         C   s   |  j  d ƒ |  j d ƒ d  S(   Ns6   https://acme-staging-v02.api.letsencrypt.org/directorys2   https://acme-staging.api.letsencrypt.org/directory(   R‡   R’   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_delete_shared_account_upC  s    c         C   s   |  j  d ƒ |  j d ƒ d  S(   Ns6   https://acme-staging-v02.api.letsencrypt.org/directory(   R‡   R’   (   R   (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   test_delete_shared_account_downG  s    (%   R)   R*   R+   R   RS   R^   Rc   Rf   Rg   Rh   Rj   Rq   Rs   Rv   Rx   Rz   R}   R~   R   R€   R   R
   R   R„   R†   Rˆ   R‹   RŒ   RŽ   R   R   R’   R“   R”   R‡   Rš   R›   (    (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyRC   `   sB   					
										
																	t   __main__(   R+   R   Ra   RO   Rt   RY   t   unittestt   josepyt   joseR
   R   t   acmeR    t   certbotR   t   certbot.tests.utilt   testst   utilt	   test_utilt   JWKRSAR@   t   load_vectorR   t   TestCaseR   t   ConfigTestCaseR,   R8   RC   R)   t   main(    (    (    s>   /usr/lib/python2.7/dist-packages/certbot/tests/account_test.pyt   <module>   s&   $ë