Ë
    ûûàgd2  ã                   óL  — d dl 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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  edej6                  j8                  ej:                  j<                  hdddddd¬«	       G d„ de«      «       Zd„ Z d„ Z!d„ Z"d„ Z#y)é    N)ÚANYÚpatch)Úsettings)Úget_user_model)Úmail)ÚTestCase)Úoverride_settings)ÚNoReverseMatchÚreverse)ÚassertTemplateUsed)Úapp_settings)Ú"AUTHENTICATION_METHODS_SESSION_KEY)Ú	LoginForm)ÚEmailAddressÚhttpsú/accounts/profile/z/accounts/welcome/z-allauth.account.adapter.DefaultAccountAdapterT)	ÚACCOUNT_DEFAULT_HTTP_PROTOCOLÚACCOUNT_EMAIL_VERIFICATIONÚACCOUNT_LOGIN_METHODSÚACCOUNT_SIGNUP_FORM_CLASSÚACCOUNT_EMAIL_SUBJECT_PREFIXÚLOGIN_REDIRECT_URLÚACCOUNT_SIGNUP_REDIRECT_URLÚACCOUNT_ADAPTERÚACCOUNT_USERNAME_REQUIREDc                   óN  — e Zd Z eej
                  j                  ej
                  j                  h¬«      d„ «       Zdd„Z	dd„Z
d„ Zd„ Z eej                  j                  ¬«      d„ «       Z eej                  j                  d	d
ddii¬«      d„ «       Z eej
                  j                  hej                  j"                  dd
ddii¬«      d„ «       Z eej
                  j                  hej                  j"                  d¬«      d„ «       Zd„ Zd„ Z ed¬«      d„ «       Zy)Ú
LoginTests)r   c                 óÔ  — t        «       j                  j                  d¬«      }|j                  d«       |j	                  «        t
        j                  j                  |ddd¬«       | j                  j                  t        d«      dddœ«      }| j                  |t        j                  d	¬
«       | j                  | j                  j                  t           t        dddœg«       y )Nz@raymond.penners©ÚusernameÚpsstzraymond.penners@example.comT©ÚuserÚemailÚprimaryÚverifiedÚaccount_login©ÚloginÚpasswordF©Úfetch_redirect_responser*   )Úatr    Úmethod)r   ÚobjectsÚcreateÚset_passwordÚsaver   ÚclientÚpostr   ÚassertRedirectsr   r   ÚassertEqualÚsessionr   r   ©Úselfr#   Úresps      ú^/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/allauth/account/tests/test_login.pyÚtest_username_containing_atz&LoginTests.test_username_containing_at   sÝ   € ô Ó×'Ñ'×.Ñ.Ð8JÐ.ÓKˆØ×Ñ˜&Ô!Ø�	‰	ŒÜ×Ñ×#Ñ#ØØ/ØØð	 	$ô 	
ð �{‰{×ÑÜ�OÓ$Ø(°fÑ=ó
ˆð 	×ÑØ”(×-Ñ-Àuð 	ô 	
ð 	×ÑØ�K‰K×ÑÔ BÑCô Ø 2Ø(ñðõ		
ó    c                 ó¼   —  t        «       j                  j                  d|ddœ|¤Ž}|r|j                  |«       n|j	                  «        |j                  «        |S )NT©r    Ú	is_active© )r   r/   r0   r1   Úset_unusable_passwordr2   )r9   r    r*   Úkwargsr#   s        r;   Ú_create_userzLoginTests._create_userA   s\   € Ø.Œ~Ó×'Ñ'×.Ñ.ð 
Ø¨ñ
Ø17ñ
ˆñ Ø×Ñ˜hÕ'à×&Ñ&Ô(Ø�	‰	ŒØˆr=   c                 ól   — |rdnd}| j                  |¬«      }| j                  j                  |«       |S )NÚdoeF)r*   )rD   r3   Úforce_login)r9   Úusable_passwordr*   r#   s       r;   Ú_create_user_and_loginz!LoginTests._create_user_and_loginL   s5   € Ù+‘5°ˆØ× Ñ ¨(Ð Ó3ˆØ�‰×Ñ Ô%Øˆr=   c                 ó˜   — | j                  «        | j                  }|j                  t        d«      «      }| j	                  |dd¬«       y )Nr'   r   Fr+   )rI   r3   Úgetr   r5   )r9   Úcr:   s      r;   Ú test_redirect_when_authenticatedz+LoginTests.test_redirect_when_authenticatedR   sA   € Ø×#Ñ#Ô%Ø�K‰KˆØ�u‰u”W˜_Ó-Ó.ˆØ×Ñ˜TÐ#7ÐQVÐÕWr=   c                 ó*  — | j                  «        | j                  j                  t        d«      ddddœd¬«      }| j	                  |d   d	«       t        j                  |j                  j                  d
«      «      }d|d   d   d   d   d   v sJ ‚y )NÚaccount_change_passwordrF   z
AbCdEf!123zAbCdEf!123456)ÚoldpasswordÚ	password1Ú	password2ÚXMLHttpRequest)ÚdataÚHTTP_X_REQUESTED_WITHzcontent-typezapplication/jsonÚutf8zsame passwordÚformÚfieldsrR   Úerrorsr   )	rI   r3   r4   r   r6   ÚjsonÚloadsÚcontentÚdecode)r9   r:   rT   s      r;   Útest_ajax_password_changez$LoginTests.test_ajax_password_changeX   sŸ   € Ø×#Ñ#Ô%Ø�{‰{×ÑÜÐ-Ó.à$Ø)Ø,ñð
 #3ð  ó 
