Ë
    ûûàgRA  ã                   ó@  — d dl 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 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 ej8                  d„ «       Zej8                  d„ «       Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,y)é    )Úpatch)Úget_user_model)ÚAnonymousUser)ÚreverseN)ÚassertFormErrorÚassertRedirects)Úapp_settings)ÚEmailAddress)Ú
user_emailÚuser_username)Úcontext)Úcomplete_social_login)ÚSocialAccount)Úsignupc                 ó   ‡ — ˆ fd„}|S )Nc                 ó<  •— ‰j                  d«      }t        «       |_        t        j                  |«      5  t        ||«      }| j                  }|j                  j                  «       D ]
  \  }}|||<   Œ |j                  «        |cd d d «       S # 1 sw Y   y xY w)Nú/)	Úgetr   Úuserr   Úrequest_contextr   ÚsessionÚitemsÚsave)ÚclientÚsocialloginÚrequestÚrespr   ÚkÚvÚrequest_factorys          €úe/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/allauth/socialaccount/tests/test_signup.pyÚfz!setup_sociallogin_flow.<locals>.f   s‰   ø€ Ø!×%Ñ% cÓ*ˆÜ$“ˆŒä×$Ñ$ WÓ-ñ 	Ü(¨°+Ó>ˆDØ—n‘nˆGØŸ™×-Ñ-Ó/ò ‘��1Ø�˜’
ðà�L‰LŒNØ÷	÷ 	ò 	ús   ·ABÂB© )r    r"   s   ` r!   Úsetup_sociallogin_flowr$      s   ø€ ô
ð €Hó    c                 ó   ‡ ‡— ˆ ˆfd„}|S )Nc                 ó�  •— t        «       } |«       }t        |d«       d}t        ||«       |j                  «        t        j
                  j                  ||dd¬«        ‰	d| |¬«      }‰j                  d«      }t        «       |_	        t        j                  |«      5  t        ||«      }d d d «       ||fS # 1 sw Y   |fS xY w)NÚtestútest@example.comT©r   ÚemailÚverifiedÚprimaryÚtwitter©ÚproviderÚusernamer+   ú!/accounts/twitter/login/callback/)r   r   r   r   r
   ÚobjectsÚcreater   r   r   r   r   r   )
r1   r+   ÚUserÚexi_userÚexi_user_emailr   r   r   r    Úsociallogin_factorys
           €€r!   Ú_email_address_clashz1email_address_clash.<locals>._email_address_clash(   sÃ   ø€ ÜÓˆá“6ˆÜ�h Ô'Ø+ˆÜ�8˜^Ô,Ø�‰ŒÜ×Ñ×#Ñ#Ø ¸$Èð 	$ô 	
ñ
 *Ø¨¸ô
ˆð
 "×%Ñ%Ð&IÓJˆÜ$“ˆŒÜ×$Ñ$ WÓ-ñ 	?Ü(¨°+Ó>ˆD÷	?à˜ˆ}Ð÷	?à˜ˆ}Ðús   Â B9Â9Cr#   )r    r8   Útwitter_provider_settingsr9   s   ``  r!   Úemail_address_clashr;   $   s   ù€ õð0  Ðr%   c                 óì  — d| _         d | _        t        j                  j                  | _         |ddd¬«      } |||«        t        «       j                  j                  di t        j                  di¤Ž}t        j                  j                  ||j                  j                  ¬«      j                  «       sJ ‚t        j                  j                  |t!        |«      ¬«      j                  «       sJ ‚y )	NTr)   Fr(   ©r+   Úemail_verifiedr1   )r   Úuid)r   r+   r#   )ÚSOCIALACCOUNT_AUTO_SIGNUPÚACCOUNT_SIGNUP_FORM_CLASSÚaccount_settingsÚEmailVerificationMethodÚNONEÚACCOUNT_EMAIL_VERIFICATIONr   r3   r   ÚUSER_MODEL_USERNAME_FIELDr   ÚfilterÚaccountr?   Úexistsr
   r   )ÚsettingsÚdbr   r$   r8   r   r   s          r!   Útest_email_address_createdrL   C   sÖ   € ð *.€HÔ&Ø)-€HÔ&Ü*:×*RÑ*R×*WÑ*W€HÔ'á%Ø °Àô€Kñ ˜6 ;Ô/à'Œ>Ó×#Ñ#×'Ñ'ñ Ü×5Ñ5°vÐ
