Ë
    ûûàgïF  ã                   ó>  — d dl Z d dlZd dlZd dlZd dlZd dl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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#m$Z$ d dl%m&Z&m'Z' d„ Z( G d„ d«      Z)d„ Z* G d„ d«      Z+ G d„ de+«      Z,y)é    N)Úparse_qsÚurlparse)Úsettings)Úget_user_model)ÚRequestFactoryÚTestCase)Úoverride_settings)Úreverse)Ú	urlencode)ÚEmailAddress)Ú
user_emailÚuser_username)Úapp_settings)Úget_adapter)ÚSocialAccountÚ	SocialApp)ÚMockedResponseÚmocked_responsec                 óh  — t        «       j                  d«      }t        «       j                  || «      }|r|d   S t        j
                  j                  | | d| d¬«      }t        j                  j                  r9ddl
m} |j                  j                  |j
                  j                  «       «       |S )Nú/r   Úapp123idÚdummy)ÚproviderÚnameÚ	client_idÚkeyÚsecret)ÚSite)r   Úgetr   Ú	list_appsr   ÚobjectsÚcreateÚallauthr   ÚSITES_ENABLEDÚdjango.contrib.sites.modelsr   ÚsitesÚaddÚget_current)Úprovider_idÚrequestÚappsÚappr   s        úb/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/allauth/socialaccount/tests/__init__.pyÚ	setup_appr.      s•   € ÜÓ×"Ñ" 3Ó'€GÜ‹=×"Ñ" 7¨KÓ8€DÙØ�A‰wˆä
×
Ñ
×
"Ñ
"ØØØØØð #ó €Cô ×Ñ×)Ò)Ý4à�	‰	�‰�d—l‘l×.Ñ.Ó0Ô1Ø€Jó    c                   óŠ   ‡ — e Zd ZU eed<   d„ Zd„ Zˆ fd„Z ed¬«      d„ «       Z	 eddd¬	«      d
„ «       Z
dd„Zd„ Zd„ Zˆ xZS )ÚOAuthTestsMixinr)   c                  ó   — y ©N© ©Úselfs    r-   Úget_mocked_responsez#OAuthTestsMixin.get_mocked_response1   ó   € Ør/   c                 ó   — t         ‚r3   ©ÚNotImplementedErrorr5   s    r-   Úget_expected_to_strz#OAuthTestsMixin.get_expected_to_str4   ó   € Ü!Ð!r/   c                 óÐ   •— t         t        | �  «        t        | j                  «      | _        t        «       j                  d«      }| j
                  j                  |«      | _	        y ©Nr   )
Úsuperr1   ÚsetUpr.   r)   r,   r   r   Úget_providerr   )r6   r*   Ú	__class__s     €r-   rA   zOAuthTestsMixin.setUp7   sK   ø€ ÜŒo˜tÑ*Ô,Ü˜T×-Ñ-Ó.ˆŒÜ Ó"×&Ñ& sÓ+ˆØŸ™×-Ñ-¨gÓ6ˆ�r/   F©ÚSOCIALACCOUNT_AUTO_SIGNUPc           	      óä  — | j                  «       }|€-t        j                  d| j                  j                  z  «       y | j                  |«      }| j                  |t        d«      «       | j                  j                  t        d«      «      }|j                  d   j                  }t        t        |j                  «      t        t!        j"                  dd«      «      ¬«      }| j                  j%                  t        d«      |¬«      }| j                  |dd	¬
«       |j                  d   }| j'                  |j)                  «       «       t*        j,                  j                  || j                  j                  ¬«      }|j/                  «       }| j1                  |j3                  «       | j5                  «       «       |j7                  «        |j9                  «        |j;                  «        y )Nú&Cannot test provider %s, no oauth mockÚsocialaccount_signupÚformiè  i€–˜ )ÚemailÚusername)Údataú/accounts/profile/F©Úfetch_redirect_responseÚuser©rP   r   )r7   ÚwarningsÚwarnr   ÚidÚloginÚassertRedirectsr
   Úclientr   ÚcontextÚsocialloginÚdictr   rP   ÚstrÚrandomÚ	randrangeÚpostÚassertFalseÚhas_usable_passwordr   r!   Úget_provider_accountÚassertEqualÚto_strr<   Úget_avatar_urlÚget_profile_urlÚ	get_brand)r6   Ú
