
r;V                 @   s  d  d l  m Z y d  d l m Z Wn" e k
 rH d  d l m Z Yn Xd  d l Z d  d l Z d  d l Z y d  d l	 m	 Z	 m
 Z
 Wn( e k
 r d  d l m	 Z	 m
 Z
 Yn Xd  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 Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z d S)    )unicode_literals)TestCaseN)urlparseparse_qs)OAuth2Session)facebook_compliance_fix)linkedin_compliance_fix)mailchimp_compliance_fix)weibo_compliance_fix)slack_compliance_fixc               @   s(   e  Z d  Z d d   Z d d   Z d S)FacebookComplianceFixTestc             C   sj   t  j   } | j d d d d d d i | j   |  j | j  t d d d	 } t |  |  _ d  S)
Nz-https://graph.facebook.com/oauth/access_tokentextzaccess_token=urlencodedheaderszContent-Typez
text/plainfooredirect_urizhttps://i.b)	requests_mockMockerpoststart
addCleanupstopr   r   session)selfmockerfacebook r   Z/Users/cory/Documents/Python/requests_org/requests-oauthlib/tests/test_compliance_fixes.pysetUp   s    
zFacebookComplianceFixTest.setUpc             C   s>   |  j  j d d d d d } |  j | d d d d	 i  d  S)
Nz-https://graph.facebook.com/oauth/access_tokenclient_secretbarauthorization_responsezhttps://i.b/?code=helloaccess_token
urlencoded
token_typeBearer)r   fetch_tokenassertEqual)r   tokenr   r   r   test_fetch_access_token&   s
    		z1FacebookComplianceFixTest.test_fetch_access_tokenN)__name__
__module____qualname__r   r(   r   r   r   r   r      s   r   c               @   s4   e  Z d  Z d d   Z d d   Z d d   Z d S)LinkedInComplianceFixTestc          	   C   s   t  j   } | j d d d d i | j d d d d d d	 d
 d i | j   |  j | j  t d d d } t |  |  _ d  S)Nz/https://www.linkedin.com/uas/oauth2/accessTokenjsonr!   linkedinz+https://api.linkedin.com/v1/people/~/sharesstatus_code   Z	updateKeyzUPDATE-3346389-595113200Z	updateUrlz6https://www.linkedin.com/updates?discuss=abc&scope=xyzr   r   zhttps://i.b)	r   r   r   r   r   r   r   r   r   )r   r   r.   r   r   r   r   1   s    
