
    )Jf)                        d dl Z d dlmZ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 d d
lmZ d dl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&m'Z' ddl(m)Z) ej*        d             Z+ eddej,        j-                   G d de$e&                      Z. eddddddii           G d  d!e.                      Z/d" Z0dS )#    N)datetime	timedelta)import_module)Mockpatchsettings)User)mail)RequestFactory)override_settings)reverse)app_settings)get_adapter)EmailAddressEmailConfirmation)user_signed_up)SocialAccount)
jwt_encode)OAuth2TestsMixin)TestCasemocked_response   )GoogleProviderc                 $    ddddddii| _         | S )NgoogleAPPapp123iddummy	client_idkeysecretSOCIALACCOUNT_PROVIDERSr   s    o/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/allauth/socialaccount/providers/google/tests.pysettings_with_google_providerr'      s3     	'! 
(H$ O    T)SOCIALACCOUNT_AUTO_SIGNUPACCOUNT_SIGNUP_FORM_CLASSACCOUNT_EMAIL_VERIFICATIONc                   Z    e Zd Zej        Z fdZd ZddZ e	d          d             Z
d Zd	 Zd
 Zd Z e	d          d             Zd Zd Z e	ej        j        ej        j                  d             Z e	ej        j        ej        j                  d             Z xZS )GoogleTestsc                 d    t                                                       d| _        i | _        d S )Nzraymond.penners@example.com)supersetUpemailidentity_overwrites)self	__class__s    r&   r0   zGoogleTests.setUp1   s)    2
#%   r(   c                     t          j                    }d}d||dd| j        ddddd	d
d||t          d          z   d}|                    | j                   |S )Nr   https://accounts.google.com108204268033311374519example.comTHK6E_P6Dh8Y93mRNtsDB1QRaymond Penners+https://lh5.googleusercontent.com/photo.jpgRaymondPennersenr   )hours)issazpaudsubhdr1   email_verifiedat_hashnamepicture
given_namefamily_namelocaleiatexp)r   utcnowr1   r   updater2   )r3   nowr!   payloads       r&   get_google_id_token_payloadz'GoogleTests.get_google_id_token_payload6   s{    o	0*Z"/%D#$++++
 
" 	t/000r(   Tc                 z    ddddt          |                                 d          d}t          j        |          S )Ntestaci  zfhttps://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile openidBearerr#   )access_token
expires_inscope
token_typeid_token)r   rR   jsondumps)r3   with_refresh_tokendatas      r&   get_login_response_jsonz#GoogleTests.get_login_response_jsonM   sE    $}""4#C#C#E#ExPP
 
 z$r(   F)r)   c                 x    |                      d           }|                     |t          d                     d S )N	resp_mocksocialaccount_signup)loginassertRedirectsr   )r3   resps     r&   
test_loginzGoogleTests.test_loginW   s:    zzDz))T7+A#B#BCCCCCr(   c                 |   dt          j                    t          d          z
  dd}|                                D ]~\  }}|                     |          5  ||i| _        |                     d           }|                     |dt          t          dd	          z             d d d            n# 1 swxY w Y   d S )
