U
    uc                      @   s>  d dl mZ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 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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' eddej(j)dG dd de#e%Z*eddddddiidG dd  d e*Z+dS )!    )absolute_importunicode_literalsN)datetime	timedelta)import_module)settings)User)mail)RequestFactory)override_settings)reverse)app_settings)get_adapter)EmailAddressEmailConfirmation)user_signed_up)SocialAccount)
jwt_encode)OAuth2TestsMixin)TestCase   )GoogleProviderT)SOCIALACCOUNT_AUTO_SIGNUPZACCOUNT_SIGNUP_FORM_CLASSACCOUNT_EMAIL_VERIFICATIONc                       s   e Zd ZejZ fddZdd Zd ddZe	dd	d
d Z
dd Zdd Zdd Zdd Ze	dddd Zdd Zdd Ze	ejjejjddd Ze	ejjejjddd Z  ZS )!GoogleTestsc                    s   t    d| _i | _d S )Nzraymond.penners@example.com)supersetUpemailidentity_overwritesself	__class__ p/var/www/html/crackeverytest/cet_env/lib/python3.8/site-packages/allauth/socialaccount/providers/google/tests.pyr   #   s    
zGoogleTests.setUpc                 C   sL   t  }d}d||dd| jddddd	d
d||tdd d}|| j |S )Napp123idzhttps://accounts.google.comZ108204268033311374519zexample.comTZHK6E_P6Dh8Y93mRNtsDB1QzRaymond Pennersz+https://lh5.googleusercontent.com/photo.jpgRaymondZPennersenr   )hours)issZazpaudsubZhdr   email_verifiedZat_hashnameZpicture
given_namefamily_namelocaleZiatexp)r   utcnowr   r   updater   )r    now	client_idpayloadr#   r#   r$   get_google_id_token_payload(   s(    z'GoogleTests.get_google_id_token_payloadTc                 C   s$   ddddt |  dd}t|S )NZtestaci  zfhttps://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile openidZBearersecret)Zaccess_tokenZ
expires_inZscope
token_typeZid_token)r   r7   jsondumps)r    Zwith_refresh_tokendatar#   r#   r$   get_login_response_json?   s    z#GoogleTests.get_login_response_jsonF)r   c                 C   s    | j d d}| |td d S )N	resp_mockZsocialaccount_signup)loginZassertRedirectsr   )r    respr#   r#   r$   
test_loginI   s    zGoogleTests.test_loginc              
   C   st   dt  tdd dd}| D ]L\}}| |4 ||i| _| jd d}| |dtt	dd	  W 5 Q R X q"d S )
Nz
not-googler   )secondsZfoo)r)   r1   r*   r>   z%socialaccount/authentication_error.%sZACCOUNT_TEMPLATE_EXTENSIONhtml)
r   r2   r   itemsZsubTestr   r@   assertTemplateUsedgetattrr   )r    Zwrong_claim_valueskeyvaluerA   r#   r#   r$    test_wrong_id_token_claim_valuesN   s    

z,GoogleTests.test_wrong_id_token_claim_valuesc                 C   s:   ddd| _ | jd d tjj| jd}| |jd d S )Nu   明u   小)r.   r/   r>   r   zraymond.penners)r   r@   r   objectsgetr   assertEqualusername)r    userr#   r#   r$   test_username_based_on_email^   s    z(GoogleTests.test_username_based_on_emailc                 C   sh   ddi| _ | jd d tjj| jdd}| tjj| jd	  |j
j d }| |jd d d S )	Nr,   Tr>   )r   verifiedZemail_address__emailr   r.   r&   )r   r@   r   rL   rM   r   assertFalser   filterexistsrP   Zsocialaccount_setallrN   
extra_data)r    email_addressaccountr#   r#   r$   test_email_verifiedd   s    
zGoogleTests.test_email_verifiedc                    s>   g  fdd}t |  jd d  tdk d S )Nc                    s8   |d }  |jjtj   |jj| |  d S )Nsociallogin)rN   rZ   providerr   idrP   append)ZsenderrequestrP   kwargsr\   r    Zsent_signalsr#   r$   on_signed_upq   s    z<GoogleTests.test_user_signed_up_signal.<locals>.on_signed_upr>   r   )r   connectr@   
assertTruelen)r    rc   r#   rb   r$   test_user_signed_up_signaln   s
    