>ñ€Dô × Ñ ×'Ñ'¨T°{×7JÑ7J×7NÑ7NÐ'ÓO×VÑVÔXÐXÐXÜ×Ñ×&Ñ&¨D¼
À4Ó8HÐ&ÓI×PÑPÔRÐRÑRr%   c                 ó²  — d|_         d|_        d|_        dh|_        d|_         |dd«      \  }}|d   t        d«      k(  sJ ‚d|_        dd	d
œ|_        t        j                  |«      5  t        |«      }ddd«       |d   dk(  sJ ‚ t        «       j                  j                  di t        j                  d	i¤Ž}t!        |«      dk(  sJ ‚y# 1 sw Y   ŒXxY w)z%Test clash on both username and emailTr+   r(   r)   ÚlocationÚsocialaccount_signupÚPOSTÚotherúother@example.com©r1   r+   Nú/accounts/profile/r#   ©ÚACCOUNT_EMAIL_REQUIREDÚACCOUNT_UNIQUE_EMAILÚACCOUNT_USERNAME_REQUIREDÚACCOUNT_LOGIN_METHODSr@   r   ÚmethodrP   r   r   r   r   r3   r   rB   ÚUSER_MODEL_EMAIL_FIELDr   )rK   r   rJ   r;   r   r   r   s          r!   Ú*test_email_address_clash_username_requiredr\   V   sò   € ð '+€HÔ#Ø$(€HÔ!Ø)-€HÔ&Ø&- Y€HÔ"Ø)-€HÔ&Ù'¨Ð0BÓC�M€GˆTØ�
ÑœwÐ'=Ó>Ò>Ð>Ð>ð €G„NØ 'Ð2EÑF€G„LÜ	×	 Ñ	  Ó	)ñ Ü�g‹ˆ÷à�
ÑÐ3Ò3Ð3Ð3Ø'Œ>Ó×#Ñ#×'Ñ'ñ Ü×2Ñ2Ð4GÐ
Hñ€Dô ˜Ó 'Ò)Ð)Ñ)÷ð ús   Á*CÃCc                 ó°  — d|_         d|_        d|_        dh|_        d|_         |dd«      \  }}|d   t        d«      k(  sJ ‚d|_        dd	i|_        t        j                  |«      5  t        |«      }d
d
d
«       |d   dk(  sJ ‚ t        «       j                  j                  di t        j                  d	i¤Ž}t!        |«      dk7  sJ ‚y
# 1 sw Y   ŒXxY w)z)Test clash while username is not requiredTFr+   r(   r)   rN   rO   rP   rR   NrT   r#   rU   ©rK   rJ   r;   r   r   r   s         r!   Ú.test_email_address_clash_username_not_requiredr_   n   sð   € à&*€HÔ#Ø$(€HÔ!Ø).€HÔ&Ø&- Y€HÔ"Ø)-€HÔ&Ù'¨Ð0BÓC�M€GˆTØ�
ÑœwÐ'=Ó>Ò>Ð>Ð>ð €G„NØÐ0Ð1€G„LÜ	×	 Ñ	  Ó	)ñ Ü�g‹ˆ÷à�
ÑÐ3Ò3Ð3Ð3Ø'Œ>Ó×#Ñ#×'Ñ'ñ Ü×2Ñ2Ð4GÐ
Hñ€Dô ˜Ó &Ò(Ð(Ñ(÷ð ús   Á)CÃCc                 ó   — d|_         d|_        d|_        dh|_        d|_         |dd«      \  }}|d   dk(  sJ ‚ t        «       j                  j                  di t        j                  di¤Ž}t        |«      dk7  sJ ‚y )	NTFr+   r(   rR   rN   rT   r#   )rV   rW   rX   rY   r@   r   r3   r   rB   r[   r   r^   s         r!   Ú-test_email_address_clash_username_auto_signupra   „   s•   € Ø&*€HÔ#Ø$(€HÔ!Ø).€HÔ&Ø&- Y€HÔ"Ø)-€HÔ&á'¨Ð0CÓD�M€GˆTØ�
ÑÐ3Ò3Ð3Ð3Ø'Œ>Ó×#Ñ#×'Ñ'ñ Ü×2Ñ2Ð4GÐ
Hñ€Dô ˜Ó &Ò(Ð(Ñ(r%   c                 óp  — d|_         g d¢|_        d|_        d|_        dh|_        d|_        |j                  d«      }t        «       |_         |ddd¬«      }t        j                  |«      5  t        ||«       d d d «       |j                  j                  t        j                  vsJ ‚y # 1 sw Y   Œ2xY w)	NT)r1   Ú	username1Ú	username2r+   r2   r.   r1   zusername@example.comr/   )rV   ÚACCOUNT_USERNAME_BLACKLISTrW   rX   rY   r@   r   r   r   r   r   r   r1   rB   ÚUSERNAME_BLACKLIST)rK   rJ   r    r8   r:   r   r   s          r!   Ú#test_populate_username_in_blacklistrg   “   s²   € ð '+€HÔ#Ú*P€HÔ'Ø$(€HÔ!Ø)-€HÔ&Ø&- Y€HÔ"Ø)-€HÔ&Ø×!Ñ!Ð"EÓF€GÜ “?€G„LÙ%Ø ZÐ7Mô€Kô 
×	 Ñ	  Ó	)ñ 4Ü˜g {Ô3÷4ð �<‰<× Ñ Ô(8×(KÑ(KÑKÐKÑK÷4ð 4ús   Á.B,Â,B5c                 óŽ  — d|_         d|_        d|_        d|_        dh|_        d|_         |d¬«      } |||«       |j                  t        d«      «      }|j                  d   }|d   j                  «       dk(  sJ ‚|j                  t        d«      dd	i¬
«      }t        |dd¬«       t        «       j                  j                  «       d   }t        |«      dk(  sJ ‚t         j                  j#                  |ddd¬«      j%                  «       sJ ‚t         j                  j#                  |d	dd¬«      j%                  «       sJ ‚y)zè
    Test scenario for when the user changes email at social signup. Current
    behavior is that both the unverified and verified email are added, and
    that the user is allowed to pass because he did provide a verified one.
    TÚ	mandatoryFr+   zverified@example.com©r+   rO   Úformúunverified@example.org©ÚdatarT   )Úfetch_redirect_responser   r*   N)rV   rE   rW   rX   rY   r@   r   r   r   ÚvalueÚpostr   r   r3   Úallr   r
   rG   rI   )	rK   r   rJ   r8   r$   r   r   rk   r   s	            r!   Ú$test_verified_email_change_at_signuprs   §   si  € ð '+€HÔ#Ø*5€HÔ'Ø$(€HÔ!Ø).€HÔ&Ø&- Y€HÔ"Ø).€HÔ&á%Ð,BÔC€KÙ˜6 ;Ô/Ø�:‰:”gÐ4Ó5Ó6€DØ�<‰<˜Ñ€DØ�‰=×ÑÓ Ð$:Ò:Ð:Ð:Ø�;‰;ÜÐ&Ó'ØÐ/Ð0ð ó €Dô �DÐ.ÈÕNÜÓ×#Ñ#×'Ñ'Ó)¨!Ñ,€DÜ�dÓÐ5Ò5Ð5Ð5Ü×Ñ×&Ñ&ØØ$ØØð	 'ó ÷
 �fƒhðð ð ô ×Ñ×&Ñ&ØØ&ØØð	 'ó ÷
 �fƒhðð ñ r%   c                 ó¢  — d|_         d|_        d|_        d|_        dh|_        d|_        t        «       } |dd¬«      } |||«       |j                  t        d«      «      }|j                  d   }|d   j                  «       dk(  sJ ‚|j                  t        d«      dd	i¬
«      }t        |t        d«      «       |j                  j                  «       d   }	t        |	«      d	k(  sJ ‚t         j                  j#                  |	ddd¬«      j%                  «       sJ ‚t         j                  j#                  |	d	dd¬«      j%                  «       sJ ‚y)zç
    Test scenario for when the user changes email at social signup, while
    his provider did not provide a verified email. In that case, email
    verification will kick in. Here, both email addresses are added as
    well.
    Tri   Fr+   zunverified@example.com©r+   r>   rO   rk   rl   rm   Úaccount_email_verification_sentr   r*   N)rV   rE   rW   rX   rY   r@   r   r   r   r   rp   rq   r   r3   rr   r   r
   rG   rI   )
