U
    Z!c                     @   s   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mZ d dlmZmZmZ d	d
lmZ d	dlmZ G dd deZdS )    )md5)User)reverse)	urlencode)app_settings)	providers)	SocialAppSocialToken)MockTestCasepatch   )views)DraugiemProviderc                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )DraugiemTestsc                 C   s   t jddd | jjddd tjtj	| _
tjj| j
j	| j
j	d| j
j	dd}tjrvdd	lm} |j|j  || _d S )
NZanakinzskywalker@deathstar.example.comZ	s1thrul3s)usernamepasswordZapp123iddummy)providername	client_idkeysecretr   )Site)r   objectsZcreate_userclientloginr   registryZby_idr   idr   r   creater   ZSITES_ENABLEDZdjango.contrib.sites.modelsr   ZsitesaddZget_currentapp)selfr!   r    r#   r/var/www/html/crackeverytest/cet_env/lib/python3.8/site-packages/allauth/socialaccount/providers/draugiem/tests.pysetUp   s$      zDraugiemTests.setUpc                 C   s6   ddddddddddd	dd
dddddddddidS )z-
        Sample Draugiem.lv response
        1234542Z266z8http://cdn.memegenerator.net/instances/500x/23395689.jpgZ	Skywalkerz	/user/42/zSky Guyz09.11.1812 11:26:15falseMZUser_DefaultZLondonZ)3f198f21434gfd2f2b4rs05939shk93f3815bc6aaZAnakin1z
1750-09-13)ZageZimglZsurnameurlZimgiZnickcreatedZdeletedZimgmZsextypeuidZplaceZ	emailHashr   ZadultZbirthdayZimg)apikeyr.   Zusersr#   )r"   r#   r#   r$   get_draugiem_login_response'   s0    z)DraugiemTests.get_draugiem_login_responsec                 C   s   t  }| j||}||_|S )zH
        Returns SocialLogin based on the data from the request
        )r
   r   Zsociallogin_from_responsetoken)r"   responser1   requestr   r#   r#   r$   get_socialaccountF   s    zDraugiemTests.get_socialaccountc                 C   s(   | j j}dddddf|d< |  dS )zn
        SocialLogin depends on Session state - a tuple of request
        params and a random string
        r    )processZscopeZauth_paramsr&   Zsocialaccount_stateN)r   sessionsave)r"   r7   r#   r#   r$   mock_socialaccount_stateO   s
    
z&DraugiemTests.mock_socialaccount_statec                 C   st   | j ttj}ttj}d| }| jj| }t|	d
 }| jj||d}| j|dtjt|f dd d S )Nzhttp://testserverzutf-8)r!   hashZredirectz%s?%sFZfetch_redirect_response)r   getr   r   r   callbackr!   r   r   encode	hexdigestr   assertRedirectsZAUTHORIZE_URLr   )r"   r2   Zredirect_urlZfull_redirect_urlr   Zredirect_url_hashparamsr#   r#   r$   test_login_redirect[   s    
z!DraugiemTests.test_login_redirectc                 C   s"   | j ttj}| |d d S )N'socialaccount/authentication_error.htmlr   r<   r   r   r=   ZassertTemplateUsedr"   r2   r#   r#   r$   test_callback_no_auth_statusl   s    z*DraugiemTests.test_callback_no_auth_statusc                 C   s(   | j ttjddi}| |d d S )Ndr_auth_statusZfailrC   rD   rE   r#   r#   r$   !test_callback_invalid_auth_statusp   s    z/DraugiemTests.test_callback_invalid_auth_statusc              	   C   sv   t dd}|   |  }t| j|d d}| ||}||_| jt	t
jddd}| j|ddd	 W 5 Q R X d S )
NzFallauth.socialaccount.providers.draugiem.views.draugiem_complete_loginr/   )r!   r1   okr'   )rG   Zdr_auth_codez/accounts/profile/Fr;   )r   r9   r0   r	   r!   r4   Zreturn_valuer   r<   r   r   r=   r@   )r"   Zdraugiem_complete_loginZresponse_jsonr1   r   r2   r#   r#   r$   test_callbackt   s$      zDraugiemTests.test_callbackN)__name__
__module____qualname__r%   r0   r4   r9   rB   rF   rH   rJ   r#   r#   r#   r$   r      s   	r   N)Zhashlibr   Zdjango.contrib.auth.modelsr   Zdjango.urlsr   Zdjango.utils.httpr   allauthr   Zallauth.socialaccountr   Zallauth.socialaccount.modelsr   r	   Zallauth.testsr
   r   r   r5   r   r   r   r   r#   r#   r#   r$   <module>   s   