
;V8                 @   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 Yn Xy d  d l Z Wn e k
 r d Z Yn Xe j d  d k re Z e Z n e Z e Z e e d  sVe e _ e j j e j _ d	 d
   Z e e j _ d Z d Z  Gd d   d e j!  Z" d S)    )unicode_literalsprint_functionN)SIGNATURE_TYPE_QUERYSIGNATURE_TYPE_BODY)SIGNATURE_RSASIGNATURE_PLAINTEXT)OAuth1Session)StringIO3SkipTestc             C   sK   | d t  k r7 t t | d  d d d t j d  S|  j | |  d  S)Nr      end file)RuntimeWarningprintstrsysstderrreal_add_error)selftestexc_info r   X/Users/cory/Documents/Python/requests_org/requests-oauthlib/tests/test_oauth1_session.pypatched_addError!   s    #r   a  -----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-----ap  j8WF8PGjojT82aUDd2EL%2Bz7HCoHInFzWUpiEKMCy%2BJ2cYHWcBS7mXlmFDLgAKV0P%2FyX4TrpXODYnJ6dRWdfghqwDpi%2FlQmB2jxCiGMdJoYxh3c5zDf26gEbGdP6D7OSsp5HUnzH6sNkmVjuE%2FxoJcHJdc23H6GhOs7VJ2LWNdbhKWP%2FMMlTrcoQDn8lz%2Fb24WsJ6ae1txkUzpFOOlLM8aTdNtGL4OtsubOlRhNqnAFq93FyhXg0KjzUyIZzmMX9Vx90jTks5QeBGYcLE0Op2iHb2u%2FO%2BEgdwFchgEwE5LgMUyHUI4F3Wglp28yHOAMjPkI%2FkWMvpxtMrU3Z3KN31WQ%3D%3Dc               @   s  e  Z d  Z d d   Z d d   Z e j d  e j d  d d     Z e j d  e j d  d	 d
     Z e j d  e j d  d d     Z	 d d   Z
 d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d    Z d! d"   Z d# d$   Z d% d&   Z e j d  e j d  d' d(     Z d) d*   Z d+ d, d-  Z d. S)/OAuth1SessionTestc                s(   t    d  s$   f d d     _ d  S)NassertInc                s     j  |  | k  S)N)
assertTrue)ab)r   r   r   <lambda>W   s    z)OAuth1SessionTest.setUp.<locals>.<lambda>)hasattrr   )r   r   )r   r   setUpT   s    zOAuth1SessionTest.setUpc                s     f d d   } t  d  } | d d    | _ | j d  t  d d t } | d d    | _ | j d  t  d d t } d	 d
 i } | d d    | _ | j d d | d d d  S)Nc                s      f d d   } | S)Nc                s\     |   } t  | t  r* | j d  }  j d |  t j d t j  } g  | _ | S)Nzutf-8oauth_signaturespec)	