Nz
not-googler   )secondsfoo)r@   rM   rB   ra   z%socialaccount/authentication_error.%sACCOUNT_TEMPLATE_EXTENSIONhtml)
r   rN   r   itemssubTestr2   rd   assertTemplateUsedgetattrr	   )r3   wrong_claim_valuesr"   valuerf   s        r&    test_wrong_id_token_claim_valuesz,GoogleTests.test_wrong_id_token_claim_values\   s   ?$$y';';';;
 

 -2244 	 	JCc""  ,/<(zzDz11'';h(DfMMN                	 	s   AB00B4	7B4	c                     ddd| _         |                     d            t          j                            | j                  }|                     |j        d           d S )Nu   明u   小)rI   rJ   ra   r1   zraymond.penners)r2   rd   r
   objectsgetr1   assertEqualusername)r3   users     r&   test_username_based_on_emailz(GoogleTests.test_username_based_on_emaill   s_    27#N#N 

T
"""|dj11(9:::::r(   c                    ddi| _         |                     d            t          j                            | j        d          }|                     t          j                            | j                  	                                           |j
        j                                        d         }|                     |j        d         d           d S )	NrE   Tra   )r1   verifiedemail_address__emailr   rI   r<   )r2   rd   r   rv   rw   r1   assertFalser   filterexistsrz   socialaccount_setallrx   
extra_data)r3   email_addressaccounts      r&   test_email_verifiedzGoogleTests.test_email_verifiedr   s    $4d#; 

T
"""$,00tzD0QQ%,,$*,MMTTVV	
 	
 	
  $6::<<Q?+L99EEEEEr(   c                      g  fd}t          j        |                                d                                 t	                    dk               d S )Nc                     |d         }                     |j        j        t          j                                        |j        j        |                               |            d S )Nsociallogin)rx   r   providerr   idrz   append)senderrequestrz   kwargsr   r3   sent_signalss        r&   on_signed_upz<GoogleTests.test_user_signed_up_signal.<locals>.on_signed_up   sb     /K[09>;LMMM[05t<<<'''''r(   ra   r   )r   connectrd   
assertTruelen)r3   r   r   s   ` @r&   test_user_signed_up_signalz&GoogleTests.test_user_signed_up_signal|   ss    	( 	( 	( 	( 	( 	( 	|,,,

T
"""L))A-.....r(   )ACCOUNT_EMAIL_CONFIRMATION_HMACc                    ddi| _         |                     d           }t          j                            | j                  }|                     |j                   |                     t          j        
                    | j                                                             |                     |d           d S )NrE   Fra   ru   r~   z3account/email/email_confirmation_signup_subject.txt)r2   rd   r   rv   rw   r1   r   r}   r   r   r   r   ro   )r3   rf   r   s      r&   test_email_unverifiedz!GoogleTests.test_email_unverified   s    $4e#< zzDz))$,00tz0BB/000%,,$*,MMTTVV	
 	
 	
 	G	
 	
 	
 	
 	
r(   c                    t          t          j                  }|                                }|                                 |j        | j        j        t          j        <   t                      
                    d          }| j        j        |_        t                      }|                    || j                   |j                                         ddi| _        |                     d            t"          j        
                    | j                  }|                     |j                   |                     t,          j                            | j                                                             d S )N/rE   Fra   ru   r~   )r   r	   SESSION_ENGINESessionStoresavesession_keyclientcookiesSESSION_COOKIE_NAMEr   rw   sessionr   stash_verified_emailr1   r2   rd   r   rv   r   r}   r   r   r   r   )r3   enginestorer   adapterr   s         r&   test_email_verified_stashedz'GoogleTests.test_email_verified_stashed   s7   x677##%%

<A<MH89 ""&&s+++---$$Wdj999$4e#< 

T
"""$,00tz0BB.///%,,$*,MMTTVV	
 	
 	
 	
 	
r(   c                 $   d}t           j                            dd|          }|                    d           |                                 t
          j                            ||dd           | j                            |j        d           |dd| _	        |                     d d	
           | 
                    t          j                            |t          j                                                             |                     t
          j                            |                                          d           |                     t
          j                            ||                                          d           d S )Nzuser@example.comrz   T)ry   	is_activer1   test)rz   r1   primaryr}   )ry   password)r1   rE   r   )rb   process)rz   r   )rz   r   )rz   r1   )r
   rv   createset_passwordr   r   r   rd   ry   r2   r   r   r   r   r   r   rx   count)r3   r1   rz   s      r&   test_account_connectz GoogleTests.test_account_connect   s]   "|""Fd%"PP&!!!		##UDSW#XXX4=6BBB-2d#K#K 

T9
555!((d^=N(OOVVXX	
 	
 	
 	-44$4??EEGGKKK-44$e4LLRRTTVWXXXXXr(   )r+    SOCIALACCOUNT_EMAIL_VERIFICATIONc                 V   ddi| _         |                     d            t          j                            | j                  }|                     |j                   |                     t          j        	                    | j                  
                                           d S )NrE   Fra   ru   r~   )r2   rd   r   rv   rw   r1   r   r}   r   r   r   )r3   r   s     r&   &test_social_email_verification_skippedz2GoogleTests.test_social_email_verification_skipped   s    
 %5e#< 

T
"""$,00tz0BB/000%,,$*,MMTTVV	
 	
 	
 	
 	
r(   c                 $   ddi| _         |                     d            |                     t          t          j                  d           |                     d            |                     t          t          j                  d           d S )NrE   Fra   r   )r2   rd   rx   r   r   outbox)r3   s    r&   'test_social_email_verification_optionalz3GoogleTests.test_social_email_verification_optional   s    
 %5e#< 

T
"""T[))1---

T
"""T[))1-----r(   )T)__name__
__module____qualname__r   r   provider_idr0   rR   r_   r   rg   rs   r{   r   r   r   r   r   account_settingsEmailVerificationMethod	MANDATORYNONEr   OPTIONALr   __classcell__)r4   s   @r&   r-   r-   )   s        !#K& & & & &
  .        777D D 87D   ; ; ;F F F/ / / u===

 

 >=


 
 
(Y Y Y" #3#K#U)9)Q)V  
 
	 
 #3#K#T)9)Q)Z  . .	 . . . . .r(   r-   r   r   r   r   r    r$   c                       e Zd ZdZdS )AppInSettingsTestszI
    Run the same set of tests but without having a SocialApp entry.
    N)r   r   r   __doc__ r(   r&   r   r      s          	Dr(   r   c                    |j                             ddi           t          d          5 }t          ddi          5  t          d          5 }t          d          5 }dd	d
dddddddddddd|_        dddd|_        t                      }||_        d|j        _        |                    t          d          ddd          }|j	        dk    sJ t          j                            d
          }|j        j        dk    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S ) Ng_csrf_tokencsrfzFallauth.socialaccount.providers.google.views.jwt.get_unverified_headerdummykidz-----BEGIN CERTIFICATE-----zFallauth.socialaccount.providers.google.views.load_pem_x509_certificatez7allauth.socialaccount.providers.google.views.jwt.decoder6   r!   123subr8   zraymond@example.comTr9   r:   r;   r<   r=   r>   {   i  )r@   rB   rC   rD   r1   rE   rF   rG   rH   rI   rJ   rK   rL   rM   RS256JWT)algkidtypr"   google_login_by_tokenr   )
credentialr   i.  )uid)r   loadr   r   return_valuer   
public_keypostr   status_coder   rv   rw   rz   r1   )	dbr   r'   g_u_hload_pemdecodepemrf   socialaccounts	            r&   test_login_by_tokenr      s   
N0111	P
 
 (M	j*GHII %	M %	MX  $MM  !M<*'+!6*.#; 1#P&/'0"&""+ +F'"  ')$* *E&
 &&C,/H)27CN/!;; 788'.GG D  +s2222$1$9$=$=($=$K$KM(-37LLLLLLC!M !M !M !M !M !M !M !M !M !M !M !M !M !M !M$M $M $M $M $M $M $M $M $M $M $M $M $M $M $M%	M %	M %	M %	M %	M %	M %	M %	M %	M %	M %	M %	M %	M %	M %	M(M (M (M (M (M (M (M (M (M (M (M (M (M (M (M (M (M (Ms}   EED*B(D	D*DD*DD*E*D..E1D.2E5EE	EE		EE E)1r[   r   r   	importlibr   unittest.mockr   r   django.confr	   django.contrib.auth.modelsr
   django.corer   django.test.clientr   django.test.utilsr   django.urlsr   pytestallauth.accountr   r   allauth.account.adapterr   allauth.account.modelsr   r   allauth.account.signalsr   allauth.socialaccount.modelsr   ,allauth.socialaccount.providers.apple.clientr   allauth.socialaccount.testsr   allauth.testsr   r   r   r   fixturer'   r   r   r-   r   r   r   r(   r&   <module>r      s    ( ( ( ( ( ( ( ( # # # # # # % % % % % % % %             + + + + + +       - - - - - - / / / / / /        < < < < < < / / / / / / B B B B B B B B 2 2 2 2 2 2 6 6 6 6 6 6 C C C C C C 8 8 8 8 8 8 3 3 3 3 3 3 3 3 $ $ $ $ $ $ 
 
 
 ""/GQ  
c. c. c. c. c."H c. c. 
c.L '! 

 
 
	 	 	 	 	 	 	
 
	*M *M *M *M *Mr(   