
    f                         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	 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mZ d dlmZ ddlmZ ddlmZ  G d de      Zy)    N)md5)Mockpatch)User)RequestFactory)reverse)	urlencode)app_settings)statekit)SocialAccount	SocialAppSocialToken)TestCase   )views)DraugiemProviderc                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
DraugiemTestsc                    t         j                  j                  ddd       | j                  j	                  dd       t
        j                  j                  t        j                  t        j                  dt        j                  d      }t               j                  d      }|j                  |      | _        t        j                  r9d	d
lm} |j"                  j%                  |j                  j'                                || _        y )Nanakinzskywalker@deathstar.example.com	s1thrul3s)usernamepasswordapp123iddummy)providername	client_idkeysecret/r   )Site)r   objectscreate_userclientloginr   creater   idr   getget_providerr   r
   SITES_ENABLEDdjango.contrib.sites.modelsr"   sitesaddget_currentapp)selfr0   requestr"   s       i/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/draugiem/tests.pysetUpzDraugiemTests.setUp   s     	  7	
 	8kB&&%((!$$  ## ' 
 !"&&s+((1%%8IIMM$,,2245    c                     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imgl8http://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)apikeyrJ   users )r1   s    r3   get_draugiem_login_responsez)DraugiemTests.get_draugiem_login_response+   s    
  5V { ;	
 V I 4 w V 3 N 4 X  !L H  S!" #$ U%
 	
r5   c                 `    t               }| j                  j                  ||      }||_        |S )zH
        Returns SocialLogin based on the data from the request
        )r   r   sociallogin_from_responsetoken)r1   responserZ   r2   r&   s        r3   get_socialaccountzDraugiemTests.get_socialaccountJ   s-     &77Jr5   c                     | j                   j                  }dddddt        j                         fi|t        j                  <   |j                          y)zn
        SocialLogin depends on Session state - a tuple of request
        params and a random string
        r7   r&    )processscopeauth_paramsN)r%   sessiontimer   STATES_SESSION_KEYsave)r1   rb   s     r3   mock_socialaccount_statez&DraugiemTests.mock_socialaccount_stateS   sG    
 ++%%'BrJDIIKX0
++, 	r5   c                    | j                   j                  t        t        j                              }t        t        j
                        }d|z   }| j                  j                  |z   }t        |j                  d            j                         }| j                  j                  ||d}| j                  |t        j                  dt        |      d       y )Nzhttp://testserverzutf-8)r0   hashredirect?Ffetch_redirect_response)r%   r)   r   r   r&   callbackr0   r    r   encode	hexdigestr   assertRedirectsAUTHORIZE_URLr	   )r1   r[   redirect_urlfull_redirect_urlr    redirect_url_hashparamss          r3   test_login_redirectz!DraugiemTests.test_login_redirect^   s    ;;??75;;#78u~~./,>#44g 67AAC88%%%)

 	**If,=>$) 	 	
r5   c                     | j                   j                  t        t        j                              }| j                  |d       y )N'socialaccount/authentication_error.htmlr%   r)   r   r   rm   assertTemplateUsedr1   r[   s     r3   test_callback_no_auth_statusz*DraugiemTests.test_callback_no_auth_statuso   s.    ;;??75>>#:;*STr5   c                     | j                   j                  t        t        j                        ddi      }| j                  |d       y )Ndr_auth_statusfailrx   ry   r{   s     r3   !test_callback_invalid_auth_statusz/DraugiemTests.test_callback_invalid_auth_statuss   s6    ;;??75>>#:=Mv<VW*STr5   c                 l   t        d      5 }| j                          | j                         }t        | j                  |d         }| j                  ||      }||_        | j                  j                  t        t        j                        ddd      }| j                  |dd	       t        j                  j                  t         j"                  
      j%                         }|j'                         }|j)                         dk(  sJ |j+                         dk(  sJ 	 d d d        y # 1 sw Y   y xY w)NzFallauth.socialaccount.providers.draugiem.views.draugiem_complete_loginrT   )r0   rZ   okr8   )r~   dr_auth_codez/accounts/profile/Frk   )r   r<   rO   )r   rf   rW   r   r0   r\   return_valuer%   r)   r   r   rm   rp   r   r#   filterr   r(   lastget_provider_accountget_avatar_urlto_str)r1   draugiem_complete_loginresponse_jsonrZ   r&   r[   socialaccountpaccs           r3   test_callbackzDraugiemTests.test_callbackw   s(   T
 	-$))+ <<>MDHHM(4KLE**=%@E38#0{{'#'>H   . !  *1188),, 9 df  !557D##%MNN ;;=H,,,7	- 	- 	-s   DD**D3N)__name__
__module____qualname__r4   rW   r\   rf   rv   r|   r   r   rV   r5   r3   r   r      s,    .
>	
"UU-r5   r   )rc   hashlibr   unittest.mockr   r   django.contrib.auth.modelsr   django.testr   django.urlsr   django.utils.httpr	   allauthr
   allauth.socialaccount.internalr   allauth.socialaccount.modelsr   r   r   allauth.testsr   r^   r   r   r   r   rV   r5   r3   <module>r      s=      % + &  '   3 N N "  &@-H @-r5   