Ë
    ûûàgD2  ã                   ót  — 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
 d dlmZ d dl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mZmZ d dlmZ  G d„ de«      Zej:                  j=                  dddej>                  fdddej>                  fg«      d„ «       Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*y)é    )Ú	timedelta)ÚMock)ÚSESSION_KEYÚget_user_model)Úcache)Úreverse)ÚnowN)ÚassertRedirectsÚassertTemplateNotUsedÚassertTemplateUsed)Úapp_settings)ÚDefaultAccountAdapter)ÚEmailAddressÚEmailConfirmationÚEmailConfirmationHMAC)Úuser_logged_inc                   ó   — e Zd ZdZd„ Zy)ÚTestEmailVerificationAdapterú/foobarc                 ó   — | j                   S )N)ÚSIGNUP_REDIRECT_URL)ÚselfÚrequests     úk/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/allauth/account/tests/test_email_verification.pyÚget_signup_redirect_urlz4TestEmailVerificationAdapter.get_signup_redirect_url   s   € Ø×'Ñ'Ð'ó    N)Ú__name__Ú
__module__Ú__qualname__r   r   © r   r   r   r      s   „ Ø#Ðó(r   r   zadapter,query,expected_locationÚ )Nz
?next=/fooz/foozJallauth.account.tests.test_email_verification.TestEmailVerificationAdapterc                 óT  — t         j                  j                  |_        d|_        d|_        | r| |_         |«       }|j                  t        d«      dd||dœ¬«      }|j                  dk(  sJ ‚|d   t        d	«      k(  sJ ‚|j                  |d   «      }|j                  d
k(  sJ ‚t        j                  j                  d¬«      }	t        |	«      j                  }
t        «       }t!        j"                  |«       |j                  t        d|
g¬«      |z   «      }|d   |k(  sJ ‚t        j                  j                  |	j$                  ¬«      }	|	j&                  sJ ‚|j)                  t+        «       |j,                  ||	j.                  t         ¬«       t!        j0                  |«       y )NTÚaccount_signupÚjohnza@a.com©ÚusernameÚemailÚ	password1Ú	password2)Údataé.  ÚlocationÚaccount_email_verification_sentéÈ   ©r'   Úaccount_confirm_email©Úargs©Úpk)Úsenderr   ÚresponseÚuserÚsignal)r   ÚEmailVerificationMethodÚ	MANDATORYÚACCOUNT_EMAIL_VERIFICATIONÚACCOUNT_EMAIL_CONFIRMATION_HMACÚ#ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATIONÚACCOUNT_ADAPTERÚpostr   Ústatus_codeÚgetr   Úobjectsr   Úkeyr   r   Úconnectr4   ÚverifiedÚassert_called_once_withr   Úwsgi_requestr7   Ú
disconnect)ÚadapterÚclientÚdbÚqueryÚexpected_locationÚpassword_factoryÚsettingsÚpasswordÚrespr'   rC   Úreceiver_mocks               r   Útest_login_on_verificationrS   !   s•  € ô +7×*NÑ*N×*XÑ*X€HÔ'Ø/3€HÔ,Ø37€HÔ0ÙØ#*ˆÔ ÙÓ!€HØ�;‰;ÜÐ Ó!àØØ!Ø!ñ	
ð ó €Dð ×Ñ˜sÒ"Ð"Ð"Ø�
ÑœwÐ'HÓIÒIÐIÐIà�:‰:�d˜:Ñ&Ó'€DØ×Ñ˜sÒ"Ð"Ð"ä× Ñ ×$Ñ$¨9Ð$Ó5€EÜ
 Ó
&×
*Ñ
*€Cä“F€MÜ×Ñ˜=Ô)à�;‰;”wÐ6¸c¸UÔCÀeÑKÓL€DØ�
ÑÐ0Ò0Ð0Ð0Ü× Ñ ×$Ñ$¨¯©Ð$Ó1€EØ�>Š>Ðˆ>à×)Ñ)ÜÓØ×!Ñ!ØØ�Z‰ZÜð *ô ô ×Ñ˜mÕ,r   c                 ód  — d| _          |dd¬«        |dd¬«      }t        j                  j                  ||j                  «      }|j
                  rJ ‚t        j                  j                  |dt        «       ¬«      }|j                  t        d|j                  g¬«      «      }t        |d	«       y )
