Ë
    ûûàgœ%  ã                   ó|  — d dl 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 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 dddddddddddddœZ e j<                  ded   ed   ed   ed    ed!   ed"   d#œgi«      Zd$„ Z  ed%d&d'd(d&d)d*d+id,œii¬-«       G d.„ d/ee
«      «       Z!y)0é    N)Úimport_module)Úparse_qsÚurlparse)Úsettings)ÚTestCase)Úoverride_settings)Úreverse)Ú	urlencode)ÚOAuth2TestsMixin)ÚMockedResponseÚmocked_responseé   )ÚAPPLE_SESSION_COOKIE_NAME)Ú
jwt_encode)ÚAppleProviderz«4ADzS5jKx_kdQihyOocVS0Qwwo7m0f7Ow56EadySJ-cmnwoHHF3AxgRaq-h-KwybSphvdc-X7NbS79-b9dumHKyt1MeVLAsDZD1a-uQCEneY1g9LsQkscNr7OggcpvMg5UUFwv6Akavu8cB0iyhNdha5_AWX27K5lNebvpaXEJ8ÚRSAz«yy5UvMjrvZyO1Os_nxXIugCa3NyWOkC8oMppPvr1Bl5AnF_xwXN2n9ozPd9Nb3Q3n-omNgLayyUxhwIjWDlI67Vbx-ESuff8ZEBKuTK0Gdmr4C_QU_j0gvvNMNJweSPxDdRmIUgOnjTVNWmdqFTZs43jXAT4J519rgveNLAkGNEaV  riPuGIDde88WS03CVbo_mZ9toFWPyTxvuz8VInJ9S1ZxULo-hQWDBohWGYwvg8cgfXckcqWt5OBqNvPYdLgwb84uVi2JeEHmhcQSc_x0zfRTau5HVE2KdR-gWxQjPWoaBHeDVqwoPKaU2XYxa-gYDXcuSJWHz3BX13oInDEFCXr6VwiLiwLBFsb63EEHwyWXJbTpoar7AARWkz76qtngDkk4t9gk_Q0L1y1qf1GeWiAL7xWb-bdptma4-1ui-R2219-1ONEZ41v_jsIS_z8ooXmVCbUsHV4Z1UDpRvpORVE3u57WK3qXUdAtZsXjaIwkdItbDmL1jFUgefwfO91YYQÚAQABÚsigÚtestkeyz«R0Hu4YmpHzw3SKWGYuAcAo6B97-JlN2fXiTjZ2g8eHGQX7LSoKEu0Hmu5hcBZYSgOuorIPsPUu3mNtx3pjLMOaJRk34VwcYu7h23ogEKGcPUt1c4tTotFDdw8WFptDOw4ow31TmlBPExLqzzGjJeQSNULB1bExuuhYMWx6wBXo8z«WBaHlnbjZ3hDVTzqjrGIYizSr-_aPUJitPKlR6wBncd8nJYo7bLAmB4mOewXkX5HozIGwuF78RsZoFLi1fAmhqgxQ7eopcU-9DBcksUPO4vkgmlJbrkYzNiQauW9vrllekOGXIQQszhVoqP4MLEMpR-Sy9S3PyItcKbJDE3T4ikÚRS256z«Ar5kbIw2CsBzeVKX8FkF9eUOMk9URAMdyPoSw8P1zRk2vCXbiOY7Qttad8ptLEUgfytVSsNtGvMsoQsZWRak8nHnhGJ4s0QzB1OK7sdNgU_cL1HV-VxSSPaHhdJBrJEcrzggDPEBKYfDHU6Iz34d1nvjBxoWE8rfqJsGbCW4xxEaV  sclLPioUv4VOcOZWAKoRhcvwIH2jOhoHhSI_Cj5c5zSp7qaK8jCU6T7-GObsgrhpty-k26ZuqRdgu9d-62WO8OBGt1e0wxbTh128-nTTrOESHUlV_K1wpJmXOxNpJiybcgzZNbAmACmsHfxZvN9bt7gKPXxf3-_zFAf12PbYMrOionAJ1N_4HxL7fz3xkr5C87Av06QNilIC-mA-4n9Eqw_R2DYNpE3RYMdWtwKqBwJC8qs3677RpG9vcc-yZ_97pEiytd2FBJ8uoTwHd3DHJB8UVgBSh1kMUpSdoM7HxVzKx732nx6Kusln79LrsfOzrXF4enkfKJYI40-uwT95zw)ÚpÚktyÚqÚdÚeÚuseÚkidÚqiÚdpÚalgÚdqÚnÚkeysr   r   r   r    r"   r   )r   r   r   r    r"   r   c                 ó²   — t         j                  j                  j                  t	        j
                  t        «      «      }t        | |ddt        d   i¬«      S )zB
    Sign a payload as apple normally would for the id_token.
    r   r   )Ú	algorithmÚheaders)ÚjwtÚ