ˆð 	×Ñ˜˜nÑ-Ð/AÔBÜ�z‰z˜$Ÿ,™,×-Ñ-¨fÓ5Ó6ˆØ $ v¡,¨xÑ"8¸Ñ"EÀhÑ"OÐPQÑ"RÑRÐRÑRr=   )r   c                 óh  — t        «       j                  j                  d¬«      }|j                  d«       |j	                  «        t
        j                  j                  |ddd¬«       | j                  j                  t        d«      ddd	œ«      }| j                  |t        j                  d¬
«       y)z9Tests login behavior when email verification is optional.Újohnr   rF   úuser@example.comTFr"   r'   r(   r+   N)r   r/   r0   r1   r2   r   r3   r4   r   r5   r   r   r8   s      r;   Ú&test_login_unverified_account_optionalz1LoginTests.test_login_unverified_account_optionalg   s¡   € ô
 Ó×'Ñ'×.Ñ.¸Ð.Ó?ˆØ×Ñ˜%Ô Ø�	‰	ŒÜ×Ñ×#Ñ#ØÐ/¸Èð 	$ô 	
ð �{‰{×ÑÜ�OÓ$°ÀEÑ&Jó
ˆð 	×ÑØ”(×-Ñ-Àuð 	õ 	
r=   é   ÚdefaultÚBACKENDz-django.core.cache.backends.locmem.LocMemCache)r   ÚACCOUNT_LOGIN_ATTEMPTS_LIMITÚCACHESc                 ó²  — t        «       j                  j                  d¬«      }|j                  d«       |j	                  «        t
        j                  j                  |ddd¬«       t        d«      D ]a  }|d	k(  }|d