NFTzfoo@bar.org)Úemail_verifiedr'   Údummy)Úemail_addressrC   Úsentr0   r1   z.account/messages/email_confirmation_failed.txt)r<   r   rB   Úget_for_userr'   rE   r   Úcreater	   r?   r   rC   r   )rO   Úuser_factoryrJ   Úunverified_userrW   ÚconfirmationrQ   s          r   Útest_email_verification_failedr^   [   s¤   € Ø/4€HÔ,Ù ¨MÕ:Ù"°%¸}ÔM€OÜ ×(Ñ(×5Ñ5Ø˜×.Ñ.ó€Mð ×%Ò%Ð%Ð%Ü$×,Ñ,×3Ñ3Ø#ØÜ‹Uð 4ó €Lð
 �;‰;”wÐ6¸l×>NÑ>NÐ=OÔPÓQ€DÜ�tÐMÕNr   c                 óò  — d| _         d| _        t        j                  j                  | _        |j                  t        d«      dddddœd¬«      }|j                  d	k(  sJ ‚|d
   j                  dgk(  sJ ‚|d
   j                  j                  d«      d
kD  sJ ‚t        |«      dk(  sJ ‚t        |dt        j                  z  «       dD ]Û  }|j                  t        d«      dddœd¬«      }t        «       j                   j#                  dd¬«      j%                  «       sJ ‚t        |dt        j                  z   «       t        |«      |k(  sJ ‚t&        j                   j#                  d¬«      j)                  «       |k(  sJ ‚t+        j,                  «        |j/                  «        ŒÝ t&        j                   j#                  d¬«      d d j1                  «       }|j1                  t        d|j2                  g¬«      «      }t        |dt        j                  z  «       |j                  t        d|j2                  g¬«      «       |j                  t        d«      dddœ«      }t5        || j6                  d¬«       y )NFé
   r#   Újohndoeújohn@example.comr%   T)Úfollowr.   r   úhttp://é   zaccount/verification_sent.%s)re   é   Úaccount_login©ÚloginrP   )r&   Ú	is_activezaccount/verification_sent.)Úemail_address__email)Úemail_address__user__usernamer0   r1   zaccount/email_confirm.%s©Úfetch_redirect_response)r<   Ú#ACCOUNT_EMAIL_CONFIRMATION_COOLDOWNr   r9   r:   r;   r?   r   r@   ÚtoÚbodyÚfindÚlenr   ÚTEMPLATE_EXTENSIONr   rB   ÚfilterÚexistsr   Úcountr   ÚclearÚlogoutrA   rC   r
   ÚLOGIN_REDIRECT_URL)rO   rK   rJ   Ú
