o
    "4g                  	   @   s   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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d ZdS )    )get_user_model)RequestFactory)override_settings)reverse)app_settings)EmailAddress)get_adapter)SocialAccount)OAuth2TestsMixin)MockedResponseTestCasemocked_response   )FacebookProviderTN/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edddiiddd Zdd Zdd Zed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   w/var/www/html/authentication-server/venv/lib/python3.10/site-packages/allauth/socialaccount/providers/facebook/tests.pyget_mocked_response2   s   
z!FacebookTests.get_mocked_responsec                 C   s   dS )Nraymond.pennersr   r   r   r   r   get_expected_to_str7   s   z!FacebookTests.get_expected_to_strc                 C   sD   t  }|jjdd | |   tjjdd}| |jj	d d S )Nr!   )username	630595557uidraymond)
r   objectscreateloginr    r	   getassertEqualuserr$   )r   Usersocialaccountr   r   r   test_username_conflict:   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   r0   r   r   r   test_username_based_on_providerA   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&   harveyr2   )r   r   r0   r   r   r   0test_username_based_on_provider_with_simple_nameF   s   z>FacebookTests.test_username_based_on_provider_with_simple_namer   METHODjs_sdk)r   c                 C   s4   t  td}i |_| j|}| d|v  d S )Naccount_loginz"appId": "app123id")r   r,   r   sessionprovidermedia_js
assertTrue)r   requestscriptr   r   r   test_media_jsL   s   zFacebookTests.test_media_jsc                 C   sv   t ddiddddi|  " | jd ddi}|jjdks!J |jjdks)J W d    d S 1 s4w   Y  d S )	Naccess_token	app_tokenr   app123idTapp_idis_validdummyraymond.penners@example.com)r   r    r<   verify_tokenr.   emailtoken)r   r+   r   r   r   test_token_authY   s   
"zFacebookTests.test_token_authc                 C   s|   | j td}tddiddddi|   | j jtddd	id
}| j|ddd W d    d S 1 s7w   Y  d S )Nr:   rB   rC   r   rD   TrE   facebook_login_by_tokenrH   r4   r   Ffetch_redirect_response)clientr,   r   r   r    postassertRedirects)r   respr   r   r   test_login_by_tokenh   s$   
"z!FacebookTests.test_login_by_token	auth_typereauthenticateF)r8   r   r   c                 C   s   | j td}|jd d d }tddiddd	d
id|i|   | j jtdddid}| j|ddd W d    d S 1 sCw   Y  d S )Nr:   fb_dataloginOptions
auth_noncerB   rC   r   rD   TrE   rN   rH   r4   r   FrO   )rQ   r,   r   contextr   r    rR   rS   )r   rT   noncer   r   r   "test_login_by_token_reauthenticate|   s(   
"z0FacebookTests.test_login_by_token_reauthenticater   Tc                 C      |   }| |j d S N)_login_verifiedr>   verifiedr   emailaddressr   r   r   test_login_verified   s   z!FacebookTests.test_login_verifiedc                 C   r^   r_   )r`   assertFalsera   rb   r   r   r   test_login_unverified   s   z#FacebookTests.test_login_unverifiedc                 C   s   |  |   tjjddS )NrI   )rK   )r+   r    r   r)   r,   r"   r   r   r   r`      s   zFacebookTests._login_verifiedr_   )__name__
__module____qualname__r   idprovider_idr   r    r#   r1   r3   r7   r   rA   rM   rU   r]   rd   rf   r`   r   r   r   r   r      s<    


	
r   c           	      C   s   di dddigdi|_ | d}t|}||tj}ddi}|d	d
ddd! |||}|jjd	ks8J |j	d j
d
ksBJ W d    d S 1 sMw   Y  d S )Nr   F	client_id123)r   r   APPS/id_tokenXf123z
e@mail.orgJohnDoe)subrK   
given_namefamily_namer   )r   r,   r   get_providerr   rj   rJ   accountr'   email_addressesrK   )	rfdbsettingsjwt_decode_bypassr?   adapterr<   rL   r+   r   r   r   test_limited_token   s*   
"r   )django.contrib.authr   django.test.clientr   django.test.utilsr   django.urlsr   allauth.accountr   account_settingsallauth.account.modelsr   allauth.socialaccount.adapterr   allauth.socialaccount.modelsr	   allauth.socialaccount.testsr
   allauth.testsr   r   r   r<   r   EmailVerificationMethodNONEr   r   r   r   r   r   <module>   s*     