k\  }| j                  j                  t        d«      g d¢|   |rdnddœ«      }| j                  |j                  d   d |rdnd«       Œc y )Nr`   r   rF   ra   TFr"   é   é   rc   r'   )r`   ÚJohnÚJOHNÚJOhnÚjoHNÚwrongr(   rW   ú0Too many failed login attempts. Try again later.z;The username and/or password you specified are not correct.)r   r/   r0   r1   r2   r   Úranger3   r4   r   ÚassertFormErrorÚcontext)r9   r#   ÚiÚis_valid_attemptÚ	is_lockedr:   s         r;   Ú#test_login_failed_attempts_exceededz.LoginTests.test_login_failed_attempts_exceededy   sß   € ô Ó×'Ñ'×.Ñ.¸Ð.Ó?ˆØ×Ñ˜%Ô Ø�	‰	ŒÜ×Ñ×#Ñ#ØÐ/¸Èð 	$ô 	
ô �q“ò 	ˆAØ  A™vÐØ˜Q™ˆIØ—;‘;×#Ñ#Ü˜Ó(âEÀaÑHÙ*:¡ÀñóˆDð × Ñ Ø—‘˜VÑ$Øñ !ñ GàVõñ	r=   é   )r   r   rf   rg   c                 ó
  — t        «       j                  j                  ddd¬«      }|j                  d«       |j	                  «        t
        j                  j                  |ddd¬«       | j                  j                  t        d«      |j                  dd	œ«      }| j                  |j                  d
   d d«       | j                  j                  t        d«      |j                  dd	œ«      }| j                  |j                  d
   d d«       | j                  j                  t        d«      d|j                  i¬«       t        j                  d   j                  }| j                  |j!                  d«      d«       ||j!                  d«      d  j#                  «       d   }| j                  j%                  |«      }|j&                  }| j                  j%                  |«      }| j)                  |dt*        j,                  z  «       | j/                  d|j0                  v «       d}| j                  j                  |||dœ«      }| j3                  |t        d«      «       t        «       j                  j%                  |j4                  ¬«      }| j7                  |j9                  |«      «       | j                  j                  t        d«      |j                  |d	œ«      }| j3                  |t:        j<                  d¬«       y )Nr`   újohn@example.orgT©r    r$   r@   rF   r"   r'   Úbadr(   rW   z@The email address and/or password you specified are not correct.rp   Úaccount_reset_passwordr$   )rT   r   zhttps://z/accounts/password/reset/z"account/password_reset_from_key.%sÚ
token_failÚ
newpass123)rQ   rR   Ú$account_reset_password_from_key_done)ÚpkFr+   )r   r/   r0   r1   r2   r   r3   r4   r   r$   rr   rs   r   ÚoutboxÚbodyÚassertGreaterÚfindÚsplitrK   Úurlr   r   ÚTEMPLATE_EXTENSIONÚassertFalseÚcontext_datar5   r�   Ú
assertTrueÚcheck_passwordr   r   )r9   r#   r:   rƒ   r‡   Únew_passwords         r;   Ú=test_login_failed_attempts_exceeded_cleared_on_password_resetzHLoginTests.test_login_failed_attempts_exceeded_cleared_on_password_reset�   s   € ô Ó×'Ñ'×.Ñ.ØÐ#5Àð /ó 
ˆð 	×Ñ˜%Ô Ø�	‰	Œä×Ñ×#Ñ#ØÐ/¸Èð 	$ô 	
ð �{‰{×ÑÜ�OÓ$°·
±
ÈÑ&Nó
ˆð 	×ÑØ�L‰L˜Ñ ØØNô	
ð
 �{‰{×ÑÜ�OÓ$°·
±
ÈÑ&Nó
ˆð 	×ÑØ�L‰L˜Ñ ØØ>ô	
ð
 	�‰×ÑœÐ!9Ó:À'È4Ï:É:ÐAVÐÔWä�{‰{˜1‰~×"Ñ"ˆØ×Ñ˜4Ÿ9™9 ZÓ0°!Ô4ð �4—9‘9Ð8Ó9Ð;Ð<×BÑBÓDÀQÑGˆØ�{‰{�‰˜sÓ#ˆð �h‰hˆØ�{‰{�‰˜sÓ#ˆØ×ÑØØ0´<×3RÑ3RÑRô	
ð 	×Ñ˜¨×):Ñ):Ð:Ô;à#ˆð �{‰{×ÑØ˜|¸,ÑGó
ˆð 	×Ñ˜T¤7Ð+QÓ#RÔSô Ó×'Ñ'×+Ñ+¨t¯w©wÐ+Ó7ˆØ�‰˜×+Ñ+¨LÓ9Ô:à�{‰{×ÑÜ�OÓ$Ø—j‘j¨lÑ;ó
ˆð
 	×ÑØ”(×-Ñ-Àuð 	õ 	
r=   )r   r   rf   c                 ó@  — t        «       j                  j                  ddd¬«      }|j                  d«       |j	                  «        t
        j                  j                  |ddd¬«       t
        j                  j                  |ddd¬«       | j                  j                  t        d	«      ddd
œ«      }| j                  |t        d«      d¬«       | j                  t        t        j                  «      d«       t        j                  d   j                  dgk(  sJ ‚y )Nr`   rz   Tr{   rF   r"   újohn@example.comFr'   r(   Úaccount_email_verification_sentr+   rx   r   )r   r/   r0   r1   r2   r   r3   r4   r   r5   r6   Úlenr   r‚   Útor8   s      r;   Ú7test_login_using_unverified_email_address_is_prohibitedzBLoginTests.test_login_using_unverified_email_address_is_prohibitedë   s  € ô Ó×'Ñ'×.Ñ.ØÐ#5Àð /ó 
ˆð 	×Ñ˜%Ô Ø�	‰	Œä×Ñ×#Ñ#ØÐ/¸Èð 	$ô 	
ô 	×Ñ×#Ñ#ØÐ/¸Èð 	$ô 	
ð �{‰{×ÑÜ�OÓ$Ð0BÐPUÑ&Vó
ˆð 	×ÑØÜÐ5Ó6Ø$)ð 	ô 	
ð
 	×ÑœœTŸ[™[Ó)¨1Ô-Ü�{‰{˜1‰~× Ñ Ð%7Ð$8Ò8Ð8Ñ8r=   c                 óZ  — t        «       j                  j                  d¬«      }|j                  d«       |j	                  «        t
        j                  j                  |ddd¬«       | j                  j                  t        d«      ddd	œ«      }| j                  |t        d
«      «       y)z:Tests login behavior when email verification is mandatory.r`   r   rF   ra   TFr"   r'   r(   r‘   N©
r   r/   r0   r1   r2   r   r3   r4   r   r5   r8   s      r;   Ú'test_login_unverified_account_mandatoryz2LoginTests.test_login_unverified_account_mandatory	  s•   € äÓ×'Ñ'×.Ñ.¸Ð.Ó?ˆØ×Ñ˜%Ô Ø�	‰	ŒÜ×Ñ×#Ñ#ØÐ/¸Èð 	$ô 	
ð �{‰{×ÑÜ�OÓ$°ÀEÑ&Jó
ˆð 	×Ñ˜T¤7Ð+LÓ#MÕNr=   c                 ó´  — t        «       j                  j                  dd¬«      }|j                  d«       |j	                  «        t
        j                  j                  |ddd¬«       | j                  j                  t        d«      ddd	œ«      }| j                  |t        d
«      «       t        «       j                  j                  dd¬«      }|j                  d«       |j	                  «        t
        j                  j                  |ddd¬«       | j                  j                  t        d«      ddd	œ«      }| j                  |t        d
