o
    Lf1                     @   s   d dl mZ d dlZd dlZ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mZ d dlmZmZ d d	lmZ d d
lmZ ddlmZ G dd deZG dd dZG dd deZdS )    )unicode_literalsN)datedatetimeMock)ContentFile)models)RequestFactoryTestCase)base36_to_intint_to_base36)csrf)app_settings   )utilsc                   @   s>   e Zd ZdddZdd Zdd Zedd	 Zed
d ZdS )MockedResponseNc                 C   sD   |d u ri }|| _ t|trt|}d|d< |d| _|| _d S )Nzapplication/jsonzcontent-typeutf8)status_code
isinstancedictjsondumpsencodecontentheaders)selfr   r   r    r   N/var/www/html/humari/django-venv/lib/python3.10/site-packages/allauth/tests.py__init__   s   


zMockedResponse.__init__c                 C   s   t | jS N)r   loadstextr   r   r   r   r          zMockedResponse.jsonc                 C      d S r   r   r"   r   r   r   raise_for_status#      zMockedResponse.raise_for_statusc                 C   s   | j d dkS )Nd      )r   r"   r   r   r   ok&   s   zMockedResponse.okc                 C   s   | j dS )Nr   )r   decoder"   r   r   r   r!   *   s   zMockedResponse.textr   )	__name__
__module____qualname__r   r   r%   propertyr)   r!   r   r   r   r   r      s    

r   c                   @   s*   e Zd ZddddZdd Zdd ZdS )	mocked_responseN)callbackc                G   s   || _ t|| _d S r   )r0   list	responses)r   r0   r2   r   r   r   r   0   s   zmocked_response.__init__c                    s^   t jj _t jj _t jj _ fdd}|t jjt j_|t jjt j_|t jjt j_d S )Nc                    s    fdd}t |dS )Nc                     sZ   j rj | i |}|d ur|S jr&jd}t|tr$td|}|S  | i |S )Nr      )r0   r2   popr   r   r   )argskwargsresponseresp)fr   r   r   new_f:   s   

zBmocked_response.__enter__.<locals>.mockable_request.<locals>.new_f)side_effectr   )r9   r:   r"   )r9   r   mockable_request9   s   
z3mocked_response.__enter__.<locals>.mockable_request)requestsSessiongetorig_getpost	orig_postrequestorig_request)r   r<   r   r"   r   	__enter__4   s   


zmocked_response.__enter__c                 C   s"   | j tj_| jtj_| jtj_d S r   )r@   r=   r>   r?   rB   rA   rD   rC   )r   typevalue	tracebackr   r   r   __exit__L   s   