rK   r   rJ   r8   r$   r5   r   r   rk   r   s
             r!   Ú&test_unverified_email_change_at_signuprw   Ð   su  € ð '+€HÔ#Ø*5€HÔ'Ø$(€HÔ!Ø).€HÔ&Ø&- Y€HÔ"Ø).€HÔ&äÓ€DÙ%Ø&°uô€Kñ ˜6 ;Ô/Ø�:‰:”gÐ4Ó5Ó6€DØ�<‰<˜Ñ€DØ�‰=×ÑÓ Ð$<Ò<Ð<Ð<Ø�;‰;ÜÐ&Ó'ØÐ/Ð0ð ó €Dô
 �Dœ'Ð"CÓDÔEØ�<‰<×ÑÓ˜aÑ €DÜ�dÓÐ7Ò7Ð7Ð7Ü×Ñ×&Ñ&ØØ&ØØð	 'ó ÷
 �fƒhðð ð ô ×Ñ×&Ñ&ØØ&ØØð	 'ó ÷
 �fƒhðð ñ r%   c                 ó  — d|_         d|_        d|_        d|_        d|_        dh|_        d|_        t        «       }d}|j                  j                  |¬«      }t        j                  j                  ||d¬«        |d¬«      } |||«       |j                  t        d«      «      }	|	j                  d	   }
