
    BhG                         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  G d de	      Z ed	
       G d de             Z ed	
       G d de             Zy)    )CookieStorage)model_to_dict)override_settings)PageUserGroup)CMSTestCase)admin_reversec                   "    e Zd ZddZd ZddZy)PermissionsOnTestCaseNc                 f    |sd}t         j                  j                  |      j                         S )N
Test groupname)r   objectsfilterexists)selfr   s     T/home/dcms/DCMS/lib/python3.12/site-packages/cms/tests/test_page_user_group_admin.py_group_existsz#PermissionsOnTestCase._group_exists   s-    D$$+++6==??    c                 8    ddddd} |j                   di | |S )Nr   on)r   can_add_pagecan_change_pagecan_delete_page )update)r   kwargsdatas      r   _get_group_dataz%PermissionsOnTestCase._get_group_data   s-      ##	
 	fr   c                 n    |s| j                         }d|d}t        j                  j                  di |S )Nr   )r   
created_byr   )get_superuserr   r   create)r   r!   r   s      r   
_get_groupz PermissionsOnTestCase._get_group   s>    ++-J !$
 $$++3d33r   N)__name__
__module____qualname__r   r   r$   r   r   r   r
   r
   
   s    @
4r   r
   T)CMS_PERMISSIONc                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
PermissionsOnGlobalTestc                 R   t        ddg      }| j                         }| j                  |d       | j                  |d       | j	                  |      5  | j
                  j                  |      }| j                  |j                  d       | j                  |dd	       d d d        | j                  t        d
      }| j	                  |      5  | j
                  j                  |      }| j                  |j                  d       d d d        y # 1 sw Y   qxY w# 1 sw Y   y xY wNapp_listcmsargschange_pageusergroupTcan_change_permissions   z=<a href="/en/admin/cms/pageusergroup/">User groups (page)</a>)html
changelist)r   "get_staff_user_with_no_permissionsadd_permissionadd_global_permissionlogin_user_contextclientgetassertEqualstatus_codeassertContainsget_admin_urlr   r   endpoint
staff_userresponses       r   test_group_in_admin_indexz1PermissionsOnGlobalTest.test_group_in_admin_index)   s    5':<<>
J(>?"":d"K$$Z0 	{{x0HX1137O   	 %%m\B$$Z0 	8{{x0HX1137	8 	8	 		8 	8s   AD8DDD&c                 *   t        ddg      }| j                         }| j                  |d       | j                  |d       | j	                  |      5  | j
                  j                  |      }| j                  |j                  d       d d d        | j                  t        d      }| j	                  |      5  | j
                  j                  |      }| j                  |j                  d	       d d d        y # 1 sw Y   qxY w# 1 sw Y   y xY w
