a
    Qx_                  	   @   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ZAUTH_PARAMSVERIFIED_EMAIL)ZSOCIALACCOUNT_AUTO_SIGNUPZACCOUNT_SIGNUP_FORM_CLASSZLOGIN_REDIRECT_URLZ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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   f/var/www/html/Ranjet/env/lib/python3.9/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uidZraymond)
r   objectscreateloginr   r   getassertEqualuserr   )r   Z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   Z1234567r    Zharveyr*   )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   registryZby_idr   idr   r%   r   ZsessionZmedia_js
assertTrue)r   providerrequestscriptr   r   r   test_media_jsK   s
    
zFacebookTests.test_media_jsc                    s   | j td}tdX}|   g  fdd|jj_| j jtdddid}| j|d	d
d W d    n1 sv0    Y  d S )Nr.   7allauth.socialaccount.providers.facebook.views.requestsc                      s      S Npopr   Zmocksr   r   <lambda>X       z3FacebookTests.test_login_by_token.<locals>.<lambda>facebook_login_by_tokenaccess_tokendummyr,   r   FZfetch_redirect_response)	clientr%   r   r   r   jsonreturn_valuepostassertRedirects)r   resprequests_mockr   r:   r   test_login_by_tokenR   s    z!FacebookTests.test_login_by_tokenr   Z	auth_typeZreauthenticateFr   )r   c                    s   | j td}t|jd d d }td^}|   d|ig  fdd|jj_| j j	tdd	d
id}| j
|ddd W d    n1 s0    Y  d S )Nr.   Zfb_dataZloginOptionsZ
auth_noncer6   c                      s      S r7   r8   r   r:   r   r   r;   p   r<   zBFacebookTests.test_login_by_token_reauthenticate.<locals>.<lambda>r=   r>   r?   r,   r   Fr@   )rA   r%   r   rB   loadscontextr   r   rC   rD   rE   )r   rF   ZnoncerG   r   r:   r   "test_login_by_token_reauthenticatea   s    	z0FacebookTests.test_login_by_token_reauthenticater   Tc                 C   s   |   }| |j d S r7   )_login_verifiedr1   verifiedr   Zemailaddressr   r   r   test_login_verifiedy   s    z!FacebookTests.test_login_verifiedc                 C   s   |   }| |j d S r7   )rL   ZassertFalserM   rN   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   rL      s    zFacebookTests._login_verified)N)__name__
__module____qualname__r   r0   Zprovider_idr   r   r)   r+   r-   r5   rH   r   rK   rO   rP   rL   r   r   r   r   r      s(   


r   )rB   Zdjango.test.clientr   Zdjango.test.utilsr   Zdjango.urlsr   Zallauth.accountr   Zaccount_settingsZallauth.account.modelsr   Zallauth.socialaccountr   Zallauth.socialaccount.modelsr   Zallauth.socialaccount.testsr	   Zallauth.testsr
   r   r   Zallauth.utilsr   r2   r   ZEmailVerificationMethodNONEr   r   r   r   r   <module>   s&   