o
    ˷e                     @   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r;dd	lm} |j|j  || _d S )
Nanakinzskywalker@deathstar.example.com	s1thrul3s)usernamepasswordapp123iddummy)providername	client_idkeysecretr   )Site)r   objectscreate_userclientloginr   registryby_idr   idr   r   creater   SITES_ENABLEDdjango.contrib.sites.modelsr   sitesaddget_currentapp)selfr*   r    r,   e/var/www/ideatree/venv/lib/python3.10/site-packages/allauth/socialaccount/providers/draugiem/tests.pysetUp   s    
zDraugiemTests.setUpc                 C   s~   dddi ddddddd	d
ddddddddddddddddddddddddd d!d"diid#S )$z-
        Sample Draugiem.lv response
        1234542age266imglz8http://cdn.memegenerator.net/instances/500x/23395689.jpgsurname	Skywalkerurlz	/user/42/imginickzSky Guycreatedz09.11.1812 11:26:15deletedfalseimgmsexMtypeUser_DefaultuidplaceLondon	emailHash)3f198f21434gfd2f2b4rs05939shk93f3815bc6aar   Anakinadult1birthdayz
1750-09-13img)apikeyrA   usersr,   )r+   r,   r,   r-   get_draugiem_login_response'   sR   	
z)DraugiemTests.get_draugiem_login_responsec                 C   s   t  }| j||}||_|S )zH
        Returns SocialLogin based on the data from the request
        )r
   r   sociallogin_from_responsetoken)r+   responserO   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     )processscopeauth_paramsr/   socialaccount_stateN)r   sessionsave)r+   rX   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*   hashredirectz%s?%sFfetch_redirect_response)r   getr   r   r    callbackr*   r   r   encode	hexdigestr   assertRedirectsAUTHORIZE_URLr   )r+   rP   redirect_urlfull_redirect_urlr   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`   assertTemplateUsedr+   rP   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_statusfailrj   rk   rm   r,   r,   r-   !test_callback_invalid_auth_statusp   s   z/DraugiemTests.test_callback_invalid_auth_statusc                 C   s   t d8}|   |  }t| j|d d}| ||}||_| jt	t
jddd}| j|ddd	 W d    d S 1 s?w   Y  d S )
NzFallauth.socialaccount.providers.draugiem.views.draugiem_complete_loginrK   )r*   rO   okr0   )ro   dr_auth_codez/accounts/profile/Fr]   )r   rZ   rM   r	   r*   rR   return_valuer   r_   r   r   r`   rc   )r+   draugiem_complete_loginresponse_jsonrO   r    rP   r,   r,   r-   test_callbackt   s"   "zDraugiemTests.test_callbackN)__name__
__module____qualname__r.   rM   rR   rZ   ri   rn   rq   rw   r,   r,   r,   r-   r      s    	r   N)hashlibr   django.contrib.auth.modelsr   django.urlsr   django.utils.httpr   allauthr   allauth.socialaccountr   allauth.socialaccount.modelsr   r	   allauth.testsr
   r   r   rS   r   r   r   r   r,   r,   r,   r-   <module>   s    