a
    Dg'C                     @   s   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 G d
d deeeZG dd deeeZG dd deeeZG dd deeeZG dd deeZG dd deeZdS )    )
Permission)ContentType)TestCase)reverse)hooks)AdminURLFinder)PageSite)WagtailTestUtils)AdminTemplateTestUtilsc                   @   s0   e Zd Zdd Zi fddZdd Zdd Zd	S )
TestSiteIndexViewc                 C   s   |    tjjdd| _d S )N   id)loginr   objectsget	home_pageself r   R/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/sites/tests.pysetUp   s    zTestSiteIndexView.setUpc                 C   s   | j td|S )Nwagtailsites:indexclientr   r   r   paramsr   r   r   r      s    zTestSiteIndexView.getc                 C   s<   |   }| |jd | |d | dddg|j d S )N   wagtailadmin/generic/index.html Sitesurllabel)r   assertEqualstatus_codeassertTemplateUsedassertBreadcrumbsItemsRenderedcontentr   responser   r   r   test_simple   s    
zTestSiteIndexView.test_simplec                 C   s   |    | d |    W d    n1 s00    Y  dd tdD }tj| | d |    W d    n1 s0    Y  d S )N	   c                 S   s&   g | ]}t d | d| ddqS )zhost Z800r   )hostnameportZroot_page_id)r	   ).0ir   r   r   
<listcomp>$   s   z6TestSiteIndexView.test_num_queries.<locals>.<listcomp>
   )r   ZassertNumQueriesranger	   r   Zbulk_create)r   sitesr   r   r   test_num_queries   s    &z"TestSiteIndexView.test_num_queriesN)__name__
__module____qualname__r   r   r,   r6   r   r   r   r   r      s   	r   c                   @   sv   e Zd Zdd Zi fddZi fddZdddZd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 )TestSiteCreateViewc                 C   s,   |    tjjdd| _tj d | _d S Nr   r   r   r   r   r   r   r   r	   all	localhostr   r   r   r   r   /   s    zTestSiteCreateView.setUpc                 C   s   | j td|S Nwagtailsites:addr   r   r   r   r   r   4   s    zTestSiteCreateView.getc                 C   s   | j td|S r?   )r   postr   )r   	post_datar   r   r   rA   7   s    zTestSiteCreateView.posttestsiteP   FNc                 C   s"   |p| j }tjj||||d d S )Nr.   r/   is_default_site	root_page)r   r	   r   create)r   r.   r/   rF   rG   r   r   r   create_site:   s    
zTestSiteCreateView.create_sitec                 C   sF   |  | jjd |  | jjd | | jjd |  | jj| j d S )Nr>   rD   T)r%   r>   r.   r/   assertIsrF   rG   r   r   r   r   r   test_default_fixtures_presentE   s    z0TestSiteCreateView.test_default_fixtures_presentc                 C   s8   |   }| |jd | ddddddg|j d S )Nr   r!   /admin/sites/)r$   r#   z	New: Siter    )r   r%   r&   r(   r)   r*   r   r   r   r,   L   s    zTestSiteCreateView.test_simplec                 C   sH   |  ddt| jjd}| |td | tjj	dd
 d d S )NrC   80r.   r/   rG   r   r.      rA   strr   r   assertRedirectsr   r%   r	   r   filtercountr*   r   r   r   test_createW   s    
	zTestSiteCreateView.test_createc                 C   sd   |  dddt| jjd}| |jd | t|jd j	d t
jjdd}| | d	 d S )
Nalso_defaultrM   onrE   r   formTrO   r   )rA   rR   r   r   r%   r&   rJ   boolcontexterrorsr	   r   rT   rU   )r   r+   r5   r   r   r   #test_duplicate_defaults_not_allowedf   s    

z6TestSiteCreateView.test_duplicate_defaults_not_allowedc                 C   sH   |  ddt| jjd}| |td | tjj	dd
 d d S )Nr>   Z8000rN   r   rO   r   rQ   r*   r   r   r   3test_duplicate_hostnames_on_different_ports_allowedx   s    
	zFTestSiteCreateView.test_duplicate_hostnames_on_different_ports_allowedc                 C   sx   |  tjjdd d | ddt| jjd}|  |j	d | 
t|jd jd |  tjjdd d d S )	Nr>   rO   rP   rM   rN   r   rY   T)r%   r	   r   rT   rU   rA   rR   r   r   r&   rJ   rZ   r[   r\   r*   r   r   r   1test_duplicate_hostnames_on_same_port_not_allowed   s    
	zDTestSiteCreateView.test_duplicate_hostnames_on_same_port_not_allowedc                 C   sz   |  tjjdd d | ddt| jjd}|  |j	d |  |j