resp_mocksÚresprY   rL   rP   ÚaccountÚprovider_accounts           r-   Ú
test_loginzOAuthTestsMixin.test_login=   sŒ  € à×-Ñ-Ó/ˆ
ØÐÜ�M‰MÐBÀTÇ]Á]×EUÑEUÑUÔVØØ�z‰z˜*Ó%ˆØ×Ñ˜T¤7Ð+AÓ#BÔCØ�{‰{�‰œwÐ'=Ó>Ó?ˆØ—l‘l 6Ñ*×6Ñ6ˆÜÜ˜[×-Ñ-Ó.Üœ×)Ñ)¨$°Ó9Ó:ô
ˆð �{‰{×Ñ¤Ð(>Ó ?ÀdÐÓKˆØ×Ñ˜TÐ#7ÐQVÐÔWØ�|‰|˜FÑ#ˆØ×Ñ˜×1Ñ1Ó3Ô4Ü×'Ñ'×+Ñ+°ÀÇÁ×@PÑ@PÐ+ÓQˆØ"×7Ñ7Ó9ÐØ×ÑÐ)×0Ñ0Ó2°D×4LÑ4LÓ4NÔOð 	×'Ñ'Ô)Ø×(Ñ(Ô*Ø×"Ñ"Õ$r/   T)rE   ÚSOCIALACCOUNT_EMAIL_REQUIREDÚACCOUNT_EMAIL_REQUIREDc                 ó$  — | j                  «       }|s-t        j                  d| j                  j                  z  «       y | j                  |«      }| j                  |dd¬«       | j                  |j                  d   j                  «       «       y )NrG   rM   FrN   rP   )
r7   rR   rS   r   rT   rU   rV   r_   rX   r`   )r6   rg   rh   s      r-   Útest_auto_signupz OAuthTestsMixin.test_auto_signupX   sy   € ð ×-Ñ-Ó/ˆ
ÙÜ�M‰MÐBÀTÇ]Á]×EUÑEUÑUÔVØØ�z‰z˜*Ó%ˆØ×Ñ˜TÐ#7ÐQVÐÔWØ×Ñ˜Ÿ™ fÑ-×AÑAÓCÕDr/   c           	      óv  — t        t        ddddi«      «      5  | j                  j                  t	        | j
                  j                  dz   «      dz   t        t        |¬«      «      z   «      }d d d «       t        d   «      }t        |j                  «      }t	        | j
                  j                  d	z   «      }| j                  |d
   d   j                  |«      d«       t        | j                  «       g|¢­Ž 5  | j                  j                  |«      }d d d «       |S # 1 sw Y   ŒµxY w# 1 sw Y   |S xY w)NéÈ   ú)oauth_token=token&oauth_token_secret=psstúcontent-typeú	text/htmlÚ_loginú?©ÚprocessÚlocationÚ	_callbackÚoauth_callbackr   )r   r   rW   r^   r
   r   rT   r   rZ   r   r   ÚqueryÚassertGreaterÚfindÚget_access_token_responser   )r6   rg   rx   rh   ÚpÚqÚcomplete_urls          r-   rU   zOAuthTestsMixin.loginf   s  € ÜÜØØ;Ø Ð-óó
ñ 	ð —;‘;×#Ñ#Ü˜Ÿ™×(Ñ(¨8Ñ3Ó4ØñäœD¨Ô1Ó2ñ3óˆD÷	ô �T˜*Ñ%Ó&ˆÜ�Q—W‘WÓˆÜ˜tŸ}™}×/Ñ/°+Ñ=Ó>ˆØ×Ñ˜1Ð-Ñ.¨qÑ1×6Ñ6°|ÓDÀaÔHÜ˜T×;Ñ;Ó=ÐKÀ
ÒKñ 	1Ø—;‘;—?‘? <Ó0ˆD÷	1àˆ÷%	ð 	ú÷ 	1àˆús   ™AD"Ã<D.Ä"D+Ä.D8c                 ó    — t        ddddi«      S )Nrq   rr   rs   rt   )r   r5   s    r-   r   z)OAuthTestsMixin.get_access_token_response{   s   € ÜØØ7Ø˜[Ð)ó
ð 	
r/   c           	      óÂ   — | j                   j                  t        | j                  j                  dz   «      «      }| j                  |dt        t        dd«      z  «       y )Nrz   ú%socialaccount/authentication_error.%sÚACCOUNT_TEMPLATE_EXTENSIONÚhtml)rW   r   r
   r   rT   ÚassertTemplateUsedÚgetattrr   ©r6   rh   s     r-   Útest_authentication_errorz)OAuthTestsMixin.test_authentication_error‚   sO   € Ø�{‰{�‰œw t§}¡}×'7Ñ'7¸+Ñ'EÓFÓGˆØ×ÑØØ3Ü”hÐ <¸fÓEñFõ	
r/   )rU   )Ú__name__Ú
__module__Ú__qualname__r[   Ú__annotations__r7   r<   rA   r	   rk   ro   rU   r   r‹   Ú__classcell__©rC   s   @r-   r1   r1   .   sd   ø… ØÓòò"ô7ñ °Ô7ñ%ó 8ð%ñ4 Ø"&Ø%*Ø$ôñ
Eóð
Eóò*
ö
r/   r1   c                 ó\   ‡ —  G ˆ fd„dt         t        «      }d‰ j                  z   |_        |S )Nc                   ó(   •— e Zd ZW ° j                  Zy)ú!create_oauth_tests.<locals>.ClassN)rŒ   r�   rŽ   rT   r)   ©r   s   €r-   ÚClassr”   Ž   s   ø„ Ù—k‘k‰r/   r–   ÚOAuthTests_)r1   r   rT   rŒ   )r   r–   s   ` r-   Úcreate_oauth_testsr˜   �   s(   ø€ ö"”¤ô "ð # X§[¡[Ñ0€E„NØ€Lr/   c                   ó  ‡ — e Zd ZU eed<   d„ Zd„ Zdefd„Zdefd„Zdd„Z	d	„ Z
ˆ fd
„Zd„ Zd„ Zd„ Z ed¬«      d„ «       Z ed¬«      d„ «       Z ed¬«      d„ «       Z ed¬«      dd„«       Z ed¬«      d„ «       Zdd„Zd„ Zd„ Zˆ xZS )ÚOAuth2TestsMixinr)   c                  ó   — y r3   r4   r5   s    r-   r7   z$OAuth2TestsMixin.get_mocked_response˜   r8   r/   c                 ó   — t         ‚r3   r:   r5   s    r-   r<   z$OAuth2TestsMixin.get_expected_to_str›   r=   r/   Úreturnc                  ó   — y)NÚtestacr4   r5   s    r-   Úget_access_tokenz!OAuth2TestsMixin.get_access_tokenž   ó   € Ør/   c                  ó   — y)NÚtestrfr4   r5   s    r-   Úget_refresh_tokenz"OAuth2TestsMixin.get_refresh_token¡   r¡   r/   Tc                 ó´   — t        j                  «       j                  | j                  «       dœ}|r| j	                  «       |d<   t        j                  |«      S )N)ÚuidÚaccess_tokenÚrefresh_token)ÚuuidÚuuid4Úhexr    r¤   ÚjsonÚdumps)r6   Úwith_refresh_tokenÚresponses      r-   Úget_login_response_jsonz(OAuth2TestsMixin.get_login_response_json¤   sK   € ä—:‘:“<×#Ñ#Ø ×1Ñ1Ó3ñ
ˆñ Ø(,×(>Ñ(>Ó(@ˆH�_Ñ%Ü�z‰z˜(Ó#Ð#r/   c                 ó   — t        |Ž S r3   )r   ©r6   Ú	responsess     r-   r   z OAuth2TestsMixin.mocked_response­   s   € Ü 	Ð*Ð*r/   c                 óJ   •— t         t        | �  «        | j                  «        y r3   )r@   rš   rA   Úsetup_provider)r6   rC   s    €r-   rA   zOAuth2TestsMixin.setUp°   s   ø€ ÜÔ Ñ+Ô-Ø×ÑÕr/   c                 óÈ   — t        | j                  «      | _        t        «       j	                  d«      | _        | j                  j                  | j
                  «      | _        y r?   )r.   r)   r,   r   r   r*   rB   r   r5   s    r-   rµ   zOAuth2TestsMixin.setup_provider´   sC   € Ü˜T×-Ñ-Ó.ˆŒÜ%Ó'×+Ñ+¨CÓ0ˆŒØŸ™×-Ñ-¨d¯l©lÓ;ˆ�r/   c                 ód  — t         j                  j                  | j                  j                  i «      }|j                  «       }d|d<   | j                  | j                  j                  |i¬«      5  | j                  | j                  j                  «       i «       d d d «       y # 1 sw Y   y xY w)NFÚOAUTH_PKCE_ENABLED©ÚSOCIALACCOUNT_PROVIDERS)	r   Ú	PROVIDERSr   r,   r   Úcopyr   rb   Úget_pkce_params)r6   Úprovider_settingsÚprovider_settings_with_pkce_sets      r-   Ú test_provider_has_no_pkce_paramsz1OAuth2TestsMixin.test_provider_has_no_pkce_params¹   sœ   € Ü(×2Ñ2×6Ñ6°t·x±x×7HÑ7HÈ"ÓMÐØ*;×*@Ñ*@Ó*BÐ'Ø@EÐ'Ð(<Ñ=à�]‰]Ø%)§X¡X×%6Ñ%6Ð8WÐ$Xð ó 
ñ 	Bð ×Ñ˜TŸ]™]×:Ñ:Ó<¸bÔA÷	B÷ 	Bñ 	Bús   Á2+B&Â&B/c                 óf  — t         j                  j                  | j                  j                  i «      }|j                  «       }d|d<   | j                  | j                  j                  |i¬«      5  | j                  j                  «       }| j                  t        |j                  «       «      h d£«       t        j                  |d   j                  d«      «      }t        j                  |j!                  «       «      }|j#                  d«      }|d   |k(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)	NTr¸   r¹   >   Úcode_verifierÚcode_challengeÚcode_challenge_methodrÂ   Úasciió   =rÃ   )r   r»   r   r,   r   r¼   r   r½   rb   ÚsetÚkeysÚhashlibÚsha256ÚencodeÚbase64Úurlsafe_b64encodeÚdigestÚrstrip)r6   r¾   r¿   Úpkce_paramsÚhashed_verifierrÃ   Úcode_challenge_without_paddings          r-   Útest_provider_has_pkce_paramsz.OAuth2TestsMixin.test_provider_has_pkce_paramsÃ   s  € Ü(×2Ñ2×6Ñ6°t·x±x×7HÑ7HÈ"ÓMÐØ*;×*@Ñ*@Ó*BÐ'Ø@DÐ'Ð(<Ñ=à�]‰]Ø%)§X¡X×%6Ñ%6Ð8WÐ$Xð ó 
ñ 	Sð Ÿ-™-×7Ñ7Ó9ˆKØ×ÑÜ�K×$Ñ$Ó&Ó'ÚLôô &Ÿn™nØ˜OÑ,×3Ñ3°GÓ<óˆOô $×5Ñ5°o×6LÑ6LÓ6NÓOˆNØ-;×-BÑ-BÀ4Ó-HÐ*ØÐ/Ñ0Ð4RÒRÐRÑR÷	S÷ 	Sñ 	Sús   Á2B+D'Ä'D0FrD   c                 óÚ   — | j                  «       }|s-t        j                  d| j                  j                  z  «       y | j                  |«      }| j                  |t        d«      «       y )NrG   rH   )r7   rR   rS   r   rT   rU   rV   r
   )r6   Ú	resp_mockrh   s      r-   rk   zOAuth2TestsMixin.test_login×   s[   € à×,Ñ,Ó.ˆ	ÙÜ�M‰MÐBÀTÇ]Á]×EUÑEUÑUÔVØØ�z‰zØó
