o
    Lf                     @   s*  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 dgZ-G dd de)Z.d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                   @   s   e Zd Zdd Zdd Zdd Zeddd	d
 Zedddd Zdd Z	dd Z
dd Zedddd Zeddgddd Zedgddd Zeddgdd d! Zd"S )#
UtilsTestsc                 C   s   t  j| _d S N)uuiduuid4hexuser_idself r%   a/var/www/html/humari/django-venv/lib/python3.10/site-packages/allauth/account/tests/test_utils.pysetUp%   s   zUtilsTests.setUpc                 C   sN   t d}t|_| t| jt| j W d    d S 1 s w   Y  d S )N$allauth.account.utils.get_user_model)r   r   return_valueassertEqualr   r"   r   UUID)r$   
mocked_gumr%   r%   r&   0test_url_str_to_pk_identifies_UUID_as_stringlike(   s   
"z;UtilsTests.test_url_str_to_pk_identifies_UUID_as_stringlikec                 C   sV   t d}t|_tdddd}| t||jj W d    d S 1 s$w   Y  d S )Nr(   Tzjohn@example.comjohn)	is_activeemailusername)r   r   r)   r*   r   pkr!   )r$   r,   userr%   r%   r&   3test_pk_to_url_string_identifies_UUID_as_stringlike-   s
   
"z>UtilsTests.test_pk_to_url_string_identifies_UUID_as_stringlikeF) ACCOUNT_PRESERVE_USERNAME_CASINGc                 C   s0   t   }t|d | t|d tdd d S )N	CamelCase	camelcaseFooBarr   r   r*   r   r$   r3   r%   r%   r&   test_username_lower_cased3      
z$UtilsTests.test_username_lower_casedTc                 C   s0   t   }t|d | t|d tdd d S )Nr6   r7   foobarr9   r:   r%   r%   r&   test_username_case_preserved;   r<   z'UtilsTests.test_username_case_preservedc                 C   sL   t  dd}d}ddg}|D ]}t|}|td|i}| || qd S )Nzjohn<br/>doe)r1   zjohn&lt;br/&gt;doez){% load account %}{% user_display user %}z5{% load account %}{% user_display user as x %}{{ x }}r3   )r   r   renderr   r*   )r$   r3   expected_name	templatestemplatetcontentr%   r%   r&   test_user_displayC   s   zUtilsTests.test_user_displayc                 C   s   t  d}tdd | tdd | t  }t|d d|i}t |t	j
d| t|}|jd j}|j|v sBJ |d S )	N/c                 S      d S r   r%   requestr%   r%   r&   <lambda>Q       z2UtilsTests.test_message_escaping.<locals>.<lambda>c                 S   rG   r   r%   rH   r%   r%   r&   rJ   R   rK   z'<8r3   zaccount/messages/logged_in.txtr   )r   getr   process_requestr   r   r   r   add_messager   SUCCESSr   _queued_messagesr   r1   )r$   rI   r3   r   msgsactual_messager%   r%   r&   test_message_escapingO   s   

z UtilsTests.test_message_escapingc                 C   s   d}t jjrddlm} |j }d |_}|  t	 jj
ddd}t d}tjj|||jd	d
 | tjd jdd  | d S )N
testserverr   )Sitez<enc&"test>testzuser@example.com)r1   r0   rF   T)confirmr   )allauthapp_settingsSITES_ENABLEDdjango.contrib.sites.modelsrU   objectsget_currentnamesaver   creater   rL   r   	add_emailr0   
assertTruer   outboxsubject
startswith)r$   	site_namerU   siteurI   r%   r%   r&   test_email_escaping]   s   

$zUtilsTests.test_email_escapingz9allauth.account.tests.test_utils.test_username_validators)ACCOUNT_USERNAME_VALIDATORSc                 C   s    t  d | tdd  d S )Nabcc                   S   s   t  dS )Ndef)r   clean_usernamer%   r%   r%   r&   rJ   o   s    z4UtilsTests.test_username_validator.<locals>.<lambda>)r   rm   assertRaisesr
   r#   r%   r%   r&   test_username_validatorj   s   z"UtilsTests.test_username_validatorallowed_hostrT   )ALLOWED_HOSTSc                 C   s\   t t d | t d | t d W d    d S 1 s'w   Y  d S )NrF   zhttp://allowed_host/http://other_host/)r   request_contextr   rL   rb   r   is_safe_urlassertFalser#   r%   r%   r&   test_is_safe_url_no_wildcardq      "z'UtilsTests.test_is_safe_url_no_wildcard*c                 C   s\   t t d | t d | t d W d    d S 1 s'w   Y  d S )NrF   zhttp://foobar.com/rr   r   rs   r   rL   rb   r   rt   r#   r%   r%   r&   test_is_safe_url_wildcardw   rw   z$UtilsTests.test_is_safe_url_wildcardc                 C   sJ   t t d | t d W d    d S 1 sw   Y  d S )NrF   z/foo/barry   r#   r%   r%   r&   test_is_safe_url_relative_path}   s   "z)UtilsTests.test_is_safe_url_relative_pathN)__name__
__module____qualname__r'   r-   r4   r   r;   r>   rE   rS   ri   ro   rv   rz   r{   r%   r%   r%   r&   r   $   s*    





r   c                 C   s&   |  tdd }|d dksJ d S )Naccount_logoutz?next=badurlnamelocationz/badurlname)postr   )auth_clientrespr%   r%   r&   test_redirect_noreversematch   s   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_settingsrX   allauth.account.adapterr   allauth.account.modelsr   allauth.account.utilsr   r   r   r   allauth.corer   allauth.testsr   test_modelsr   RegexValidatortest_username_validatorsr   r   r%   r%   r%   r&   <module>   s0    _