U
    |h                     @   s   d dl mZ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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ZG dd deZG dd deeeZdS )    )AnonymousUserGroup
Permission)ContentType)TestCase)Document)
CollectionGroupCollectionPermission)$CollectionManagementPermissionPolicy#CollectionOwnershipPermissionPolicyCollectionPermissionPolicy)WagtailTestUtils)PermissionPolicyTestUtilsc                   @   s   e Zd Zdd ZdS )PermissionPolicyTestCasec           	      C   sH  t jt}tjj|dd}tjj|dd}tjj|dd}t | _| jj	dd| _
tjjdd}tjj|| j|d tjjd	d}tjj|| j
|d tjjd
d}tjj|| j
|d tjjdd}tjj|| j
|d | ddd| _| ddd| _d| j_| j  | ddd| _| jj| | ddd| _| jj| d| j_| j  | ddd| _| jj| | ddd| _| jj| | ddd| _| jj| | ddd| _t | _tjjd| j| jd| _tjjd | j
| jd| _tjjd!| j
| jd| _ tjjd"| j
| jd| _!tjjd#| j
d$| _"d S )%NZadd_documentcontent_typecodenameZchange_documentZchoose_documentReportsnamezDocument changersgroup
collectionZ
permissionReport changersReport adderszReport choosers	superusersuperuser@example.compasswordinactivesuperuserinactivesuperuser@example.comFZ
docchangerzdocchanger@example.comZinactivedocchangerzinactivedocchanger@example.comreportchangerreportchanger@example.comreportadderreportadder@example.comZreportchooserzreportchooser@example.comuselessuseruselessuser@example.comzreportchanger's document)titler   uploaded_by_userzreportchanger's reportzreportadder's reportzuselessuser's reportzanonymous report)r&   r   )#r   objectsget_for_modelr   r   getr   get_first_root_noderoot_collection	add_childreports_collectionr   creater	   create_superuserr   inactive_superuser	is_activesavecreate_userdoc_changergroupsaddinactive_doc_changerreport_changerreport_adderreport_chooseruseless_userr   anonymous_userchanger_docchanger_reportadder_reportuseless_reportanonymous_report)	selfZdocument_content_typeZadd_doc_permissionZchange_doc_permissionZchoose_doc_permissionZdoc_changers_groupreport_changers_groupreport_adders_groupZreport_choosers_group rF   y/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/tests/test_collection_permission_policies.pysetUp   s       
    
    
         zPermissionPolicyTestCase.setUpN)__name__
__module____qualname__rH   rF   rF   rF   rG   r      s   r   c                       s|   e Zd Z 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d Zdd Zdd Zdd Zdd Z  ZS )TestCollectionPermissionPolicyc                    s   t    tt| _d S )N)superrH   r   r   policyrC   	__class__rF   rG   rH      s    
z$TestCollectionPermissionPolicy.setUpc                 C   s   | j | jdddddf| jdddddf| jdddddf| jdddddf| jdddddf| jdddddf| jdddddf| jdddddf| j	dddddfg	dd d S NTF)r7   changedelete
frobnicatechooseactions
assertUserPermissionMatrixr   r1   r5   r8   r9   r:   r;   r<   r=   rO   rF   rF   rG   test_user_has_permission   s    z7TestCollectionPermissionPolicy.test_user_has_permissionc                 C   s   |  | j| jddg | | j| jddg |  | j| jddg |  | j| jddg |  | j| jddg | | j| j	ddg d S Nr7   rS   rV   