mailoutboxÚenable_cacherQ   Úattemptr]   s           r   Ú!test_email_verification_mandatoryr~   l   sv  € Ø/4€HÔ,Ø35€HÔ0Ü*6×*NÑ*N×*XÑ*X€HÔ'à�;‰;ÜÐ Ó!à!Ø'Ø"Ø"ñ		
ð ð ó 	€Dð ×Ñ˜sÒ"Ð"Ð"Ø�a‰=×ÑÐ 2Ð3Ò3Ð3Ð3Ø�a‰=×Ñ×"Ñ" 9Ó-°Ò1Ð1Ð1Üˆz‹?˜aÒÐÐÜØØ&¬×)HÑ)HÑHôð
 ò ˆØ�{‰{Ü�OÓ$Ø¨YÑ7Øð ó 
ˆô Ó×$Ñ$×+Ñ+°YÈ$Ð+ÓO×VÑVÔXð	
ØXô 	ØØ(¬<×+JÑ+JÑJô	
ô �:‹ 'Ò)Ð)Ð)ä×%Ñ%×,Ñ,Ø%7ð -ó ç‰e‹gØòð	
ðô 	�‰Œà�‰�ð;ô@ %×,Ñ,×3Ñ3Ø&/ð 4ó à€qð
ç
‰#‹%ð ð �:‰:”gÐ5¸\×=MÑ=MÐ<NÔOÓP€DÜØÐ(¬<×+JÑ+JÑJôð ‡K�K”Ð/°|×7GÑ7GÐ6HÔIÔJØ�;‰;Ü�Ó Ø¨Ñ3ó€Dô �D˜(×5Ñ5ÈuÖUr   c                 óŠ  — d| _         t        j                  j                  | _        d| _        |j                  t        d«      «       |j                  t        d«      ddddœ«      }t        || j                   d¬«       |d   j                  dgk(  sJ ‚t        |«      d	k(  sJ ‚|j                  «        t        j                  j                  t!        «       t#        d	¬
«      z
  ¬«       |j                  t        d«      dddœ«      }t        || j$                  d¬«       |d   j                  dgk(  sJ ‚t        |«      d	k(  sJ ‚y )Nz/accounts/welcome/Fr#   ra   rb   )r&   r'   r(   rm   r   re   )Údays)rX   rg   rh   )ÚACCOUNT_SIGNUP_REDIRECT_URLr   r9   ÚOPTIONALr;   Ú#ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICErA   r   r?   r
   rp   rs   ry   r   rB   Úupdater	   r   rz   )rO   rJ   rK   r{   rQ   s        r   Ú test_optional_email_verificationr…   ³   s2  € Ø+?€HÔ(Ü*6×*NÑ*N×*WÑ*W€HÔ'Ø38€HÔ0à
‡J�JŒwÐ'Ó(Ô)Ø�;‰;ÜÐ Ó!à!Ø'Ø"ñ	
ó€Dô Øˆh×2Ñ2ÈEõð �a‰=×ÑÐ 2Ð3Ò3Ð3Ð3Üˆz‹?˜aÒÐÐà
‡M�M„Oä×Ñ×$Ñ$¬#«%´)ÀÔ2CÑ*CÐ$ÔDà�;‰;Ü�Ó Ø¨Ñ3ó€Dô �D˜(×5Ñ5ÈuÕUØ�a‰=×ÑÐ 2Ð3Ò3Ð3Ð3ô ˆz‹?˜aÒÐÑr   c                 ó²  — d| _          |d¬«      }t        j                  j                  ||j                  «      }t        |«      }|j                  d«      }|j                  |¬«       t        |«      dk(  sJ ‚|j                  t        d|j                  g¬«      «       t        j                  j                  |j                  ¬	«      }|j                  sJ ‚y )
NTF©rU   ú/©r   re   r0   r1   r3   )r<   r   rB   rY   r'   r   rA   Úsendrs   r?   r   rC   r4   rE   )	rO   rJ   r[   r{   Úrfr7   r'   r]   r   s	            r   Útest_email_verification_hmacrŒ   Ø   s°   € Ø/3€HÔ,Ù uÔ-€DÜ× Ñ ×-Ñ-¨d°D·J±JÓ?€EÜ(¨Ó/€LØ�f‰f�S‹k€GØ×Ñ˜gÐÔ&Üˆz‹?˜aÒÐÐØ
‡K�K”Ð/°|×7GÑ7GÐ6HÔIÔJÜ× Ñ ×$Ñ$¨¯©Ð$Ó1€EØ�>Š>Ð‰>r   c                 óÀ  — d| _         d| _         |d¬«      }t        j                  j	                  ||j
                  «      }t        |«      }|j                  d«      }|j                  |¬«       t        |«      dk(  sJ ‚|j                  t        d|j                  g¬	«      «       t        j                  j                  |j                  ¬
«      }|j                  rJ ‚y )NTr   Fr‡   rˆ   r‰   re   r0   r1   r3   )r<   Ú&ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYSr   rB   rY   r'   r   rA   rŠ   rs   r?   r   rC   r4   rE   )	rO   r[   rJ   r{   r‹   r7   r'   r]   r   s	            r   Ú$test_email_verification_hmac_timeoutr�   å   s½   € ð 04€HÔ,Ø67€HÔ3Ù uÔ-€DÜ× Ñ ×-Ñ-¨d°D·J±JÓ?€EÜ(¨Ó/€LØ�f‰f�S‹k€GØ×Ñ˜gÐÔ&Üˆz‹?˜aÒÐÐØ
‡K�K”Ð/°|×7GÑ7GÐ6HÔIÔJÜ× Ñ ×$Ñ$¨¯©Ð$Ó1€EØ�~Š~ÐÐˆ~r   c                 óè  — t         j                  j                  h| _         |d¬«      }|j	                  |«       |j                  t        d«      |j                  ddœ«       t        |«      dk(  sJ ‚|d   j                  |j                  gk(  sJ ‚|j                  «        |d   j                  }|j                  d«      dkD  sJ ‚ |dd	¬
«      }|j                  t        d«      |j                  d	dœ«      }||j                  d   k(  sJ ‚||j                  d«      d j                  «       d   }|j                  |«      }t        |d«       t        |d«       t!        || j"                  d¬«       y)z’Test the email verification view. If User B clicks on an email
    verification link while logged in as User A, ensure User A gets
    logged out.Fr‡   Úaccount_emailr!   ©r'   Úaction_sendre   r   rd   Údoe)rU   rP   rg   rh   r7   ú/accounts/confirm-email/Núaccount/messages/logged_out.txtú$account/messages/email_confirmed.txtrm   )r   ÚAuthenticationMethodÚEMAILÚACCOUNT_LOGIN_METHODSÚforce_loginr?   r   r'   rs   rp   ry   rq   rr   ÚcontextÚsplitr   r
   Ú	LOGIN_URL)	rO   r[   rJ   r{   r7   rq   Úuser2rQ   Úurls	            r   Ú-test_verify_email_with_another_user_logged_inr¡   õ   sS  € ô '3×&GÑ&G×&MÑ&MÐ%N€HÔ"Ù uÔ-€DØ
×Ñ�tÔØ
‡K�K”˜Ó(°D·J±JÈrÑ*RÔSÜˆz‹?˜aÒÐÐØ�a‰=×Ñ §
¡
˜|Ò+Ð+Ð+Ø
‡M�M„OØ�a‰=×Ñ€DØ�9‰9�YÓ !Ò#Ð#Ð#á¨¸Ô>€EØ�;‰;Ü�Ó à—[‘[Øñ	
ó€Dð �D—L‘L Ñ(Ò(Ð(Ð(à
ˆt�y‰yÐ3Ó4Ð6Ð
7×
=Ñ
=Ó
?ÀÑ
B€CØ�;‰;�sÓ€Dä�tÐ>Ô?Ü�tÐCÔDä�D˜(×,Ñ,ÀeÖLr   c                 ór  — t         j                  j                  h| _         |d¬«      }|j	                  |«       |j                  t        d«      |j                  ddœ«       t        |«      dk(  sJ ‚|d   j                  |j                  gk(  sJ ‚|d   j                  }|j                  d«      dkD  sJ ‚||j                  d	«      d
 j                  «       d   }|j                  |«      }t        |d«       t        |d«       t        || j                   d¬«       ||j"                  j$                  k(  sJ ‚y
)zkIf the user clicks on an email verification link while logged in, ensure
    the user stays logged in.
    Fr‡   r‘   r!   r’   re   r   rd   r•   Nr–   r—   rm   )r   r˜   r™   rš   r›   r?   r   r'   rs   rp   rq   rr   r�   r   r   r
   rz   rG   r7   )rO   r[   rJ   r{   r7   rq   r    rQ   s           r   Ú*test_verify_email_with_same_user_logged_inr£     s  € ô '3×&GÑ&G×&MÑ&MÐ%N€HÔ"Ù uÔ-€DØ
×Ñ�tÔØ
‡K�K”˜Ó(°D·J±JÈrÑ*RÔSÜˆz‹?˜aÒÐÐØ�a‰=×Ñ §
¡
˜|Ò+Ð+Ð+à�a‰=×Ñ€DØ�9‰9�YÓ !Ò#Ð#Ð#à
ˆt�y‰yÐ3Ó4Ð6Ð
7×
=Ñ
=Ó
?ÀÑ
B€CØ�;‰;�sÓ€Dä˜$Ð AÔBÜ�tÐCÔDä�D˜(×5Ñ5ÈuÕUà�4×$Ñ$×)Ñ)Ò)Ð)Ñ)r   c           	      ó`  — d|_          |d¬«      }| j                  t           t        |j                  «      k(  sJ ‚t
        j                  j                  |d¬«      }| j                  t        ddt        |«      j                  i¬«      «       | j                  j                  t        «      rJ ‚y)z®
    When a user is signed in, and you follow an email confirmation link of
    another user within the same browser/session, be sure to sign out the signed
    in user.
    Fr‡   )r7   rE   r0   rC   )ÚkwargsN)ÚACCOUNT_CONFIRM_EMAIL_ON_GETÚsessionr   Ústrr4   r   rB   rA   r   r   rC   )Úauth_clientrO   r7   r[   Úconfirming_userr'   s         r   Útest_verify_logs_out_userr«   3  s›   € ð -2€HÔ)Ù"°%Ô8€OØ×Ñœ{Ñ+¬s°4·7±7«|Ò;Ð;Ð;Ü× Ñ ×$Ñ$¨/ÀEÐ$ÓJ€EØ‡O�OÜØ#¨UÔ4IÈ%Ó4P×4TÑ4TÐ,Uô	
ôð
 ×"Ñ"×&Ñ&¤{Ô3Ð3Ð3Ð3r   c                 ó.  — t         j                  j                  |_         |«       }| j	                  t        d«      dd||dœ«      }|j                  dk(  sJ ‚|d   t        d«      k(  sJ ‚| j                  t        d«      «      }|j                  d	k(  sJ ‚y )
Nr#   ra   úuser@email.orgr%   r+   r,   r-   rg   r.   )r   r9   r:   r;   r?   r   r@   rA   )rJ   rK   rO   rN   rP   rQ   s         r   Ú&test_email_verification_login_redirectr®   E  sœ   € Ü*6×*NÑ*N×*XÑ*X€HÔ'ÙÓ!€HØ�;‰;ÜÐ Ó!à!Ø%Ø!Ø!ñ		
ó€Dð ×Ñ˜sÒ"Ð"Ð"Ø�
ÑœwÐ'HÓIÒIÐIÐIØ�:‰:”g˜oÓ.Ó/€DØ×Ñ˜sÒ"Ð"Ñ"r   c                 óÀ  — t         j                  j                  |_        d|_        d|_        d}| j                  t        d«      d|||dœ«      }|j                  dk(  sJ ‚|d   t        d	«      k(  sJ ‚t        t        j                  j                  |¬
«      «      }| j                  t        d|j                  g¬«      «      }|j                  dk(  sJ ‚|d   dk(  sJ ‚y )Nr   Tr­   r#   ra   r%   r+   r,   r-   r/   r0   r1   )r   r9   r:   r;   Ú1ACCOUNT_EMAIL_CONFIRMATION_ANONYMOUS_REDIRECT_URLr¦   r?   r   r@   r   r   rB   rA   rC   )rJ   rK   rO   Úuser_passwordr'   rQ   r]   s          r   Ú$test_email_verification_redirect_urlr²   W  sæ   € Ü*6×*NÑ*N×*XÑ*X€HÔ'ØAJ€HÔ>Ø,0€HÔ)Ø€EØ�;‰;ÜÐ Ó!à!ØØ&Ø&ñ		
ó€Dð ×Ñ˜sÒ"Ð"Ð"Ø�
ÑœwÐ'HÓIÒIÐIÐIÜ(¬×)=Ñ)=×)AÑ)AÈÐ)AÓ)NÓO€LØ�:‰:”gÐ5¸\×=MÑ=MÐ<NÔOÓP€DØ×Ñ˜sÒ"Ð"Ð"Ø�
Ñ˜yÒ(Ð(Ñ(r   )+Údatetimer   Úunittest.mockr   Údjango.contrib.authr   r   Údjango.core.cacher   Údjango.urlsr   Údjango.utils.timezoner	   ÚpytestÚpytest_django.assertsr
   r   r   Úallauth.accountr   Úallauth.account.adapterr   Úallauth.account.modelsr   r   r   Úallauth.account.signalsr   r   ÚmarkÚparametrizer   rS   r^   r~   r…   rŒ   r�   r¡   r£   r«   r®   r²   r    r   r   ú<module>rÁ      sÔ   ðÝ Ý ç ;Ý #Ý Ý %ã ÷ñ õ )Ý 9÷ñ õ
 3ô(Ð#8ô (ð ‡�×ÑØ%à	ˆr�<×3Ñ3Ð4Ø$àXØØ(×<Ñ<ð	
ðóñ+-óð+-ò\Oò"DVòN" òJ
òò  MòF*ò64ò$#ó$)r   