algorithmsÚRSAAlgorithmÚfrom_jwkÚjsonÚdumpsÚTESTING_JWT_KEYSETr   )ÚpayloadÚsigning_keys     úi/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/apple/tests.pyÚsign_id_tokenr1   Z   sL   € ô —.‘.×-Ñ-×6Ñ6´t·z±zÔBTÓ7UÓV€KÜØØØØÔ*¨5Ñ1Ð2ô	ð ó    FÚappleÚAPPÚapp123idÚdummyÚcertificate_keyzñ-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg2+Eybl8ojH4wB30C
3/iDkpsrxuPfs3DZ+3nHNghBOpmhRANCAAQSpo1eQ+EpNgQQyQVs/F27dkq3gvAI
28m95JEk26v64YAea5NTH56mru30RDqTKPgRVi5qRu3XGyqy3mdb8gMy
-----END PRIVATE KEY-----
)Ú	client_idÚkeyÚsecretr   )ÚSOCIALACCOUNT_STORE_TOKENSÚSOCIALACCOUNT_PROVIDERSc                   ój   ‡ — e Zd Zej                  Zd„ Zd„ Zd
d„Zd„ Z	d„ Z
ˆ fd„Zdd„Zd„ Zd	„ Zˆ xZS )Ú
AppleTestsc                 ó\   — t        t        j                  «       «      }dd|dz   |ddddddd	œ
S )
Nzhttps://appleid.apple.comr5   é  z 000313.c9720f41e9434e18987a.1218ÚCkaUPjk4MJinaAq6Z0tGUAútest@privaterelay.appleid.comÚtruei��’I)
ÚissÚaudÚexpÚiatÚsubÚat_hashÚemailÚemail_verifiedÚis_private_emailÚ	auth_time)ÚintÚtime)ÚselfÚnows     r0   Úget_apple_id_token_payloadz%AppleTests.get_apple_id_token_payload~   s>   € Ü”$—)‘)“+Óˆà.ØØ˜‘=ØØ5Ø/Ø4Ø$Ø &Ø#ñ
ð 	
r2   c                 ó  — t        | j                  «       «      }t        | j                  «       «      5  | j                  j                  d d|i«      }|j                  j                  dk(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)NÚid_tokenrB   )r1   rR   r   Úget_mocked_responseÚproviderÚverify_tokenÚuserrJ   )rP   rT   Úsociallogins      r0   Útest_verify_tokenzAppleTests.test_verify_token�   su   € Ü  ×!@Ñ!@Ó!BÓCˆÜ˜T×5Ñ5Ó7Ó8ñ 	MØŸ-™-×4Ñ4°T¸JÈÐ;QÓRˆKØ×#Ñ#×)Ñ)Ð-LÒLÐLÑL÷	M÷ 	Mñ 	Mús   ³:A7Á7B c                 ój   — t        | j                  «       «      }t        j                  dd|dddœ«      S )zR
        `with_refresh_token` is not optional for apple, so it's ignored.
        Útestacr@   ÚtestrtÚBearer)Úaccess_tokenÚ
