B
    /`9                 @   s|   d dl mZ d dlZd dlmZ ddlmZmZ ddlm	Z	 dd	l
mZ G d
d deZG dd deZG dd deZdS )    )urlparseN)	HTTPretty   )parse_qsurl_add_parameters   )User   )BaseBackendTestc               @   sX   e Zd ZdZdZdZdZdZdZdZ	dZ
dZdd Zdd	 Zd
d Zdd Zdd ZdS )BaseOAuthTestN Fzapplication/json   c             C   s    d| j  d dd| j  d diS )NZSOCIAL_AUTH_Z_KEYza-keyZ_SECRETza-secret-key)name)self r   O/home/dcms/DCMS/lib/python3.7/site-packages/social_core/tests/backends/oauth.pyextra_settings   s    zBaseOAuthTest.extra_settingsc             C   s   t jt jd| S )N)GETPOST)r   r   r   )r   methodr   r   r   _method   s    zBaseOAuthTest._methodc             C   s   t t|j}|d}t| jddrB|drBt|d|d i}|r~t| jddr~t t|j}|dr~t|d|d i}|S )Nredirect_uriZSTATE_PARAMETERFstateZREDIRECT_STATEZredirect_state)r   r   querygetgetattrbackendr   )r   	start_url
target_urlZstart_queryr   Zredirect_queryr   r   r   handle_state   s    


zBaseOAuthTest.handle_statec             C   s   |  || j| j}tjtj|d|d tjtj|ddd tj| | jj	| j
 | j| jpbddd | jrtj| jrtjntj| j| jpd| jd	 |S )
Ni-  )statuslocationr   foobar)r    bodyr   z	text/json)urir    r#   content_type)r#   r%   )r   strategyZbuild_absolute_uriZcomplete_urlr   register_urir   r   r   ZACCESS_TOKEN_METHODZaccess_token_urlaccess_token_statusaccess_token_bodyuser_data_urluser_data_url_postr   user_data_bodyuser_data_content_type)r   r   r   r   r   r   auth_handlers0   s,    

zBaseOAuthTest.auth_handlersc             C   sz   | j  j}| |}t|}| |j| | |jd | j	t
t|j| j  | j	t
t|j| j  | j  S )Nr"   )r   starturlr.   requestsr   assertEqualtextr&   Zset_request_datar   r   r   Zcomplete)r   r   r   responser   r   r   do_startI   s    

zBaseOAuthTest.do_start)__name__
__module____qualname__r   backend_pathr,   r*   r+   r-   r)   r(   Zexpected_usernamer   r   r   r.   r5   r   r   r   r   r      s   r   c                   s,   e Zd ZdZdZdd Z fddZ  ZS )
OAuth1TestNz7/complete/{0}/?oauth_verifier=bazqux&oauth_token=foobarc             C   s&   t j| | jj| jj| jdd d S )Nr   )r#   r    )r   r'   r   r   ZREQUEST_TOKEN_METHODZREQUEST_TOKEN_URLrequest_token_body)r   r   r   r   request_token_handler[   s    z OAuth1Test.request_token_handlerc                s   |    t  S )N)r<   superr5   )r   )	__class__r   r   r5   a   s    zOAuth1Test.do_start)r6   r7   r8   r;   raw_complete_urlr<   r5   __classcell__r   r   )r>   r   r:   V   s   r:   c               @   s$   e Zd ZdZdZdd Zdd ZdS )
OAuth2Testz/complete/{0}/?code=foobarr   c             C   s   i S )Nr   )r   r   r   r   refresh_token_argumentsj   s    z"OAuth2Test.refresh_token_argumentsc             C   sj   |    tj| | jj| j d| jd tt	j
 d }|jd }|jf d| ji|   ||fS )Nr   )r    r#   r   r&   )Zdo_loginr   r'   r   r   ZREFRESH_TOKEN_METHODZrefresh_token_urlrefresh_token_bodylistr   cachevaluessocialZrefresh_tokenr&   rB   )r   userrG   r   r   r   do_refresh_tokenm   s    

zOAuth2Test.do_refresh_tokenN)r6   r7   r8   r?   rC   rB   rI   r   r   r   r   rA   f   s   rA   )urllib.parser   r1   Z	httprettyr   utilsr   r   modelsr   baser
   r   r:   rA   r   r   r   r   <module>   s   K