|
d   j                  «       |k(  sJ ‚|j                  t        d«      d|i¬
«      }	t!        |	j                  d	   dd«       y )NFTri   r+   zme@example.comrj   )r+   r   r,   rO   rk   rm   zƒAn account already exists with this email address. Please sign in to that account first, then connect your Unittest Server account.)ÚACCOUNT_PREVENT_ENUMERATIONrV   rE   rW   rX   rY   r@   r   r3   r4   r
   r   r   r   rp   rq   r   )rK   r   r8   rJ   r$   r5   r+   r   r   r   rk   s              r!   Ú#test_unique_email_validation_signuprz   þ   s  € ð ,1€HÔ(Ø&*€HÔ#Ø*5€HÔ'Ø$(€HÔ!Ø).€HÔ&Ø&- Y€HÔ"Ø).€HÔ&ÜÓ€DØ€EØ�<‰<×Ñ UÐÓ+€DÜ×Ñ×Ñ e°$ÀÐÔFÙ%Ð,<Ô=€KÙ˜6 ;Ô/Ø�:‰:”gÐ4Ó5Ó6€DØ�<‰<˜Ñ€DØ�‰=×ÑÓ  EÒ)Ð)Ð)Ø�;‰;”wÐ5Ó6¸gÀuÐ=Mˆ;ÓN€DÜØ�‰�VÑØð	)õr%   c                 óX  — d|_         d|_        d|_        d|_        dh|_        d|_        t        «       } |dd¬«      } |||«       |j                  t        d«      «      }|j                  d   }|d   j                  «       dk(  sJ ‚|j                  t        d«      d	dd
