Ë
    ûûàgý  ã                   ó¶   — 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	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  G d„ de
«      Zy)é    N)Úmd5)ÚMockÚpatch)ÚUser)ÚRequestFactoryÚTestCase)Úreverse)Ú	urlencode)Úapp_settings)Ústatekit)ÚSocialAccountÚ	SocialAppÚSocialTokené   )Ú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       úl/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/draugiem/tests.pyÚsetUpzDraugiemTests.setUp   sÊ   € ô 	�‰× Ñ ØÐ7¸ô	
ð 	�‰×Ñ 8°kÐÔBä×Ñ×&Ñ&Ü%×(Ñ(Ü!×$Ñ$Ø Ü ×#Ñ#Øð 'ó 
ˆô !Ó"×&Ñ& sÓ+ˆØ×(Ñ(¨Ó1ˆŒÜ×%Ò%Ý8à�I‰I�M‰M˜$Ÿ,™,×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Úimglú8http://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_socialaccountI   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_stateR   sG   € ð
 —+‘+×%Ñ%ˆà '°BÀrÑJÌDÏIÉIËKÐ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®   € Ø—;‘;—?‘?¤7¬5¯;©;Ó#7Ó8ˆÜœuŸ~™~Ó.ˆØ/°,Ñ>ÐØ—‘—‘Ð#4Ñ4ˆÜ §¡¨gÓ 6Ó7×AÑAÓCÐà—8‘8×%Ñ%Ø%Ø)ñ
ˆð
 	×ÑØÜ×*Ó*¬I°fÔ,=Ð>Ø$)ð 	õ 	
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_statusn   s.   € Ø—;‘;—?‘?¤7¬5¯>©>Ó#:Ó;ˆØ×Ñ Ð*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_statusr   s6   € Ø—;‘;—?‘?¤7¬5¯>©>Ó#:Ð=MÈvÐ<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_callbackv   s(  € ÜØTó
ð 	-à$Ø×)Ñ)Ô+à ×<Ñ<Ó>ˆMä D§H¡H°MÀ(Ñ4KÔLˆEØ×*Ñ*¨=¸%Ó@ˆEà38Ð#Ô0à—{‘{—‘ÜœŸ™Ó'Ø#'¸Ñ>óˆHð × Ñ ØÐ.Èð !ô ô *×1Ñ1×8Ñ8Ü)×,Ñ,ð 9ó ç‰d‹fð ð !×5Ñ5Ó7ˆDà×#Ñ#Ó%Ø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   r   Údjango.urlsr	   Údjango.utils.httpr
   Úallauthr   Úallauth.socialaccount.internalr   Úallauth.socialaccount.modelsr   r   r   r^   r   r   r   r   rV   r5   r3   ú<module>r›      s:   ðÛ Ý ß %å +ß 0Ý Ý 'å  Ý 3ß NÑ Nå Ý &ô@-�Hõ @-r5   