d jd	d
gi |  tjjdd d d S )Nr>   rO   rP   	LocalhostrM   rN   r   rY   __all__0Site with this Hostname and Port already exists.)r%   r	   r   rT   rU   rA   rR   r   r   r&   r[   r\   r*   r   r   r   1test_duplicate_hostnames_case_variant_not_allowed   s    
zDTestSiteCreateView.test_duplicate_hostnames_case_variant_not_allowedc                 C   sN   |  tjjdd d | ddt| jjd}d}| 	||j
  d S )Nr>   rO   rP   rM   rN     
            <li class="error">
                <svg class="class="icon icon-warning messages-icon"" aria-hidden="true">
                    <use href="#icon-warning"></use>
                </svg>
                The site could not be saved due to errors.
                <ul class="errorlist">
                <li>
                Site with this Hostname and Port already exists.
                </li>
                </ul>
            </li>
        )r%   r	   r   rT   rU   rA   rR   r   r   assertTagInHTMLr)   decode)r   r+   expected_htmlr   r   r   #test_non_field_errors_are_displayed   s    z6TestSiteCreateView.test_non_field_errors_are_displayed)rC   rD   FN)r7   r8   r9   r   r   rA   rI   rK   r,   rV   r]   r^   r_   rc   rh   r   r   r   r   r:   .   s    
r:   c                   @   sh   e Zd Zdd Zi dfddZi dfd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 )TestSiteEditViewc                 C   s.   |   | _tjjdd| _tj d | _d S r;   )	r   userr   r   r   r   r	   r=   r>   r   r   r   r   r      s    
zTestSiteEditView.setUpNc                 C   s    | j td|p| jjfd|S )Nwagtailsites:editargsr   r   r   r>   r   r   r   site_idr   r   r   r      s    zTestSiteEditView.getc                 C   s   |p
| j j}tjj|d}|j|j|jjd}| D ]\}}|||||< q6d|v rj|d rxd|d< n|j	rxd|d< | j
td|fd|S )Nr   rN   defaultrX   rF   rk   rl   )r>   r   r	   r   r   r.   r/   rG   itemsrF   r   rA   r   )r   rB   rp   siteZpost_defaultskvr   r   r   rA      s$    
zTestSiteEditView.postc                 C   sh   |   }| |jd | ddddt| jdg|j t| j}d| jj	 }| |
| j| d S )Nr   rL   r!   r"   r    z/admin/sites/edit/%d/)r   r%   r&   r(   rR   r>   r)   r   rj   r   Zget_edit_url)r   r+   Z
url_finderZexpected_urlr   r   r   r,      s    
zTestSiteEditView.test_simplec                 C   s   |  | jddjd d S Ni rp   i  r%   r   r&   r   r   r   r   test_nonexistent_redirect   s    z*TestSiteEditView.test_nonexistent_redirectc                 C   sB   d}|  d|i}| |td | tjj| jjdj	| d S )Neditedr.   r   r   )
rA   rS   r   r%   r	   r   r   r>   r   r.   )r   edited_hostnamer+   r   r   r   	test_edit   s    zTestSiteEditView.test_editc                 C   s   t jjddd| jd}| jddi| jjd}| |td | 	t jj
| jjdjd | jdd	i|jd}| |td | 	t jj
|jdjd	 d S )
NZnot_yet_defaultrD   FrE   rq   rw   r   r   T)r	   r   rH   r   rA   r>   r   rS   r   rJ   r   rF   r   second_siter+   r   r   r   'test_changing_the_default_site_workflow  s(    z8TestSiteEditView.test_changing_the_default_site_workflowc                 C   sn   t jjddd| jd}| jddi|jd}| |jd | t	|j
d	 jd | t jj|jd
jd d S )NrW   rD   FrE   rq   Trw   r   rY   r   )r	   r   rH   r   rA   r   r%   r&   rJ   rZ   r[   r\   r   rF   r}   r   r   r   1test_making_a_second_site_the_default_not_allowed'  s    zBTestSiteEditView.test_making_a_second_site_the_default_not_allowedc                 C   sV   t jjddd| jd}| jddi|jd}| |jd | |jd	 j	d
dgi d S )Nsomething_differentrD   FrE   r.   r`   rw   r   rY   ra   rb   )
r	   r   rH   r   rA   r   r%   r&   r[   r\   r}   r   r   r   rc   =  s     
zBTestSiteEditView.test_duplicate_hostnames_case_variant_not_allowedc                 C   sD   t jjddd| jd}| jddi|jd}d}| ||j  d S )	Nr   rD   FrE   r.   r`   rw   rd   )	r	   r   rH   r   rA   r   re   r)   rf   )r   r~   r+   rg   r   r   r   rh   R  s    z4TestSiteEditView.test_non_field_errors_are_displayed)r7   r8   r9   r   r   rA   r,   ry   r|   r   r   rc   rh   r   r   r   r   ri      s   #ri   c                   @   sH   e Zd Zdd Zi dfddZi dfddZdd	 Zd
d Zdd ZdS )TestSiteDeleteViewc                 C   s,   |    tjjdd| _tj d | _d S r;   r<   r   r   r   r   r   p  s    zTestSiteDeleteView.setUpNc                 C   s    | j td|p| jjfd|S Nwagtailsites:deleterl   rn   ro   r   r   r   r   u  s    zTestSiteDeleteView.getc                 C   s    | j td|p| jjfd|S r   )r   rA   r   r>   r   )r   rB   rp   r   r   r   rA   z  s    zTestSiteDeleteView.postc                 C   s2   |   }| |jd | |d | |j d S )Nr   (wagtailadmin/generic/confirm_delete.html)r   r%   r&   r'   ZassertBreadcrumbsNotRenderedr)   r*   r   r   r   r,     s    zTestSiteDeleteView.test_simplec                 C   s   |  | jddjd d S rv   rx   r   r   r   r   ry     s    z,TestSiteDeleteView.test_nonexistent_redirectc                 C   sZ   |   }| |td | tj" tjj| jj	d W d    n1 sL0    Y  d S )Nr   r   )
rA   rS   r   assertRaisesr	   DoesNotExistr   r   r>   r   r*   r   r   r   test_posting_deletes_site  s    z,TestSiteDeleteView.test_posting_deletes_site)	r7   r8   r9   r   r   rA   r,   ry   r   r   r   r   r   r   o  s   r   c                   @   sL   e 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d Z
dS )TestLimitedPermissionsc                 C   sz   | j ddd}|jtjjddtjjddtjjddtjjdd | jddd tjjd	d
| _t	j
 d | _d S )Ntestpassword)usernamer   Zaccess_admin)codenameadd_sitechange_sitedelete_siter   r   r   )Zcreate_userZuser_permissionsaddr   r   r   r   r   r   r	   r=   r>   )r   rj   r   r   r   r     s    zTestLimitedPermissions.setUpc                 C   s.   | j td}| |jd | |d d S )Nr   r   r   )r   r   r   r%   r&   r'   r*   r   r   r   test_get_index  s    z%TestLimitedPermissions.test_get_indexc                 C   s"   | j td}| |jd d S )Nr@   r   )r   r   r   r%   r&   r*   r   r   r   test_get_create_view  s    z+TestLimitedPermissions.test_get_create_viewc                 C   sP   | j tdddt| jjd}| |td | tj	j
