
    )Jf                     L   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mZ d d	lm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Zd dlmZ d dlm Z  d dl!m"Z"m#Z#m$Z$m%Z% d dl&m'Z' d dl(m)Z) ddl*m+Z+  ej,        ddd           gZ- G d de)          Z.d Z/dS )    N)patch)messages)get_user_model)get_messages)MessageMiddleware)SessionMiddleware)mail
validators)ValidationError)ContextTemplate)RequestFactory)override_settings)reverse)get_adapter)EmailAddress)filter_users_by_usernameurl_str_to_user_pkuser_pk_to_url_struser_username)context)TestCase   )UUIDUserz^[a-c]+$znot abc)regexmessageflagsc                   8   e Zd Zd Zd Zd Z ed          d             Z ed          d             Zd	 Z	d
 Z
d Z ed          d             Z eddg          d             Z edg          d             Z eddg          d             ZdS )
UtilsTestsc                 @    t          j                    j        | _        d S N)uuiduuid4hexuser_idselfs    c/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/allauth/account/tests/test_utils.pysetUpzUtilsTests.setUp%   s    z||'    c                     t          d          5 }t          |_        |                     t	          | j                  t          j        | j                             d d d            d S # 1 swxY w Y   d S )N$allauth.account.utils.get_user_model)r   r   return_valueassertEqualr   r%   r"   UUID)r'   
mocked_gums     r(   0test_url_str_to_pk_identifies_UUID_as_stringlikez;UtilsTests.test_url_str_to_pk_identifies_UUID_as_stringlike(   s    9:: 	Xj&.J#/==ty?V?VWWW	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X   AA))A-0A-c                     t          d          5 }t          |_        t          ddd          }|                     t	          |          |j        j                   d d d            d S # 1 swxY w Y   d S )Nr,   Tzjohn@example.comjohn)	is_activeemailusername)r   r   r-   r.   r   pkr$   )r'   r0   users      r(   3test_pk_to_url_string_identifies_UUID_as_stringlikez>UtilsTests.test_pk_to_url_string_identifies_UUID_as_stringlike-   s    9:: 	Dj&.J#d2DvVVVD/55tw{CCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Dr2   F) ACCOUNT_PRESERVE_USERNAME_CASINGc                      t                                  }t          |d           |                     t          |          d           t          dd           d S )N	CamelCase	camelcaseFooBarr   r   r.   r   r'   r9   s     r(   test_username_lower_casedz$UtilsTests.test_username_lower_cased3   Y    ~!!dK(((t,,k::: h77777r*   Tc                      t                                  }t          |d           |                     t          |          d           t          dd           d S )Nr=   r>   foobarr@   rA   s     r(   test_username_case_preservedz'UtilsTests.test_username_case_preserved;   rC   r*   c                      t                      d          }d}ddg}|D ]K}t          |          }|                    t          d|i                    }|                     ||           Ld S )Nzjohn<br/>doe)r7   zjohn&lt;br/&gt;doez){% load account %}{% user_display user %}z5{% load account %}{% user_display user as x %}{{ x }}r9   )r   r   renderr   r.   )r'   r9   expected_name	templatestemplatetcontents          r(   test_user_displayzUtilsTests.test_user_displayC   s    ~888,7C
	 " 	5 	5H""Ahhw~6677GWm4444	5 	5r*   c                    t                                          d          }t          d                               |           t	          d                               |            t                                  }t          |d           d|i}t                                          |t          j
        d|           t          |          }|j        d         j        }|j        |v s
J |            d S )N/c                     d S r!    requests    r(   <lambda>z2UtilsTests.test_message_escaping.<locals>.<lambda>Q       $ r*   c                     d S r!   rR   rS   s    r(   rU   z2UtilsTests.test_message_escaping.<locals>.<lambda>R   rV   r*   z'<8r9   zaccount/messages/logged_in.txtr   )r   getr   process_requestr   r   r   r   add_messager   SUCCESSr   _queued_messagesr   r7   )r'   rT   r9   r   msgsactual_messages         r(   test_message_escapingz UtilsTests.test_message_escapingO   s     ""&&s++..//??HHH..//??HHH~!!dE"""4.!!X%'G	
 	
 	
 G$$.q19}........r*   c                    d}t           j        j        r<ddlm} |j                                        }dx|_        }|                                 t                      j        
                    dd          }t                                          d          }t          j                            |||j        d	
           |                     t"          j        d         j        dd                              |                     d S )N