œ¬«      }|j                  dk(  sJ ‚|j                  j                  «       dk(  sJ ‚t        j                  j                  «       dk(  sJ ‚|j                  t        d«      «      }t!        |t        d«      «       y)a¥  
    Test scenario for when the user signs up with a social account
    and uses email address in that social account. But upon seeing the
    verification screen, they realize that email address is somehow
    unusable for them, and so backs up and enters a different email
    address (and is forced to choose a new username) while providing
    the same social account token which is owned by their first attempt.
    Tri   r+   Fzme1@example.comru   rO   rk   Úme1rS   rm   i.  é   Úaccount_loginN)rV   rE   rW   rX   rY   r@   r   r   r   r   rp   rq   Ústatus_coder3   Úcountr   r   )	rK   r   r8   rJ   r$   r5   r   r   rk   s	            r!   Ú#test_social_account_taken_at_signupr�     s)  € ð '+€HÔ#Ø*5€HÔ'Ø$(€HÔ!Ø)-€HÔ&Ø&- Y€HÔ"Ø).€HÔ&äÓ€DÙ%Ð,=ÈeÔT€KÙ˜6 ;Ô/Ø�:‰:”gÐ4Ó5Ó6€DØ�<‰<˜Ñ€DØ�‰=×ÑÓ Ð$5Ò5Ð5Ð5Ø�;‰;ÜÐ&Ó'ØÐ*;Ñ<ð ó €Dð ×Ñ˜sÒ"Ð"Ð"Ø�<‰<×ÑÓ 1Ò$Ð$Ð$Ü× Ñ ×&Ñ&Ó(¨AÒ-Ð-Ð-à�:‰:”gÐ4Ó5Ó6€DÜ�Dœ' /Ó2Õ3r%   c                 ó  — d|_         d|_        d|_        dh|_        d|_        d|_         |d¬«      } |||«      }|d   t        d«      k(  sJ ‚|j                  t        d«      ddi«      }|d   t        d	«      k(  sJ ‚y
)zgTests that when the email address is missing from the sociallogin email
    verification kicks in.
    TFr+   ri   ©Ú
with_emailrN   rO   zother@example.orgrv   N)rV   rW   rX   rY   rE   r@   r   rq   )rK   rJ   r8   r   r$   r   r   s          r!   Ú4test_email_address_required_missing_from_socialloginr…   ?  sš   € ð '+€HÔ#Ø$(€HÔ!Ø).€HÔ&Ø&- Y€HÔ"Ø*5€HÔ'Ø)-€HÔ&á%°Ô7€KÙ! &¨+Ó6€DØ�
ÑœwÐ'=Ó>Ò>Ð>Ð>à�;‰;”wÐ5Ó6¸ÐBUÐ8VÓW€DØ�
ÑœwÐ'HÓIÒIÐIÑIr%   c                 óN  — d|_         d|_        d|_        dh|_        d|_        d|_         |«       } |d¬«      } |||«      }	|	d   t        d«      k(  sJ ‚|j                  t        d«      d|j                  i«      }	|d   j                  d	k(  sJ ‚|	d   t        d
«      k(  sJ ‚y)úyTests that when an already existing email is given at the social signup
    form, enumeration preventation kicks in.
    TFr+   ri   rƒ   rN   rO   r   ú$[example.com] Account Already Existsrv   N)
rV   rW   rX   rY   rE   r@   r   rq   r+   Úsubject)
rK   rJ   Úuser_factoryr8   r   r$   Ú
mailoutboxr   r   r   s
             r!   Ú1test_email_address_conflict_at_social_signup_formrŒ   T  s¿   € ð '+€HÔ#Ø$(€HÔ!Ø).€HÔ&Ø&- Y€HÔ"Ø*5€HÔ'Ø)-€HÔ&á‹>€DÙ%°Ô7€Ká! &¨+Ó6€Dà�
ÑœwÐ'=Ó>Ò>Ð>Ð>ð �;‰;”wÐ5Ó6¸À$Ç*Á*Ð8MÓN€DØ�a‰=× Ñ Ð$JÒJÐJÐJØ�
ÑœwÐ'HÓIÒIÐIÑIr%   c                 óð   — d|_         d|_        d|_        dh|_        d|_        d|_         |«       } ||j                  d¬«      } |||«      }	|	d   t        d«      k(  sJ ‚|d   j                  d	k(  sJ ‚y
)ztTests that when an already existing email is received from the provider,
    enumeration preventation kicks in.
    TFr+   ri   )r+   r„   rN   rv   r   rˆ   N)	rV   rW   rX   rY   rE   r@   r+   r   r‰   ©