Nr.   r/   r0   r2   Fr3   i  r7     )r   r8   r9   r:   r;   r<   r=   r>   r?   rA   r   rB   s       r   test_group_not_in_admin_indexz5PermissionsOnGlobalTest.test_group_not_in_admin_index?   s     5':<<>
J(>?"":e"L$$Z0 	8{{x0HX1137	8 %%m\B$$Z0 	8{{x0HX1137	8 	8	8 	8	8 	8s   8C=<8D	=D	Dc                    | j                  t        d      }t        d      }| j                         }| j	                         }| j                  |d       | j                  |d       | j                  |      5  | j                  j                  ||      }| j                  ||       | j                  | j                                d d d        y # 1 sw Y   y xY w)Naddindexadd_pageusergroupTr3   )rA   r   r   r8   r   r9   r:   r;   r<   postassertRedirects
assertTruer   r   rC   redirect_torD   r   rE   s         r   test_user_can_add_groupz/PermissionsOnGlobalTest.test_user_can_add_groupP   s    %%mU;#G,<<>
##%J(;<"":d"K$$Z0 	2{{''$7H  ;7OOD..01	2 	2 	2s   8ACCc                    | j                  t        d      }| j                         }| j                         }| j	                  |d       | j                  |d       | j                  |      5  | j                  j                  ||      }| j                  |j                  d       | j                  | j                                d d d        y # 1 sw Y   y xY w)NrL   rN   Fr3   rI   )rA   r   r8   r   r9   r:   r;   r<   rO   r>   r?   assertFalser   r   rC   rD   r   rE   s        r   test_user_cant_add_groupz0PermissionsOnGlobalTest.test_user_cant_add_group^   s    %%mU;<<>
##%J(;<"":e"L$$Z0 	3{{''$7HX1137T//12	3 	3 	3s   -ACCc                    | j                         }| j                  t        d|j                        }| j                  t        d      }| j	                         }| j                  d      }| j                  |d       | j                  |d       | j                  |      5  | j                  j                  ||      }| j                  ||       | j                  | j                  d             d d d        y # 1 sw Y   y xY w)Nchanger7   New test groupr   r2   Tr3   )r$   rA   r   pkr8   r   r9   r:   r;   r<   rO   rP   rQ   r   r   grouprC   rS   rD   r   rE   s          r   test_user_can_change_groupz2PermissionsOnGlobalTest.test_user_can_change_groupk   s    !%%mXuxxH((E<<>
##)9#:J(>?"":d"K$$Z0 	B{{''$7H  ;7OOD../?@A	B 	B 	Bs    AC88Dc                    | j                         }| j                  t        d|j                        }| j	                         }| j                  d      }| j                  |d       | j                  |d       | j                  |      5  | j                  j                  ||      }| j                  |j                  d       | j                  | j                                d d d        y # 1 sw Y   y xY w)NrZ   r[   r   r2   Fr3   rI   )r$   rA   r   r\   r8   r   r9   r:   r;   r<   rO   r>   r?   rQ   r   r   r^   rC   rD   r   rE   s         r   test_user_cant_change_groupz3PermissionsOnGlobalTest.test_user_cant_change_groupz   s    !%%mXuxxH<<>
##)9#:J(>?"":e"L$$Z0 	2{{''$7HX1137OOD..01	2 	2 	2s   
AC++C4c                    | j                         }| j                  t        d|j                        }t	        d      }| j                         }ddi}| j                  |d       | j                  |d       | j                  |d       | j                  |      5  | j                  j                  ||      }| j                  ||       | j                  | j                                d d d        y # 1 sw Y   y xY w)	NdeleterM   rO   yesdelete_groupdelete_pageusergroupTr3   )r$   rA   r   r\   r   r8   r9   r:   r;   r<   rO   rP   rV   r   r]   s          r   test_user_can_delete_groupz2PermissionsOnGlobalTest.test_user_can_delete_group   s    !%%mXuxxH#G,<<>
J7J(>?"":d"K$$Z0 	3{{''$7H  ;7T//12	3 	3 	3s   AC00C9c                    | j                         }| j                  t        d|j                        }| j	                         }ddi}| j                  |d       | j                  |d       | j                  |d       | j                  |      5  | j                  j                  ||      }| j                  |j                  d       | j                  | j                                d d d        y # 1 sw Y   y xY w)	Nrd   rO   re   rf   rg   Fr3   rI   )r$   rA   r   r\   r8   r9   r:   r;   r<   rO   r>   r?   rQ   r   ra   s         r   test_user_cant_delete_groupz3PermissionsOnGlobalTest.test_user_cant_delete_group   s    !%%mXuxxH<<>
J7J(>?"":e"L$$Z0 	2{{''$7HX1137OOD..01	2 	2 	2s   AC//C8N)r&   r'   r(   rF   rJ   rT   rX   r_   rb   rh   rj   r   r   r   r+   r+   &   s+    8,8"23B23 2r   r+   c                   ^    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zy)PermissionsOnPageTestz
    Uses PagePermission
    c                 .    | j                         | _        y r%   )get_permissions_test_page_permissions_page)r   s    r   setUpzPermissionsOnPageTest.setUp   s    !%!?!?!Ar   c                 h   t        ddg      }| j                         }| j                  |d       | j                  || j                  d       | j                  |      5  | j                  j                  |      }| j                  |j                  d       | j                  |dd	       d d d        | j                  t        d
      }| j                  |      5  | j                  j                  |      }| j                  |j                  d       d d d        y # 1 sw Y   qxY w# 1 sw Y   y xY wr-   )r   r8   r9   add_page_permissionro   r;   r<   r=   r>   r?   r@   rA   r   rB   s       r   rF   z/PermissionsOnPageTest.test_group_in_admin_index   s    5':<<>
