ó
ŽpYWc           @  s}  d  d l  m Z m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l m Z m	 Z	 d  d l m
 Z
 m Z d  d l m Z y d  d l m Z Wn! e k
 r¹ d  d l m Z n Xy d  d l Z Wn e k
 rã d Z n Xe j d d k re Z e Z n e Z e Z e e d	 ƒ sTe e _ e j j e j _ d
 „  Z e e j _ n  d Z  d Z! d e j" f d „  ƒ  YZ# d S(   iÿÿÿÿ(   t   unicode_literalst   print_functionN(   t   SIGNATURE_TYPE_QUERYt   SIGNATURE_TYPE_BODY(   t   SIGNATURE_RSAt   SIGNATURE_PLAINTEXT(   t   OAuth1Session(   t   StringIOi    u   3u   SkipTestc         C  sK   | d t  k r7 t t | d ƒ d d d t j ƒd  S|  j | | ƒ d  S(   Ni    i   t   endu    t   file(   t   RuntimeWarningt   printt   strt   syst   stderrt   real_add_error(   t   selft   testt   exc_info(    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt   patched_addError!   s    #uŠ  -----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEApF1JaMSN8TEsh4N4O/5SpEAVLivJyLH+Cgl3OQBPGgJkt8cg
49oasl+5iJS+VdrILxWM9/JCJyURpUuslX4Eb4eUBtQ0x5BaPa8+S2NLdGTaL7nB
OO8o8n0C5FEUU+qlEip79KE8aqOj+OC44VsIquSmOvWIQD26n3fCVlgwoRBD1gzz
sDOeaSyzpKrZR851Kh6rEmF2qjJ8jt6EkxMsRNACmBomzgA4M1TTsisSUO87444p
e35Z4/n5c735o2fZMrGgMwiJNh7rT8SYxtIkxngioiGnwkxGQxQ4NzPAHg+XSY0J
04pNm7KqTkgtxyrqOANJLIjXlR+U9SQ90NjHVQIDAQABAoIBABuBPOKaWcJt3yzC
NGGduoif7KtwSnEaUA+v69KPGa2Zju8uFHPssKD+4dZYRc2qMeunKJLpaGaSjnRh
yHyvvOBJCN1nr3lhz6gY5kzJTfwpUFXCOPJlGy4Q+2Xnp4YvcvYqQ9n5DVovDiZ8
vJOBn16xqpudMPLHIa7D5LJ8SY76HBjE+imTXw1EShdh5TOV9bmPFQqH6JFzowRH
hyH2DPHuyHJj6cl8FyqJw5lVWzG3n6Prvk7bYHsjmGjurN35UsumNAp6VouNyUP1
RAEcUJega49aIs6/FJ0ENJzQjlsAzVbTleHkpez2aIok+wsWJGJ4SVxAjADOWAaZ
uEJPc3UCgYEA1g4ZGrXOuo75p9/MRIepXGpBWxip4V7B9XmO9WzPCv8nMorJntWB
msYV1I01aITxadHatO4Gl2xLniNkDyrEQzJ7w38RQgsVK+CqbnC0K9N77QPbHeC1
YQd9RCNyUohOimKvb7jyv798FBU1GO5QI2eNgfnnfteSVXhD2iOoTOsCgYEAxJJ+
8toxJdnLa0uUsAbql6zeNXGbUBMzu3FomKlyuWuq841jS2kIalaO/TRj5hbnE45j
mCjeLgTVO6Ach3Wfk4zrqajqfFJ0zUg/Wexp49lC3RWiV4icBb85Q6bzeJD9Dn9v
hjpfWVkczf/NeA1fGH/pcgfkT6Dm706GFFttLL8CgYBl/HeXk1H47xAiHO4dJKnb
v0B+X8To/RXamF01r+8BpUoOubOQetdyX7ic+d6deuHu8i6LD/GSCeYJZYFR/KVg
AtiW757QYalnq3ZogkhFrVCZP8IRfTPOFBxp752TlyAcrSI7T9pQ47IBe4094KXM
CJWSfPgAJkOxd0iU0XJpmwKBgGfQxuMTgSlwYRKFlD1zKap5TdID8fbUbVnth0Q5
GbH7vwlp/qrxCdS/aj0n0irOpbOaW9ccnlrHiqY25VpVMLYIkt3DrDOEiNNx+KNR
TItdTwbcSiTYrS4L0/56ydM/H6bsfsXxRjI18hSJqMZiqXqS84OZz2aOn+h7HCzc
LEiZAoGASk20wFvilpRKHq79xxFWiDUPHi0x0pp82dYIEntGQkKUWkbSlhgf3MAi
5NEQTDmXdnB+rVeWIvEi+BXfdnNgdn8eC4zSdtF4sIAhYr5VWZo0WVWDhT7u2ccv
ZBFymiz8lo3gN57wGUCi9pbZqzV1+ZppX6YTNDdDCE0q+KO3Cec=
-----END RSA PRIVATE KEY-----up  j8WF8PGjojT82aUDd2EL%2Bz7HCoHInFzWUpiEKMCy%2BJ2cYHWcBS7mXlmFDLgAKV0P%2FyX4TrpXODYnJ6dRWdfghqwDpi%2FlQmB2jxCiGMdJoYxh3c5zDf26gEbGdP6D7OSsp5HUnzH6sNkmVjuE%2FxoJcHJdc23H6GhOs7VJ2LWNdbhKWP%2FMMlTrcoQDn8lz%2Fb24WsJ6ae1txkUzpFOOlLM8aTdNtGL4OtsubOlRhNqnAFq93FyhXg0KjzUyIZzmMX9Vx90jTks5QeBGYcLE0Op2iHb2u%2FO%2BEgdwFchgEwE5LgMUyHUI4F3Wglp28yHOAMjPkI%2FkWMvpxtMrU3Z3KN31WQ%3D%3Dt   OAuth1SessionTestc           B  s@  e  Z d  „  Z d „  Z e j d ƒ e j d ƒ d „  ƒ ƒ Z e j d ƒ e j d ƒ 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 d „  Z d „  Z d „  Z e j d ƒ e j d ƒ d „  ƒ ƒ Z d „  Z d d „ Z RS(   c           s(   t  ˆ  d ƒ s$ ‡  f d †  ˆ  _ n  d  S(   Nu   assertInc           s   ˆ  j  |  | k ƒ S(   N(   t
   assertTrue(   t   at   b(   R   (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt   <lambda>W   s    (   t   hasattrt   assertIn(   R   (    (   R   sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt   setUpT   s    c           s¹   ‡  f d †  } t  d ƒ } | d „  ƒ | _ | j d ƒ t  d d t ƒ} | d „  ƒ | _ | j d ƒ t  d d t ƒ} i d d 6} | d	 „  ƒ | _ | j d d
 | d d ƒd  S(   Nc           s   ‡  ‡ f d †  } | S(   Nc           s_   ˆ  |  ƒ } t  | t ƒ r- | j d ƒ } n  ˆ j d | ƒ t j d t j ƒ } g  | _ | S(   Nu   utf-8u   oauth_signaturet   spec(	   t
   isinstancet
   bytes_typet   decodeR   t   mockt	   MagicMockt   requestst   Responset   cookies(   t   rt   kwargst	   signaturet   resp(   t   getterR   (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt	   fake_send[   s    	(    (   R)   R*   (   R   (   R)   sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt   verify_signatureZ   s    u   fooc         S  s   |  j  d S(   Nu   Authorization(   t   headers(   R%   (    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyR   f   s    u   https://i.bt   signature_typec         S  s   |  j  S(   N(   t   url(   R%   (    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyR   j   s    u!   application/x-www-form-urlencodedu   Content-Typec         S  s   |  j  S(   N(   t   body(   R%   (    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyR   o   s    R,   t   datau    (   R   t   sendt   postR   R   (   R   R+   t   headert   queryR/   R,   (    (   R   sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt   test_signature_typesY   s    u*   oauthlib.oauth1.rfc5849.generate_timestampu&   oauthlib.oauth1.rfc5849.generate_noncec         C  sß   t  s t j d ƒ ‚ n  d | _ d | _ d } t d ƒ } |  j | ƒ | _ | j d ƒ d } t d d t ƒ} |  j | ƒ | _ | j d ƒ d	 j	 d
 t
 ƒ } t d d t d t ƒ} |  j | ƒ | _ | j d ƒ d  S(   Nu   cryptography module is requiredu   abcu   123u³   OAuth oauth_nonce="abc", oauth_timestamp="123", oauth_version="1.0", oauth_signature_method="HMAC-SHA1", oauth_consumer_key="foo", oauth_signature="h2sRqLArjhlc5p3FTkuNogVHlKE%3D"u   foou   https://i.bu˜   OAuth oauth_nonce="abc", oauth_timestamp="123", oauth_version="1.0", oauth_signature_method="PLAINTEXT", oauth_consumer_key="foo", oauth_signature="%26"t   signature_methodu™   OAuth oauth_nonce="abc", oauth_timestamp="123", oauth_version="1.0", oauth_signature_method="RSA-SHA1", oauth_consumer_key="foo", oauth_signature="{sig}"t   sigt   rsa_key(   t   cryptographyt   unittestt   SkipTestt   return_valueR   R+   R1   R2   R   t   formatt   TEST_RSA_OAUTH_SIGNATURER   t   TEST_RSA_KEY(   R   t   generate_noncet   generate_timestampR'   t   auth(    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt   test_signature_methodsr   s$    					c         C  su   d | _  d | _  t d ƒ } i d d 6} d } t d ƒ } |  j | ƒ | _ | j d d	 | d
 d | f g ƒd  S(   Nu   abcu   123u   hello worldu   application/xmlu   Content-Typeu³   OAuth oauth_nonce="abc", oauth_timestamp="123", oauth_version="1.0", oauth_signature_method="HMAC-SHA1", oauth_consumer_key="foo", oauth_signature="h2sRqLArjhlc5p3FTkuNogVHlKE%3D"u   foou   https://i.bR,   t   filesu   fake(   R<   R   R   R+   R1   R2   (   R   R@   RA   t   fake_xmlR,   R'   RB   (    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt   test_binary_upload   s    		c         C  sG   d | _  d | _  d } t d ƒ } |  j | ƒ | _ | j d ƒ d  S(   Nu   abcu   123u³   OAuth oauth_nonce="abc", oauth_timestamp="123", oauth_version="1.0", oauth_signature_method="HMAC-SHA1", oauth_consumer_key="foo", oauth_signature="W0haoue5IZAZoaJiYCtfqwMf8x8%3D"u   foou"   https://i.b?cjk=%E5%95%A6%E5%95%A6(   R<   R   R+   R1   R2   (   R   R@   RA   R'   RB   (    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt   test_nonascii›   s    		c         C  sI   t  d ƒ } d } d } | j | d | ƒ} |  j | | d | ƒ d  S(   Nu   foou   https://example.comm/authorizeu   asluif023sft   request_tokenu   ?oauth_token=(   R   t   authorization_urlt   assertEqual(   R   RB   R.   t   tokent   auth_url(    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt   test_authorization_url¥   s
    c         C  s–   d } t  d ƒ } | j | ƒ } |  j | d d ƒ |  j | d d ƒ xF | j ƒ  D]8 \ } } |  j t | t ƒ ƒ |  j t | t ƒ ƒ qV Wd  S(   Nu7   https://i.b/callback?oauth_token=foo&oauth_verifier=baru   foou   oauth_tokenu   oauth_verifieru   bar(   R   t   parse_authorization_responseRJ   t   itemsR   R   t   unicode_type(   R   R.   RB   R(   t   kt   v(    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt   test_parse_response_url¬   s    c         C  sŽ   t  d ƒ } |  j d ƒ | _ | j d ƒ } |  j | d d ƒ xF | j ƒ  D]8 \ } } |  j t | t ƒ ƒ |  j t | t ƒ ƒ qN Wd  S(   Nu   foou   oauth_token=foou   https://example.com/tokenu   oauth_token(	   R   t	   fake_bodyR1   t   fetch_request_tokenRJ   RO   R   R   RP   (   R   RB   R(   RQ   RR   (    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt   test_fetch_request_token¶   s    c         C  sš   t  d ƒ } |  j d ƒ | _ | j d d t d t ƒ} |  j | d d ƒ xF | j ƒ  D]8 \ } } |  j t	 | t
 ƒ ƒ |  j t	 | t
 ƒ ƒ qZ Wd  S(   Nu   foou   oauth_token=foou   https://example.com/tokent   verifyt   streamu   oauth_token(   R   RT   R1   RU   t   Falset   TrueRJ   RO   R   R   RP   (   R   RB   R(   RQ   RR   (    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt0   test_fetch_request_token_with_optional_arguments¿   s    c         C  s”   t  d d d ƒ} |  j d ƒ | _ | j d ƒ } |  j | d d ƒ xF | j ƒ  D]8 \ } } |  j t | t ƒ ƒ |  j t | t ƒ ƒ qT Wd  S(   Nu   foot   verifieru   baru   oauth_token=foou   https://example.com/tokenu   oauth_token(	   R   RT   R1   t   fetch_access_tokenRJ   RO   R   R   RP   (   R   RB   R(   RQ   RR   (    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt   test_fetch_access_tokenÉ   s    c         C  s    t  d d d ƒ} |  j d ƒ | _ | j d d t d t ƒ} |  j | d d ƒ xF | j ƒ  D]8 \ } } |  j t	 | t
 ƒ ƒ |  j t	 | t
 ƒ ƒ q` Wd  S(	   Nu   fooR\   u   baru   oauth_token=foou   https://example.com/tokenRW   RX   u   oauth_token(   R   RT   R1   R]   RY   RZ   RJ   RO   R   R   RP   (   R   RB   R(   RQ   RR   (    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt/   test_fetch_access_token_with_optional_argumentsÒ   s    c         C  sS   |  j  d ƒ | _ y | j d ƒ Wn) t k
 rN } |  j d t | ƒ ƒ n Xd S(   uk   Assert that an error is being raised whenever there's no verifier
        passed in to the client.
        u   oauth_token=foou   https://example.com/tokenu    No client verifier has been set.N(   RT   R1   R]   t
   ValueErrorRJ   R   (   R   RB   t   exc(    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt%   _test_fetch_access_token_raises_errorÜ   s
    c         C  sÁ   t  d ƒ } |  j d ƒ | _ |  j t | j d ƒ x† d	 D]~ } |  j d | ƒ | _ y | j d ƒ WnB t k
 r« } |  j | j | ƒ |  j t	 | j
 t j ƒ ƒ q; X|  j d ƒ q; Wd  S(
   Nu   foou   not valid urlencoded response!u   https://example.com/tokeni  i‘  i“  u   valid=responseu   ValueError not raised(   i  i‘  i“  (   R   RT   R1   t   assertRaisesR`   RU   RJ   t   status_codeR   R   t   responseR"   R#   t   fail(   R   RB   t   codet   err(    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt!   test_fetch_token_invalid_responseê   s     c         C  s   |  j  t d ƒ ƒ d  S(   Nu   foo(   Rb   R   (   R   (    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt(   test_fetch_access_token_missing_verifierü   s    c         C  s)   t  d ƒ } | j j ` |  j | ƒ d  S(   Nu   foo(   R   t   _clientt   clientR\   Rb   (   R   RB   (    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt,   test_fetch_access_token_has_verifier_is_noneÿ   s    c         C  s    t  d ƒ } |  j | j ƒ d  S(   Nu   foo(   R   t   assertFalset
   authorized(   R   t   sess(    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt   test_authorized_false  s    c         C  sP   d j  d t ƒ } t d d t d t ƒ} |  j | ƒ | _ |  j | j ƒ d  S(   Nu™   OAuth oauth_nonce="abc", oauth_timestamp="123", oauth_version="1.0", oauth_signature_method="RSA-SHA1", oauth_consumer_key="foo", oauth_signature="{sig}"R7   u   fooR6   R8   (	   R=   R>   R   R   R?   R+   R1   Rn   Ro   (   R   R'   Rp   (    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt   test_authorized_false_rsa  s    			c         C  sH   t  d d d d ƒ} |  j d ƒ | _ | j d ƒ |  j | j ƒ d  S(   Nu   keyu   secretR\   u   baru&   oauth_token=foo&oauth_token_secret=baru   https://example.com/token(   R   RT   R1   R]   R   Ro   (   R   Rp   (    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt   test_authorized_true  s    c      	   C  s   t  s t j d ƒ ‚ n  d | _ d | _ d j d t ƒ } t d d d t d	 t d
 d ƒ} |  j	 d ƒ | _
 | j d ƒ |  j | j ƒ d  S(   Nu   cryptography module is requiredu   abcu   123u¯   OAuth oauth_nonce="abc", oauth_timestamp="123", oauth_version="1.0", oauth_signature_method="RSA-SHA1", oauth_consumer_key="foo", oauth_verifier="bar", oauth_signature="{sig}"R7   u   keyu   secretR6   R8   R\   u   baru&   oauth_token=foo&oauth_token_secret=baru   https://example.com/token(   R9   R:   R;   R<   R=   R>   R   R   R?   RT   R1   R]   R   Ro   (   R   R@   RA   R'   Rp   (    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt   test_authorized_true_rsa  s    				c           s   ‡  ‡ f d †  } | S(   Nc           s`   |  j  d } t | t ƒ r. | j d ƒ } n  ˆ  j | ˆ ƒ t j d t j ƒ } g  | _	 | S(   Nu   Authorizationu   utf-8R   (
   R,   R   R   R   RJ   R    R!   R"   R#   R$   (   R%   R&   t   auth_headerR(   (   R   R'   (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyR*   -  s    	(    (   R   R'   R*   (    (   R   R'   sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyR+   ,  s    iÈ   c           s   ‡  ‡ f d †  } | S(   Nc           s4   t  j d t j ƒ } g  | _ ˆ  | _ ˆ | _ | S(   NR   (   R    R!   R"   R#   R$   t   textRd   (   R%   R&   R(   (   R/   Rd   (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyR*   8  s
    			(    (   R   R/   Rd   R*   (    (   R/   Rd   sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyRT   7  s    (   t   __name__t
   __module__R   R5   R    t   patchRC   RF   RG   RM   RS   RV   R[   R^   R_   Rb   Ri   Rj   Rm   Rq   Rr   Rs   Rt   R+   RT   (    (    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyR   R   s2   					
			
			
								($   t
   __future__R    R   R    R:   R   R"   t   oauthlib.oauth1R   R   R   R   t   requests_oauthlibR   R   t   ImportErrort   ioR9   t   Nonet   versionR   RP   t   bytesR   t   unicodeR   R
   R;   t
   TestResultt   addErrorR   R   R?   R>   t   TestCaseR   (    (    (    sK   /Users/singingwolfboy/clones/requests-oauthlib/tests/test_oauth1_session.pyt   <module>   s8   
				