o
    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 )%Nadd_documentcontent_typecodenamechange_documentchoose_documentReportsnamezDocument changersgroup
collection
permissionReport changersReport adderszReport choosers	superusersuperuser@example.compasswordinactivesuperuserinactivesuperuser@example.comF
docchangerzdocchanger@example.cominactivedocchangerzinactivedocchanger@example.comreportchangerreportchanger@example.comreportadderreportadder@example.com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)	selfdocument_content_typeadd_doc_permissionchange_doc_permissionchoose_doc_permissiondoc_changers_groupreport_changers_groupreport_adders_groupreport_choosers_group rS   q/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/tests/test_collection_permission_policies.pysetUp   s   


zPermissionPolicyTestCase.setUpN)__name__
__module____qualname__rU   rS   rS   rS   rT   r      s    r   c                       |   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)superrU   r   r   policyrJ   	__class__rS   rT   rU      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)r>   changedelete
frobnicatechooseactions
assertUserPermissionMatrixr   r8   r<   r?   r@   rA   rB   rC   rD   r]   rS   rS   rT   test_user_has_permission      
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 )Nr>   ra   rd   

assertTruer\   user_has_any_permissionr   assertFalser8   r@   rA   rB   rD   r]   rS   rS   rT   test_user_has_any_permission   s,   

z;TestCollectionPermissionPolicy.test_user_has_any_permissionc                 C   4   | j g d}| || j| j| j| j| jg d S N)r>   ra   rd   r\   users_with_any_permissionassertResultSetEqualr   r<   r@   rA   rB   rJ   *users_with_add_change_or_choose_permissionrS   rS   rT   test_users_with_any_permission      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 Nra   rd   rc   )r\   users_with_permissionrt   r   r<   r@   rB   rJ   users_with_change_permissionusers_with_choose_permissionusers_with_custom_permissionrS   rS   rT   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)ra   rb   rc   rd   re   )"assertUserInstancePermissionMatrixrE   r   r8   r<   r?   r@   rA   rB   rC   rD   rH   r]   rS   rS   rT   %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g d| j | | j| jddg| j d S Nra   rb   ra   rb   rd   )	rl   r\   $user_has_any_permission_for_instancer@   rH   rn   rE   rB   rD   r]   rS   rS   rT   )test_user_has_any_permission_for_instance  s(   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 Nra   rd   )rt   r\   !instances_user_has_permission_forr   rE   rF   rG   rH   rI   r8   r<   r@   rB   rC   rD   r]   rS   rS   rT   &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g d| j| j| j| jg |  | j| jddgg  |  | j| jddgg  d S r   )rt   r\   %instances_user_has_any_permission_forr   rE   rF   rG   rH   rI   r8   r<   r@   rB   rC   rD   r]   rS   rS   rT   *test_instances_user_has_any_permission_for|  sx   






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 r   )rt   r\   "users_with_permission_for_instancerE   r   r<   rG   r@   rF   rH   rB   rI   r]   rS   rS   rT   'test_users_with_permission_for_instance  s@   

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g d| j| j| j| j| j	g |  | jddg| j| j| j| jg |  | jddg| j| jg d S Nra   rb   r   rc   )
rt   r\   &users_with_any_permission_for_instancerE   r   r<   rG   r@   rH   rB   r]   rS   rS   rT   +test_users_with_any_permission_for_instance  sD   





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 Nra   r>   rd   rt   r\   #collections_user_has_permission_forr   r3   r5   r8   r<   r@   rA   rB   rC   rD   r]   rS   rS   rT   (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
g d| jg |  | j| jddgg  |  | j| jddgg  d S Nra   rb   r>   r   rt   r\   'collections_user_has_any_permission_forr   r3   r5   r8   r<   r@   rA   rB   rC   rD   r]   rS   rS   rT   ,test_collections_user_has_any_permission_forT  sl   










zKTestCollectionPermissionPolicy.test_collections_user_has_any_permission_forrV   rW   rX   rU   ri   ro   rw   r   r   r   r   r   r   r   r   r   __classcell__rS   rS   r^   rT   rZ      s    %OH"%IrZ   c                       rY   )'TestCollectionOwnershipPermissionPolicyc                    s   t    ttdd| _d S )Nr.   )owner_field_name)r[   rU   r   r   r\   r]   r^   rS   rT   rU     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 r`   rg   r]   rS   rS   rT   ri     rj   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 )Nr>   ra   rb   rd   rk   r]   rS   rS   rT   ro     s2   