J(>?  ""#' 	! 	
 $$Z0 	{{x0HX1137O   	 %%m\B$$Z0 	8{{x0HX1137	8 	8	 		8 	8s    AD8D(D%(D1c                 @   t        ddg      }| j                         }| j                  |d       | j                  || j                  d       | j                  |      5  | j                  j                  |      }| j                  |j                  d       d d d        | j                  t        d      }| j                  |      5  | j                  j                  |      }| j                  |j                  d	       d d d        y # 1 sw Y   qxY w# 1 sw Y   y xY wrH   )r   r8   r9   rr   ro   r;   r<   r=   r>   r?   rA   r   rB   s       r   rJ   z3PermissionsOnPageTest.test_group_not_in_admin_index   s    5':<<>
J(>?  ""#( 	! 	
 $$Z0 	8{{x0HX1137	8 %%m\B$$Z0 	8{{x0HX1137	8 	8	8 	8	8 	8s    8D8DDDc                    | j                  t        d      }t        d      }| j                         }| j	                         }| j                  |d       | j                  || j                  d       | j                  |      5  | j                  j                  ||      }| j                  ||       | j                  | j                                ddd       y# 1 sw Y   yxY w)z[
        User can add new groups if can_change_permissions
        is set to True.
        rL   rM   rN   Tr3   N)rA   r   r   r8   r   r9   rr   ro   r;   r<   rO   rP   rQ   r   rR   s         r   rT   z-PermissionsOnPageTest.test_user_can_add_group   s    
 %%mU;#G,<<>
##%J(;<  ""#' 	! 	
 $$Z0 	2{{''$7H  ;7OOD..01	2 	2 	2s   ACC#c                    | j                  t        d      }| j                         }| j                         }| j	                  |d       | j                  || j                  d       | j                  |      5  | j                  j                  ||      }| j                  |j                  d       | j                  | j                                ddd       y# 1 sw Y   yxY w)z^
        User can't add new groups if can_change_permissions
        is set to False.
        rL   rN   Fr3   rI   N)rA   r   r8   r   r9   rr   ro   r;   r<   rO   r>   r?   rV   r   rW   s        r   rX   z.PermissionsOnPageTest.test_user_cant_add_group   s    
 %%mU;<<>
##%J(;<  ""#( 	! 	
 $$Z0 	3{{''$7HX1137T//12	3 	3 	3s   8ACC"c                    | j                         }| j                  |      }| j                  t        d|j                        }t        |      }d|d<   d|d<   | j                  |d       | j                  || j                  d	       | j                  |      5  | j                  j                  ||      }| j                  ||       | j                  | j                  d             d
d
d
       y
# 1 sw Y   y
xY w)ze
        User can change groups he created if can_change_permissions
        is set to True.
        r!   rZ   1	_continuer[   r   r2   Tr3   N)r8   r$   rA   r   r\   r   r9   rr   ro   r;   r<   rO   rP   rQ   r   r   rD   r^   rC   r   rE   s         r   &test_user_can_change_subordinate_groupz<PermissionsOnPageTest.test_user_can_change_subordinate_group  s    
 <<>
:6%%mXuxxHU#['VJ(>?  ""#' 	! 	
 $$Z0 	B{{''$7H  84OOD../?@A	B 	B 	Bs   AC22C;c                    | j                         }| j                  |      }| j                  t        d|j                        }t        |      }d|d<   d|d<   | j                  |d       | j                  || j                  d	       | j                  |      5  | j                  j                  ||      }| j                  |j                  d
       | j                  | j                  d             ddd       y# 1 sw Y   yxY w)zg
        User cant change groups he created if can_change_permissions
        is set to False.
        rw   rZ   rx   ry   r[   r   r2   Fr3   rI   N)r8   r$   rA   r   r\   r   r9   rr   ro   r;   r<   rO   r>   r?   rV   r   rz   s         r   'test_user_cant_change_subordinate_groupz=PermissionsOnPageTest.test_user_cant_change_subordinate_group#  s    
 <<>
