o
    "4g                     @   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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messagec                   @   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$   i/var/www/html/authentication-server/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#   r2   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 )Nr5   r6   foobarr8   r9   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)r0   zjohn&lt;br/&gt;doez){% load account %}{% user_display user %}z5{% load account %}{% user_display user as x %}{{ x }}r2   )r   r   renderr   r)   )r#   r2   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   rF   r   r$   rG   r$   r$   r%   rI   R   rJ   z'<8r2   zaccount/messages/logged_in.txtr   )r   getr   process_requestr   r   r   r   add_messager   SUCCESSr   _queued_messagesr   r0   )r#   rH   r2   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)r0   r/   rE   T)confirmr   )allauthapp_settingsSITES_ENABLEDdjango.contrib.sites.modelsrT   objectsget_currentnamesaver   creater   rK   r   	add_emailr/   
assertTruer   outboxsubject
startswith)r#   	site_namerT   siteurH   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%   rI   o   s    z4UtilsTests.test_username_validator.<locals>.<lambda>)r   rl   assertRaisesr
   r"   r$   r$   r%   test_username_validatorj   s   z"UtilsTests.test_username_validatorallowed_hostrS   )ALLOWED_HOSTSc                 C   s\   t t d | t d | t d W d    d S 1 s'w   Y  d S )NrE   zhttp://allowed_host/http://other_host/)r   request_contextr   rK   ra   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 )NrE   zhttp://foobar.com/rq   r   rr   r   rK   ra   r   rs   r"   r$   r$   r%   test_is_safe_url_wildcardw   rv   z$UtilsTests.test_is_safe_url_wildcardc                 C   sJ   t t d | t d W d    d S 1 sw   Y  d S )NrE   z/foo/barrx   r"   r$   r$   r%   test_is_safe_url_relative_path}   s   "z)UtilsTests.test_is_safe_url_relative_pathN)__name__
__module____qualname__r&   r,   r3   r   r:   r=   rD   rR   rh   rn   ru   ry   rz   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_settingsrW   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    _