a
    Dg!                     @   s   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
mZ d dlmZ d dlmZ G dd	 d	eeZG d
d deZG dd deZdS )    )get_user_model)TestCaseoverride_settings)reverse)PasswordResetForm)CustomLoginFormCustomPasswordResetForm)Page)WagtailTestUtilsc                   @   s   e Zd ZdgZdd Zdd Zdd Zdd	 Zd
d Zdd Z	e
dddd Ze
dddd Ze
dddd Ze
dddd Ze
dddd Ze
dddd  Zd!d" Ze
d#d$d%d& Zd'd( Zd)S )*TestLoginViewz	test.jsonc                 C   s   |   | _tjjdd| _d S )Nz/home/)Zurl_path)Zcreate_test_useruserr	   objectsgethomepageself r   ]/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/admin/tests/test_views.pysetUp   s    
zTestLoginView.setUpc                 C   s,   | j tdddd}| |td d S )Nwagtailadmin_logintest@email.compasswordusernamer   wagtailadmin_home)clientpostr   assertRedirectsr   responser   r   r   test_success_redirect   s    z#TestLoginView.test_success_redirectc                 C   sH   t d| jjgd}t dd| }| j|ddd}| || d S )Nwagtailadmin_pages:editargsr   ?next={}r   r   r   )r   r   pkformatr   r   r   r   homepage_admin_urlZ	login_urlr   r   r   r   3test_success_redirect_honour_redirect_get_parameter   s    
zATestLoginView.test_success_redirect_honour_redirect_get_parameterc                 C   s<   t d| jjgd}| jt ddd|d}| || d S )Nr!   r"   r   r   r   )r   r   next)r   r   r%   r   r   r   )r   r(   r   r   r   r   4test_success_redirect_honour_redirect_post_parameter*   s    zBTestLoginView.test_success_redirect_honour_redirect_post_parameterc                 C   s2   | j ddd | jtd}| |td d S )Nr   r   r   r   r   )loginr   r   r   r   r   r   r   r   #test_already_authenticated_redirect6   s    z1TestLoginView.test_already_authenticated_redirectc                 C   sN   | j ddd td| jjgd}tdd| }| j|}| || d S )Nr   r   r   r!   r"   r   r$   )r,   r   r   r%   r&   r   r   r   r'   r   r   r   Atest_already_authenticated_redirect_honour_redirect_get_parameter<   s    
zOTestLoginView.test_already_authenticated_redirect_honour_redirect_get_parameterzhttp://example.com/login/)ZWAGTAILADMIN_LOGIN_URLc                 C   s$   | j td}| j|ddd d S )Nr   z&http://example.com/login/?next=/admin/F)Zfetch_redirect_response)r   r   r   r   r   r   r   r   1test_unauthenticated_redirect_to_custom_login_urlF   s    z?TestLoginView.test_unauthenticated_redirect_to_custom_login_urlde)ZLANGUAGE_CODEc                 C   s    | j td}| |d d S )Nr   zU<html lang="de" dir="ltr" class="w-theme-system w-density-default w-contrast-system">r   r   r   assertContainsr   r   r   r   test_language_codeO   s
    z TestLoginView.test_language_codehec                 C   s    | j td}| |d d S )Nr   zU<html lang="he" dir="rtl" class="w-theme-system w-density-default w-contrast-system">r1   r   r   r   r   (test_bidi_language_changes_dir_attributeW   s
    z6TestLoginView.test_bidi_language_changes_dir_attributez.wagtail.admin.tests.test_forms.CustomLoginForm)ZWAGTAILADMIN_USER_LOGIN_FORMc                 C   s4   | j td}| j|ddd | j|ddd d S )Nr   
            <input type="text" name="captcha" required
            aria-describedby="id_captcha-helptext" id="id_captcha">
            Thtml
            <div class="w-field__help" id="id_captcha-helptext" data-field-help>
                <div class="help">should be in extra_fields()</div>
            </div>
            r1   r   r   r   r   $test_login_page_renders_extra_fields_   s    z2TestLoginView.test_login_page_renders_extra_fieldsc                 C   s*   | j tddddd}| |d d S )Nr   r   r   Zunsolvedr   r   ZcaptchazCaptcha is invalid)r   r   r   r2   r   r   r   r   4test_login_page_renders_custom_form_non_field_errorsv   s    zBTestLoginView.test_login_page_renders_custom_form_non_field_errorsc                 C   sD   | j tddddd}tjd dt ji }| j||dd	 d S )