:6%%mXuxxHU#['VJ(>?  ""#( 	! 	
 $$Z0 	C{{''$7HX1137T//0@AB	C 	C 	Cs   AC<<Dc                 D   | j                         }| j                         }|j                  j                  |       | j	                  t
        d|j                        }t        d      }t        |      }d|d<   d|d<   | j                  |d       | j                  || j                  d	       | j                  |      5  | j                  j                  ||      }| j                  ||       t!        |      j#                  |j$                  d
   j&                        }| j)                  |d   t
        j*                  j,                         | j)                  |d   d|j                  z         | j/                  | j1                  d             ddd       y# 1 sw Y   yxY w)zp
        User cant change a group he's a part of,
        even with can_change_permissions set to True.
        rZ   rM   rx   ry   r[   r   r2   Tr3   messagesr   ID "%s"N)r$   r8   groupsrL   rA   r   r\   r   r   r9   rr   ro   r;   r<   rO   rP   r   _decodecookiesvaluerQ   _metaverbose_namerV   r   r   r^   rD   rC   rS   r   rE   msgss           r   test_user_cant_change_own_groupz5PermissionsOnPageTest.test_user_cant_change_own_group<  sl   
 !<<>
e$%%mXuxxH#G,U#['VJ(>?  ""#' 	! 	
 $$Z0 	C{{''$7H  ;7 *2283C3CJ3O3U3UVDOODG]%8%8%E%EFOODGY%9:T//0@AB	C 	C 	Cs   >CFFc                 2   | j                         }| j                  |      }| j                         }| j                  t        d|j
                        }t        d      }t        |      }d|d<   d|d<   | j                  |d       | j                  || j                  d	
       | j                  |      5  | j                  j                  ||      }| j                  ||       t        |      j!                  |j"                  d   j$                        }| j'                  |d   t        j(                  j*                         | j'                  |d   d|j
                  z         | j-                  | j/                  d             ddd       y# 1 sw Y   yxY w)zy
        User cant change a group created by another user,
        even with can_change_permissions set to True.
        rw   rZ   rM   rx   ry   r[   r   r2   Tr3   r   r   r   N)r"   r$   r8   rA   r   r\   r   r   r9   rr   ro   r;   r<   rO   rP   r   r   r   r   rQ   r   r   rV   r   	r   adminr^   rD   rC   rS   r   rE   r   s	            r   "test_user_cant_change_others_groupz8PermissionsOnPageTest.test_user_cant_change_others_groupZ  sj   
 ""$51<<>
%%mXuxxH#G,U#['VJ(>?  ""#' 	! 	
 $$Z0 	C{{''$7H  ;7 *2283C3CJ3O3U3UVDOODG]%8%8%E%EFOODGY%9:T//0@AB	C 	C 	Cs   5CFFc                    | j                         }| j                  |      }| j                  t        d|j                        }t        d      }ddi}| j                  |d       | j                  |d       | j                  || j                  d	       | j                  |      5  | j                  j                  ||      }| j                  ||       | j                  | j                                d
d
d
       y
# 1 sw Y   y
xY w)ze
        User can delete groups he created if can_change_permissions
        is set to True.
        rw   rd   rM   rO   re   rf   rg   Tr3   N)r8   r$   rA   r   r\   r   r9   rr   ro   r;   r<   rO   rP   rV   r   )r   rD   r^   rC   rS   r   rE   s          r   &test_user_can_delete_subordinate_groupz<PermissionsOnPageTest.test_user_can_delete_subordinate_groupx  s    
 <<>
