o
    "4g                     @   s   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mZ G d
d dZG dd dZG dd deZdS )    N)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   V/var/www/html/authentication-server/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   )r.   list	responses)r   r.   r0   r   r   r   r   +   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      )r.   r0   popr   r   r   )argskwargsresponseresp)fr   r   r   new_f5   s   

zBmocked_response.__enter__.<locals>.mockable_request.<locals>.new_f)side_effectr   )r7   r8   r    )r7   r   mockable_request4   s   
z3mocked_response.__enter__.<locals>.mockable_request)requestsSessiongetorig_getpost	orig_postrequestorig_request)r   r:   r   r    r   	__enter__/   s   


zmocked_response.__enter__c                 C   s"   | j tj_| jtj_| jtj_d S r   )r>   r;   r<   r=   r@   r?   rB   rA   )r   typevalue	tracebackr   r   r   __exit__G   s   

zmocked_response.__exit__)r)   r*   r+   r   rC   rG   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   setUpN   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inputrK   r   r   r   test_generate_unique_usernameQ   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)rO   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   	SomeValue`   s    rW   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   rE   r   r   r   get_prep_valuef   r$   z<BasicTests.test_serializer.<locals>.SomeField.get_prep_valuec                    s    S r   r   )r   rE   
expression
connection
some_valuer   r   from_db_valuei   r$   z;BasicTests.test_serializer.<locals>.SomeField.from_db_valueN)r)   r*   r+   rY   r^   r   r\   r   r   	SomeFielde   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   	SomeModell   s    
rk   c                 S   r"   r   r   r    r   r   r   methodu   r$   z*BasicTests.test_serializer.<locals>.method)ra   re   rj   rc   s   %PDFzfoo.pdf)namesC   PNG

   IHDR          7n$   
IDATxc`    Hq    IENDB`zfoo.pnghellorl   rM   i  )r   FieldModelr   nowr   todaytimer   rg   rh   rl   nonfieldr   serialize_instancedeserialize_instancerO   getattrrj   rm   ri   re   ra   rc   hourminutesecondintmicrosecond)	r   rW   rk   rl   instancedata	instance2t1t2r   )r_   r]   r   test_serializer_   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   rM       )r   rp   r   ru   rv   rO   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_ENABLEDrI   r=   METArO   r   build_absolute_uri)r   rA   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_currentrI   r=   r   csrf_failurerO   r   )r   r   appr   rA   r5   r   r   r   "test_templatetag_with_csrf_failure   s   z-BasicTests.test_templatetag_with_csrf_failureN)r)   r*   r+   rJ   rS   rV   r   r   r   r   r   r   r   r   r   rH   M   s    
@rH   )r   r;   r   r   unittest.mockr   django.core.files.baser   	django.dbr   django.testr   r	   django.utils.httpr
   r   django.viewsr   allauthr   r   r   r-   rH   r   r   r   r   <module>   s    #