testserverr   )Sitez<enc&"test>testzuser@example.com)r7   r6   rP   T)confirmr   )allauthapp_settingsSITES_ENABLEDdjango.contrib.sites.modelsrb   objectsget_currentnamesaver   creater   rX   r   	add_emailr6   
assertTruer	   outboxsubject
startswith)r'   	site_namerb   siteurT   s         r(   test_email_escapingzUtilsTests.test_email_escaping]   s     	- 	888888<++--D$11DI	IIKKK$++VCU+VV ""&&s++&&w17D&IIIA.qrr2==iHHIIIIIr*   z9allauth.account.tests.test_utils.test_username_validators)ACCOUNT_USERNAME_VALIDATORSc                     t                                          d           |                     t          d            d S )Nabcc                  D    t                                          d          S )Ndef)r   clean_usernamerR   r*   r(   rU   z4UtilsTests.test_username_validator.<locals>.<lambda>o   s    ;==3O3OPU3V3V r*   )r   r|   assertRaisesr   r&   s    r(   test_username_validatorz"UtilsTests.test_username_validatorj   s<     	$$U+++/+V+VWWWWWr*   allowed_hostra   )ALLOWED_HOSTSc                 n   t          j        t                                          d                    5  |                     t                                          d                     |                     t                                          d                     d d d            d S # 1 swxY w Y   d S )NrP   zhttp://allowed_host/http://other_host/)r   request_contextr   rX   ro   r   is_safe_urlassertFalser&   s    r(   test_is_safe_url_no_wildcardz'UtilsTests.test_is_safe_url_no_wildcardq   s    $^%5%5%9%9#%>%>?? 	N 	NOOKMM556LMMNNN[]]667KLLMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N   A)B**B.1B.*c                 n   t          j        t                                          d                    5  |                     t                                          d                     |                     t                                          d                     d d d            d S # 1 swxY w Y   d S )NrP   zhttp://foobar.com/r   r   r   r   rX   ro   r   r   r&   s    r(   test_is_safe_url_wildcardz$UtilsTests.test_is_safe_url_wildcardw   s    $^%5%5%9%9#%>%>?? 	M 	MOOKMM556JKKLLLOOKMM556JKKLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	Mr   c                    t          j        t                                          d                    5  |                     t                                          d                     d d d            d S # 1 swxY w Y   d S )NrP   z/foo/barr   r&   s    r(   test_is_safe_url_relative_pathz)UtilsTests.test_is_safe_url_relative_path}   s    $^%5%5%9%9#%>%>?? 	C 	COOKMM55jAABBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   5A66A:=A:N)__name__
__module____qualname__r)   r1   r:   r   rB   rF   rN   r_   rv   r~   r   r   r   rR   r*   r(   r   r   $   s       ( ( (X X X
D D D >>>8 8 ?>8 ===8 8 >=8
5 
5 
5? ? ?J J J $_  X X X nl%CDDDN N EDN
 cU+++M M ,+M
 nl%CDDDC C EDC C Cr*   r   c                 l    |                      t          d          dz             }|d         dk    sJ d S )Naccount_logoutz?next=badurlnamelocationz/badurlname)postr   )auth_clientresps     r(   test_redirect_noreversematchr      sB     G$4558JJKKD
},,,,,,r*   )0r"   unittest.mockr   django.contribr   django.contrib.authr   django.contrib.messages.apir   "django.contrib.messages.middlewarer   "django.contrib.sessions.middlewarer   django.corer	   r
   django.core.exceptionsr   django.templater   r   django.test.clientr   django.test.utilsr   django.urlsr   allauth.app_settingsre   allauth.account.adapterr   allauth.account.modelsr   allauth.account.utilsr   r   r   r   allauth.corer   allauth.testsr   test_modelsr   RegexValidatortest_username_validatorsr   r   rR   r*   r(   <module>r      s          # # # # # # . . . . . . 4 4 4 4 4 4 @ @ @ @ @ @ @ @ @ @ @ @ ( ( ( ( ( ( ( ( 2 2 2 2 2 2 - - - - - - - - - - - - - - / / / / / /           / / / / / / / / / / / /            !           " " " " " " ! ! ! ! ! ! JK!LLL 
\C \C \C \C \C \C \C \C~- - - - -r*   