U
    Z!c                  	   @   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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 kr| j }td|S )N   )facebook_datar
   )selfdata r   r/var/www/html/crackeverytest/cet_env/lib/python3.8/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|k 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 )Nr.    )r   r/   r0   r   r1   Zget_appdeleter   r%   r   r2   r3   r&   r5   r   r   r   !test_media_js_when_not_configuredR   s    
z/FacebookTests.test_media_js_when_not_configuredc              	      sp   | j td}tdN}|   g  fdd|jj_| j jtdddid}| j|d	d
d W 5 Q R X d S )Nr.   7allauth.socialaccount.providers.facebook.views.requestsc                      s      S Npopr   Zmocksr   r   <lambda>`       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   rA   r   test_login_by_tokenZ   s       z!FacebookTests.test_login_by_tokenr   Z	auth_typeZreauthenticateFr   )r   c              	      s   | j td}t|jd d d }tdT}|   d|ig  fdd|jj_| j j	tdd	d
id}| j
|ddd W 5 Q R X d S )Nr.   Zfb_dataZloginOptionsZ
auth_noncer=   c                      s      S r>   r?   r   rA   r   r   rB   x   rC   zBFacebookTests.test_login_by_token_reauthenticate.<locals>.<lambda>rD   rE   rF   r,   r   FrG   )rH   r%   r   rI   loadscontextr   r   rJ   rK   rL   )r   rM   ZnoncerN   r   rA   r   "test_login_by_token_reauthenticatei   s"    	  z0FacebookTests.test_login_by_token_reauthenticater   Tc                 C   s   |   }| |j d S r>   )_login_verifiedr4   verifiedr   Zemailaddressr   r   r   test_login_verified   s    z!FacebookTests.test_login_verifiedc                 C   s   |   }| |j d S r>   )rS   ZassertFalserT   rU   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   rS      s    zFacebookTests._login_verified)N)__name__
__module____qualname__r   r1   Zprovider_idr   r   r)   r+   r-   r9   r<   rO   r   rR   rV   rW   rS   r   r   r   r   r      s*   


r   )rI   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   r6   r   ZEmailVerificationMethodNONEr   r   r   r   r   <module>   s&   