U
    {h                     @   sr   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mZmZ d dlmZ G dd	 d	eeZd
S )    )get_user_model)Group
Permission)TestCase)reverse)Page)
SimplePage
StreamPage)WagtailTestUtilsc                   @   sH   e Zd 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S )TestDraftAccessz-Tests for the draft view access restrictions.c                 C   sz   t jjdd| _tdddd| _| jj| jd tdd	gd
| _| jj| jd | j	ddd}|j
tjjddd d S )N   )idzHello world!zhello-worldhello)titleZslugcontent)instancezstream page)textr   )r   bodybobpasswordusernamer   ZwagtailadminZaccess_admin)Zcontent_type__app_labelcodename)r   objectsgetZ	root_pager   
child_pageZ	add_childr	   stream_pageZcreate_userZuser_permissionsaddr   )selfuser r    q/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/admin/tests/pages/test_view_draft.pysetUp   s      zTestDraftAccess.setUpc                 C   s6   |   | _| jtd| jjfd}| |jd dS )zTest that admin can view draft.wagtailadmin_pages:view_draftargs   N)	loginr   clientr   r   r   r   assertEqualstatus_coder   responser    r    r!   test_draft_access_admin&   s
    
z'TestDraftAccess.test_draft_access_adminc                 C   s4   |   | _| jtd| jjfd}| |d d S )Nr#   r$   z/admin/)r'   r   r(   r   r   r   r   ZassertRedirectsr+   r    r    r!   /test_page_without_preview_modes_is_unauthorised3   s
    
z?TestDraftAccess.test_page_without_preview_modes_is_unauthorisedc                 C   s:   | j ddd | jtd| jjfd}| |jd dS )z@Test that user without edit/publish permission can't view draft.r   r   r   r#   r$   i.  Nr'   r(   r   r   r   r   r)   r*   r+   r    r    r!   test_draft_access_unauthorised?   s
    z.TestDraftAccess.test_draft_access_unauthorisedc                 C   sh   t  jjdd}|jtjjdd |  | jddd | jt	d| j
jfd	}| |jd
 dS )z3Test that user with edit permission can view draft.zbob@example.com)emailZ
Moderators)namer   r   r   r#   r$   r&   N)r   r   r   groupsr   r   saver'   r(   r   r   r   r)   r*   )r   r   r,   r    r    r!   test_draft_access_authorisedK   s    z,TestDraftAccess.test_draft_access_authorisedc                 C   s8   |    | jjtd| jjfddd}| |jd dS )z
        If middleware returns a response while serving a page preview, that response should be
        returned back to the user
        r#   r$   Z
EvilHacker)ZHTTP_USER_AGENTi  Nr/   r+   r    r    r!   $test_middleware_response_is_returned\   s    z4TestDraftAccess.test_middleware_response_is_returnedc                 C   sL   |    | jtd| jjfd}| |d | |td| jjfd d S )Nr#   r$   zEdit this pagezwagtailadmin_pages:edit)r'   r(   r   r   r   r   ZassertContainsr+   r    r    r!   test_show_edit_link_in_userbarh   s     z.TestDraftAccess.test_show_edit_link_in_userbarN)__name__
__module____qualname____doc__r"   r-   r.   r0   r5   r6   r7   r    r    r    r!   r      s   r   N)Zdjango.contrib.authr   Zdjango.contrib.auth.modelsr   r   Zdjango.testr   Zdjango.urlsr   Zwagtail.modelsr   Zwagtail.test.testapp.modelsr   r	   Zwagtail.test.utilsr
   r   r    r    r    r!   <module>   s   