ˆð 	×Ñ˜T¤7Ð+AÓ#BÕCr/   c                 óø  — t         j                  j                  | j                  j                  i «      }|j                  «       }d|d<   | j                  | j                  j                  |i¬«      5  | j                  «       }|s6t        j                  d| j                  j                  z  «       	 d d d «       y | j                  |«      }| j                  |t        d«      «       d d d «       y # 1 sw Y   y xY w)NFr¸   r¹   rG   rH   ©r   r»   r   r,   r   r¼   r   r7   rR   rS   rT   rU   rV   r
   )r6   r¾   Ú$provider_settings_with_pkce_disabledrÕ   rh   s        r-   Útest_login_with_pkce_disabledz.OAuth2TestsMixin.test_login_with_pkce_disabledâ   sì   € ä(×2Ñ2×6Ñ6°t·x±x×7HÑ7HÈ"ÓMÐØ/@×/EÑ/EÓ/GÐ,ØEJÐ,Ð-AÑBà�]‰]à—‘×!Ñ!Ð#Gð%ð ó 
ñ 	Hð
 ×0Ñ0Ó2ˆIÙÜ—‘Ø<¸t¿}¹}×?OÑ?OÑOôð ÷	Hð 	Hð —:‘:ØóˆDð × Ñ  ¤wÐ/EÓ'FÔG÷	H÷ 	Hñ 	Húó   Á2A C0Â;,C0Ã0C9c                 óø  — t         j                  j                  | j                  j                  i «      }|j                  «       }d|d<   | j                  | j                  j                  |i¬«      5  | j                  «       }|s6t        j                  d| j                  j                  z  «       	 d d d «       y | j                  |«      }| j                  |t        d«      «       d d d «       y # 1 sw Y   y xY w)NTr¸   r¹   rG   rH   r×   )r6   r¾   Ú#provider_settings_with_pkce_enabledrÕ   rh   s        r-   Útest_login_with_pkce_enabledz-OAuth2TestsMixin.test_login_with_pkce_enabledø   sì   € ä(×2Ñ2×6Ñ6°t·x±x×7HÑ7HÈ"ÓMÐØ.?×.DÑ.DÓ.FÐ+ØDHÐ+Ð,@ÑAØ�]‰]à—‘×!Ñ!Ð#Fð%ð ó 
