ó
º9—^c           @   sB  d  d l  Z  d  d l Z d  d l m Z d  d l m Z m Z m Z m Z m	 Z	 m
 Z
 y# d  d l j Z d  d l m Z Wn) e k
 r¤ d  d l Z d  d l Z n Xy e Wn e k
 rÆ e Z n Xd e f d „  ƒ  YZ d e j f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d e j f d „  ƒ  YZ e d k r>e j ƒ  n  d S(   iÿÿÿÿN(   t   Client(   t   BadRequestsErrort	   HTTPErrort   NotFoundErrort   ServiceUnavailableErrort   UnsupportedMediaTypeErrort   handle_error(   t   mockt   MockExceptionc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   | |  _  d |  _ d |  _ d  S(   Nt   REASONt   HEADERS(   t   codet   reasont   hdrs(   t   selfR   (    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyt   __init__   s    		c         C   s   d S(   Nt   BODY(    (   R   (    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyt   read#   s    (   t   __name__t
   __module__R   R   (    (    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyR      s   	t   MockResponsec           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s   | |  _  d  S(   N(   t   response_code(   R   R   (    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyR   )   s    c         C   s   |  j  S(   N(   R   (   R   (    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyt   getcode,   s    c         C   s   d S(   NR
   (    (   R   (    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyt   info/   s    c         C   s   d S(   Ns   RESPONSE BODY(    (   R   (    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyR   2   s    (   R   R   R   R   R   R   (    (    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyR   '   s   			t
   MockClientc           B   s    e  Z d d  „ Z d d „ Z RS(   c         C   s   d |  _  t j |  | ƒ d  S(   NiÈ   (   R   R    R   (   R   t   hostR   t   timeout(    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyR   8   s    	c         C   sE   d |  j  k o d k  n r, t |  j  ƒ St t |  j  ƒ ƒ ‚ d  S(   NiÈ   i+  (   R   R   R   R   (   R   t   openert   requestR   (    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyt   _make_request<   s    N(   R   R   t   NoneR   R   (    (    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyR   6   s   t
   TestClientc           B   s‰   e  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 RS(   c         C   s]   d |  _  d |  _ i d d 6d j |  j ƒ d 6|  _ t d |  j  d |  j d	 d
 ƒ |  _ d  S(   Ns   http://api.test.comt   SENDGRID_API_KEYs   application/jsons   Content-Types	   Bearer {}t   AuthorizationR   t   request_headerst   versioni   (   R   t   api_keyt   formatR"   R    t   client(   R   (    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyt   setUpE   s    			c      	   C   se  t  d |  j ƒ } |  j | j |  j ƒ |  j | j i  ƒ |  j | j d  ƒ d d d d d h } |  j | j | ƒ |  j | j	 ƒ |  j | j
 g  ƒ i d d 6d	 d
 6} d } t  d |  j d | d | d d ƒ } |  j | j |  j ƒ |  j | j | ƒ d d d d d h } |  j | j | ƒ |  j | j	 d ƒ |  j | j
 g  ƒ |  j | j d ƒ d  S(   NR   t   deletet   gett   patcht   postt   putt   tests   X-Testi   s   X-Test2i   R"   R#   R   i
   (   R    R   t   assertEqualR"   t   assertIsR   R   t   methodst   assertIsNonet   _versiont	   _url_path(   R   t   default_clientR0   R"   R#   R&   (    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyt   test__init__P   s*    	c         C   sP   d } |  j  j | ƒ } d j |  j t |  j  j ƒ | ƒ } |  j | | ƒ d  S(   Ns   /api_keys?hello=1&world=2s   {}/v{}{}(   R&   t   _build_versioned_urlR%   R   t   strR2   R.   (   R   t   urlt   versioned_url(    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyt   test__build_versioned_urlh   s    $c         C   sÂ   |  j  j d g |  j  _ |  j  j d g |  j  _ |  j  j d g |  j  _ d |  j  _ d j |  j t |  j  j ƒ d ƒ } i d d 6d d	 6d d g d
 6} |  j  j | ƒ } |  j | | ƒ d  S(   Nt   heret   therei   i   s   {}/v{}{}s-   /here/there/1?hello=0&world=1&ztest=0&ztest=1i    t   hellot   worldt   ztest(   R&   R3   R2   R%   R   R7   t
   _build_urlR.   (   R   R8   t   query_paramst	   built_url(    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyt   test__build_urln   s    	!s.   python_http_client.client.Client._make_requestc         C   sL   |  j  j i d d 6ƒ |  j  j ƒ  | j d d } |  j d | j ƒ d  S(   Nt   Tests   X-testi    i   (   R&   t   _update_headersR)   t	   call_argst   assertInt   headers(   R   t   makerR   (    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyt   test__urllib_headers|   s    c         C   s8   |  j  j ƒ  | j d d } |  j | j ƒ  d ƒ d  S(   Ni    i   t   DELETE(   R&   R(   RF   R.   t
   get_method(   R   RI   R   (    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyt   test__urllib_methodƒ   s    c         C   sM   i d d 6} |  j  j | ƒ |  j d |  j  j ƒ |  j  j j d d  ƒ d  S(   NRD   s   X-Test(   R&   RE   RG   R"   t   popR   (   R   R"   (    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyt   test__update_headers‰   s    c         C   s#   |  j  j d ƒ } |  j | ƒ d  S(   NR-   (   R&   t   _build_clientt
   assertTrue(   R   t
   new_client(    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyt   test__build_client   s    c         C   sP   |  j  |  j j g  ƒ |  j j d ƒ } d g } |  j  | j d | d ƒ d  S(   NR=   i    (   R.   R&   R3   t   _(   R   R&   t   url_path(    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyt   test__“   s    	c         C   sÈ  t  |  j d ƒ } | j d ƒ } d g } |  j | j | ƒ |  j | j d ƒ j d ƒ | j d ƒ |  j | j d ƒ | j d g 7_ | j ƒ  } |  j | j	 d ƒ | j
 ƒ  } |  j | j	 d ƒ | j ƒ  } |  j | j	 d ƒ d | _ | j ƒ  } |  j | j	 d ƒ d | _ | j ƒ  } |  j | j	 d ƒ d	 | _ |  j t | j ƒ d
 | _ |  j t | j ƒ d | _ |  j t | j ƒ d | _ |  j t | j ƒ d | _ |  j t | j ƒ d  S(   NiÈ   R=   R)   t   http_requesti   R-   iÉ   iÌ   i  i”  iŸ  i÷  i  (   R   R   t   __getattr__R.   R3   R   R#   R2   R)   t   status_codeR,   R*   R   R+   R(   t   assertRaisesR   R   R   R   R   (   R   t   mock_clientR&   RU   t   r(    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyt   test__getattr__™   s<    								c         C   sA   t  j |  j ƒ } t  j | ƒ } |  j |  j j | j d ƒ d  S(   Ns=   original client and unpickled client must have the same state(   t   picklet   dumpsR&   t   loadst   assertDictEqualt   __dict__(   R   t   pickled_clientt   unpickled_client(    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyt   test_client_pickle_unpickleÊ   s    	(   R   R   R'   R5   R:   RC   R   R*   RJ   RM   RO   RS   RV   R]   Re   (    (    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyR   C   s   								1t   __main__(   R^   t   unittestt   python_http_client.clientR    t   python_http_client.exceptionsR   R   R   R   R   R   t   urllib.requestR   t   urllibR   t   ImportErrort   urllib2t
   basestringt	   NameErrorR7   R   t   HTTPSHandlerR   R   t   TestCaseR   R   t   main(    (    (    s1   /tmp/pip-unpacked-wheel-vZkhRb/tests/test_unit.pyt   <module>   s&   .
‘