a
    Qx_!                     @   s2  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 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#m$Z$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_literals)import_module)	HTTPError)settings)User)mail)RequestFactory)override_settings)reverse)app_settings)get_adapter)EmailAddressEmailConfirmation)user_signed_up)SocialAccountSocialToken)OAuth2TestsMixin)MockedResponseTestCasepatch   )GoogleProviderTN)ZSOCIALACCOUNT_AUTO_SIGNUPZACCOUNT_SIGNUP_FORM_CLASSACCOUNT_EMAIL_VERIFICATIONc                   @   s   e Zd ZejZ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dS )GoogleTestsPennersRaymondRaymond Pennersraymond.penners@example.comTc              	   C   s    t dd||||t| f S )N   a  
              {"family_name": "%s", "name": "%s",
               "picture": "https://lh5.googleusercontent.com/photo.jpg",
               "locale": "nl", "gender": "male",
               "email": "%s",
               "link": "https://plus.google.com/108204268033311374519",
               "given_name": "%s", "id": "108204268033311374519",
               "verified_email": %s }
        )r   reprlower)selffamily_name
given_namenameemailverified_email r(   d/var/www/html/Ranjet/env/lib/python3.9/site-packages/allauth/socialaccount/providers/google/tests.pyget_mocked_response!   s    

zGoogleTests.get_mocked_responsec           	   	   C   s   ddl m} G dd dt}t t| jjd tdd}||}|	 
|}tdd	}|d
d}tdP}||j_| t |||| W d    n1 s0    Y  W d    n1 s0    Y  d S )Nr   )GoogleOAuth2Adapterc                   @   s   e Zd Zdd ZdS )zGGoogleTests.test_google_compelete_login_401.<locals>.LessMockedResponsec                 S   s   | j dkrtd d S )Nr   )Zstatus_coder   r"   r(   r(   r)   raise_for_statusC   s    
zXGoogleTests.test_google_compelete_login_401.<locals>.LessMockedResponse.raise_for_statusN)__name__
__module____qualname__r-   r(   r(   r(   r)   LessMockedResponseB   s   r1   Z_loginloginprocessZ
some_token)tokeni  ae  
            {"error": {
              "errors": [{
                "domain": "global",
                "reason": "authError",
                "message": "Invalid Credentials",
                "locationType": "header",
                "location": "Authorization" } ],
              "code": 401,
              "message": "Invalid Credentials" }
            }z5allauth.socialaccount.providers.google.views.requests)Z,allauth.socialaccount.providers.google.viewsr+   r   r	   getr   provideriddictget_providerZget_appr   r   Zreturn_valueZassertRaisesr   Zcomplete_login)	r"   r+   r1   requestadapterZappr5   Zresponse_with_401Zpatched_requestsr(   r(   r)   test_google_compelete_login_401=   s&    
z+GoogleTests.test_google_compelete_login_401c              	   C   sN   d}d}d}|  | j|d | |||dd tjj|d}| |jd d S )	Nu   明u   小r    T)r%   r&   r$   r#   r'   r&   zraymond.penners)r2   r*   r   objectsr6   assertEqualusername)r"   Z
first_name	last_namer&   userr(   r(   r)   test_username_based_on_emailc   s    
	z(GoogleTests.test_username_based_on_emailc                 C   sd   d}|  | jdd tjj|dd}| tjj|d  |j	j
 d }| |jd d d S )	Nr   Tr'   )r&   verifiedZemail_address__emailr   r$   r   )r2   r*   r   r@   r6   assertFalser   filterexistsrD   Zsocialaccount_setallrA   
extra_data)r"   
test_emailemail_addressaccountr(   r(   r)   test_email_verifieds   s    zGoogleTests.test_email_verifiedc                    sD   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)rA   rP   r7   r   r8   rD   append)Zsenderr;   rD   kwargsrR   r"   Zsent_signalsr(   r)   on_signed_up   s    z<GoogleTests.test_user_signed_up_signal.<locals>.on_signed_upTrF   r   )r   connectr2   r*   
assertTruelen)r"   rV   r(   rU   r)   test_user_signed_up_signal}   s
    
z&GoogleTests.test_user_signed_up_signalF)ZACCOUNT_EMAIL_CONFIRMATION_HMACc                 C   sX   d}|  | jdd}tjj|d}| |j | tjj	|d
  | |d d S )Nr   FrF   r?   rH   z3account/email/email_confirmation_signup_subject.txt)r2   r*   r   r@   r6   rI   rG   rX   r   rJ   rK   ZassertTemplateUsed)r"   rN   ZresprO   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|}d}||| |j  | | jdd tjj
|d}| |j | tjj|d  d S )N/r   FrF   r?   rH   )r   r   ZSESSION_ENGINEZSessionStoresaveZsession_keyclientZcookiesZSESSION_COOKIE_NAMEr	   r6   Zsessionr   Zstash_verified_emailr2   r*   r   r@   rX   rG   rI   r   rJ   rK   )r"   Zenginestorer;   r<   rN   rO   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 | j| j	ddd	d
 | 
tjj|tjd  | tjj|d d | tjj||d d d S )Nzuser@example.comrD   T)rB   Z	is_activer&   test)rD   r&   ZprimaryrG   )rB   passwordrF   rW   r3   )rD   r7   )rD   r   )rD   r&   )r   r@   createZset_passwordr]   r   r^   r2   rB   r*   rX   r   rJ   r   r8   rK   rA   count)r"   r&   rD   r(   r(   r)   test_account_connect   s    
z GoogleTests.test_account_connect)r   Z SOCIALACCOUNT_EMAIL_VERIFICATIONc                 C   sL   d}|  | jdd tjj|d}| |j | tjj|d	  d S )Nr   FrF   r?   rH   )
r2   r*   r   r@   r6   rI   rG   r   rJ   rK   )r"   rN   rO   r(   r(   r)   &test_social_email_verification_skipped   s    z2GoogleTests.test_social_email_verification_skippedc                 C   sL   |  | jdd | ttjd |  | jdd | ttjd d S )NFrF   r   )r2   r*   rA   rY   r   Zoutboxr,   r(   r(   r)   'test_social_email_verification_optional   s    z3GoogleTests.test_social_email_verification_optionalN)r   r   r   r   T)r.   r/   r0   r   r8   Zprovider_idr*   r=   rE   rQ   rZ   r
   r[   r`   re   account_settingsEmailVerificationMethod	MANDATORYNONErf   ZOPTIONALrg   r(   r(   r(   r)   r      s2        
&


	r   ZgoogleZAPPZapp123iddummy)Z	client_idkeyZsecret)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)r.   r/   r0   __doc__r(   r(   r(   r)   rn      s   rn   ),
__future__r   r   	importlibr   Zrequests.exceptionsr   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   rh   Zallauth.account.adapterr   Zallauth.account.modelsr   r   Zallauth.account.signalsr   Zallauth.socialaccount.modelsr   r   Zallauth.socialaccount.testsr   Zallauth.testsr   r   r   r7   r   ri   rj   r   rn   r(   r(   r(   r)   <module>   sD    6