expires_inrT   Úrefresh_tokenÚ
token_type)r1   rR   r+   r,   )rP   Úwith_refresh_tokenrT   s      r0   Úget_login_response_jsonz"AppleTests.get_login_response_json“   s<   € ô ! ×!@Ñ!@Ó!BÓCˆä�z‰zà (Ø"Ø$Ø!)Ø&ñó
ð 	
r2   c                 ó(   — t        dt        ddi«      S )a*  
        Apple is unusual in that the `id_token` contains all the user info
        so no profile info request is made. However, it does need the
        public key verification, so this mocked response is the public
        key request in order to verify the authenticity of the id_token.
        éÈ   úcontent-typeúapplication/json)r   ÚKEY_SERVER_RESP_JSON©rP   s    r0   rU   zAppleTests.get_mocked_response£   s   € ô ØÔ%¨Ð8JÐ'Kó
ð 	
r2   c                  ó   — y)NzA B© rj   s    r0   Úget_expected_to_strzAppleTests.get_expected_to_str®   s   € Ør2   c           	      ó®   •— t         ‰| �  |«      }|j                  t        | j	                  «       «      t        j                  ddddœdœ«      dœ«       |S )a   
        Add apple specific response parameters which they include in the
        form_post response.

        https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_js/incorporating_sign_in_with_apple_into_other_platforms
        zprivate@appleid.apple.comÚAÚB)Ú	firstNameÚlastName)rJ   Úname)rT   rX   )ÚsuperÚget_complete_parametersÚupdater1   rR   r+   r,   )rP   Úauth_request_paramsÚparamsÚ	__class__s      €r0   ru   z"AppleTests.get_complete_parameters±   s]   ø€ ô ‘Ñ0Ð1DÓEˆØ�‰ä)¨$×*IÑ*IÓ*KÓLÜŸ
™
à!<à),Ø(+ñ!ñóñô	
ð ˆr2   c                 óÜ  — | j                   j                  t        | j                  j                  dz   «      dz   t        t        |¬«      «      z   «      }t        |d   «      }t        |j                  «      }t        | j                  j                  dz   «      }| j                  |d   d   j                  |«      d«       | j                  |¬«      }t        t        d	|d
di«      |«      5  | j                   j                  || j                  |«      ¬«      }t        d«      |j                   v sJ ‚| j                   j#                  |j                   «      }d d d «       |S # 1 sw Y   |S xY w)NÚ_loginú?)ÚprocessÚlocationÚ	_callbackÚredirect_urir   )rc   rf   rg   rh   ©ÚdataÚapple_finish_callback)ÚclientÚpostr	   rV   Úidr
   Údictr   r   ÚqueryÚassertGreaterÚfindrd   r   r   ru   ÚurlÚget)	rP   Ú	resp_mockr}   rc   Úrespr   r   Úcomplete_urlÚresponse_jsons	            r0   ÚloginzAppleTests.loginÉ   sW  € Ø�{‰{×ÑÜ�D—M‘M×$Ñ$ xÑ/Ó0Øñäœ WÔ-Ó.ñ/ó
ˆô
 �T˜*Ñ%Ó&ˆÜ�Q—W‘WÓˆÜ˜tŸ}™}×/Ñ/°+Ñ=Ó>ˆØ×Ñ˜1˜^Ñ,¨QÑ/×4Ñ4°\ÓBÀAÔFØ×4Ñ4Ø1ð 5ó 
