
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   sk   t  j   } | j d d d d i d d 6| j   |  j | j  t d d d	 } t |  |  _ d  S)
Nz-https://graph.facebook.com/oauth/access_tokentextzaccess_token=urlencodedheadersz
text/plainzContent-Type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 | i d d 6d d	 6 d  S)
Nz-https://graph.facebook.com/oauth/access_tokenclient_secretbarauthorization_responsezhttps://i.b/?code=hello
urlencodedaccess_tokenBearer
token_type)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 i d d 6| j d d d d i d d	 6d
 d 6| j   |  j | j  t d d d } t |  |  _ d  S)Nz/https://www.linkedin.com/uas/oauth2/accessTokenjsonlinkedinr"   z+https://api.linkedin.com/v1/people/~/sharesstatus_code   zUPDATE-3346389-595113200Z	updateKeyz6https://www.linkedin.com/updates?discuss=abc&scope=xyzZ	updateUrlr   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 | i d d 6d d	 6 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   sa   i d d 6|  j  _ |  j  j d  } | j j } t t |  j  } |  j | d d g  d  S)Nzdummy-access-tokenr"   z+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   ss   t  j   } | j d d i d d 6d d 6d  d 6| j   |  j | j  t d d	 d
 } t |  |  _ d  S)Nz(https://login.mailchimp.com/oauth2/tokenr-   	mailchimpr"   r   
expires_in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 | i d
 d 6d d 6 |  j d |  d  S)Nz(https://login.mailchimp.com/oauth2/tokenr   r   r    zhttps://i.b/?code=helloi  
expires_atplaces   r8   r"   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   se   t  j   } | j d d i d d 6| j   |  j | j  t d d d } t |  |  _ d  S)Nz)https://api.weibo.com/oauth2/access_tokenr-   weibor"   r   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 | i d d 6d d	 6 d  S)
Nz)https://api.weibo.com/oauth2/access_tokenr   r   r    zhttps://i.b/?code=hellorC   r"   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 i d d 6d d 6xT d D]L } | j d	 | d
 d d i d d 6d d
 6d d 6d d 6d d 6d d 6 q4 W| j   |  j | j  t d d d } t |  |  _	 d  S)Nz"https://slack.com/api/oauth.accessr-   zxoxt-23984754863-2348975623103r"   readr:   GETPOSTmethodr3   zhttps://slack.com/api/auth.testTokzhttps://myteam.slack.com/zMy TeamZteamcaluserZT12345Zteam_idZU12345Zuser_idr   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   i d d 6|  j  _ |  j  j d  } | j j } t t |  j  } |  j d |  | j j	 } t |  } |  j
 | d d g  d  S)Nzdummy-access-tokenr"   z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   i d d 6|  j  _ |  j  j d d i d d 6} | j j } t t |  j  } |  j d |  | j j	 } t |  } |  j
 | d d g  d  S)Nzdummy-access-tokenr"   zhttps://slack.com/api/auth.testrO   zdifferent-tokenr'   )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   i d d 6|  j  _ |  j  j d d i d d 6} | j j } t t |  j  } |  j d |  | j j	 } t |  } |  j
 | d d g  d  S)Nzdummy-access-tokenr"   zhttps://slack.com/api/auth.testrO   zdifferent-tokenr'   )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   st   i d d 6|  j  _ |  j  j d  } | j j } t t |  j  } |  j | d d g  |  j	 | j j
  d  S)Nzdummy-access-tokenr"   z5https://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,   ( 