assertTruerN   user_has_any_permissionr   assertFalser1   r9   r:   r;   r=   rO   rF   rF   rG   test_user_has_any_permission   s0      z;TestCollectionPermissionPolicy.test_user_has_any_permissionc                 C   s6   | j dddg}| || j| j| j| j| jg d S r\   rN   users_with_any_permissionassertResultSetEqualr   r5   r9   r:   r;   rC   Z*users_with_add_change_or_choose_permissionrF   rF   rG   test_users_with_any_permission   s    z=TestCollectionPermissionPolicy.test_users_with_any_permissionc                 C   sd   | j d}| || j| j| jg | j d}| || j| jg | j d}| || jg d S NrS   rV   rU   )rN   users_with_permissionrd   r   r5   r9   r;   rC   users_with_change_permissionZusers_with_choose_permissionusers_with_custom_permissionrF   rF   rG   test_users_with_permission   s*    	z9TestCollectionPermissionPolicy.test_users_with_permissionc                 C   s$  | j | j| jddddf| jddddf| jddddf| jddddf| jddddf| jddddf| jddddf| j	ddddf| j
ddddfg	dd | j | j| jddddf| jddddf| jddddf| jddddf| jddddf| jddddf| jddddf| j	ddddf| j
ddddfg	dd d S NTF)rS   rT   rU   rV   rW   )"assertUserInstancePermissionMatrixr>   r   r1   r5   r8   r9   r:   r;   r<   r=   rA   rO   rF   rF   rG   %test_user_has_permission_for_instance   s8    zDTestCollectionPermissionPolicy.test_user_has_permission_for_instancec                 C   s~   |  | j| jddg| j | | j| jddg| j |  | j| jdddg| j | | j| jddg| j d S NrS   rT   rV   )	r^   rN   $user_has_any_permission_for_instancer9   rA   r`   r>   r;   r=   rO   rF   rF   rG   )test_user_has_any_permission_for_instance  s8            zHTestCollectionPermissionPolicy.test_user_has_any_permission_for_instancec                 C   s   |  | j| jd| j| j| j| j| jg |  | j| j	dg  |  | j| j
d| j| j| j| j| jg |  | j| jd| j| j| j| jg |  | j| jd| j| j| j| jg |  | j| jdg  |  | j| jdg  d S NrS   rV   )rd   rN   !instances_user_has_permission_forr   r>   r?   r@   rA   rB   r1   r5   r9   r;   r<   r=   rO   rF   rF   rG   &test_instances_user_has_permission_for-  s    zETestCollectionPermissionPolicy.test_instances_user_has_permission_forc                 C   s  |  | j| jddg| j| j| j| j| jg |  | j| j	ddgg  |  | j| j
ddg| j| j| j| j| jg |  | j| jddg| j| j| j| jg |  | j| jdddg| j| j| j| jg |  | j| jddgg  |  | j| jddgg  d S rp   )rd   rN   %instances_user_has_any_permission_forr   r>   r?   r@   rA   rB   r1   r5   r9   r;   r<   r=   rO   rF   rF   rG   *test_instances_user_has_any_permission_for|  s           zITestCollectionPermissionPolicy.test_instances_user_has_any_permission_forc                 C   s   |  | jd| j| j| jg |  | jd| j| j| j| jg |  | jd| j| j| j| jg |  | jd| j	| j| j
g |  | jd| j	| j| j| jg |  | jd| j| j| j| jg d S rs   )rd   rN   "users_with_permission_for_instancer>   r   r5   r@   r9   r?   rA   r;   rB   rO   rF   rF   rG   'test_users_with_permission_for_instance  sH    
  
  zFTestCollectionPermissionPolicy.test_users_with_permission_for_instancec                 C   s   |  | jddg| j| j| jg |  | jddg| j| j| j| jg |  | jdddg| j| j| j| j| j	g |  | jddg| j| j| j| jg |  | jddg| j| jg d S NrS   rT   rV   rU   )
rd   rN   &users_with_any_permission_for_instancer>   r   r5   r@   r9   rA   r;   rO   rF   rF   rG   +test_users_with_any_permission_for_instance  sN     
    zJTestCollectionPermissionPolicy.test_users_with_any_permission_for_instancec                 C   s   |  | j| jd| j| jg |  | j| jdg  |  | j| jd| j| jg |  | j| jd| jg |  | j| j	dg  |  | j| j	d| jg |  | j| j
d| jg |  | j| jdg  |  | j| jdg  d S NrS   r7   rV   rd   rN   #collections_user_has_permission_forr   r,   r.   r1   r5   r9   r:   r;   r<   r=   rO   rF   rF   rG   (test_collections_user_has_permission_for  s~    