ñ 	Hð
 ×0Ñ0Ó2ˆIÙÜ—‘Ø<¸t¿}¹}×?OÑ?OÑOôð ÷	Hð 	Hð —:‘:ØóˆDð × Ñ  ¤wÐ/EÓ'FÔG÷	H÷ 	Hñ 	HúrÚ   )ÚSOCIALACCOUNT_STORE_TOKENSc                 óà  — d} t        «       d¬«      }t        ||«       t        |d«       |j                  d«       |j	                  «        t
        j                  j                  ||dd¬«       | j                  j                  |j                  d¬«       | j                  | j                  «       d¬	«       |r"| j                  | j                  «       d
d¬«       t        j                  j                  || j                  j                  j                   xs | j                  j"                  ¬«      j%                  «       }|j'                  «       }| j)                  |j+                  «       | j-                  «       «       |j/                  «        |j1                  «        |j3                  «        | j                  r´|j4                  j%                  «       }| j)                  | j7                  «       |j8                  «       t;        j<                  | j?                  d¬«      «      }d|v r|j%                  d«      }nd|v r|j%                  d«      }nd}| j)                  |j@                  |«       y y )Nzuser@example.comT)Ú	is_activerP   Útest)rP   rJ   ÚprimaryÚverified)rK   ÚpasswordÚconnectrw   F)r®   rx   rQ   ©r®   r¨   ÚrefreshTokenÚ )!r   r   r   Úset_passwordÚsaver   r!   r"   rW   rU   rK   r7   r   Úfilterr   r,   r)   rT   r   ra   rb   rc   r<   rd   re   rf   Úsocialtoken_setr    Útokenr¬   Úloadsr°   Útoken_secret)	r6   Úmultiple_loginrJ   rP   Úsarj   Útrh   r¨   s	            r-   Útest_account_tokensz$OAuth2TestsMixin.test_account_tokens  sü  € à"ˆØŒ~Ó¨$Ô/ˆÜ�4˜ÔÜ�d˜FÔ#Ø×Ñ˜&Ô!Ø�	‰	ŒÜ×Ñ×#Ñ#¨°UÀDÐSWÐ#ÔXØ�‰×Ñ 4§=¡=¸6ÐÔBØ�
‰
�4×+Ñ+Ó-°yˆ
ÔAÙØ�J‰JØ×(Ñ(Ó*Ø#(Ø!ð ô ô ×"Ñ"×)Ñ)Ø §¡× 1Ñ 1× =Ñ =Ò QÀÇÁ×AQÑAQð *ó 
ç
‰#‹%ð 	ð ×2Ñ2Ó4ÐØ×ÑÐ)×0Ñ0Ó2°D×4LÑ4LÓ4NÔOð 	×'Ñ'Ô)Ø×(Ñ(Ô*Ø×"Ñ"Ô$à�8Š8Ø×"Ñ"×&Ñ&Ó(ˆAà×Ñ˜T×2Ñ2Ó4°a·g±gÔ>Ü—:‘:˜d×:Ñ:ÈdÐ:ÓSÓTˆDØ $Ñ&Ø $§¡¨Ó 9‘Ø 4Ñ'Ø $§¡¨Ó 8‘à "�Ø×Ñ˜QŸ^™^¨]Õ;ð r/   c                 ó(   — | j                  d¬«       y)zÀ
        fails if a login missing a refresh token, deletes the previously
        saved refresh token. Systems such as google's oauth only send
        a refresh token on first login.
        T)rð   N)ró   r5   s    r-   Ú+test_account_refresh_token_saved_next_loginz<OAuth2TestsMixin.test_account_refresh_token_saved_next_login8  s   € ð 	× Ñ °Ð Õ5r/   c                 ó  — | j                  «       5  | j                  j                  | j                  j	                  | j
                  |¬«      «      }d d d «       t        d   «      }t        |j                  «      }t        j                  j                  | j                  j                  i «      j                  d| j                  j                  «      }| j                  d|v |«       | j                  d|v |«       |r |d   d   }| j                  |d   d   d«       | j                  j                  «       }	| j!                  |d   d   j#                  |	«      d«       | j%                  |¬	«      }