zLinkedInComplianceFixTest.setUpc             C   s>   |  j  j d d d d d } |  j | d d d d	 i  d  S)
Nz/https://www.linkedin.com/uas/oauth2/accessTokenr   r   r    zhttps://i.b/?code=hellor!   r.   r#   r$   )r   r%   r&   )r   r'   r   r   r   r(   E   s
    		z1LinkedInComplianceFixTest.test_fetch_access_tokenc             C   s`   d d i |  j  _ |  j  j d  } | j j } t t |  j  } |  j | d d g  d  S)Nr!   zdummy-access-tokenz+https://api.linkedin.com/v1/people/~/sharesoauth2_access_token)	r   r'   r   requesturlr   r   queryr&   )r   responser3   r4   r   r   r   test_protected_requestM   s    		z0LinkedInComplianceFixTest.test_protected_requestN)r)   r*   r+   r   r(   r6   r   r   r   r   r,   /   s   r,   c               @   s(   e  Z d  Z d d   Z d d   Z d S)MailChimpComplianceFixTestc          	   C   sp   t  j   } | j d d d d d d d d  i | j   |  j | j  t d d	 d
 } t |  |  _ d  S)Nz(https://login.mailchimp.com/oauth2/tokenr-   r!   	mailchimp
expires_inr   scoper   r   zhttps://i.b)	r   r   r   r   r   r   r   r	   r   )r   r   r8   r   r   r   r   Y   s    
z MailChimpComplianceFixTest.setUpc             C   s   |  j  j d d d d d } t j   d } | j d  } |  j | | d d	 |  j | d
 d d d i  |  j d |  d  S)Nz(https://login.mailchimp.com/oauth2/tokenr   r   r    zhttps://i.b/?code=helloi  
expires_atplaces   r!   r8   r9   r:   )r   r%   timepopassertAlmostEqualr&   assertNotIn)r   r'   Zapprox_expires_atZactual_expires_atr   r   r   r(   e   s    		z2MailChimpComplianceFixTest.test_fetch_access_tokenN)r)   r*   r+   r   r(   r   r   r   r   r7   W   s   r7   c               @   s(   e  Z d  Z d d   Z d d   Z d S)WeiboComplianceFixTestc             C   sd   t  j   } | j d d d d i | j   |  j | j  t d d d } t |  |  _ d  S)Nz)https://api.weibo.com/oauth2/access_tokenr-   r!   weibor   r   zhttps://i.b)	r   r   r   r   r   r   r   r
   r   )r   r   rC   r   r   r   r   y   s    
zWeiboComplianceFixTest.setUpc             C   s>   |  j  j d d d d d } |  j | d d d d	 i  d  S)
Nz)https://api.weibo.com/oauth2/access_tokenr   r   r    zhttps://i.b/?code=hellor!   rC   r#   r$   )r   r%   r&   )r   r'   r   r   r   r(      s
    		z.WeiboComplianceFixTest.test_fetch_access_tokenN)r)   r*   r+   r   r(   r   r   r   r   rB   w   s   rB   c               @   sL   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d S)SlackComplianceFixTestc             C   s   t  j   } | j d d d d d d i xN d D]F } | j d	 | d
 d d d d d
 d d d d d d d d d i  q2 W| j   |  j | j  t d d d } t |  |  _	 d  S)Nz"https://slack.com/api/oauth.accessr-   r!   zxoxt-23984754863-2348975623103r:   readGETPOSTmethodr3   zhttps://slack.com/api/auth.testokTzhttps://myteam.slack.com/ZteamzMy TeamusercalZteam_idZT12345Zuser_idZU12345r   r   zhttps://i.b)zGETzPOST)
r   r   r   r2   r   r   r   r   r   r   )r   r   rH   slackr   r   r   r      s&    	
zSlackComplianceFixTest.setUpc             C   s   d d i |  j  _ |  j  j d  } | j j } t t |  j  } |  j d |  | j j	 } t |  } |  j
 | d d g  d  S)Nr!   zdummy-access-tokenzhttps://slack.com/api/auth.testr'   )r   r'   getr2   r3   r   r   r4   rA   bodyr&   )r   r5   r3   r4   rN   datar   r   r   r6      s    		z-SlackComplianceFixTest.test_protected_requestc             C   s   d d i |  j  _ |  j  j d d d d i } | j j } t t |  j  } |  j d |  | j j	 } t |  } |  j
 | d d g  d  S)Nr!   zdummy-access-tokenzhttps://slack.com/api/auth.testrO   r'   zdifferent-token)r   r'   rM   r2   r3   r   r   r4   rA   rN   r&   )r   r5   r3   r4   rN   rO   r   r   r   )test_protected_request_override_token_get   s    	z@SlackComplianceFixTest.test_protected_request_override_token_getc             C   s   d d i |  j  _ |  j  j d d d d i } | j j } t t |  j  } |  j d |  | j j	 } t |  } |  j
 | d d g  d  S)Nr!   zdummy-access-tokenzhttps://slack.com/api/auth.testrO   r'   zdifferent-token)r   r'   r   r2   r3   r   r   r4   rA   rN   r&   )r   r5   r3   r4   rN   rO   r   r   r   *test_protected_request_override_token_post   s    	zASlackComplianceFixTest.test_protected_request_override_token_postc             C   ss   d d i |  j  _ |  j  j d  } | j j } t t |  j  } |  j | d d g  |  j	 | j j
  d  S)Nr!   zdummy-access-tokenz5https://slack.com/api/auth.test?token=different-tokenr'   zdifferent-token)r   r'   rM   r2   r3   r   r   r4   r&   assertIsNonerN   )r   r5   r3   r4   r   r   r   )test_protected_request_override_token_url   s    		z@SlackComplianceFixTest.test_protected_request_override_token_urlN)r)   r*   r+   r   r6   rP   rQ   rS   r   r   r   r   rD      s
   rD   )
__future__r   Z	unittest2r   ImportErrorunittestrequestsr   r>   r   r   urllib.parserequests_oauthlibr   Z"requests_oauthlib.compliance_fixesr   r   r	   r
   r   r   r,   r7   rB   rD   r   r   r   r   <module>   s,   ( 