zmocked_response.__exit__)r+   r,   r-   r   rE   rI   r   r   r   r   r/   /   s    r/   c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )
BasicTestsc                 C   s   t  | _d S r   )r	   factoryr"   r   r   r   setUpS   r#   zBasicTests.setUpc                 C   s.   g d}|D ]\}}|  t|g| qd S )N))za.b-c@example.comza.b-c)u   Üsêrnamêusername)z	User Name	user_name) user)assertEqualr   generate_unique_username)r   examplesinputrM   r   r   r   test_generate_unique_usernameV   s   z(BasicTests.test_generate_unique_usernamec                 C   s   d}|  |t| d S )NzJthis.email.address.is.a.bit.too.long.but.should.still.validate@example.com)rQ   r   valid_email_or_none)r   sr   r   r   test_email_validation`   s   z BasicTests.test_email_validationc           	         s  G dd d}| G fdddt j G  fdddt j}dd }|t t t  d	}td
dd|_	tddd|_
||_d|_t|}t||}| t|dd | | t|dd d  | |j | |j	jd | |j
jd | |jjd | |j|j | |j|j | |j |j  |j|jf|j |j ffD ],\}}| |j|j | |j|j | |j|j | t|jd t|jd  qd S )Nc                   @   s   e Zd ZdS )z-BasicTests.test_serializer.<locals>.SomeValueN)r+   r,   r-   r   r   r   r   	SomeValuee   s    rY   c                       s    e Zd Zdd Z fddZdS )z-BasicTests.test_serializer.<locals>.SomeFieldc                 S   s   dS )N	somevaluer   )r   rG   r   r   r   get_prep_valuek   r&   z<BasicTests.test_serializer.<locals>.SomeField.get_prep_valuec                    s    S r   r   )r   rG   
expression
connection
some_valuer   r   from_db_valuen   r&   z;BasicTests.test_serializer.<locals>.SomeField.from_db_valueN)r+   r,   r-   r[   r`   r   r^   r   r   	SomeFieldj   s    ra   c                       sB   e Zd Ze Ze Ze Z	e
 Ze
 Ze
 Z  ZdS )z-BasicTests.test_serializer.<locals>.SomeModelN)r+   r,   r-   r   DateTimeFielddt	TimeFieldt	DateFieldd
ImageFieldimg1img2img3	somethingr   )ra   r   r   	SomeModelq   s    
rm   c                 S   r$   r   r   r"   r   r   r   methodz   r&   z*BasicTests.test_serializer.<locals>.method)rc   rg   rl   re   s   %PDFzfoo.pdf)namesC   PNG

   IHDR          7n$   
IDATxc`    Hq    IENDB`zfoo.pnghellorn   rO   i  )r   FieldModelr   nowr   todaytimer   ri   rj   rn   nonfieldr   serialize_instancedeserialize_instancerQ   getattrrl   ro   rk   rg   rc   re   hourminutesecondintmicrosecond)	r   rY   rm   rn   instancedata	instance2t1t2r   )ra   r_   r   test_serializerd   sJ   	


"zBasicTests.test_serializerc                 C   sr   G dd dt j}|dd}t|}t||}| |d d | |d d | |jd | |jd	 d S )
Nc                   @   s   e Zd Ze Ze ZdS )z@BasicTests.test_serializer_binary_field.<locals>.SomeBinaryModelN)r+   r,   r-   r   BinaryFieldbbbb_emptyr   r   r   r   SomeBinaryModel   s    r   s   some binary data)r   r   zc29tZSBiaW5hcnkgZGF0YQ==r   rO       )r   rr   r   rw   rx   rQ   r   r   )r   r   r   
serializeddeserializedr   r   r   test_serializer_binary_field   s   

z'BasicTests.test_serializer_binary_fieldc                 C   sd   d }t js| jd}d|jd< | t|dd | tj|dddd | t|d	d	 d S )
N/zexample.comSERVER_NAMEz/foozhttp://example.com/fooftp)protocolzftp://example.com/foozhttp://foo.com/bar)r   SITES_ENABLEDrK   r?   METArQ   r   build_absolute_uri)r   rC   r   r   r   test_build_absolute_uri   s   

z"BasicTests.test_build_absolute_uric                 C   s,   d}d}t ||ksJ t||ksJ d S )Nl   '  n20 brxk553wvxbf3)r   r   )r   nb36r   r   r   test_int_to_base36   s   zBasicTests.test_int_to_base36c                 C   sj   ddl m} |jjdd}tjrddlm} |j	|j
  | jd}tj|dd}| |jd	 d S )
Nr   )	SocialAppgoogle)provider)Sitez/tests/test_403_csrf.htmlztests/test_403_csrf.html)template_namei  )allauth.socialaccount.modelsr   objectscreater   r   django.contrib.sites.modelsr   sitesaddget_currentrK   r?   r   csrf_failurerQ   r   )r   r   appr   rC   r7   r   r   r   "test_templatetag_with_csrf_failure   s   z-BasicTests.test_templatetag_with_csrf_failureN)r+   r,   r-   rL   rU   rX   r   r   r   r   r   r   r   r   r   rJ   R   s    
@rJ   )
__future__r   r   r=   r   r   unittest.mockr   django.core.files.baser   	django.dbr   django.testr	   r
   django.utils.httpr   r   django.viewsr   allauthr   rO   r   objectr   r/   rJ   r   r   r   r   <module>   s   #