o
    ˷e                     @   s   d dl mZ d dlZd dlZd dlmZmZ d dl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 z
d dlmZmZ W n eyc   d dlmZmZ Y nw G dd deZG dd dZG dd deZdS )    )unicode_literalsN)datedatetime)ContentFile)models)RequestFactoryTestCase)base36_to_intint_to_base36)csrf)app_settings   )utils)Mockpatchc                   @   s2   e Zd Zd
ddZdd Zdd Zedd	 ZdS )MockedResponseNc                 C   s(   |d u ri }|| _ |d| _|| _d S Nutf8)status_codeencodecontentheaders)selfr   r   r    r   D/var/www/ideatree/venv/lib/python3.10/site-packages/allauth/tests.py__init__   s
   
zMockedResponse.__init__c                 C   s   t | jS N)json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S r   )r   decoder    r   r   r   r   )   s   zMockedResponse.textr   )__name__
__module____qualname__r   r   r#   propertyr   r   r   r   r   r      s    
r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )mocked_responsec                 G   s   t || _d S r   )list	responses)r   r,   r   r   r   r   /   s   zmocked_response.__init__c                    sL   t j _t j _t j _ fdd}|t jt _|t jt _|t jt _d S )Nc                    s    fdd}|S )Nc                     s    j r	j dS  | i |S )Nr   )r,   pop)argskwargs)fr   r   r   new_f8   s   zBmocked_response.__enter__.<locals>.mockable_request.<locals>.new_fr   )r0   r1   r    )r0   r   mockable_request7   s   z3mocked_response.__enter__.<locals>.mockable_request)requestsgetorig_getpost	orig_postrequestorig_request)r   r2   r   r    r   	__enter__2   s   zmocked_response.__enter__c                 C   s   | j t_| jt_| jt_d S r   )r5   r3   r4   r7   r6   r9   r8   )r   typevalue	tracebackr   r   r   __exit__C   s   zmocked_response.__exit__N)r&   r'   r(   r   r:   r>   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   setUpJ   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inputrB   r   r   r   test_generate_unique_usernameM   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)rF   r   valid_email_or_none)r   sr   r   r   test_email_validationW   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|_||_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   	SomeValue\   s    rN   c                       s:   e Zd Zdd Zejdk r fddZdS  fddZdS )z-BasicTests.test_serializer.<locals>.SomeFieldc                 S   s   dS )N	somevaluer   )r   r<   r   r   r   get_prep_valueb   r$   z<BasicTests.test_serializer.<locals>.SomeField.get_prep_value)   r   c                        S r   r   )r   r<   
expression
connectioncontext
some_valuer   r   from_db_valueg   r$   z;BasicTests.test_serializer.<locals>.SomeField.from_db_valuec                    rR   r   r   )r   r<   rS   rT   rV   r   r   rX   l   r$   N)r&   r'   r(   rP   djangoVERSIONrX   r   rV   r   r   	SomeFielda   s
    
r[   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   )r[   r   r   	SomeModelo   s    
rg   c                 S   r"   r   r   r    r   r   r   methodx   r$   z*BasicTests.test_serializer.<locals>.method)r]   ra   rf   r_   s   %PDFzfoo.pdfzfoo.pnghellorh   rD   i  )r   FieldModelr   nowr   todaytimer   namerc   rd   rh   nonfieldr   serialize_instancedeserialize_instancerF   getattrrf   re   ra   r]   r_   hourminutesecondintmicrosecond)
r   rN   rg   rh   instancecontent_filedata	instance2t1t2r   )r[   rW   r   test_serializer[   sH   	


"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   rD       )r   rk   r   rq   rr   rF   r   r   )r   r   ry   
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_ENABLEDr@   r4   METArF   r   build_absolute_uri)r   r8   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   s,   | j d}tj|dd}| |jd d S )Nz/tests/test_403_csrf.htmlztests/test_403_csrf.html)template_namei  )r@   r4   r   csrf_failurerF   r   )r   r8   responser   r   r   "test_templatetag_with_csrf_failure   s   z-BasicTests.test_templatetag_with_csrf_failureN)r&   r'   r(   rA   rJ   rM   r   r   r   r   r   r   r   r   r   r?   I   s    
Dr?   ) 
__future__r   r   r3   r   r   rY   django.core.files.baser   	django.dbr   django.testr   r   django.utils.httpr	   r
   django.viewsr   allauthr   rD   r   unittest.mockr   r   ImportErrormockobjectr   r*   r?   r   r   r   r   <module>   s(   