ˆô Ü˜3 °Ð@RÐ/SÓTØó
ñ 	-ð —;‘;×#Ñ#ØØ×1Ñ1°!Ó4ð $ó ˆDô Ð2Ó3°t·x±xÑ?Ð?Ð?ð —;‘;—?‘? 4§8¡8Ó,ˆD÷	-ð ˆ÷	-ð ˆús   Ã,A+E!Å!E+c           	      óH  — | j                   j                  t        | j                  j                  dz   «      dddœ¬«      }t        d«      |j
                  v sJ ‚| j                   j                  |j
                  «      }| j                  |dt        t        dd	«      z  «       y
)z-Override base test because apple posts errorsr   ÚmiscÚtestingstate123)ÚerrorÚstater�   rƒ   z%socialaccount/authentication_error.%sÚACCOUNT_TEMPLATE_EXTENSIONÚhtmlN)
r„   r…   r	   rV   r†   r‹   rŒ   ÚassertTemplateUsedÚgetattrr   )rP   rŽ   s     r0   Útest_authentication_errorz$AppleTests.test_authentication_errorå   s’   € à�{‰{×ÑÜ�D—M‘M×$Ñ$ {Ñ2Ó3Ø!Ð,=Ñ>ð  ó 
ˆô Ð.Ó/°4·8±8Ñ;Ð;Ð;à�{‰{�‰˜tŸx™xÓ(ˆà×ÑØØ3Ü”hÐ <¸fÓEñFõ	
r2   c                 óÀ  — | j                  | j                  «       «      }t        d«      }| j                  |j                  d   |«       | j                  d|j                  d   v «       | j                  d|j                  d   v «       | j                  t        | j                  j                  v «       | j                  j                  j                  t        «      }t        t        j                  «      }|j                  } ||j                  «      }| j                  t        |j!                  «       «      d«       | j                  |j                  d«      |«       y )Nrƒ   Ú	PATH_INFOr–   ÚQUERY_STRINGÚcoder   Úpath)r‘   rU   r	   ÚassertEqualÚrequestÚ
assertTruer   r„   ÚcookiesrŒ   r   r   ÚSESSION_ENGINEÚSessionStoreÚvalueÚlenr#   )rP   rŽ   Ú
finish_urlÚapple_session_cookieÚenginer¦   Úapple_login_sessions          r0   Útest_apple_finishzAppleTests.test_apple_finishõ   s  € Ø�z‰z˜$×2Ñ2Ó4Ó5ˆô Ð4Ó5ˆ
Ø×Ñ˜Ÿ™ kÑ2°JÔ?Ø�‰˜ 4§<¡<°Ñ#?Ð?Ô@Ø�‰˜ $§,¡,¨~Ñ">Ð>Ô?ð 	�‰Ô1°T·[±[×5HÑ5HÐHÔIð  $Ÿ{™{×2Ñ2×6Ñ6Ô7PÓQÐÜœx×6Ñ6Ó7ˆØ×*Ñ*ˆÙ*Ð+?×+EÑ+EÓFÐØ×ÑœÐ0×5Ñ5Ó7Ó8¸!Ô<ð 	×ÑÐ-×1Ñ1°&Ó9¸:ÕFr2   )T)r‘   T)Ú__name__Ú
__module__Ú__qualname__r   r†   Úprovider_idrR   rZ   rd   rU   rm   ru   r‘   r›   r­   Ú__classcell__)ry   s   @r0   r>   r>   g   s?   ø„ ð*  ×"Ñ"€Kò
òMó
ò 	
òôó0ò8
ö Gr2   r>   )"r+   rO   Ú	importlibr   Úurllib.parser   r   Údjango.confr   Údjango.testr   Údjango.test.utilsr   Údjango.urlsr	   Údjango.utils.httpr
   r'   Úallauth.socialaccount.testsr   Úallauth.testsr   r   Úapple_sessionr   r„   r   rV   r   r-   r,   ri   r1   r>   rl   r2   r0   ú<module>r½      s%  ðÛ Û Ý #ß +å  Ý  Ý /Ý Ý 'ã 
å 8ß 9å 4Ý Ý #ð	.ð ð	.ð
	ð 
ØØð	.ð
	.ð ð	.ð
	ñQ/Ð ðf "�t—z‘zàà)¨%Ñ0Ø)¨%Ñ0Ø)¨%Ñ0Ø)¨%Ñ0Ø'¨Ñ,Ø'¨Ñ,ñð	
ðóÐ ò 
ñ Ø$àØØ'ØØ!à%ð (ðñ	ð
ðôô(NGÐ! 8ó NGó)ñ(NGr2   