t'        |t(        «      r|}n|€g }n|g} | j                   t+        d
|
ddi«      g|¢­Ž 5  | j                  j                  |	| j-                  |«      «      }t.        j0                  j
                  j2                  }|D ]ã  \  }}|j                  di «      }|d   dk(  sŒ!t'        |t4        «      sŒ2|j                  dd«      j7                  |	«      sŒT| j                  d|v |«       |sŒkt9        j:                  |d   j=                  d«      «      }t?        j@                  |jC                  «       «      jE                  d«      jG                  «       }| j                  |«       Œå 	 d d d «       |S # 1 sw Y   �Œ xY w# 1 sw Y   |S xY w)Nrw   ry   r¸   rÃ   rÄ   r   ÚS256Úredirect_uriræ   rq   rs   zapplication/jsonrL   ÚPOSTrè   rÂ   rÅ   rÆ   )$r   rW   r^   r   Úget_login_urlr*   r   r   r|   r   r»   r   r,   Úpkce_enabled_defaultrb   Úget_callback_urlr}   r~   r°   Ú
isinstanceÚlistr   Úget_complete_parametersÚrequestsÚSessionÚcall_args_listrZ   ÚendswithrÉ   rÊ   rË   rÌ   rÍ   rÎ   rÏ   Údecode)r6   rÕ   rx   r®   rh   r€   r�   Úpkce_enabledrÃ   r‚   Úresponse_jsonrg   Úrequest_callsÚargsÚkwargsrL   Úhashed_code_verifierÚexpected_code_challenges                     r-   rU   zOAuth2TestsMixin.loginA  sÑ  € Ø×!Ñ!Ó#ñ 	Ø—;‘;×#Ñ#Ø—‘×+Ñ+¨D¯L©LÀ'Ð+ÓJóˆD÷	ô �T˜*Ñ%Ó&ˆÜ�Q—W‘WÓˆä#×-Ñ-×1Ñ1°$·(±(×2CÑ2CÀRÓH×LÑLØ  $§-¡-×"DÑ"Dó
ˆð 	×ÑÐ)¨QÐ.°Ô=Ø×ÑÐ0°AÐ5°|ÔDÙØÐ/Ñ0°Ñ3ˆNØ×Ñ˜QÐ6Ñ7¸Ñ:¸FÔCà—}‘}×5Ñ5Ó7ˆØ×Ñ˜1˜^Ñ,¨QÑ/×4Ñ4°\ÓBÀAÔFØ×4Ñ4Ø1ð 5ó 
ˆô �i¤Ô&Ø"‰JØÐØ‰Jà#˜ˆJà!ˆT×!Ñ!Ü˜3 °Ð@RÐ/SÓTð
àò
ñ 	Rð —;‘;—?‘? <°×1MÑ1MÈaÓ1PÓQˆDô %×,Ñ,×4Ñ4×CÑCˆMØ -ò R‘��fØ—z‘z &¨"Ó-�à˜‘G˜vÓ%Ü" 4¬Õ.ØŸ™ °Ó4×=Ñ=¸lÕKà×$Ñ$ _¸Ð%<¸lÔKâ#Ü/6¯~©~Ø  Ñ1×8Ñ8¸ÓAó0Ð,ô #×4Ñ4Ð5I×5PÑ5PÓ5RÓSß#™V D›\ß#™V›Xð 0ð
 ×(Ñ(¨Ð9PÕQñ%R÷	Rð: ˆ÷w	ñ 	ú÷<	Rð: ˆús2   ‘AK0Æ-A2K=È K=È1!K=ÉK=É*A;K=Ë0K:Ë=Lc                 ó   — d|d   d   dœS )Nrá   Ústater   )Úcoder  r4   )r6   r�   s     r-   rÿ   z(OAuth2TestsMixin.get_complete_parameters  s   € Ø¨¨7©°A©Ñ7Ð7r/   c           	      ó²   — | j                   j                  | j                  j                  «       «      }| j	                  |dt        t        dd«      z  «       y )Nr…   r†   r‡   )rW   r   r   rü   rˆ   r‰   r   rŠ   s     r-   r‹   z*OAuth2TestsMixin.test_authentication_error‚  sH   € Ø�{‰{�‰˜tŸ}™}×=Ñ=Ó?Ó@ˆØ×ÑØØ3Ü”hÐ <¸fÓEñFõ	