zGTestCollectionPermissionPolicy.test_collections_user_has_permission_forc                 C   s  |  | j| jddg| j| jg |  | j| jddgg  |  | j| jddg| j| jg |  | j| jddg| jg |  | j| j	ddgg  |  | j| j	ddg| jg |  | j| j
dddg| jg |  | j| jddgg  |  | j| jddgg  d S NrS   rT   r7   rV   rd   rN   'collections_user_has_any_permission_forr   r,   r.   r1   r5   r9   r:   r;   r<   r=   rO   rF   rF   rG   ,test_collections_user_has_any_permission_forT  s~     
  
      zKTestCollectionPermissionPolicy.test_collections_user_has_any_permission_forrI   rJ   rK   rH   r[   ra   rf   rl   ro   rr   ru   rw   ry   r|   r   r   __classcell__rF   rF   rP   rG   rL      s   %OH"%IrL   c                       s|   e Zd Z 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d Zdd Zdd Zdd Zdd Z  ZS )'TestCollectionOwnershipPermissionPolicyc                    s   t    ttdd| _d S )Nr'   )Zowner_field_name)rM   rH   r   r   rN   rO   rP   rF   rG   rH     s
    
z-TestCollectionOwnershipPermissionPolicy.setUpc                 C   s   | j | jdddddf| jdddddf| jdddddf| jdddddf| jdddddf| jdddddf| jdddddf| jdddddf| j	dddddfg	dd d S rR   rY   rO   rF   rF   rG   r[     s    z@TestCollectionOwnershipPermissionPolicy.test_user_has_permissionc                 C   s   |  | j| jddg | | j| jddg |  | j| jddg |  | j| jddg |  | j| jddg |  | j| jddg | | j| j	ddg d S )Nr7   rS   rT   rV   r]   rO   rF   rF   rG   ra     s6      zDTestCollectionOwnershipPermissionPolicy.test_user_has_any_permissionc                 C   s6   | j dddg}| || j| j| j| j| jg d S r\   rb   re   rF   rF   rG   rf     s    zFTestCollectionOwnershipPermissionPolicy.test_users_with_any_permissionc                 C   sh   | j d}| || j| j| j| jg | j d}| || j| jg | j d}| || jg d S rg   )rN   rh   rd   r   r5   r9   r:   r;   ri   rF   rF   rG   rl     s,    
zBTestCollectionOwnershipPermissionPolicy.test_users_with_permissionc                 C   s  | j | j| jddddf| jddddf| jddddf| jddddf| jddddf| jddddf| jddddf| j	ddddf| j
ddddfg	dd | j | j| jddddf| jddddf| jddddf| jddddf| jddddf| jddddf| jddddf| j	ddddf| j
ddddfg	dd | j | j| jddddf| jddddf| jddddf| jddddf| jddddf| jddddf| jddddf| j	ddddf| j
ddddfg	dd d S rm   )rn   r>   r   r1   r5   r8   r9   r:   r;   r<   r=   rA   r@   rO   rF   rF   rG   ro     sT    zMTestCollectionOwnershipPermissionPolicy.test_user_has_permission_for_instancec                 C   s   |  | j| jddg| j | | j| jddg| j | | j| jddg| j |  | j| jddg| j |  | j| j	dddg| j | | j| j
ddg| j d S rp   )r^   rN   rq   r9   rA   r`   r>   r:   r@   r;   r=   rO   rF   rF   rG   rr   -  sT                zQTestCollectionOwnershipPermissionPolicy.test_user_has_any_permission_for_instancec                 C   s  |  | j| jd| j| j| j| j| jg |  | j| j	dg  |  | j| j
d| j| j| j| j| jg |  | j| jd| j| j| j| jg |  | j| jd| j| j| j| jg |  | j| jdg  |  | j| jdg  |  | j| jd| jg d S rs   )rd   rN   rt   r   r>   r?   r@   rA   rB   r1   r5   r9   r;   r<   r=   r:   rO   rF   rF   rG   ru   R  s    zNTestCollectionOwnershipPermissionPolicy.test_instances_user_has_permission_forc                 C   s2  |  | j| jddg| j| j| j| j| jg |  | j| j	ddgg  |  | j| j
ddg| j| j| j| j| jg |  | j| jddg| j| j| j| jg |  | j| jdddg| j| j| j| jg |  | j| jddgg  |  | j| jddgg  |  | j| jddg| jg d S rp   )rd   rN   rv   r   r>   r?   r@   rA   rB   r1   r5   r9   r;   r<   r=   r:   rO   rF   rF   rG   rw     s           zRTestCollectionOwnershipPermissionPolicy.test_instances_user_has_any_permission_forc                 C   s   |  | jd| j| j| jg |  | jd| j| j| j| jg |  | jd| j| j| j| j| j	g |  | jd| j
| j| jg |  | jd| j
| j| j| jg |  | jd| j| j| j| jg d S rs   )rd   rN   rx   r>   r   r5   r?   r9   r@   r:   rA   r;   rB   rO   rF   rF   rG   ry     sH    
  
  zOTestCollectionOwnershipPermissionPolicy.test_users_with_permission_for_instancec                 C   s   |  | jddg| j| j| jg |  | jddg| j| j| j| j| jg |  | jdddg| j	| j| j| j| j
g |  | jddg| j	| j| j| jg |  | jddg| j	| j| j| jg d S rz   )rd   rN   r{   r>   r   r5   r@   r9   r:   rA   r;   rO   rF   rF   rG   r|     sN     
    zSTestCollectionOwnershipPermissionPolicy.test_users_with_any_permission_for_instancec                 C   s   |  | j| jd| j| jg |  | j| jdg  |  | j| jd| j| jg |  | j| jd| jg |  | j| j	d| jg |  | j| j	d| jg |  | j| j
d| jg |  | j| jdg  |  | j| jdg  d S r}   r~   rO   rF   rF   rG   r   D  s~    

zPTestCollectionOwnershipPermissionPolicy.test_collections_user_has_permission_forc                 C   s"  |  | j| jddg| j| jg |  | j| jddgg  |  | j| jddg| j| jg |  | j| jddg| jg |  | j| j	ddg| jg |  | j| j	ddg| jg |  | j| j
dddg| jg |  | j| jddgg  |  | j| jddgg  d S r   r   rO   rF   rF   rG   r     s~     
  
      zTTestCollectionOwnershipPermissionPolicy.test_collections_user_has_any_permission_forr   rF   rF   rP   rG   r     s   6%YR"%Ir   c                   @   s|   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d Zdd Zdd Zdd Zdd Zdd ZdS )"TestCollectionManagementPermissionc                 C   s~  t t| _tjt}tjj|dd}tjj|dd}tjj|dd}t | _	| j	j
dd| _| jj
dd| _| dd	d
| _| ddd
| _d| j_| j  tjjdd}tjj|| j|d | ddd
| _| jj| tjjdd}tjj|| j|d | ddd
| _| jj| tjjdd}tjj|| j|d | ddd
| _| jj| | ddd
| _t | _d S )NZadd_collectionr   Zchange_collectionZdelete_collectionr   r   zReports 2020r   r   r   r   r   Fr   r   r    r!   r   r"   r#   zReport deletersZreportdeleterzreportdeleter@example.comr$   r%   )r
   r   rN   r   r(   r)   r   r*   r+   r,   r-   r.   reports_2020_collectionr0   r   r1   r2   r3   r   r/   r	   r4   r9   r6   r7   r:   report_deleterr<   r   r=   )rC   Zcollection_content_typeZadd_collection_permissionZchange_collection_permissionZdelete_collection_permissionrD   rE   Zreport_deleters_grouprF   rF   rG   rH     s    
   
    
        z(TestCollectionManagementPermission.setUpc                 C   sp   |  | jddddf| jddddf| jddddf| jddddf| jddddf| jddddf| jddddfg d S NTF)rZ   r   r1   r9   r:   r   r<   r=   rO   rF   rF   rG   r[     s    z;TestCollectionManagementPermission.test_user_has_permissionc              	   C   sp   | j | j| j| jg}| j| j| jg}|D ]}| | j	|dddg q(|D ]}| 
| j	|dddg qLd S Nr7   rS   rT   )r   r9   r:   r   r1   r<   r=   r^   rN   r_   r`   )rC   users_with_permissionsZusers_without_permissionsuserrF   rF   rG   ra   *  s"    z?TestCollectionManagementPermission.test_user_has_any_permissionc                 C   s2   | j dddg}| || j| j| j| jg d S r   )rN   rc   rd   r   r9   r:   r   )rC   Z-users_with_add_or_change_or_delete_permissionrF   rF   rG   rf   @  s    zATestCollectionManagementPermission.test_users_with_any_permissionc                 C   s@   | j d}| || j| jg | j d}| || jg d S )NrS   rU   )rN   rh   rd   r   r9   )rC   rj   rk   rF   rF   rG   rl   O  s    z=TestCollectionManagementPermission.test_users_with_permissionc                 C   sf   |  | j| jdddf| jdddf| jdddf| jdddf| jdddf| jdddf| jdddfg d S r   )	rn   r,   r   r1   r9   r:   r   r<   r=   rO   rF   rF   rG   6test_only_superuser_has_permission_for_root_collectionc  s    zYTestCollectionManagementPermission.test_only_superuser_has_permission_for_root_collectionc                 C   s   |  | j| jdddf| jdddf| jdddf| jdddf| jdddf| jdddfg |  | j| jdddf| jdddf| jdddf| jdddf| jdddf| jdddfg d S r   )	rn   r.   r   r1   r9   r   r<   r=   r   rO   rF   rF   rG   ro   q  s(    zHTestCollectionManagementPermission.test_user_has_permission_for_instancec              	   C   s   | j | j| j| jg}|D ]"}| | j|dddg| j q| | j| jdddg| j	 | | j| j dddg| j	 d S r   )
r   r9   r:   r   r^   rN   rq   r.   r`   r,   )rC   r   r   rF   rF   rG   rr     s6          zLTestCollectionManagementPermission.test_user_has_any_permission_for_instancec                 C   sx   |  | j| jd| j| j| jg |  | j| jd| j| jg |  | j| jdg  |  | j| jdg  d S NrS   r7   )	rd   rN   rt   r   r,   r.   r   r:   r1   rO   rF   rF   rG   ru     s,    	
 zITestCollectionManagementPermission.test_instances_user_has_permission_forc                 C   sl   |  | j| jddg| j| j| jg |  | j| jddg| j| jg |  | j| jddgg  d S Nr7   rS   )	rd   rN   rv   r   r,   r.   r   r:   r1   rO   rF   rF   rG   rw     s0      
 zMTestCollectionManagementPermission.test_instances_user_has_any_permission_forc                 C   s`   |  | jd| j| jg |  | jd| j| j| jg |  | jd| j| j| jg d S r   )rd   rN   rx   r,   r   r.   r9   r:   rO   rF   rF   rG   ry     s*      
 