z&GoogleTests.test_user_signed_up_signal)ZACCOUNT_EMAIL_CONFIRMATION_HMACc                 C   s\   ddi| _ | jd d}tjj| jd}| |j | t	jj
| jd  | |d d S )Nr,   Fr>   rK   rS   z3account/email/email_confirmation_signup_subject.txt)r   r@   r   rL   rM   r   rT   rR   re   r   rU   rV   rF   )r    rA   rY   r#   r#   r$   test_email_unverified{   s    
 z!GoogleTests.test_email_unverifiedc                 C   s   t tj}| }|  |j| jjtj< t	 
d}| jj|_t|}||| j |j  ddi| _| jd d tjj
| jd}| |j | tjj| jd  d S )N/r,   Fr>   rK   rS   )r   r   ZSESSION_ENGINEZSessionStoresaveZsession_keyclientZcookiesZSESSION_COOKIE_NAMEr
   rM   Zsessionr   Zstash_verified_emailr   r   r@   r   rL   re   rR   rT   r   rU   rV   )r    Zenginestorer`   ZadapterrY   r#   r#   r$   test_email_verified_stashed   s     



z'GoogleTests.test_email_verified_stashedc                 C   s   d}t jjdd|d}|d |  tjj||ddd | jj|jdd |dd| _	| jd d	d
 | 
tjj|tjd  | tjj|d d | tjj||d d d S )Nzuser@example.comrP   T)rO   Z	is_activer   test)rP   r   ZprimaryrR   )rO   password)r   r,   rd   )r?   process)rP   r]   )rP   r   )rP   r   )r   rL   createZset_passwordrj   r   rk   r@   rO   r   re   r   rU   r   r^   rV   rN   count)r    r   rP   r#   r#   r$   test_account_connect   s    
z GoogleTests.test_account_connect)r   Z SOCIALACCOUNT_EMAIL_VERIFICATIONc                 C   sP   ddi| _ | jd d tjj| jd}| |j | tjj	| jd
  d S )Nr,   Fr>   rK   rS   )r   r@   r   rL   rM   r   rT   rR   r   rU   rV   )r    rY   r#   r#   r$   &test_social_email_verification_skipped   s    
z2GoogleTests.test_social_email_verification_skippedc                 C   sJ   ddi| _ | jd d | ttjd | jd d | ttjd d S )Nr,   Fr>   r   )r   r@   rN   rf   r	   Zoutboxr   r#   r#   r$   'test_social_email_verification_optional   s
    
z3GoogleTests.test_social_email_verification_optional)T)__name__
__module____qualname__r   r^   Zprovider_idr   r7   r=   r   rB   rJ   rQ   r[   rg   rh   rm   rs   account_settingsEmailVerificationMethod	MANDATORYNONErt   ZOPTIONALru   __classcell__r#   r#   r!   r$   r      s0   





	r   ZgoogleZAPPr%   dummy)r5   rH   r8   )ZSOCIALACCOUNT_PROVIDERSc                   @   s   e Zd ZdZdS )AppInSettingsTestszI
    Run the same set of tests but without having a SocialApp entry.
    N)rv   rw   rx   __doc__r#   r#   r#   r$   r      s   r   ),
__future__r   r   r:   r   r   	importlibr   Zdjango.confr   Zdjango.contrib.auth.modelsr   Zdjango.corer	   Zdjango.test.clientr
   Zdjango.test.utilsr   Zdjango.urlsr   Zallauth.accountr   ry   Zallauth.account.adapterr   Zallauth.account.modelsr   r   Zallauth.account.signalsr   Zallauth.socialaccount.modelsr   Z,allauth.socialaccount.providers.apple.clientr   Zallauth.socialaccount.testsr   Zallauth.testsr   r]   r   rz   r{   r   r   r#   r#   r#   r$   <module>   sH    '