r/   )T)F)NrU   T)rŒ   r�   rŽ   r[   r�   r7   r<   r    r¤   r°   r   rA   rµ   rÀ   rÓ   r	   rk   rÙ   rÝ   ró   rõ   rU   rÿ   r‹   r�   r‘   s   @r-   rš   rš   •   sß   ø… ØÓòò"ð #ó ð 3ó ó$ò+ôò<ò
BòSñ( °Ô7ñDó 8ðDñ °Ô7ñHó 8ðHñ* °Ô7ñHó 8ðHñ* °$Ô7ò'<ó 8ð'<ñR °$Ô7ñ6ó 8ð6ó<ò|8ö
r/   rš   c                   óz   — e Zd ZddddœZdddg dd	œZdddg dd	œZd
„ Zd„ Zd„ Zd„ Z	d„ Z
 ed¬«      d„ «       Zd„ Zy)ÚOpenIDConnectTestsz/loginú	/userinfoz/token)Úauthorization_endpointÚuserinfo_endpointÚtoken_endpointz&https://secure.gravatar.com/avatar/123ú#ness@some.oidc.server.onett.examplei‹  ÚNess)ÚpicturerJ   ÚsubÚ
identitiesr   c                 ó,   — t        |d| j                  iŽS )NÚcallback)r   Ú_mocked_responsesr²   s     r-   r   z"OpenIDConnectTests.mocked_response   s   € Ü 	ÐK°D×4JÑ4JÑKÐKr/   c                  ó   — y)Nr  r4   r5   s    r-   r<   z&OpenIDConnectTests.get_expected_to_str£  s   € Ø4r/   c                 óz  — t        | j                  «      | _        | j                  | j                  _        d| j                  _        ddi| j                  _        | j                  j                  «        t        «       j                  d«      | _        | j                  j                  | j                  «      | _        y )NÚopenid_connectÚ
server_urlzhttps://unittest.example.comr   )
r.   r)   r,   r   r   rê   r   r   r*   rB   r5   s    r-   rµ   z!OpenIDConnectTests.setup_provider¦  s„   € Ü˜T×-Ñ-Ó.ˆŒØ#×/Ñ/ˆ�‰ÔØ,ˆ�‰ÔàÐ8ð
ˆ�‰Ôð 	�‰�‰ŒÜ%Ó'×+Ñ+¨CÓ0ˆŒØŸ™×-Ñ-¨d¯l©lÓ;ˆ�r/   c                  ó   — y)NTr4   r5   s    r-   r7   z&OpenIDConnectTests.get_mocked_response±  s   € àr/   c                 óì   — |j                  d«      r)t        dt        j                  | j                  «      «      S |j                  d«      r)t        dt        j                  | j
                  «      «      S y )Nz!/.well-known/openid-configurationrq   r  )r  r   r¬   r­   Úoidc_info_contentÚuserinfo_content)r6   Úurlr  r	  s       r-   r  z$OpenIDConnectTests._mocked_responsesµ  sX   € Ø�<‰<Ð;Ô<Ü! #¤t§z¡z°$×2HÑ2HÓ'IÓJÐJØ�\‰\˜+Ô&Ü! #¤t§z¡z°$×2GÑ2GÓ'HÓIÐIð 'r/   TrD   c                 ó   — | j                  «       }| j                  |dd¬«       t        j                  j	                  | j
                  j                  ¬«      }| j                  |j                  | j                  «       y )NrM   FrN   r•   )	rU   rV   r   r!   r   r,   r)   ÚassertDictEqualÚ