dd d d S )Nr@   rC   rM   rN   r   rO   rP   )r   rA   r   rR   r   r   rS   r%   r	   r   rT   rU   r*   r   r   r   rV     s    

z"TestLimitedPermissions.test_createc                 C   s0   t d| jjfd}| j|}| |jd d S )Nrk   rl   r   )r   r>   r   r   r   r%   r&   )r   edit_urlr+   r   r   r   test_get_edit_view  s    z)TestLimitedPermissions.test_get_edit_viewc                 C   s`   t d| jjfd}d}| j||d| jjd}| |t d | tj	j
| jjdj| d S )Nrk   rl   rz   rD   rN   r   r   )r   r>   r   r   rA   r   rS   r%   r	   r   r   r.   )r   r   r{   r+   r   r   r   r|     s    
z TestLimitedPermissions.test_editc                 C   s<   t d| jjfd}| j|}| |jd | |d d S )Nr   rl   r   r   )r   r>   r   r   r   r%   r&   r'   r   Z
delete_urlr+   r   r   r   test_get_delete_view  s    z+TestLimitedPermissions.test_get_delete_viewc                 C   sp   t d| jjfd}| j|}| |t d | tj" tj	j
| jjd W d    n1 sb0    Y  d S )Nr   rl   r   r   )r   r>   r   r   rA   rS   r   r	   r   r   r   r   r   r   r   test_delete  s
    z"TestLimitedPermissions.test_deleteN)r7   r8   r9   r   r   r   rV   r   r|   r   r   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd ZdS )TestAdminPermissionsc                 C   s^   t jt}tj }tdD ]}|| O }q |j|d}| 	t
|jdddh d d S )NZregister_permissions)content_typer   T)Zflat>   r   r   r   )r   r   Zget_for_modelr	   r   noner   Z	get_hooksrT   r%   setZvalues_list)r   Zsite_ctqsfnZregistered_permissionsr   r   r   test_registered_permissions  s    
z0TestAdminPermissions.test_registered_permissionsN)r7   r8   r9   r   r   r   r   r   r     s   r   N)Zdjango.contrib.auth.modelsr   Z"django.contrib.contenttypes.modelsr   Zdjango.testr   Zdjango.urlsr   Zwagtailr   Zwagtail.admin.admin_url_finderr   Zwagtail.modelsr   r	   Zwagtail.test.utilsr
   Z!wagtail.test.utils.template_testsr   r   r:   ri   r   r   r   r   r   r   r   <module>   s    !  .%U