o
    h'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   S/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/sites/tests.pysetUp   s   zTestSiteIndexView.setUpc                 C      | j td|S )Nwagtailsites:indexclientr   r   r   paramsr   r   r   r         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 sw   Y  dd tdD }tj| | d |    W d    d S 1 sAw   Y  d S )N	   c                 S   s&   g | ]}t d | d| ddqS )zhost 800r   )hostnameportroot_page_id)r	   ).0ir   r   r   
<listcomp>$   s    z6TestSiteIndexView.test_num_queries.<locals>.<listcomp>
   )r   assertNumQueriesranger	   r   bulk_create)r   sitesr   r   r   test_num_queries   s   

"z"TestSiteIndexView.test_num_queriesN)__name__
__module____qualname__r   r   r.   r<   r   r   r   r   r      s
    	r   c                   @   sx   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   ,   |    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   /      zTestSiteCreateView.setUpc                 C   r   Nwagtailsites:addr   r   r   r   r   r   4   r   zTestSiteCreateView.getc                 C   r   rG   )r   postr   )r   	post_datar   r   r   rI   7   r   zTestSiteCreateView.posttestsiteP   FNc                 C   s"   |p| j }tjj||||d d S )Nr1   r2   is_default_site	root_page)r   r	   r   create)r   r1   r2   rN   rO   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 )NrE   rL   T)r'   rE   r1   r2   assertIsrN   rO   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   H   |  ddt| jjd}| |td | tjj	dd
 d d S )NrK   80r1   r2   rO   r   r1      rI   strr   r   assertRedirectsr   r'   r	   r   filtercountr,   r   r   r   test_createW      
	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_defaultrV   onrM   r    formTrX   r   )rI   r[   r   r   r'   r(   rR   boolcontexterrorsr	   r   r]   r^   )r   r-   r;   r   r   r   #test_duplicate_defaults_not_allowedf   s   

z6TestSiteCreateView.test_duplicate_defaults_not_allowedc                 C   rU   )NrE   8000rW   r   rX   r   rZ   r,   r   r   r   3test_duplicate_hostnames_on_different_ports_allowedx   r`   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 )	NrE   rX   rY   rV   rW   r    rc   T)r'   r	   r   r]   r^   rI   r[   r   r   r(   rR   rd   re   rf   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 )NrE   rX   rY   	LocalhostrV   rW   r    rc   __all__0Site with this Hostname and Port already exists.)r'   r	   r   r]   r^   rI   r[   r   r   r(   re   rf   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 )NrE   rX   rY   rV   rW     
            <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   r]   r^   rI   r[   r   r   assertTagInHTMLr+   decode)r   r-   expected_htmlr   r   r   #test_non_field_errors_are_displayed   s   z6TestSiteCreateView.test_non_field_errors_are_displayed)rK   rL   FN)r=   r>   r?   r   r   rI   rQ   rS   r.   r_   rg   ri   rj   rn   rs   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 rB   )	r   userr   r   r   r   r	   rD   rE   r   r   r   r   r      s   
zTestSiteEditView.setUpNc                 C       | j td|p
| jjfd|S )Nwagtailsites:editargsr   r   r   rE   r   r   r   site_idr   r   r   r         zTestSiteEditView.getc                 C   s   |p| j j}tjj|d}|j|j|jjd}| D ]\}}|||||< qd|v r5|d r4d|d< n|j	r<d|d< | j
td|fd|S )Nr   rW   defaultrb   rN   rw   rx   )rE   r   r	   r   r   r1   r2   rO   itemsrN   r   rI   r   )r   rJ   r|   sitepost_defaultskvr   r   r   rI      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    rT   r#   r$   r"   z/admin/sites/edit/%d/)r   r'   r(   r*   r[   rE   r+   r   ru   r   get_edit_url)r   r-   
url_finderexpected_urlr   r   r   r.      s   
zTestSiteEditView.test_simplec                 C      |  | jddjd d S Ni r|   i  r'   r   r(   r   r   r   r   test_nonexistent_redirect      z*TestSiteEditView.test_nonexistent_redirectc                 C   sB   d}|  d|i}| |td | tjj| jjdj	| d S )Neditedr1   r   r   )
rI   r\   r   r'   r	   r   r   rE   r   r1   )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 )
Nnot_yet_defaultrL   FrM   r~   r   r   r   T)r	   r   rP   r   rI   rE   r   r\   r   rR   r   rN   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 )Nra   rL   FrM   r~   Tr   r    rc   r   )r	   r   rP   r   rI   r   r'   r(   rR   rd   re   rf   r   rN   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_differentrL   FrM   r1   rk   r   r    rc   rl   rm   )
r	   r   rP   r   rI   r   r'   r(   re   rf   r   r   r   r   rn   =  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   rL   FrM   r1   rk   r   ro   )	r	   r   rP   r   rI   r   rp   r+   rq   )r   r   r-   rr   r   r   r   rs   R  s   z4TestSiteEditView.test_non_field_errors_are_displayed)r=   r>   r?   r   r   rI   r.   r   r   r   r   rn   rs   r   r   r   r   rt      s    #rt   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   rA   rB   rC   r   r   r   r   r   p  rF   zTestSiteDeleteView.setUpNc                 C   rv   Nwagtailsites:deleterx   rz   r{   r   r   r   r   u  r}   zTestSiteDeleteView.getc                 C   rv   r   )r   rI   r   rE   r   )r   rJ   r|   r   r   r   rI   z  s   zTestSiteDeleteView.postc                 C   s2   |   }| |jd | |d | |j d S )Nr    (wagtailadmin/generic/confirm_delete.html)r   r'   r(   r)   assertBreadcrumbsNotRenderedr+   r,   r   r   r   r.     s   zTestSiteDeleteView.test_simplec                 C   r   r   r   r   r   r   r   r     r   z,TestSiteDeleteView.test_nonexistent_redirectc                 C   s\   |   }| |td | tj tjj| jj	d W d    d S 1 s'w   Y  d S )Nr   r   )
rI   r\   r   assertRaisesr	   DoesNotExistr   r   rE   r   r,   r   r   r   test_posting_deletes_site  s
   "z,TestSiteDeleteView.test_posting_deletes_site)	r=   r>   r?   r   r   rI   r.   r   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   access_admin)codenameadd_sitechange_sitedelete_siter   r   r   )create_useruser_permissionsaddr   r   r   r   r   r   r	   rD   rE   )r   ru   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 )NrH   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 )NrH   rK   rV   rW   r   rX   rY   )r   rI   r   r[   r   r   r\   r'   r	   r   r]   r^   r,   r   r   r   r_     s   

z"TestLimitedPermissions.test_createc                 C   s0   t d| jjfd}| j|}| |jd d S )Nrw   rx   r    )r   rE   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 )Nrw   rx   r   rL   rW   r   r   )r   rE   r   r   rI   r   r\   r'   r	   r   r   r1   )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   rx   r    r   )r   rE   r   r   r   r'   r(   r)   r   
delete_urlr-   r   r   r   test_get_delete_view  s   z+TestLimitedPermissions.test_get_delete_viewc                 C   sr   t d| jjfd}| j|}| |t d | tj tj	j
| jjd W d    d S 1 s2w   Y  d S )Nr   rx   r   r   )r   rE   r   r   rI   r\   r   r	   r   r   r   r   r   r   r   test_delete  s   "z"TestLimitedPermissions.test_deleteN)r=   r>   r?   r   r   r   r_   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 )Nregister_permissions)content_typer   T)flat>   r   r   r   )r   r   get_for_modelr	   r   noner   	get_hooksr]   r'   setvalues_list)r   site_ctqsfnregistered_permissionsr   r   r   test_registered_permissions  s   
z0TestAdminPermissions.test_registered_permissionsN)r=   r>   r?   r   r   r   r   r   r     s    r   N)django.contrib.auth.modelsr   "django.contrib.contenttypes.modelsr   django.testr   django.urlsr   wagtailr   wagtail.admin.admin_url_finderr   wagtail.modelsr   r	   wagtail.test.utilsr
   !wagtail.test.utils.template_testsr   r   r@   rt   r   r   r   r   r   r   r   <module>   s"    !  .%U