extra_data)r6   rh   rñ   s      r-   Útest_login_auto_signupz)OpenIDConnectTests.test_login_auto_signup»  s_   € à�z‰z‹|ˆØ×Ñ˜TÐ#7ÐQVÐÔWÜ×"Ñ"×&Ñ&°·±×0DÑ0DÐ&ÓEˆØ×Ñ˜RŸ]™]¨D¯O©OÕ<r/   c                 óÔ  — t        | j                  j                  dz   d| j                  j                  dz   i¬«      }| j                  j                  |«      }| j                  |j                  d«       t        | j                  j                  dz   d| j                  j                  dz   i¬«      }| j                  j                  |«      }| j                  |j                  d«       y)zÏ
        Make sure that OIDC endpoints hit with an invalid provider_id
        not corresponding to any configured social "apps" returns a 404
        instead of an unhandled SocialApp.DoesNotExist.
        ru   r)   z-invalid)r	  i”  rz   N)	r
   r,   r   r)   rW   r^   rb   Ústatus_coder   )r6   Ú	login_urlrh   Úcallback_urls       r-   Útest_404_on_unknown_provider_idz2OpenIDConnectTests.test_404_on_unknown_provider_idÂ  sÐ   € ô Ø�H‰H×Ñ Ñ(ð ˜tŸx™x×3Ñ3Øñ ðô
ˆ	ð �{‰{×Ñ 	Ó*ˆà×Ñ˜×)Ñ)¨3Ô/ô Ø�H‰H×Ñ Ñ+ð ˜tŸx™x×3Ñ3Øñ ðô
ˆð �{‰{�‰˜|Ó,ˆà×Ñ˜×)Ñ)¨3Õ/r/   N)rŒ   r�   rŽ   r$  r%  r)  r   r<   rµ   r7   r  r	   r*  r/  r4   r/   r-   r  r  ‹  s}   „ à"*Ø(Ø"ñÐð <Ø6ØØØñÐð <Ø6ØØØñ€JòLò5ò	<òòJñ °Ô6ñ=ó 7ð=ó$0r/   r  )-rÌ   rÉ   r¬   r\   r   r©   rR   Úurllib.parser   r   Údjango.confr   Údjango.contrib.authr   Údjango.testr   r   Údjango.test.utilsr	   Údjango.urlsr
   Údjango.utils.httpr   Úallauth.app_settingsr#   Úallauth.account.modelsr   Úallauth.account.utilsr   r   Úallauth.socialaccountr   Úallauth.socialaccount.adapterr   Úallauth.socialaccount.modelsr   r   Úallauth.testsr   r   r.   r1   r˜   rš   r  r4   r/   r-   ú<module>r>     sw   ðÛ Û Û Û Û Û Û ß +å  Ý .ß 0Ý /Ý Ý 'ã Ý /ß ;Ý .Ý 5ß Aß 9ò÷(Z
ñ Z
ò~÷s
ñ s
ôl[0Ð)õ [0r/   