o
    ˷e                  	   @   s   d dl 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mZ d dlmZ ddlmZ eddde	jjdi ddidG dd deeZdS )    N)RequestFactory)override_settings)reverse)app_settings)EmailAddress)	providers)SocialAccount)OAuth2TestsMixin)MockedResponseTestCasepatch)get_user_model   )FacebookProviderT/accounts/profile/facebookFAUTH_PARAMSVERIFIED_EMAIL)SOCIALACCOUNT_AUTO_SIGNUPACCOUNT_SIGNUP_FORM_CLASSLOGIN_REDIRECT_URLACCOUNT_EMAIL_VERIFICATIONSOCIALACCOUNT_PROVIDERSc                   @   s   e Zd ZejZdZd!ddZdd Zdd Z	d	d
 Z
dd Zdd Zdd Zedddiddiddd Zedddiiddd Zdd Zdd  ZdS )"FacebookTestsa  
        {
           "id": "630595557",
           "name": "Raymond Penners",
           "first_name": "Raymond",
           "last_name": "Penners",
           "email": "raymond.penners@example.com",
           "link": "https://www.facebook.com/raymond.penners",
           "username": "raymond.penners",
           "birthday": "07/17/1973",
           "work": [
              {
                 "employer": {
                    "id": "204953799537777",
                    "name": "IntenCT"
                 }
              }
           ],
           "timezone": 1,
           "locale": "nl_NL",
           "verified": true,
           "updated_time": "2012-11-30T20:40:33+0000"
        }Nc                 C   s   |d u r| j }td|S )N   )facebook_datar
   )selfdata r   e/var/www/ideatree/venv/lib/python3.10/site-packages/allauth/socialaccount/providers/facebook/tests.pyget_mocked_response4   s   
z!FacebookTests.get_mocked_responsec                 C   sD   t  }|jjdd | |   tjjdd}| |jj	d d S )Nraymond.penners)username	630595557uidraymond)
r   objectscreateloginr!   r   getassertEqualuserr#   )r   Usersocialaccountr   r   r    test_username_conflict9   s
   z$FacebookTests.test_username_conflictc                 C   s0   |  |   tjjdd}| |jjd d S )Nr$   r%   r"   r*   r!   r   r(   r+   r,   r-   r#   )r   r/   r   r   r    test_username_based_on_provider@   s   z-FacebookTests.test_username_based_on_providerc                 C   s8   d}|  | j|d tjjdd}| |jjd d S )Nz0{"id": "1234567", "name": "Harvey McGillicuddy"}r   1234567r%   harveyr1   )r   r   r/   r   r   r    0test_username_based_on_provider_with_simple_nameE   s   z>FacebookTests.test_username_based_on_provider_with_simple_namec                 C   s@   t jtj}t td}i |_|	|}| 
d|v  d S )Naccount_loginz"appId": "app123id")r   registryby_idr   idr   r+   r   sessionmedia_js
assertTruer   providerrequestscriptr   r   r    test_media_jsK   s
   
zFacebookTests.test_media_jsc                 C   sL   t jtj}|d   t t	d}i |_
||}| |d d S )Nr7    )r   r8   r9   r   r:   get_appdeleter   r+   r   r;   r<   r,   r>   r   r   r    !test_media_js_when_not_configuredR   s   
z/FacebookTests.test_media_js_when_not_configuredc                    s   | j td}td-}|   g  fdd|jj_| j jtdddid}| j|d	d
d W d    d S 1 s<w   Y  d S )Nr7   7allauth.socialaccount.providers.facebook.views.requestsc                            S Npopr   mocksr   r    <lambda>`       z3FacebookTests.test_login_by_token.<locals>.<lambda>facebook_login_by_tokenaccess_tokendummyr3   r   Ffetch_redirect_response)	clientr+   r   r   r!   jsonreturn_valuepostassertRedirects)r   resprequests_mockr   rL   r    test_login_by_tokenZ   s   "z!FacebookTests.test_login_by_tokenr   	auth_typereauthenticateFr   )r   c                    s   | j td}t|jd d d }td0}|   d|ig  fdd|jj_| j j	tdd	d
id}| j
|ddd W d    d S 1 sKw   Y  d S )Nr7   fb_dataloginOptions
auth_noncerG   c                      rH   rI   rJ   r   rL   r   r    rN   x   rO   zBFacebookTests.test_login_by_token_reauthenticate.<locals>.<lambda>rP   rQ   rR   r3   r   FrS   )rU   r+   r   rV   loadscontextr   r!   rW   rX   rY   )r   rZ   noncer[   r   rL   r    "test_login_by_token_reauthenticatei   s    	"z0FacebookTests.test_login_by_token_reauthenticater   Tc                 C      |   }| |j d S rI   )_login_verifiedr=   verifiedr   emailaddressr   r   r    test_login_verified   s   z!FacebookTests.test_login_verifiedc                 C   rf   rI   )rg   assertFalserh   ri   r   r   r    test_login_unverified   s   z#FacebookTests.test_login_unverifiedc                 C   s   |  |   tjjddS )Nzraymond.penners@example.com)email)r*   r!   r   r(   r+   )r   r   r   r    rg      s   zFacebookTests._login_verifiedrI   )__name__
__module____qualname__r   r:   provider_idr   r!   r0   r2   r6   rB   rF   r\   r   re   rk   rm   rg   r   r   r   r    r      s,    


r   )rV   django.test.clientr   django.test.utilsr   django.urlsr   allauth.accountr   account_settingsallauth.account.modelsr   allauth.socialaccountr   allauth.socialaccount.modelsr   allauth.socialaccount.testsr	   allauth.testsr
   r   r   allauth.utilsr   r?   r   EmailVerificationMethodNONEr   r   r   r   r    <module>   s(    