
]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 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 d	 l m Z d d
 l m Z e j d  Z e j d  Z e j d  Z e j j e j d   Z e j j e j d   Z e j i d e j 6d e j  6d e j! 6d e j" 6 Z# e j i d d 6d d 6d d 6d d 6 Z$ d e j% f d     YZ& d e& f d     YZ' d e& f d      YZ( d! e& 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 re j0   n  d S(,   s   Tests for acme.client.iN(   t   http_client(   t
   challenges(   t   errors(   t   jws(   t   messages(   t   messages_test(   t	   test_util(   t   Dicts   cert.ders   cert-san.pems   csr-san.pems   rsa512_key.pems   rsa256_key.pems-   https://www.letsencrypt-demo.org/acme/new-regs1   https://www.letsencrypt-demo.org/acme/revoke-certs/   https://www.letsencrypt-demo.org/acme/new-authzs.   https://www.letsencrypt-demo.org/acme/new-certs1   https://www.letsencrypt-demo.org/acme/new-accountt
   newAccounts/   https://www.letsencrypt-demo.org/acme/new-noncet   newNonces/   https://www.letsencrypt-demo.org/acme/new-ordert   newOrdert
   revokeCertt   ClientTestBasec           B   s   e  Z d  Z d   Z RS(   s   Base for tests in acme.client.c      
   C   s  t  j d t d t j d i  d i   |  _ t  j   |  _ |  j |  j j _ |  j |  j j	 _ t
 j d t
 j d d  |  _ d |  _ t
 j d
 |  j d t j    } t |  } t
 j |   |  _ t
 j d | d d  |  _ d } t
 j d | d d t
 j d t j d t j d    } t
 j d | d |  |  _ t
 j d t
 j d t
 j d d  d | f d d   |  _! t
 j" d |  j! d |  |  _# d |  _$ d  S(   Nt   okt   status_codet   headerst   linkst   typt   values   example.coms   mailto:cert-admin@example.coms   tel:+12025551212t   contactt   keyt   bodyt   uris+   https://www.letsencrypt-demo.org/acme/reg/1s-   https://www.letsencrypt-demo.org/acme/authz/1s   /1t   statust   challt   tokens+   evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oAt
   authzr_urit
   identifierR   t   combinationsi   (   s   mailto:cert-admin@example.coms   tel:+12025551212(%   t   mockt	   MagicMockt   TrueR    t   OKt   responset   nett   postt   return_valuet   getR   t
   Identifiert   IDENTIFIER_FQDNR   R   t   Registrationt   KEYt
   public_keyt   dictt   NewRegistrationt   new_regt   RegistrationResourcet   regrt   ChallengeBodyt   STATUS_VALIDR   t   DNSt   joset	   b64decodet   ChallengeResourcet   challrt   Authorizationt   Nonet   authzt   AuthorizationResourcet   authzrt   rsn(   t   selft   regt   the_argR   t   challb(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   setUp4   s8    	!									(   t   __name__t
   __module__t   __doc__RA   (    (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyR   1   s   t   BackwardsCompatibleClientV2Testc           B   s   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 e
 j d  e
 j d	  d
     Z d   Z e
 j d  d    Z e
 j d  d    Z e
 j d  d    Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   s3   Tests for  acme.client.BackwardsCompatibleClientV2.c         C   s   t  t |   j   t j d t j  |  _ t j	 j
 t j	 j t  } t j |  } | | g |  _ t j	 j t j	 j t j j  j   |  _ t j	 j t j	 j |  j   } | | |  _ |  j |  j |  _ t j d t  |  _ d  S(   NR   t   csr_pem(   t   superRE   RA   R   t   CertificateResourceR   t   CERTt   certrt   OpenSSLt   cryptot   load_certificatet   FILETYPE_PEMt   CERT_SAN_PEMR3   t   ComparableX509t   chaint   dump_certificatet   wrappedt   decodet   cert_pemt	   chain_pemt   fullchain_pemt   OrderResourcet   CSR_SAN_PEMt   orderr(   R=   t   loadedRS   t   single_chain(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyRA   ]   s    			!		c         C   s2   d } d d l  m } | d |  j d t d |  S(   Ns)   http://www.letsencrypt-demo.org/directoryi(   t   BackwardsCompatibleClientV2R"   R   t   server(   t   acme.clientR]   R"   R)   (   R=   R   R]   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   _initt   s    c         C   sI   d } d d l  m } | d |  j d t d |  |  j j j |  d  S(   Ns)   http://www.letsencrypt-demo.org/directoryi(   R]   R"   R   R^   (   R_   R]   R"   R)   R%   t   assert_called_once_with(   R=   R   R]   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_init_downloads_directoryz   s
    c         C   sl   t  j   |  j j _ |  j   } |  j | j d  t j   |  j j _ |  j   } |  j | j d  d  S(   Ni   i   (	   t   DIRECTORY_V1t   to_jsonR!   t   jsonR$   R`   t   assertEqualt   acme_versiont   DIRECTORY_V2(   R=   t   client(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_init_acme_version   s    c         C   s_   t  j   |  j j _ |  j   } |  j j j   |  j j _ |  j |  j | j	 |  j   d  S(   N(
   Rh   Rd   R!   Re   R$   R`   R/   R   Rf   t   query_registration(   R=   Ri   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt!   test_query_registration_client_v2   s    c         C   s   t  j   |  j j _ |  j   } |  j | j | j j  |  j | j	 t
  |  j | j | j j  |  j t | j d  |  j t | j d  |  j t | j d  d  S(   Nt   nonexistentt   new_account_and_tost   new_account(   Rc   Rd   R!   Re   R$   R`   Rf   t	   directoryRi   R   R)   t   deactivate_registrationt   assertRaisest   AttributeErrort   __getattr__(   R=   Ri   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_forwarding   s    c         C   sS  t  j   |  j j _ t j d  9 } |  j   } | j |  j	  |   j
 j |  j	  Wd  QXt j d  ` } t |   j j j _ |  j   } | j |  j	 d    |   j
 j |  j	 j d t   Wd  QXt j d  ` } t |   j j j _ |  j   } d   } |  j t j | j |  j	 |  |   j
 j   Wd  QXt j   |  j j _ t j d  m } t j d d  } | |   j _ |  j   } | j |  j	  |   j j |  j	  |   j j |  Wd  QXt j d  j } t j d d   } | |   j _ |  j   } | j |  j	  |   j j |  j	  |   j j   Wd  QXd  S(   Ns   acme.client.ClientV2c         S   s   t  S(   N(   R   (   t   x(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   <lambda>   s    t   terms_of_service_agreedc         S   s   t  j  d  S(   N(   R   t   Error(   t   tos(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   _tos_cb   s    s   acme.client.Clientt   terms_of_servicet   TOS(   Rh   Rd   R!   Re   R$   R   t   patchR`   Rn   R-   Ro   t   assert_called_withR   Rp   t   metat   __contains__t   updateRr   R   Ry   t   assert_not_calledRc   R   t   registerRa   t   agree_to_tosR8   (   R=   t   mock_clientRi   R{   R/   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_new_account_and_tos   sB    	s'   OpenSSL.crypto.load_certificate_requests1   acme.crypto_util._pyopenssl_cert_or_req_all_namesc         C   s   t  j   |  j j _ d d g | _ t j   } t j d  \ } t j j	 |   j
 _ |  j   } | j |  } |  j | j t j j	 t j j	 g  Wd  QXd  S(   Ns   example.coms   www.example.coms   acme.client.Client(   Rc   Rd   R!   Re   R$   R   R   R~   t   sentinelt   autht   request_domain_challengesR`   t	   new_orderRf   t   authorizations(   R=   t%   mock__pyopenssl_cert_or_req_all_namest$   unused_mock_load_certificate_requestt   mock_csr_pemR   Ri   RZ   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_new_order_v1   s    c         C   si   t  j   |  j j _ t j   } t j d  3 } |  j   } | j	 |  |   j	 j
 |  Wd  QXd  S(   Ns   acme.client.ClientV2(   Rh   Rd   R!   Re   R$   R   R   R~   R`   R   Ra   (   R=   R   R   Ri   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_new_order_v2   s    s   acme.client.Clientc         C   s   t  j   |  j j _ |  j |   j _ |  j |   j _ t	 j	 d d d  } |  j
   } | j |  j |  } |  j | j |  j  |   j j |  j  d  S(   Ni'  i	   (   Rc   Rd   R!   Re   R$   RJ   t   request_issuanceRQ   t   fetch_chaint   datetimeR`   t   finalize_orderRZ   Rf   RW   Ra   (   R=   R   t   deadlineRi   t   result(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_finalize_order_v1_success   s    c         C   s   t  j   |  j j _ |  j |   j _ |  j |   j _ t	 j
 |  j g |   j _ t j d d d  } |  j   } | j |  j |  } |  j | j |  j  |  j |   j j d  d  S(   Ni'  i	   i   (   Rc   Rd   R!   Re   R$   RJ   R   RQ   R   R   Ry   t   side_effectR   R`   R   RZ   Rf   RW   t
   call_count(   R=   R   R   Ri   R   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt(   test_finalize_order_v1_fetch_chain_error   s    c         C   sy   t  j   |  j j _ |  j |   j _ t j j   t j	 d d  } } |  j
   } |  j t j | j |  j |  d  S(   Nt   secondsi<   (   Rc   Rd   R!   Re   R$   RJ   R   R   t   nowt	   timedeltaR`   Rr   R   t   TimeoutErrorR   RZ   (   R=   R   R   Ri   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_finalize_order_v1_timeout   s    #c         C   s{   t  j   |  j j _ t j   } t j   } t j d  9 } |  j   } | j	 | |  |   j	 j
 | |  Wd  QXd  S(   Ns   acme.client.ClientV2(   Rh   Rd   R!   Re   R$   R   R   R~   R`   R   Ra   (   R=   t   mock_orderrt   mock_deadlineR   Ri   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_finalize_order_v2  s    c         C   s   t  j   |  j j _ t j d  ) } |  j   } | j t	 j
 |  j  Wd  QX|   j j t	 j
 |  j  t j   |  j j _ t j d  ) } |  j   } | j t	 j
 |  j  Wd  QX|   j j t	 j
 |  j  d  S(   Ns   acme.client.Clients   acme.client.ClientV2(   Rc   Rd   R!   Re   R$   R   R~   R`   t   revokeR   RI   R<   Ra   Rh   (   R=   R   Ri   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_revoke  s    c         C   so   t  j   |  j j _ t j d  ) } |  j   } | j t j	 j
 d   Wd  QX|   j j t j	 j
 d   d  S(   Ns   acme.client.Client(   Rc   Rd   R!   Re   R$   R   R~   R`   t   update_registrationR   R/   R8   Ra   (   R=   R   Ri   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_update_registration  s
    c         C   s^   t  j i d d 6t  j j d t  d 6 j   |  j j _ |  j   } |  j	 | j
    d  S(   Ns*   http://letsencrypt-test.com/acme/new-nonceR	   t   external_account_requiredR   (   R   t	   Directoryt   MetaR   Rd   R!   Re   R$   R`   t
   assertTrueR   (   R=   Ri   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt#   test_external_account_required_true   s
    	+c         C   s^   t  j i d d 6t  j j d t  d 6 j   |  j j _ |  j   } |  j	 | j
    d  S(   Ns*   http://letsencrypt-test.com/acme/new-nonceR	   R   R   (   R   R   R   t   FalseRd   R!   Re   R$   R`   t   assertFalseR   (   R=   Ri   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt$   test_external_account_required_false+  s
    	+c         C   sW   t  j i t  j j d t  d 6 j   |  j j _ |  j   } |  j	 | j
    d  S(   NR   R   (   R   R   R   R   Rd   R!   Re   R$   R`   R   R   (   R=   Ri   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt'   test_external_account_required_false_v15  s    	+(   RB   RC   RD   RA   R`   Rb   Rj   Rl   Ru   R   R   R~   R   R   R   R   R   R   R   R   R   R   R   (    (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyRE   Z   s(   							
	-							
t
   ClientTestc           B   s  e  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 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 d   Z d   Z e j d  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* RS(*   s   Tests for acme.client.Client.c      	   C   s   t  t |   j   t |  _ |  j j d d  |  _ t j d t	 j
 d |  j f d d d d  |  _ d	 d
 l m } | d |  j d t d t j d |  j  |  _ d  S(   NR|   s$   https://www.letsencrypt-demo.org/tosR   t   authzrsR   s,   https://www.letsencrypt-demo.org/acme/cert/1t   cert_chain_uris#   https://www.letsencrypt-demo.org/cai(   t   ClientRp   R   t   algR"   (   RG   R   RA   Rc   Rp   R/   R   R   RH   R   RI   R;   RJ   R_   R   R)   R3   t   RS256R"   Ri   (   R=   R   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyRA   C  s    		c      	   C   sW   d } d d l  m } | d | d t d t j d |  j  |  _ |  j j j |  d  S(   Ns)   http://www.letsencrypt-demo.org/directoryi(   R   Rp   R   R   R"   (	   R_   R   R)   R3   R   R"   Ri   R%   Ra   (   R=   R   R   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyRb   V  s
    $s   acme.client.ClientNetworkc         C   s   t  j j | _ t j } d d l m } | d |  j d t	 d |  |  _
 | j t	 d | d t |  j |  j
 j t  j j  d  S(   Ni(   R   Rp   R   R   t
   verify_ssl(   R   R   R"   R$   R3   R   R_   R   Rp   R)   Ri   t   called_once_withR   Rf   (   R=   t   mock_netR   R   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_init_without_net]  s    	c         C   s   t  j |  j _ |  j j j   |  j j _ |  j j	 |  j j
 d <|  j j j i i |  j j d 6d 6 |  j |  j |  j j |  j   d  S(   Nt   Locationt   urls   terms-of-service(   R    t   CREATEDR!   R   R/   R   Rd   Re   R$   R   R   R   R   R|   Rf   Ri   R   R-   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_registerg  s    c         C   s~   |  j  j |  j j d <|  j  j j   |  j j _ |  j |  j  |  j	 j
 |  j    |  j  j j d d  j   |  j j _ d  S(   NR   R   (    (   R/   R   R!   R   R   Rd   Re   R$   Rf   Ri   R   R   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyR   t  s
    "c         C   sW   |  j  j |  j j d <|  j  j j   |  j j _ |  j |  j  |  j	 j
 |  j    d  S(   NR   (   R/   R   R!   R   R   Rd   Re   R$   Rf   Ri   Rq   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_deactivate_account  s    c         C   sA   |  j  j j   |  j j _ |  j |  j  |  j j |  j    d  S(   N(	   R/   R   Rd   R!   Re   R$   Rf   Ri   Rk   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_query_registration  s    c         C   s\   t  j   |  j _ |  j j |  j  |  j j j d d } |  j |  j j | j	 j
  d  S(   Ni    (   R   t   MockRi   R   R   R/   t	   call_argsRf   R|   R   t	   agreement(   R=   R/   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_agree_to_tos  s    c         C   sA   t  j |  j _ |  j j |  j j d <|  j j   |  j j	 _
 d  S(   NR   (   R    R   R!   R   R;   R   R   R9   Rd   Re   R$   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt(   _prepare_response_for_request_challenges  s    c         C   sR   |  j    |  j j |  j  |  j j j |  j j t	 j
 d |  j  d d d  S(   NR   Rg   i   (   R   Ri   t   request_challengesR   R"   R#   Ra   Rp   t	   new_authzR   t   NewAuthorization(   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_request_challenges  s    
	c         C   sX   |  j    |  j j |  j d d |  j j j |  j j t	 j
 d |  j  d d d  S(   Nt   new_authzr_urit   hiR   Rg   i   (   R   Ri   R   R   R"   R#   Ra   Rp   R   R   R   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt&   test_request_challenges_deprecated_arg  s    
	c         C   s@   |  j    |  j j |  j  |  j j j d t j d d d  S(   Ns/   https://www.letsencrypt-demo.org/acme/new-authzRg   i   (	   R   Ri   R   R   R"   R#   Ra   R   t   ANY(   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt"   test_request_challenges_custom_uri  s
    
c         C   s`   |  j    |  j j d |  j j d d   j   |  j j _ |  j t	 j
 |  j j |  j  d  S(   NR   R   t   foo(   R   R9   R   R   Rd   R!   Re   R$   Rr   R   t   UnexpectedUpdateRi   R   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt)   test_request_challenges_unexpected_update  s    
'c         C   s;   t  j d t  j d d  } |  j t j |  j j |  d  S(   NR   R   s   *.example.org(   R   R&   R'   Rr   R   t   WildcardUnsupportedErrorRi   R   (   R=   t   wildcard_identifier(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt    test_request_challenges_wildcard  s
    	c         C   sA   t  j   |  j _ |  j |  j j |  j  |  j j d   d  S(   Ns   example.com(   R   R   Ri   R   Rf   R   R   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_request_domain_challenges  s    c         C   s   i |  j  j d 6|  j j d <|  j  j j   |  j j _ t j	 d d   } |  j j |  j  j |  |  j t j |  j j |  j  j j d d  |  d  S(   NR   t   upt
   validationR   R   (   R6   R   R!   R   R   Rd   Re   R$   R   t   DNSResponseR8   Ri   t   answer_challengeRr   R   R   R   (   R=   t   chall_response(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_answer_challenge  s    c         C   s5   |  j  t j |  j j |  j j t j d d    d  S(   NR   (
   Rr   R   t   ClientErrorRi   R   R6   R   R   R   R8   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt"   test_answer_challenge_missing_next  s    c            s   i   j  j d 6  j j d <  j  j j     j j _   f d   } |   j j	 _
 t j d d d t j    }   j j   j  j |  t j d d   }   j t j   j j   j  j |  d  S(   NR   R   c            s4   | j    } d | k r- t j j d   n    j S(   s   
            Simulate an old ACME CA server, that would respond a 'malformed'
            error if keyAuthorization is missing.
            t   keyAuthorizationt	   malformed(   t   to_partial_jsonR   Ry   t	   with_codeR!   (   R   t   objt   argst   kwargst   jobj(   R=   (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   _wrapper_post  s    t   key_authorizationt   testt   resourceR   (   R6   R   R!   R   R   Rd   Re   R$   R"   R#   R   R   t   HTTP01ResponseR   R   Ri   R   R   R8   Rr   R   Ry   (   R=   R   t   http_chall_responset   dns_chall_response(    (   R=   s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt0   test_answer_challenge_key_authorization_fallback  s    	c         C   sT   d |  j  j d <|  j t j d d d d d d  |  j j d |  j  d	 d
   d  S(   Ns   Fri, 31 Dec 1999 23:59:59 GMTs   Retry-Afteri  i   i   i   i;   R!   t   defaulti
   (   R!   R   Rf   R   Ri   t   retry_after(   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_retry_after_date  s    s   acme.client.datetimec         C   s~   t  j  d d d  | j  j _ t  j | _ d |  j j d <|  j t  j  d d d d d d  |  j j d |  j d	 d   d  S(
   Ni  i   i   t   foooos   Retry-Afteri    i
   R!   R   (	   R   R   R$   R   R!   R   Rf   Ri   R   (   R=   t   dt_mock(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_retry_after_invalid  s    c         C   s   t  j  d d d  | j  j _ t  j | _ t  j  | j  _ d |  j j d <|  j t  j  d d d d d d  |  j j	 d |  j d	 d   d  S(
   Ni  i   i   s   Tue, 116 Feb 2016 11:50:00 MSTs   Retry-Afteri    i
   R!   R   (
   R   R   R$   R   R   R!   R   Rf   Ri   R   (   R=   R   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_retry_after_overflow  s    c         C   s~   t  j  d d d  | j  j _ t  j | _ d |  j j d <|  j t  j  d d d d d d  |  j j d |  j d	 d
   d  S(   Ni  i   i   t   50s   Retry-Afteri    i2   R!   R   i
   (	   R   R   R$   R   R!   R   Rf   Ri   R   (   R=   R   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_retry_after_seconds	  s    c         C   sn   t  j  d d d  | j  j _ t  j | _ |  j t  j  d d d d d d  |  j j d |  j d d   d  S(   Ni  i   i   i    i
   R!   R   (   R   R   R$   R   Rf   Ri   R   R!   (   R=   R   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_retry_after_missing  s
    c         C   s   |  j  j j   |  j j _ |  j |  j  |  j f |  j j |  j    |  j	 j
 d |  j j
 d d   j   |  j j _ |  j t j |  j j |  j   d  S(   NR   R   R   (   R;   R   Rd   R!   Re   R$   Rf   Ri   t   pollR9   R   R   Rr   R   R   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt	   test_poll  s    'c         C   sn   t  |  j _ |  j j |  j j d <i |  j j d 6|  j j d <|  j |  j |  j	 j
 t j |  j f   d  S(   NR   R   R   (   t   CERT_DERR!   t   contentRJ   R   R   R   R   Rf   Ri   R   R   t   CSRR;   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_request_issuance'  s
    c         C   s]   t  |  j _ |  j j |  j j d <|  j |  j j d d   |  j	 j
 t j |  j f   d  S(   NR   R   (   R   R!   R   RJ   R   R   Rf   R   R8   Ri   R   R   R   R;   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt    test_request_issuance_missing_up/  s
    c         C   s,   |  j  t j |  j j t j |  j f  d  S(   N(   Rr   R   R   Ri   R   R   R   R;   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt&   test_request_issuance_missing_location6  s    s   acme.client.timec            sQ  t  j d t j d d d       f d   } | | j _   f d   } | | j j _ t j | _   f d   } t  j d |   j _ d	      f d
   } t  j d |   j _	 d   } t  j d |   j _
 t  j   } t  j d d d g  d d d d t j f  t  j d d d g  d d t j f  f }	  j j | |	 d  d t t |	 d j  t |	 d j   \ }
 }  j |
 d | k   j |
 d | k   j | d j d   j | d j d   j | d j t j d d d  t j d d d d d d  t j d d d d d d  t j d d d d d d  g   j | d j t j d d d d d d  t j d d d d d d  g   j   j t j d d d d d d	   t  j d g  d t j g  }  j t j  j j | d | f d   j t j  j j | |	 d  d d d  S(    Nt   dti  i   i   c            s     j  t j d |   7_  d S(   s   increment clockR   N(   R   R   R   (   R   (   t   clock(    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   sleepA  s    c              s     j  S(   s   return current clock value(   R   (    (   R  (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyR   F  s    c            s   |  j  j   j    j t j d d  7_ t |  j  d k r~ t j d |  j	 d |  j   } |  j d | j
 _ | g  f St j d |  j d d |  j	 d d |  j   |  j d f S(	   NR   i   i   R   t   timesi    t   retriest   .(   R  t   appendR   R   R   t   lenR  R   R   R   R   R   (   R;   t   done(   R  (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyR   L  s    
R   i   c            s'    j  |     j t j d |   S(   NR   (   Rf   R   R   R   (   R!   R   (   R  t   mintimeR=   (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyR   f  s    c         S   s
   |  | f S(   N(    (   t   csrR   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyR   m  s    R   t   aR  R  i   i   i   t   bi   R	  t   max_attemptsi    i   s   a...s   b.i   i!   i   i	   R   (   R   R   R   R  R   R   R   Ri   R   R   R   R   R1   t   poll_and_request_issuancet   maxR  R  R   Rf   R   R  R   t   STATUS_INVALIDRr   R   t	   PollError(   R=   t	   time_mockR   R  R   R   R   R   R
  R   t   certt   updated_authzrst   invalid_authzr(    (   R  R	  R=   s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_poll_and_request_issuance;  sV    !			2""+	c         C   s   |  j  j |  j j d <t |  j _ |  j |  j  j d t j	  |  j
 j |  j    d |  j j d <|  j t j |  j
 j |  j   d  S(   NR   R   R   (   RJ   R   R!   R   R   R   Rf   R   R   RI   Ri   t
   check_certRr   R   R   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_check_cert  s    c         C   s/   t  |  j _ |  j t j |  j j |  j  d  S(   N(	   R   R!   R   Rr   R   R   Ri   R  RJ   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt    test_check_cert_missing_location  s    c         C   sD   t  j   |  j _ |  j |  j j |  j  |  j j |  j   d  S(   N(   R   R   Ri   R  Rf   RJ   t   refresh(   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_refresh  s    c         C   s/   |  j  g  |  j j |  j j d d     d  S(   NR   (   Rf   Ri   R   RJ   R   R8   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_fetch_chain_no_up_link  s    c         C   so   t  j   |  j _ t  j d i   d f |  j j _ |  j |  j j |  j j  d g |  j j |  j   d  S(   NR   t   certificatei   (	   R   R   Ri   t	   _get_certR$   Rf   RJ   R   R   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_fetch_chain_single  s    !"c         C   s   t  j d i i d d 6d 6 } t  j d i   } t  j   |  j _ | d f g d | d f g |  j j _ |  j j |  j d d	 } |  j | d g d d g  d  S(
   NR   s   http://certR   R   R  i	   t	   last_certt
   max_lengthi
   (   R   R   Ri   R  R   R   RJ   Rf   (   R=   t   up_responset   noup_responseRQ   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_fetch_chain_max  s     )c         C   sj   t  j d i i d d 6d 6 } t  j   |  j _ | d f |  j j _ |  j t j |  j j |  j	  d  S(   NR   s   http://certR   R   R  (
   R   R   Ri   R  R$   Rr   R   Ry   R   RJ   (   R=   R!   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_fetch_chain_too_many  s     c         C   sI   |  j  j |  j j |  j  |  j j j |  j t	 j
 t j d d d  S(   NRg   i   (   Ri   R   RJ   R   R<   R"   R#   Ra   Rp   R   t
   RevocationR   R   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyR     s    c         C   sa   t  j d |  j j d |  j  } |  j d | j   j   k  |  j |  j | j   d  d  S(   NR  t   reason(	   R   R&  RJ   R   R<   R   R   t   keysRf   (   R=   R   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_revocation_payload  s    !c         C   s8   t  j |  j _ |  j t j |  j j |  j	 |  j
  d  S(   N(   R    t   METHOD_NOT_ALLOWEDR!   R   Rr   R   R   Ri   R   RJ   R<   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt#   test_revoke_bad_status_raises_error  s    	(+   RB   RC   RD   RA   Rb   R   R~   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R  R  R  R  R  R  R$  R%  R   R)  R+  (    (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyR   ?  sP   		
																

					b						
			t   ClientV2Testc           B   s   e  Z d  Z d   Z d   Z d   Z d   Z e j d  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 RS(   s   Tests for acme.client.ClientV2.c      	   C   sA  t  t |   j   t |  _ d d l m } | |  j |  j  |  _ |  j	 j
 d t  |  _	 d |  _ |  j j
 d t j d t j d d  d	 t j  |  _ t j d
 |  j d |  j  |  _ t j d |  j j |  j j f d	 t j d |  j j |  j f d d  |  _ t j d
 |  j d d d |  j |  j g d t  |  _ d  S(   Ni(   t   ClientV2Rx   s-   https://www.letsencrypt-demo.org/acme/authz/2R   R   R   s   www.example.comR   R   R   t   identifiersR   t   finalizes=   https://www.letsencrypt-demo.org/acme/acct/1/order/1/finalizes4   https://www.letsencrypt-demo.org/acme/acct/1/order/1RF   (   RG   R,  RA   Rh   Rp   R_   R-  R"   Ri   R-   R   R   t   authzr_uri2R9   R   R&   R'   t   STATUS_PENDINGt   authz2R:   t   authzr2t   OrderR   R;   R   t   orderRX   RY   RZ   (   R=   R-  (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyRA     s(    							c         C   sf   t  j |  j _ |  j j j   |  j j _ |  j j	 |  j j
 d <|  j |  j |  j j |  j   d  S(   NR   (   R    R   R!   R   R/   R   Rd   Re   R$   R   R   Rf   Ri   Ro   R-   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_new_account  s    c         C   sH   t  j |  j _ |  j j |  j j d <|  j t j	 |  j
 j |  j  d  S(   NR   (   R    R    R!   R   R/   R   R   Rr   R   t   ConflictErrorRi   Ro   R-   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_new_account_conflict  s    c         C   s
  t  j |  j  } t j | _ |  j j   | j _	 |  j
 j | j d <| |  j j _	 t  j |  j  } |  j j   | j _	 |  j j | j d <|  j } |  j j   | j _	 |  j j | j d <t j d  5 } | | f | _ |  j |  j j t  |  j
  Wd  QXd  S(   NR   s!   acme.client.ClientV2._post_as_get(   t   copyt   deepcopyR!   R    R   R   R5  Rd   Re   R$   RZ   R   R   R"   R#   R9   R;   R2  R3  R   R~   R   Rf   Ri   R   RY   (   R=   t   order_responset   authz_responset   authz_response2t   mock_post_as_get(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_new_order  s    	s   acme.client.datetimec         C   s   t  j  d d d  | j  j _ t  j | _ | j  j   t  j d d  } t j d |  j  |  j _ t j d |  j  |  j _	 |  j
 |  j j |  j  |  j  |  j j j |  j |  |  j j	 j |  j |  d  S(   Ni  i   i   R   iZ   R$   (   R   R   R$   R   R   R   RZ   Ri   t   poll_authorizationsR   Rf   t   poll_and_finalizeRa   (   R=   t   mock_datetimet   expected_deadline(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_poll_and_finalize  s    "c         C   s   t  j  d d d  t  j  d d d  t  j  d d d  g } | | j  j _ |  j j   |  j j   |  j j   g |  j j _ |  j t	 j
 |  j j |  j | d  d  S(   Ni  i   i   i   i   i   (   R   R   R   R9   Rd   R2  R!   Re   Rr   R   R   Ri   R@  RZ   (   R=   RB  t   now_side_effect(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt    test_poll_authorizations_timeout,  s    3c         C   s   t  j  d d d  } |  j j j d t j d t j j d   } |  j j d t j d | f  } | j	   |  j
 j _ |  j t j |  j j |  j |  d  S(   Ni'  i	   R   t   errort   unauthorizedR   (   R   R6   R   R   R   R  Ry   R   R9   Rd   R!   Re   R$   Rr   R   t   ValidationErrorRi   R@  RZ   (   R=   R   R@   R9   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt    test_poll_authorizations_failure8  s    !c         C   s   t  j  d d d  } |  j j d t j  } t j d | d |  j  } |  j j d |  j | g  } |  j	 j
   |  j j
   | j
   f |  j j _ |  j |  j j |  j |  |  d  S(   Ni'  i	   R   R   R   R   (   R   R2  R   R   R1   R:   R0  RZ   R;   R9   Rd   R!   Re   R   Rf   Ri   R@  (   R=   R   t   updated_authz2t   updated_authzr2t   updated_orderr(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt    test_poll_authorizations_successB  s    	0c         C   s   |  j  j d d  } |  j j d | d t  } | j   |  j j _ t |  j _ t	 j	 d d d  } |  j
 |  j j |  j |  |  d  S(   NR  s+   https://www.letsencrypt-demo.org/acme/cert/R   RW   i'  i	   (   R5  R   RZ   RO   Rd   R!   Re   R$   t   textR   Rf   Ri   R   (   R=   t   updated_orderRM  R   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_finalize_order_successM  s    	c         C   sq   |  j  j d t j j d   } | j   |  j j _ t	 j	 d d d  } |  j
 t j |  j j |  j |  d  S(   NRG  RH  i'  i	   (   R5  R   R   Ry   R   Rd   R!   Re   R$   R   Rr   R   t   IssuanceErrorRi   R   RZ   (   R=   RP  R   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_finalize_order_errorX  s    !c         C   sE   t  j  j   t  j d d  } |  j t j |  j j |  j |  d  S(   NR   i<   (	   R   R   R   Rr   R   R   Ri   R   RZ   (   R=   R   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_finalize_order_timeout_  s    c         C   sM   |  j  j t j |  j  |  j j j |  j d t	 j
 d d d t d d  S(   NR   Rg   i   t   new_nonce_urlR	   (   Ri   R   R   RI   R<   R"   R#   Ra   Rp   R   R   Rh   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyR   c  s    c         C   s   |  j  j |  j j d <|  j  j j   |  j j _ |  j |  j  |  j	 j
 |  j    |  j |  j	 j j d   |  j |  j	 j j j d  |  j t j |  j j j d d k  |  j  j j d d  j   |  j j _ d  S(   NR   i   i    R   (    (   R/   R   R!   R   R   Rd   Re   R$   Rf   Ri   R   t   assertNotEqualR"   t   accountR8   R#   R   R   Rh   R   t   call_args_listR   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyR   i  s    "'c         C   sE   t  j i t  j j d t  d 6 |  j _ |  j |  j j    d  S(   NR   R   (   R   R   R   R   Ri   Rp   R   R   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyR   v  s    	"c         C   sE   t  j i t  j j d t  d 6 |  j _ |  j |  j j    d  S(   NR   R   (   R   R   R   R   Ri   Rp   R   R   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyR   }  s    	"c         C   s   |  j  |  j j    d  S(   N(   R   Ri   R   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt&   test_external_account_required_default  s    c         C   s   t  j d   } |  j | _ |  j j |  j  |  j j j j |  j j	 d  d d d d |  j j j j   d t j f d     Y} |   |  j j j _ |  j j |  j  |  j j j j |  j j	  Wd  QXd  S(   Ns*   acme.client.ClientV2._authzr_from_responseRg   i   RU  s/   https://www.letsencrypt-demo.org/acme/new-noncet	   FakeErrorc           B   s&   e  Z d  Z d   Z e d    Z RS(   s6   Fake error to reproduce a malformed request ACME errorc         S   s   d  S(   N(    (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   __init__  s    c         S   s   d S(   NR   (    (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   code  s    (   RB   RC   RD   R[  t   propertyR\  (    (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyRZ    s   	(   R   R~   R3  R$   Ri   R   R"   R#   Ra   R   R8   R%   R   R   Ry   R   (   R=   R   RZ  (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_post_as_get  s    (   RB   RC   RD   RA   R6  R8  R?  R   R~   RD  RF  RJ  RN  RQ  RS  RT  R   R   R   R   RY  R^  (    (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyR,    s$   					
									t   MockJSONDeSerializablec           B   s)   e  Z d    Z d   Z e d    Z RS(   c         C   s   | |  _  d  S(   N(   R   (   R=   R   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyR[    s    c         C   s   i |  j  d 6S(   NR   (   R   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyR     s    c         C   s   d  S(   N(    (   t   clsR   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt	   from_json  s    (   RB   RC   R[  R   t   classmethodRa  (    (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyR_    s   		t   ClientNetworkTestc           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 e j d  d    Z d   Z d   Z d   Z d   Z d d  Z d   Z e j d  d    Z d   Z RS(   s$   Tests for acme.client.ClientNetwork.c      	   C   s   t  j   |  _ t  j d t  j j  |  _ d d l m } | d t d t	 j
 d |  j d d  |  _ t  j d	 t d
 t j  |  _ i  |  j _ i  |  j _ d  S(   NR$   i(   t   ClientNetworkR   R   R   t
   user_agents   acme-python-testR   R   (   R   R   R   R   RS   t   wrap_in_jwsR_   Rd  R)   R3   R   R"   R   R    R    R!   R   R   (   R=   Rd  (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyRA     s    c         C   s    |  j  |  j j |  j k  d  S(   N(   R   R"   R   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt	   test_init  s    c         C   s   |  j  j t d  d d d d d d } t j j |  } |  j t j | j	 j
    i d d 6 |  j | j j j d  d  S(   NR   t   noncet   TgR   Rg   i   (   R"   t   _wrap_in_jwsR_  t   acme_jwst   JWSt
   json_loadsRf   Re   t   loadst   payloadRT   t	   signaturet   combinedRh  (   R=   t   jws_dumpR   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_wrap_in_jws  s    		)c         C   s   i d d 6|  j  _ |  j  j t d  d d d d d d } t j j |  } |  j t j	 | j
 j    i d d 6 |  j | j j j d  |  j | j j j d	  |  j | j j j d
  d  S(   Ns   acct-uriR   R   Rh  Ri  R   Rg   i   u   acct-uriu   url(   R"   RW  Rj  R_  Rk  Rl  Rm  Rf   Re   Rn  Ro  RT   Rp  Rq  Rh  t   kidR   (   R=   Rr  R   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_wrap_in_jws_v2  s    		)c         C   sb   t  |  j _ i  |  j j _ t j d  2 } t j | _	 |  j
 t j |  j j |  j  Wd  QXd  S(   Ns$   acme.client.messages.Error.from_json(   R   R!   R   Re   R$   R   R~   R3   t   DeserializationErrorR   Rr   R   R   R"   t   _check_response(   R=   Ra  (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt(   test_check_response_not_ok_jobj_no_error  s    c         C   s\   t  |  j _ t j d d d d d d  j   |  j j _ |  j t j |  j	 j
 |  j  d  S(   Nt   detailR   R   t   serverInternalt   titles
   some title(   R   R!   R   R   Ry   Rd   Re   R$   Rr   R"   Rw  (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt%   test_check_response_not_ok_jobj_error  s
    	$c         C   s>   t  |  j _ t |  j j _ |  j t j |  j	 j
 |  j  d  S(   N(   R   R!   R   t
   ValueErrorRe   R   Rr   R   R   R"   Rw  (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt"   test_check_response_not_ok_no_jobj  s    c         C   sk   t  |  j j _ xU |  j j d g D]A } | |  j j d <|  j t j	 |  j j
 |  j d |  j j q" Wd  S(   NR   s   Content-Typet   content_type(   R}  R!   Re   R   R"   t   JSON_CONTENT_TYPER   Rr   R   R   Rw  (   R=   t   response_ct(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt*   test_check_response_ok_no_jobj_ct_required  s    c         C   sb   t  |  j j _ xL |  j j d g D]8 } | |  j j d <|  j |  j |  j j |  j   q" Wd  S(   NR   s   Content-Type(	   R}  R!   Re   R   R"   R  R   Rf   Rw  (   R=   R  (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt$   test_check_response_ok_no_jobj_no_ct  s
    c         C   s;   t  |  j _ d |  j _ |  j t j |  j j |  j  d  S(   Ni  (	   R   R!   R   R   Rr   R   R7  R"   Rw  (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_check_response_conflict  s    c         C   sb   i  |  j  j _ xL |  j j d g D]8 } | |  j  j d <|  j |  j  |  j j |  j    q" Wd  S(   NR   s   Content-Type(   R!   Re   R$   R"   R  R   Rf   Rw  (   R=   R  (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_check_response_jobj  s
    c         C   s   t  j   |  j _ |  j |  j j j _ |  j |  j |  j j d d d d d  |  j j j j	 d d d d t  j
 d t  j
 d t  j
 d d d  S(	   Nt   HEADs   http://example.com/R   t   bart   bazR   t   verifyt   timeout(   R   R   R"   t   sessionR!   t   requestR$   Rf   t   _send_requestRa   R   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_send_request  s    s   acme.client.loggerc      	   C   s   t  j   |  j _ t  j d t d t j d i d d 6d d  |  j j j _ |  j j	 d d	 d
 d t  j
 d d | j j d d d d  d  S(   NR   R   R   s   application/pkix-certs   Content-TypeR   R   R  s   http://example.com/R   R  R  R  s!   Received response:
HTTP %d
%s

%si   s#   Content-Type: application/pkix-certs   aGk=(   R   R   R"   R  R   R    R    R  R$   R  R   t   debugR   (   R=   t   mock_logger(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_send_request_get_der  s    		c         C   s   t  j   |  j _ |  j |  j j j _ |  j |  j |  j j d d d d d d d  |  j j j j	 d d d d t  j
 d	 t  j
 d
 t  j
 d d d d d  S(   Nt   POSTs   http://example.com/R   t   datat   quxR  R  R   R  R  (   R   R   R"   R  R!   R  R$   Rf   R  Ra   R   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_send_request_post%  s    c      
   C   s   x t  t f D] } t j   |  j _ |  j |  j j j _ | |  j _	 |  j
 |  j |  j j d d   |  j j j j d d d | d t j d t j q Wd  S(   Nt   GETs   http://example.com/R  R  R   (   R   R   R   R   R"   R  R!   R  R$   R   Rf   R  Ra   R   (   R=   R  (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_send_request_verify_ssl/  s    c         C   s   t  j   |  j _ |  j j d d d i d d 6|  j j j j d d d t  j d t  j d i d d	 6d d 6|  j j d d d i d
 d	 6|  j j j j d d d t  j d t  j d i d
 d	 6d  S(   NR  s   http://example.com/R   R  R  R  R  s   acme-python-tests
   User-Agentt   foo2(	   R   R   R"   R  R  R  Ra   R   R   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_send_request_user_agent=  s    		c      	   C   sm   t  j   |  j _ |  j j d d d i d d 6|  j j j j t  j t  j d t  j d t  j d d d  S(	   NR  s   http://example.com/R   R  R  R  R  i-   (   R   R   R"   R  R  R  Ra   R   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_send_request_timeoutM  s    !c         C   sJ   t  j   } | d  k	 r' | | j _ n  | |  j _ |  ` | j j   d  S(   N(   R   R   R8   t   closeR   R"   R  Ra   (   R=   t   close_exceptiont   sess(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_delV  s    c         C   s   |  j  t  d  S(   N(   R  t   ReferenceError(   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_del_error`  s    s   acme.client.requestsc         C   sD   t  j | _ t  j j | j _ |  j t  j j |  j j d d  d  S(   NR  R   (   t   requestst
   exceptionst   RequestExceptionR  R   Rr   R"   R  (   R=   t   mock_requests(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_requests_error_passthroughc  s    c         C   s   y |  j  j d d  Wnl t k
 rB } |  j d t |   nD t j j k
 r } |  j d t |  k p~ d t |  k  n Xd  S(   NR  s&   http://localhost:19123/nonexistent.txts4   Requesting localhost/nonexistent: Connection refuseds   'Connection aborted.'s   [WinError 10061](	   R"   R  R}  Rf   t   strR  R  t   ConnectionErrorR   (   R=   t   yt   z(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_urllib_errork  s    	N(   RB   RC   RD   RA   Rg  Rs  Ru  Rx  R|  R~  R  R  R  R  R  R   R~   R  R  R  R  R  R8   R  R  R  R  (    (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyRc    s,   															
	
				
	t#   ClientNetworkWithMockedResponseTestc           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 RS(   s<   Tests for acme.client.ClientNetwork which mock out response.c            sW  d d l  m } | d d  d d     _ t j d t d t j    _	 i    j	 _
 i    j	 _ t   j	 _ t j d t d t j    _ i    j _
 t j     _ t j     _ t j j   _ t j d  t j d  t j d	  g   _   j   _   f d
   } t j d |    j _   _   j   j _ t j d   j    j _ d  S(   Ni(   Rd  R   R   R   R   t   Noncet   Nonce2t   Nonce3c             s     j  d | k  |  d } |  d } | d k rK | d k rK   j } n	   j }   j r i   j j   j     j j 6| _ n	 i  | _ | S(   NRU  i    i   R  t   new_nonce_uri(	   R   t   acmev1_nonce_responseR!   t   available_noncest   popRT   R"   t   REPLAY_NONCE_HEADERR   (   R   R   t   methodR   R!   (   R=   (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   send_request  s    

		%	R   R$   (   R_   Rd  R8   R"   R   R   R   R    R    R!   R   R   R   t   checkedR*  R  R   t   wrapped_objR   R  R3   t	   b64encodet
   all_noncesR  R  R  t   check_responseRw  Rj  (   R=   Rd  R  (    (   R=   s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyRA     s(    !	c         C   sL   |  j  |  j |  |  j  |  j |  |  j |  j j  t |  j _ |  j S(   N(   Rf   R!   R  R   R   R   R  (   R=   R!   R  (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyR    s
    c         C   sH   |  j  |  j |  j j d d d d  |  j j d d d d d d  S(   Ns   http://example.com/R   R  R  R  (   Rf   R  R"   t   headR  Ra   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt	   test_head  s    	c         C   sH   |  j  |  j |  j j d d d d  |  j j d d d d d d  S(   NR  R   R  R  R  (   Rf   R!   R"   R  R  Ra   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_head_v2  s    	c         C   s^   |  j  |  j |  j j d d |  j d d  |  j |  j j  |  j j d d d d d  S(   Ns   http://example.com/R  R  R  R  (	   Rf   R!   R"   R%   R  R   R  R  Ra   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_get  s
    	c         C   sK   |  j  j |  _ |  j |  j |  j  j d |  j   |  j |  j j  d  S(   NR   (	   R"   t   JOSE_CONTENT_TYPER  Rf   R!   R#   R   R   R  (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_post_no_content_type  s    %c         C   s   |  j  |  j |  j j d |  j d |  j  |  j |  j j  |  j j j	 |  j t
 j |  j j    d d  g  |  _ |  j t j |  j j d |  j d |  j |  j j j |  j t
 j |  j j    d d  d  S(   NR   R  i   (   Rf   R!   R"   R#   R   R  R   R  Rj  Ra   R3   R4   R  R  R  Rr   R   t   MissingNonceR   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt	   test_post  s    %	c         C   sG   d t  j d  g |  _ |  j t j |  j j d |  j d |  j	 d  S(   Nt   ft   goodR   R  (
   R3   R  R  Rr   R   t   BadNonceR"   R#   R   R  (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_post_wrong_initial_nonce  s    c         C   sG   t  j d  d g |  _ |  j t j |  j j d |  j d |  j	 d  S(   NR  R  R   R  (
   R3   R  R  Rr   R   R  R"   R#   R   R  (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt#   test_post_wrong_post_response_nonce  s    c         C   s\   t  j   } t j j d  | _ | |  j _ |  j t j |  j j	 d |  j
 d |  j d  S(   Nt   badNonceR   R  (   R   R   R   Ry   R   R   R"   Rw  Rr   R#   R   R  (   R=   R  (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_post_failed_retry  s
    c         C   se   t  j   } t j j d  |  j g | _ | |  j _ |  j	 t j |  j j
 d |  j d |  j d  S(   NR   R   R  (   R   R   R   Ry   R   R!   R   R"   Rw  Rr   R#   R   R  (   R=   R  (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_post_not_retried  s    c         C   s\   t  j   } t j j d  |  j g | _ |  j |  j |  j j	 d |  j
 d |  j  d  S(   NR  R   R  (   R   R   R   Ry   R   R!   R   Rf   R"   R#   R   R  (   R=   t	   post_once(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_post_successful_retry  s
    c         C   s}   t  j j |  j _ x< |  j j |  j j f D]" } |  j t  j j | d d  q+ W|  j t  j j |  j j	 d d |  j
 d  S(   NR  R   R   (   R  R  R  R  R   R"   R  R%   Rr   R#   R   (   R=   R  (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt$   test_head_get_post_error_passthrough  s    c         C   s   t  j d t d t j  } t  j   |  j _ | |  j j _ d  |  _	 t  j   } | |  j _
 |  j t j |  j j d |  j d |  j	 d d d d |  j | j d	  d  S(
   NR   R   R   R  Rg   i   RU  R  i   (   R   R   R   R    t   SERVICE_UNAVAILABLER"   R  R$   R8   R  Rw  Rr   R   R   R#   R   Rf   R   (   R=   t   bad_responseR  (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_post_bad_nonce_head  s    	c      	   C   s5   d  |  _ |  j j d |  j d d  d d d d d  S(   NR   R  Rg   i   RU  R  (   R8   R  R"   R#   R   (   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_new_nonce_uri_removed  s    	(   RB   RC   RD   RA   R  R  R  R  R  R  R  R  R  R  R  R  R  R  (    (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyR  {  s    	,											
				t%   ClientNetworkSourceAddressBindingTestc           B   s)   e  Z d  Z d   Z d   Z d   Z RS(   sz   Tests that if ClientNetwork has a source IP set manually, the underlying library has
    used the provided source address.c         C   s   d |  _  d  S(   Ns   8.8.8.8(   t   source_address(   R=   (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyRA     s    c         C   sh   d d l  m } | d d  d d  d |  j  } x3 | j j j   D] } |  j |  j | j k  qA Wd  S(   Ni(   Rd  R   R   R  (   R_   Rd  R8   R  R  t   adapterst   valuesR   (   R=   Rd  R"   t   adapter(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_source_address_set"  s    c         C   s   d d l  m } | d d d d  } t j   } xT | j j   D]C } | j j j |  } | j j |  } |  j	 | j
 | j
  qA Wd S(   s   This is a test that guardrails the HTTPAdapter behavior so that if the default for
        a Session() changes, the assumptions here aren't violated silently.i(   Rd  R   R   N(   R_   Rd  R8   R  t   SessionR  R(  R  R%   Rf   t	   __class__(   R=   Rd  R"   R  t   schemet   client_network_adaptert   default_adapter(    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   test_behavior_assumption(  s    (   RB   RC   RD   RA   R  R  (    (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyR    s   		t   __main__(1   RD   R9  R   Re   t   unittestt	   six.movesR    t   josepyR3   R   RK   R  t   acmeR   R   R   Rk  R   R   R   t   acme.magic_typingR   t   load_vectorR   RO   RY   t   JWKRSAt   loadR)   t   KEY2R   R,   R&  R   t   CertificateRequestRc   Rh   t   TestCaseR   RE   R   R,  t   JSONDeSerializableR_  Rc  R  R  RB   t   main(    (    (    s4   /usr/lib/python2.7/dist-packages/acme/client_test.pyt   <module>   sT   	


	) 