«      «       y)z»
        Tests login behavior with inactive accounts.

        Inactive user accounts should be prevented from performing any actions,
        regardless of their verified state.
        r`   Fr?   rF   r�   Tr"   r'   r(   Úaccount_inactivera   Nr–   r8   s      r;   Útest_login_inactive_accountz&LoginTests.test_login_inactive_account  s0  € ô Ó×'Ñ'×.Ñ.¸È%Ð.ÓPˆØ×Ñ˜%Ô Ø�	‰	ŒÜ×Ñ×#Ñ#ØÐ/¸Èð 	$ô 	
ð �{‰{×ÑÜ�OÓ$°ÀEÑ&Jó
ˆð 	×Ñ˜T¤7Ð+=Ó#>Ô?ô Ó×'Ñ'×.Ñ.¸ÈÐ.ÓOˆØ×Ñ˜&Ô!Ø�	‰	ŒÜ×Ñ×#Ñ#ØÐ/¸Èð 	$ô 	
ð �{‰{×ÑÜ�OÓ$°À6Ñ&Jó
ˆð 	×Ñ˜T¤7Ð+=Ó#>Õ?r=   F)Ú%ACCOUNT_AUTHENTICATED_LOGIN_REDIRECTSc                 ó¤   — | j                  «        | j                  j                  t        d«      «      }| j	                  |j
                  d«       y )Nr'   éÈ   )rI   r3   rK   r   r6   Ústatus_code)r9   r:   s     r;   Ú3test_account_authenticated_login_redirects_is_falsez>LoginTests.test_account_authenticated_login_redirects_is_false5  s;   € à×#Ñ#Ô%Ø�{‰{�‰œw Ó7Ó8ˆØ×Ñ˜×)Ñ)¨3Õ/r=   N)r`   rF   )T)Ú__name__Ú