isinstance
bytes_typedecoder   mock	MagicMockrequestsResponsecookies)rkwargs	signatureresp)getterr   r   r   	fake_send[   s    	zSOAuth1SessionTest.test_signature_types.<locals>.verify_signature.<locals>.fake_sendr   )r2   r3   )r   )r2   r   verify_signatureZ   s    z@OAuth1SessionTest.test_signature_types.<locals>.verify_signaturefooc             S   s   |  j  d S)NAuthorization)headers)r.   r   r   r   r!   f   s    z8OAuth1SessionTest.test_signature_types.<locals>.<lambda>zhttps://i.bsignature_typec             S   s   |  j  S)N)url)r.   r   r   r   r!   j   s    zContent-Typez!application/x-www-form-urlencodedc             S   s   |  j  S)N)body)r.   r   r   r   r!   o   s    r7   data )r   sendpostr   r   )r   r4   headerqueryr:   r7   r   )r   r   test_signature_typesY   s    z&OAuth1SessionTest.test_signature_typesz*oauthlib.oauth1.rfc5849.generate_timestampz&oauthlib.oauth1.rfc5849.generate_noncec             C   s   t  s t j d   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)Nzcryptography module is requiredabc123zOAuth oauth_nonce="abc", oauth_timestamp="123", oauth_version="1.0", oauth_signature_method="HMAC-SHA1", oauth_consumer_key="foo", oauth_signature="h2sRqLArjhlc5p3FTkuNogVHlKE%3D"r5   zhttps://i.bzOAuth oauth_nonce="abc", oauth_timestamp="123", oauth_version="1.0", oauth_signature_method="PLAINTEXT", oauth_consumer_key="foo", oauth_signature="%26"signature_methodzOAuth oauth_nonce="abc", oauth_timestamp="123", oauth_version="1.0", oauth_signature_method="RSA-SHA1", oauth_consumer_key="foo", oauth_signature="{sig}"sigrsa_key)cryptographyunittestr   return_valuer   r4   r=   r>   r   formatTEST_RSA_OAUTH_SIGNATUREr   TEST_RSA_KEY)r   generate_noncegenerate_timestampr0   authr   r   r   test_signature_methodsr   s$    					z(OAuth1SessionTest.test_signature_methodsc             C   st   d | _  d | _  t d  } d d i } d } t d  } |  j |  | _ | j d d	 | d
 d | f g d  S)NrB   rC   zhello worldzContent-Typezapplication/xmlzOAuth oauth_nonce="abc", oauth_timestamp="123", oauth_version="1.0", oauth_signature_method="HMAC-SHA1", oauth_consumer_key="foo", oauth_signature="h2sRqLArjhlc5p3FTkuNogVHlKE%3D"r5   zhttps://i.br7   filesZfake)rI   r	   r   r4   r=   r>   )r   rM   rN   Zfake_xmlr7   r0   rO   r   r   r   test_binary_upload   s    		z$OAuth1SessionTest.test_binary_uploadc             C   sG   d | _  d | _  d } t d  } |  j |  | _ | j d  d  S)NrB   rC   zOAuth oauth_nonce="abc", oauth_timestamp="123", oauth_version="1.0", oauth_signature_method="HMAC-SHA1", oauth_consumer_key="foo", oauth_signature="W0haoue5IZAZoaJiYCtfqwMf8x8%3D"r5   z"https://i.b?cjk=%E5%95%A6%E5%95%A6)rI   r   r4   r=   r>   )r   rM   rN   r0   rO   r   r   r   test_nonascii   s    		zOAuth1SessionTest.test_nonasciic             C   sI   t  d  } d } d } | j | d | } |  j | | d |  d  S)Nr5   zhttps://example.comm/authorizeZasluif023sfrequest_tokenz?oauth_token=)r   authorization_urlassertEqual)r   rO   r9   tokenauth_urlr   r   r   test_authorization_url   s
    z(OAuth1SessionTest.test_authorization_urlc             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)Nz7https://i.b/callback?oauth_token=foo&oauth_verifier=barr5   oauth_tokenoauth_verifierbar)r   parse_authorization_responserV   itemsr   r&   unicode_type)r   r9   rO   r1   kvr   r   r   test_parse_response_url   s    z)OAuth1SessionTest.test_parse_response_urlc             C   s   t  d  } |  j d  | _ | j d  } |  j | d d  xF | j   D]8 \ } } |  j t | t   |  j t | t   qN Wd  S)Nr5   zoauth_token=foozhttps://example.com/tokenrZ   )	r   	fake_bodyr=   fetch_request_tokenrV   r^   r   r&   r_   )r   rO   r1   r`   ra   r   r   r   test_fetch_request_token   s    z*OAuth1SessionTest.test_fetch_request_tokenc             C   s   t  d  } |  j d  | _ | j d d d d d } |  j | d d  xF | j   D]8 \ } } |  j t | t   |  j t | t   qZ Wd  S)	Nr5   zoauth_token=foozhttps://example.com/tokenverifyFstreamTrZ   )	r   rc   r=   rd   rV   r^   r   r&   r_   )r   rO   r1   r`   ra   r   r   r   0test_fetch_request_token_with_optional_arguments   s    zBOAuth1SessionTest.test_fetch_request_token_with_optional_argumentsc             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)Nr5   verifierr\   zoauth_token=foozhttps://example.com/tokenrZ   )	r   rc   r=   fetch_access_tokenrV   r^   r   r&   r_   )r   rO   r1   r`   ra   r   r   r   test_fetch_access_token   s    z)OAuth1SessionTest.test_fetch_access_tokenc             C   s   t  d d d } |  j d  | _ | j d d d d d	 } |  j | d
 d  xF | j   D]8 \ } } |  j t | t   |  j t | t   q` Wd  S)Nr5   ri   r\   zoauth_token=foozhttps://example.com/tokenrf   Frg   TrZ   )	r   rc   r=   rj   rV   r^   r   r&   r_   )r   rO   r1   r`   ra   r   r   r   /test_fetch_access_token_with_optional_arguments   s    zAOAuth1SessionTest.test_fetch_access_token_with_optional_argumentsc             C   se   |  j  d  | _ y | j d  Wn; t k
 r` } z |  j d t |   WYd d } ~ Xn Xd S)zkAssert that an error is being raised whenever there's no verifier
        passed in to the client.
        zoauth_token=foozhttps://example.com/tokenz No client verifier has been set.N)rc   r=   rj   
ValueErrorrV   r   )r   rO   excr   r   r   %_test_fetch_access_token_raises_error   s
    z7OAuth1SessionTest._test_fetch_access_token_raises_errorc             C   s   t  d  } |  j d  | _ |  j t | j d  x d	 D] } |  j d |  | _ y | j d  WnT t k
 r } z4 |  j | j |  |  j t	 | j
 t j   WYd  d  } ~ Xq; X|  j d  q; Wd  S)
Nr5   znot valid urlencoded response!zhttps://example.com/token      zvalid=responsezValueError not raised)rp   rq   rr   )r   rc   r=   assertRaisesrm   rd   rV   status_coder   r&   responser+   r,   fail)r   rO   codeerrr   r   r   !test_fetch_token_invalid_response   s    /z3OAuth1SessionTest.test_fetch_token_invalid_responsec             C   s   |  j  t d   d  S)Nr5   )ro   r   )r   r   r   r   (test_fetch_access_token_missing_verifier   s    z:OAuth1SessionTest.test_fetch_access_token_missing_verifierc             C   s)   t  d  } | j j ` |  j |  d  S)Nr5   )r   _clientclientri   ro   )r   rO   r   r   r   ,test_fetch_access_token_has_verifier_is_none   s    z>OAuth1SessionTest.test_fetch_access_token_has_verifier_is_nonec             C   s    t  d  } |  j | j  d  S)Nr5   )r   assertFalse
authorized)r   sessr   r   r   test_authorized_false  s    z'OAuth1SessionTest.test_authorized_falsec             C   sP   d j  d t  } t d d t d t } |  j |  | _ |  j | j  d  S)NzOAuth oauth_nonce="abc", oauth_timestamp="123", oauth_version="1.0", oauth_signature_method="RSA-SHA1", oauth_consumer_key="foo", oauth_signature="{sig}"rE   r5   rD   rF   )	rJ   rK   r   r   rL   r4   r=   r~   r   )r   r0   r   r   r   r   test_authorized_false_rsa  s    			z+OAuth1SessionTest.test_authorized_false_rsac             C   sH   t  d d d d } |  j d  | _ | j d  |  j | j  d  S)Nkeysecretri   r\   z&oauth_token=foo&oauth_token_secret=barzhttps://example.com/token)r   rc   r=   rj   r   r   )r   r   r   r   r   test_authorized_true  s    z&OAuth1SessionTest.test_authorized_truec          	   C   s   t  s t j d   d | _ d | _ d j d t  } t d d d t d	 t d
 d } |  j	 d  | _
 | j d  |  j | j  d  S)Nzcryptography module is requiredrB   rC   zOAuth 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}"rE   r   r   rD   rF   ri   r\   z&oauth_token=foo&oauth_token_secret=barzhttps://example.com/token)rG   rH   r   rI   rJ   rK   r   r   rL   rc   r=   rj   r   r   )r   rM   rN   r0   r   r   r   r   test_authorized_true_rsa  s    				z*OAuth1SessionTest.test_authorized_true_rsac                s      f d d   } | S)Nc                s]   |  j  d } t | t  r+ | j d  }   j |   t j d t j  } g  | _	 | S)Nr6   zutf-8r%   )