zJTestCollectionManagementPermission.test_users_with_permission_for_instancec                 C   s2   |  | jdddg| j| j| j| j| jg d S r   )rd   rN   r{   r   r   r:   r9   r   rO   rF   rF   rG   r|     s     zNTestCollectionManagementPermission.test_users_with_any_permission_for_instancec                 C   sx   |  | j| jd| j| j| jg |  | j| jd| j| jg |  | j| jdg  |  | j| jdg  d S r   )	rd   rN   r   r   r,   r.   r   r:   r1   rO   rF   rF   rG   r     s2    	
  zKTestCollectionManagementPermission.test_collections_user_has_permission_forc                 C   sl   |  | j| jddg| j| j| jg |  | j| jddg| j| jg |  | j| jddgg  d S r   )	rd   rN   r   r   r,   r.   r   r:   r1   rO   rF   rF   rG   r     s0      
 zOTestCollectionManagementPermission.test_collections_user_has_any_permission_forN)rI   rJ   rK   rH   r[   ra   rf   rl   r   ro   rr   ru   rw   ry   r|   r   r   rF   rF   rF   rG   r     s   Lr   N)Zdjango.contrib.auth.modelsr   r   r   Z"django.contrib.contenttypes.modelsr   Zdjango.testr   Zwagtail.documents.modelsr   Zwagtail.modelsr   r	   Z'wagtail.permission_policies.collectionsr
   r   r   Zwagtail.test.utilsr   Z&wagtail.tests.test_permission_policiesr   r   rL   r   r   rF   rF   rF   rG   <module>   s0            =
  