U
    [e                     @   s|   d dl 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 G dd deZG d	d
 d
eZG dd deZdS )    N)	HTTPretty)urlparse)parse_qsurl_add_parameters)User)BaseBackendTestc                   @   sT   e 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 z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   ]/var/www/html/services/stratfitenv/lib/python3.8/site-packages/social/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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_bodyuser_data_content_type)r   r   r   r   r   r   auth_handlers0   s8    zBaseOAuthTest.auth_handlersc                 C   s`   | j  j}| |}t|}| |j| | |jd | 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'   Zexpected_usernamer   r   r   r,   r3   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_bodyr   r   r   r   request_token_handlerY   s
    z OAuth1Test.request_token_handlerc                    s   |    tt|  S N)r:   superr8   r3   r   	__class__r   r   r3   _   s    zOAuth1Test.do_start)r4   r5   r6   r9   raw_complete_urlr:   r3   __classcell__r   r   r=   r   r8   T   s   r8   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 r;   r   r   r   r   r   refresh_token_argumentsh   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%   )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_tokenk   s    
zOAuth2Test.do_refresh_tokenN)r4   r5   r6   r?   rC   rB   rI   r   r   r   r   rA   d   s   rA   )r/   Z	httprettyr   Z	social.p3r   Zsocial.utilsr   r   Zsocial.tests.modelsr   Zsocial.tests.backends.baser   r   r8   rA   r   r   r   r   <module>   s   H