Nr   r   zbad-passwordZsolvedr;   Zinvalid_loginZusername_fieldTr7   )r   r   r   r   Zerror_messagesr   USERNAME_FIELDr2   )r   r   msgr   r   r   /test_login_page_renders_custom_form_login_error   s    z=TestLoginView.test_login_page_renders_custom_form_login_errorc                 C   s.   | j tdddd | | j j  d S )Nr   r   r   r   )r   r   r   
assertTruesessionget_expire_at_browser_closer   r   r   r   $test_session_expire_on_browser_close   s    z2TestLoginView.test_session_expire_on_browser_close   )ZSESSION_COOKIE_AGEc                 C   sD   | j tddddd | | j j  | | j j d d S )Nr   r   r   T)r   r   ZrememberrD   )r   r   r   ZassertFalserA   rB   assertEqualZget_expiry_ager   r   r   r   test_session_expiry_remember   s    
z*TestLoginView.test_session_expiry_rememberc                 C   sr   t  }|jdddddi}|jD ]}||vr|||< q|jjf i | | jtdddd}| |td d S )Nztest2@email.comemailr   z  whitespaced_password  r   r   r   )	r   r=   ZREQUIRED_FIELDSr   Zcreate_superuserr   r   r   r   )r   Z
user_model	user_datafieldr   r   r   r   %test_password_whitespace_not_stripped   s     

z3TestLoginView.test_password_whitespace_not_strippedN)__name__
__module____qualname__Zfixturesr   r    r)   r+   r-   r.   r   r/   r3   r5   r:   r<   r?   rC   rF   rJ   r   r   r   r   r      s:   









r   c                   @   s&   e Zd Zdd Zedddd ZdS )TestPasswordResetViewc                 C   sv   | j td}| |jdt tdd4 | j td}| |jdt W d    n1 sh0    Y  d S )Nwagtailadmin_password_resetform6wagtail.admin.tests.test_forms.CustomPasswordResetFormZ%WAGTAILADMIN_USER_PASSWORD_RESET_FORM)r   r   r   ZassertIsInstancecontextr   r   r   r   r   r   r   *test_password_reset_view_uses_correct_form   s    z@TestPasswordResetView.test_password_reset_view_uses_correct_formrQ   rR   c                 C   s4   | j td}| j|ddd | j|ddd d S )NrO   r6   Tr7   r9   r1   r   r   r   r   -test_password_reset_page_renders_extra_fields   s    zCTestPasswordResetView.test_password_reset_page_renders_extra_fieldsN)rK   rL   rM   rT   r   rU   r   r   r   r   rN      s
   
rN   c                   @   s   e Zd Zdd ZdS )TestJsi18nViewc                 C   s@   | j td}| |jd |d dd }| |d d S )NZwagtailadmin_javascript_catalog   zcontent-type;r   ztext/javascript)r   r   r   rE   status_codesplit)r   r   content_typer   r   r   "test_jsi18n_does_not_require_login   s    z1TestJsi18nView.test_jsi18n_does_not_require_loginN)rK   rL   rM   r\   r   r   r   r   rV      s   rV   N)Zdjango.contrib.authr   Zdjango.testr   r   Zdjango.urlsr   Zwagtail.admin.forms.authr   Zwagtail.admin.tests.test_formsr   r   Zwagtail.modelsr	   Zwagtail.test.utilsr
   r   rN   rV   r   r   r   r   <module>   s    6#