zDTestCollectionOwnershipPermissionPolicy.test_user_has_any_permissionc                 C   rp   rq   rr   ru   rS   rS   rT   rw     rx   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 ry   )r\   rz   rt   r   r<   r@   rA   rB   r{   rS   rS   rT   r     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 r   )r   rE   r   r8   r<   r?   r@   rA   rB   rC   rD   rH   rG   r]   rS   rS   rT   r     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	g d| j | | j| j
ddg| j d S r   )rl   r\   r   r@   rH   rn   rE   rA   rG   rB   rD   r]   rS   rS   rT   r   -  s<   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 r   )rt   r\   r   r   rE   rF   rG   rH   rI   r8   r<   r@   rB   rC   rD   rA   r]   rS   rS   rT   r   R  s   zNTestCollectionOwnershipPermissionPolicy.test_instances_user_has_permission_forc                 C   s0  |  | 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g d| 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 r   )rt   r\   r   r   rE   rF   rG   rH   rI   r8   r<   r@   rB   rC   rD   rA   r]   rS   rS   rT   r     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 r   )rt   r\   r   rE   r   r<   rF   r@   rG   rA   rH   rB   rI   r]   rS   rS   rT   r     s@   

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g d| 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 r   )rt   r\   r   rE   r   r<   rG   r@   rA   rH   rB   r]   rS   rS   rT   r     sD   





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   r]   rS   rS   rT   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
g d| jg |  | j| jddgg  |  | j| jddgg  d S r   r   r]   rS   rS   rT   r     sl   










zTTestCollectionOwnershipPermissionPolicy.test_collections_user_has_any_permission_forr   rS   rS   r^   rT   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 )Nadd_collectionr   change_collectiondelete_collectionr   r   zReports 2020r   r    r!   r"   r#   Fr   r   r&   r'   r   r(   r)   zReport deletersreportdeleterzreportdeleter@example.comr+   r,   )r
   r   r\   r   r/   r0   r   r1   r2   r3   r4   r5   reports_2020_collectionr7   r   r8   r9   r:   r   r6   r	   r;   r@   r=   r>   rA   report_deleterrC   r   rD   )rJ   collection_content_typeadd_collection_permissionchange_collection_permissiondelete_collection_permissionrP   rQ   report_deleters_grouprS   rS   rT   rU     st   


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)rh   r   r8   r@   rA   r   rC   rD   r]   rS   rS   rT   ri     s   z;TestCollectionManagementPermission.test_user_has_permissionc                 C   sl   | j | j| j| jg}| j| j| jg}|D ]}| | j	|g d q|D ]}| 
| j	|g d q%d S N)r>   ra   rb   )r   r@   rA   r   r8   rC   rD   rl   r\   rm   rn   )rJ   users_with_permissionsusers_without_permissionsuserrS   rS   rT   ro   *  s$   z?TestCollectionManagementPermission.test_user_has_any_permissionc                 C   s0   | j g d}| || j| j| j| jg d S r   )r\   rs   rt   r   r@   rA   r   )rJ   -users_with_add_or_change_or_delete_permissionrS   rS   rT   rw   @  s   zATestCollectionManagementPermission.test_users_with_any_permissionc                 C   s@   | j d}| || j| jg | j d}| || jg d S )Nra   rc   )r\   rz   rt   r   r@   )rJ   r|   r~   rS   rS   rT   r   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   )	r   r3   r   r8   r@   rA   r   rC   rD   r]   rS   rS   rT   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   )	r   r5   r   r8   r@   r   rC   rD   r   r]   rS   rS   rT   r   q  s(   zHTestCollectionManagementPermission.test_user_has_permission_for_instancec                 C   sz   | j | j| j| jg}|D ]}| | j|g d| j q| | j| jg d| j	 | | j| j g d| j	 d S r   )
r   r@   rA   r   rl   r\   r   r5   rn   r3   )rJ   r   r   rS   rS   rT   r     s*   zLTestCollectionManagementPermission.test_user_has_any_permission_for_instancec                 C   x   |  | j| jd| j| j| jg |  | j| jd| j| jg |  | j| jdg  |  | j| jdg  d S Nra   r>   )	rt   r\   r   r   r3   r5   r   rA   r8   r]   rS   rS   rT   r     s*   	
zITestCollectionManagementPermission.test_instances_user_has_permission_forc                 C   l   |  | 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 Nr>   ra   )	rt   r\   r   r   r3   r5   r   rA   r8   r]   rS   rS   rT   r     *   



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   )rt   r\   r   r3   r   r5   r@   rA   r]   rS   rS   rT   r     s$   

zJTestCollectionManagementPermission.test_users_with_permission_for_instancec                 C   s0   |  | jg d| j| j| j| j| jg d S r   )rt   r\   r   r   r   rA   r@   r   r]   rS   rS   rT   r     s   
zNTestCollectionManagementPermission.test_users_with_any_permission_for_instancec                 C   r   r   )	rt   r\   r   r   r3   r5   r   rA   r8   r]   rS   rS   rT   r     s.   	
zKTestCollectionManagementPermission.test_collections_user_has_permission_forc                 C   r   r   )	rt   r\   r   r   r3   r5   r   rA   r8   r]   rS   rS   rT   r     r   zOTestCollectionManagementPermission.test_collections_user_has_any_permission_forN)rV   rW   rX   rU   ri   ro   rw   r   r   r   r   r   r   r   r   r   r   rS   rS   rS   rT   r     s    Lr   N)django.contrib.auth.modelsr   r   r   "django.contrib.contenttypes.modelsr   django.testr   wagtail.documents.modelsr   wagtail.modelsr   r	   'wagtail.permission_policies.collectionsr
   r   r   wagtail.test.utilsr   &wagtail.tests.test_permission_policiesr   r   rZ   r   r   rS   rS   rS   rT   <module>   s.             
=