__module__Ú__qualname__r	   r   ÚLoginMethodÚUSERNAMEÚEMAILr<   rD   rI   rM   r^   ÚEmailVerificationMethodÚOPTIONALrb   rw   Ú	MANDATORYrŽ   r”   r—   rš   rŸ   rA   r=   r;   r   r      sp  „ ñ à×$Ñ$×-Ñ-Ø×$Ñ$×*Ñ*ð
ôñ
óð
ó8	óòXòSñ Ø#/×#GÑ#G×#PÑ#Pôñ
óð
ñ Ø#/×#GÑ#G×#PÑ#PØ%&àØÐJðð
ôñóðñ6 Ø+×7Ñ7×=Ñ=Ð>Ø#/×#GÑ#G×#QÑ#QØ%&àØÐJðð
ô		ñB
ó	ðB
ñH Ø+×7Ñ7×=Ñ=Ð>Ø#/×#GÑ#G×#QÑ#QØ%&ôñ
9óð
9ò2Oò@ñ> ¸UÔCñ0ó Dñ0r=   r   c                 ó¬   — t        d«      5 }t        |_        t        «       }|j                  d   j
                  dk(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nzallauth.account.forms.reverser*   Ú )r   r
   Úside_effectr   rX   Ú	help_text)r3   ÚdbÚreverse_mockrW   s       r;   Ú.test_login_password_forgotten_link_not_presentr¯   <  sN   € Ü	Ð.Ó	/ð 7°<Ü#1ˆÔ Ü‹{ˆØ�{‰{˜:Ñ&×0Ñ0°BÒ6Ð6Ñ6÷7÷ 7ñ 7ús   Œ4A
Á
Ac                 óT   — t        «       }|j                  d   j                  dk(  sJ ‚y )Nr*   z=<a href="/accounts/password/reset/">Forgot your password?</a>)r   rX   r¬   )r3   r­   rW   s      r;   Ú*test_login_password_forgotten_link_presentr±   C  s/   € Ü‹;€Dà�‰�JÑ×)Ñ)ØJò	Kðñ	Kr=   c                 ó:  — d| _          |ddd¬«        |ddd¬«       | j                  }|j                  t        d«      ddd	œ«      }|j                  d
k(  sJ ‚|d   |k(  sJ ‚|j                  t        d«      ddd	œ«      }|j                  d
k(  sJ ‚|d   |k(  sJ ‚y )NFr`   rz   rF   )r    r$   r*   Újanezjane@example.orgr'   r(   i.  Úlocation)r›   r   r4   r   rž   )r   r3   Úuser_factoryÚredirect_urlr:   s        r;   Útest_login_while_authenticatedr·   K  s±   € Ø5:€HÔ2Ù˜&Ð(:ÀUÕKÙ˜&Ð(:ÀUÕKØ×.Ñ.€Là�;‰;”w˜Ó/¸6ÈuÑ1UÓV€DØ×Ñ˜sÒ"Ð"Ð"Ø�
Ñ˜|Ò+Ð+Ð+Ø�;‰;”w˜Ó/¸6ÈuÑ1UÓV€DØ×Ñ˜sÒ"Ð"Ð"Ø�
Ñ˜|Ò+Ð+Ñ+r=   c                 ór   — | j                  t        d«      «      }|j                  dk(  sJ ‚t        |d«       y )Nr'   r�   zaccount/login.html)rK   r   rž   r   )r3   r­   r:   s      r;   Útest_login_pager¹   Y  s4   € Ø�:‰:”g˜oÓ.Ó/€DØ×Ñ˜sÒ"Ð"Ð"Ü�tÐ1Õ2r=   )$rZ   Úunittest.mockr   r   Údjango.confr   Údjango.contrib.authr   Údjango.corer   Údjango.testr   Údjango.test.utilsr	   Údjango.urlsr
   r   Úpytest_django.assertsr   Úallauth.accountr   Úallauth.account.authenticationr   Úallauth.account.formsr   Úallauth.account.modelsr   r¦   r¨   ÚAuthenticationMethodr¤   r   r¯   r±   r·   r¹   rA   r=   r;   ú<module>rÇ      sš   ðÛ ß $å  Ý .Ý Ý  Ý /ß /å 4å (Ý MÝ +Ý /ñ Ø")Ø+×CÑC×MÑMØ'×<Ñ<×EÑEÐFØ"Ø!%Ø+Ø 4ØCØ"ô
ô[0�ó [0ó
ð[0ò|7òò,ó3r=   