rK   rJ   rŠ   r8   r   r‹   r$   r   r   r   s
             r!   Ú.test_email_address_conflict_during_auto_signupr�   t  s‹   € ð '+€HÔ#Ø$(€HÔ!Ø).€HÔ&Ø&- Y€HÔ"Ø*5€HÔ'Ø)-€HÔ&á‹>€DÙ%¨D¯J©JÀ4ÔH€KÙ! &¨+Ó6€DØ�
ÑœwÐ'HÓIÒIÐIÐIØ�a‰=× Ñ Ð$JÒJÐJÑJr%   c                 óÞ  — d|_         d|_        d|_        dh|_        d|_        d|_        d|_         |d¬«      } ||j                  d¬«      } |||«      }	|	d   t        d«      k(  sJ ‚|j                  t        d«      dd	i«      }	|d
   j                  dk(  sJ ‚|	d   |j                  k(  sJ ‚t        j                  j                  |j                  ¬«      j                  «       dk(  sJ ‚y)r‡   TFr+   Úoptional)r>   ru   rN   rO   zother@email.orgr   z/[example.com] Please Confirm Your Email Addressrj   r}   N)rV   rW   rX   rY   rE   r@   Ú"SOCIALACCOUNT_EMAIL_AUTHENTICATIONr+   r   rq   r‰   ÚLOGIN_REDIRECT_URLr
   r3   rG   r€   rŽ   s
             r!   Ú5test_email_address_conflict_removes_conflicting_emailr”   Ž  sþ   € ð '+€HÔ#Ø$(€HÔ!Ø).€HÔ&Ø&- Y€HÔ"Ø*4€HÔ'Ø)-€HÔ&Ø27€HÔ/á uÔ-€DÙ%¨D¯J©JÀuÔM€Ká! &¨+Ó6€Dð �
ÑœwÐ'=Ó>Ò>Ð>Ð>ð �;‰;”wÐ5Ó6¸ÐBSÐ8TÓU€DØ�a‰=× Ñ Ð$UÒUÐUÐUØ�
Ñ˜x×:Ñ:Ò:Ð:Ð:Ü×Ñ×&Ñ&¨T¯Z©ZÐ&Ó8×>Ñ>Ó@ÀAÒEÐEÑEr%   c                 óâ   —  |ddd¬«      }t        d«      5 }d|_         |||«      }d d d «       dj                  v sJ ‚t        «       j                  j                  «       rJ ‚y # 1 sw Y   Œ>xY w)Nr)   Fr(   r=   zLallauth.socialaccount.adapter.DefaultSocialAccountAdapter.is_open_for_signups   Sign Up Closed)r   Úreturn_valueÚcontentr   r3   rI   )rJ   rK   r   r$   r8   r   Úiofsr   s           r!   Útest_signup_closedr™   ±  s€   € ñ &Ø °Àô€Kô 
ØVó
ð ;à	Ø!ˆÔÙ% f¨kÓ:ˆ÷	;ð
  §¡Ñ,Ð,Ð,ÜÓ×'Ñ'×.Ñ.Ô0Ð0Ð0Ð0÷;ð ;ús   —A%Á%A.)-Úunittest.mockr   Údjango.contrib.authr   Údjango.contrib.auth.modelsr   Údjango.urlsr   ÚpytestÚpytest_django.assertsr   r   Úallauth.accountr	   rB   Úallauth.account.modelsr
   Úallauth.account.utilsr   r   Úallauth.corer   Úallauth.socialaccount.helpersr   Úallauth.socialaccount.modelsr   Úallauth.socialaccount.viewsr   Úfixturer$   r;   rL   r\   r_   ra   rg   rs   rw   rz   r�   r…   rŒ   r�   r”   r™   r#   r%   r!   ú<module>r¨      s­   ðÝ å .Ý 4Ý ã ß Bå <Ý /ß ;Ý  Ý ?Ý 6Ý .ð ‡�ñó ðð  ‡�ñ ó ð ò<Sò&*ò0)ò,)òLò(&òR+ò\ò:!4òHJò*Jò@Kò4 FóF1r%   