:6%%mXuxxH#G,J7J(>?  ""#' 	! 	
 $$Z0 	3{{''$7H  ;7T//12	3 	3 	3s   &AC==Dc                    | j                         }| j                  |      }| j                  t        d|j                        }ddi}| j                  |d       | j                  |d       | j                  || j                  d       | j                  |      5  | j                  j                  ||      }| j                  |j                  d	       | j                  | j                                d
d
d
       y
# 1 sw Y   y
xY w)zg
        User cant delete groups he created if can_change_permissions
        is set to False.
        rw   rd   rO   re   rf   rg   Fr3   rI   N)r8   r$   rA   r   r\   r9   rr   ro   r;   r<   rO   r>   r?   rQ   r   rz   s         r   'test_user_cant_delete_subordinate_groupz=PermissionsOnPageTest.test_user_cant_delete_subordinate_group  s    
 <<>
:6%%mXuxxHJ7J(>?  ""#( 	! 	
 $$Z0 	2{{''$7HX1137OOD..01	2 	2 	2s   AC<<Dc                 D   | j                         }| j                         }|j                  j                  |       | j	                  t
        d|j                        }t        d      }ddi}| j                  |d       | j                  |d       | j                  || j                  d       | j                  |      5  | j                  j                  ||      }| j                  ||       t        |      j!                  |j"                  d	   j$                        }| j'                  |d
   t
        j(                  j*                         | j'                  |d
   d|j                  z         | j'                  | j-                                ddd       y# 1 sw Y   yxY w)zp
        User cant delete a group he's a part of,
        even with can_change_permissions set to True.
        rd   rM   rO   re   rf   rg   Tr3   r   r   r   N)r$   r8   r   rL   rA   r   r\   r   r9   rr   ro   r;   r<   rO   rP   r   r   r   r   rQ   r   r   r   r   s           r   test_user_cant_delete_own_groupz5PermissionsOnPageTest.test_user_cant_delete_own_group  s_   
 !<<>
e$%%mXuxxH#G,J7J(>?  ""#' 	! 	
 $$Z0 	2{{''$7H  ;7 *2283C3CJ3O3U3UVDOODG]%8%8%E%EFOODGY%9:OOD..01	2 	2 	2s   ?CFFc                 2   | j                         }| j                  |      }| j                         }| j                  t        d|j
                        }t        d      }ddi}| j                  |d       | j                  |d       | j                  || j                  d	       | j                  |      5  | j                  j                  ||      }| j                  ||       t        |      j                  |j                   d
   j"                        }| j%                  |d   t        j&                  j(                         | j%                  |d   d|j
                  z         | j%                  | j+                                ddd       y# 1 sw Y   yxY w)zy
        User cant delete a group created by another user,
        even with can_change_permissions set to True.
        rw   rd   rM   rO   re   rf   rg   Tr3   r   r   r   N)r"   r$   r8   rA   r   r\   r   r9   rr   ro   r;   r<   rO   rP   r   r   r   r   rQ   r   r   r   r   s	            r   "test_user_cant_delete_others_groupz8PermissionsOnPageTest.test_user_cant_delete_others_group  s]   
 ""$51<<>
%%mXuxxH#G,J7J(>?  ""#' 	! 	
 $$Z0 	2{{''$7H  ;7 *2283C3CJ3O3U3UVDOODG]%8%8%E%EFOODGY%9:OOD..01	2 	2 	2s   6CFFN)r&   r'   r(   __doc__rp   rF   rJ   rT   rX   r{   r}   r   r   r   r   r   r   r   r   r   rl   rl      sM    B848*2,3*B0C2C<C<302.282r   rl   N)&django.contrib.messages.storage.cookier   django.forms.modelsr   django.test.utilsr   cms.models.permissionmodelsr   cms.test_utils.testcasesr   cms.utils.urlutilsr   r
   r+   rl   r   r   r   <module>r      sl    @ - / 5 0 ,4K 48 $'~23 ~2 (~2B $'t21 t2 (t2r   