r7   r&   r'   r(   rV   r)   r*   r+   r,   r-   )r.   r/   auth_headerr1   )r   r0   r   r   r3   -  s    	z5OAuth1SessionTest.verify_signature.<locals>.fake_sendr   )r   r0   r3   r   )r   r0   r   r4   ,  s    z"OAuth1SessionTest.verify_signature   c                s      f d d   } | S)Nc                s4   t  j d t j  } g  | _   | _  | _ | S)Nr%   )r)   r*   r+   r,   r-   textrt   )r.   r/   r1   )r:   rt   r   r   r3   8  s
    			z.OAuth1SessionTest.fake_body.<locals>.fake_sendr   )r   r:   rt   r3   r   )r:   rt   r   rc   7  s    zOAuth1SessionTest.fake_bodyN)__name__
__module____qualname__r#   rA   r)   patchrP   rR   rS   rY   rb   re   rh   rk   rl   ro   ry   rz   r}   r   r   r   r   r4   rc   r   r   r   r   r   R   s2   	
	
	
r   )#
__future__r   r   r)   rH   r   r+   oauthlib.oauth1r   r   r   r   requests_oauthlibr   r	   ImportErroriorG   versionr   r_   bytesr'   unicoder"   r   r   
TestResultaddErrorr   r   rL   rK   TestCaser   r   r   r   r   <module>   s8   			