ó
O'—^c           @  s¢  d  d l  m Z d  d l Z y d  d l j Z Wn e k
 rN d  d l Z n Xd  d l m Z d  d l	 m
 Z
 m Z d  d l m Z d  d l m Z d d l m Z 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 d d l m Z d d l m  Z  e ƒ  Z! e ƒ  Z" d e f d „  ƒ  YZ# d e  e
 f d „  ƒ  YZ$ d e$ f d „  ƒ  YZ% d e$ f d „  ƒ  YZ& d e$ f d „  ƒ  YZ' d S(   iÿÿÿÿ(   t   unicode_literalsN(   t   reverse(   t   TestCaset   RequestFactory(   t   View(   t   BackendApplicationServeri   (   t   get_application_modelt   AccessToken(   t   OAuthLibCore(   t   OAuth2Validator(   t   oauth2_settings(   t   ProtectedResourceView(   t   OAuthLibMixin(   t   get_user_modeli   (   t   TestCaseUtilst   ResourceViewc           B  s   e  Z d  „  Z RS(   c         O  s   d S(   Nu   This is a protected resource(    (   t   selft   requestt   argst   kwargs(    (    sN   /tmp/pip-unpacked-wheel-ndW12l/oauth2_provider/tests/test_client_credential.pyt   get    s    (   t   __name__t
   __module__R   (    (    (    sN   /tmp/pip-unpacked-wheel-ndW12l/oauth2_provider/tests/test_client_credential.pyR      s   t   BaseTestc           B  s   e  Z d  „  Z d „  Z RS(   c      	   C  sž   t  ƒ  |  _ t j j d d d ƒ |  _ t j j d d d ƒ |  _ t d d d |  j d	 t j d
 t j	 ƒ |  _
 |  j
 j ƒ  d d g t _ d d g t _ d  S(   Nu	   test_useru   test@user.comu   123456u   dev_useru   dev@user.comt   nameu   test_client_credentials_appt   usert   client_typet   authorization_grant_typeu   readu   write(   R   t   factoryt	   UserModelt   objectst   create_usert	   test_usert   dev_usert   Applicationt   CLIENT_PUBLICt   GRANT_CLIENT_CREDENTIALSt   applicationt   saveR
   t   _SCOPESt   _DEFAULT_SCOPES(   R   (    (    sN   /tmp/pip-unpacked-wheel-ndW12l/oauth2_provider/tests/test_client_credential.pyt   setUp%   s    		c         C  s+   |  j  j ƒ  |  j j ƒ  |  j j ƒ  d  S(   N(   R%   t   deleteR    R!   (   R   (    (    sN   /tmp/pip-unpacked-wheel-ndW12l/oauth2_provider/tests/test_client_credential.pyt   tearDown5   s    (   R   R   R)   R+   (    (    (    sN   /tmp/pip-unpacked-wheel-ndW12l/oauth2_provider/tests/test_client_credential.pyR   $   s   	t   TestClientCredentialc           B  s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C  sâ   i d d 6} |  j  |  j j |  j j ƒ } |  j j t d ƒ d | | } |  j | j d ƒ t	 j
 | j j d ƒ ƒ } | d } i d | d	 6} |  j j d
 |  } |  j | _ t j ƒ  } | | ƒ } |  j | d ƒ d S(   uF   
        Request an access token using Client Credential Flow
        u   client_credentialsu
   grant_typeu   oauth2_provider:tokent   dataiÈ   u   utf-8u   access_tokenu   Bearer u   HTTP_AUTHORIZATIONu   /fake-resourceu   This is a protected resourceN(   t   get_basic_auth_headerR%   t	   client_idt   client_secrett   clientt   postR   t   assertEqualt   status_codet   jsont   loadst   contentt   decodeR   R   R    R   R   t   as_view(   R   t   token_request_datat   auth_headerst   responseR7   t   access_tokenR   t   view(    (    sN   /tmp/pip-unpacked-wheel-ndW12l/oauth2_provider/tests/test_client_credential.pyt%   test_client_credential_access_allowed<   s    
!
c         C  sŽ   i d d 6} |  j  |  j j |  j j ƒ } |  j j t d ƒ d | | } |  j | j d ƒ t	 j
 | j j d ƒ ƒ } |  j d | ƒ d  S(   Nu   client_credentialsu
   grant_typeu   oauth2_provider:tokenR-   iÈ   u   utf-8u   refresh_token(   R.   R%   R/   R0   R1   R2   R   R3   R4   R5   R6   R7   R8   t   assertNotIn(   R   R:   R;   R<   R7   (    (    sN   /tmp/pip-unpacked-wheel-ndW12l/oauth2_provider/tests/test_client_credential.pyt3   test_client_credential_does_not_issue_refresh_tokenV   s    
!c         C  s§   i d d 6} |  j  |  j j |  j j ƒ } |  j j t d ƒ d | | } |  j | j d ƒ t	 j
 | j j d ƒ ƒ } t j j d | d ƒ } |  j | j ƒ d  S(	   Nu   client_credentialsu
   grant_typeu   oauth2_provider:tokenR-   iÈ   u   utf-8t   tokenu   access_token(   R.   R%   R/   R0   R1   R2   R   R3   R4   R5   R6   R7   R8   R   R   R   t   assertIsNoneR   (   R   R:   R;   R<   R7   R=   (    (    sN   /tmp/pip-unpacked-wheel-ndW12l/oauth2_provider/tests/test_client_credential.pyt3   test_client_credential_user_is_none_on_access_tokenb   s    !(   R   R   R?   RA   RD   (    (    (    sN   /tmp/pip-unpacked-wheel-ndW12l/oauth2_provider/tests/test_client_credential.pyR,   ;   s   		t   TestExtendedRequestc           B  s    e  Z e d  „  ƒ Z d „  Z RS(   c         C  s#   t  ƒ  |  _ t t |  ƒ j ƒ  d  S(   N(   R   t   request_factoryt   superRE   t
   setUpClass(   t   cls(    (    sN   /tmp/pip-unpacked-wheel-ndW12l/oauth2_provider/tests/test_client_credential.pyRH   o   s    c         C  sP  d t  t f d „  ƒ  Y} i d d 6} |  j |  j j |  j j ƒ } |  j j t d ƒ d | | } |  j	 | j
 d ƒ t j | j j d ƒ ƒ } | d	 } i d
 | d 6} |  j j d |  } d | _ | ƒ  } |  j | j ƒ  t ƒ | j | ƒ \ }	 }
 |  j |	 ƒ |  j |
 j ƒ |  j	 |
 j |  j ƒ |  j	 |
 j d d g ƒ d  S(   Nt   TestViewc           B  s#   e  Z e Z e Z e Z d  „  Z RS(   c         S  s
   d d g S(   Nu   readu   write(    (   R   (    (    sN   /tmp/pip-unpacked-wheel-ndW12l/oauth2_provider/tests/test_client_credential.pyt
   get_scopesz   s    (	   R   R   R   t   server_classR	   t   validator_classR   t   oauthlib_backend_classRK   (    (    (    sN   /tmp/pip-unpacked-wheel-ndW12l/oauth2_provider/tests/test_client_credential.pyRJ   u   s   u   client_credentialsu
   grant_typeu   oauth2_provider:tokenR-   iÈ   u   utf-8u   access_tokenu   Bearer u   HTTP_AUTHORIZATIONu	   /fake-requ   fakeu   readu   write(   R   R   R.   R%   R/   R0   R1   R2   R   R3   R4   R5   R6   R7   R8   RF   R   R   t   assertIsInstancet
   get_serverR   t   verify_requestt
   assertTrueRC   t   scopes(   R   RJ   R:   R;   R<   R7   R=   R   t	   test_viewt   validt   r(    (    sN   /tmp/pip-unpacked-wheel-ndW12l/oauth2_provider/tests/test_client_credential.pyt   test_extended_requestt   s&    
!
		(   R   R   t   classmethodRH   RW   (    (    (    sN   /tmp/pip-unpacked-wheel-ndW12l/oauth2_provider/tests/test_client_credential.pyRE   n   s   t   TestClientResourcePasswordBasedc           B  s   e  Z d  „  Z RS(   c      	   C  sI  |  j  j ƒ  t d d d |  j d t j d t j ƒ |  _  |  j  j ƒ  i d d 6d d	 6d
 d 6} |  j t j	 |  j  j
 ƒ t j	 |  j  j ƒ ƒ } |  j j t d ƒ d | | } |  j | j d ƒ t j | j j d ƒ ƒ } | d } i d | d 6} |  j j d |  } |  j | _ t j ƒ  } | | ƒ } |  j | d ƒ d S(   uR   
        Request an access token using Resource Owner Password Based flow
        R   u   test_client_credentials_appR   R   R   u   passwordu
   grant_typeu	   test_useru   usernameu   123456u   oauth2_provider:tokenR-   iÈ   u   utf-8u   access_tokenu   Bearer u   HTTP_AUTHORIZATIONu   /fake-resourceu   This is a protected resourceN(   R%   R*   R"   R!   t   CLIENT_CONFIDENTIALt   GRANT_PASSWORDR&   R.   t   urllibt
   quote_plusR/   R0   R1   R2   R   R3   R4   R5   R6   R7   R8   R   R   R    R   R   R9   (   R   R:   R;   R<   R7   R=   R   R>   (    (    sN   /tmp/pip-unpacked-wheel-ndW12l/oauth2_provider/tests/test_client_credential.pyt#   test_client_resource_password_basedš   s2    		
!
(   R   R   R^   (    (    (    sN   /tmp/pip-unpacked-wheel-ndW12l/oauth2_provider/tests/test_client_credential.pyRY   ™   s   ((   t
   __future__R    R5   t   urllib.parset   parseR\   t   ImportErrort   django.core.urlresolversR   t   django.testR   R   t   django.views.genericR   t   oauthlib.oauth2R   t   modelsR   R   t   oauth2_backendsR   t   oauth2_validatorsR	   t   settingsR
   t   viewsR   t   views.mixinsR   t   compatR   t
   test_utilsR   R"   R   R   R   R,   RE   RY   (    (    (    sN   /tmp/pip-unpacked-wheel-ndW12l/oauth2_provider/tests/test_client_credential.pyt   <module>   s0   		3+