
    BhP                         d dl mZ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  G d d	e      Z ed
       G d de             Z ed
       G d de             Zy)    )get_permission_codenameget_user_model)CookieStorage)model_to_dict)override_settings)PageUser)CMSTestCase)admin_reversec                        e Zd ZddZd Zd Zy)PermissionsOnTestCaseNc                     t         j                  dk7  r|xs d}n|xs d}t         j                  |i}t        j                  j                  di |j	                         S )Nemailperms-testuserperms-testuser@django-cms.org )r   USERNAME_FIELDobjectsfilterexists)selfusernamequerys      N/home/dcms/DCMS/lib/python3.12/site-packages/cms/tests/test_page_user_admin.py_user_existsz"PermissionsOnTestCase._user_exists   sY    ""g-3#3HB#BH(((3&&//6688    c                     ddd}t         j                  dk7  rd|t         j                  <   nd|t         j                  <    |j                  di | |S )Nchangeme)	password1	password2r   r   r   r   )r   r   update)r   kwargsdatas      r   _get_user_dataz$PermissionsOnTestCase._get_user_data   sU    ##

 ""g-,<D((),KD(()fr   c                 >    t        dt               j                        S )Ndelete)r   r   _metar   s    r   _get_delete_permz&PermissionsOnTestCase._get_delete_perm#   s    &x1A1G1GHHr   N)__name__
__module____qualname__r   r#   r(   r   r   r   r   r      s    9Ir   r   T)CMS_PERMISSIONc                   @    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)PermissionsOnGlobalTestz
    Tests all user interactions with the page user admin
    while permissions are set to True and user has
    global permissions.
    c                 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_pageuserTcan_change_permissions   z2<a href="/en/admin/cms/pageuser/">Users (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_user_in_admin_indexz0PermissionsOnGlobalTest.test_user_in_admin_index/   s    5':<<>
J(9:"":d"K$$Z0 	{{x0HX1137D   	 %%h=$$Z0 	8{{x0HX1137	8 	8	 		8 	8s   AD8DDD&c                 *   | j                         }t        ddg      }| 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
Nr2   r3   r4   r6   Fr7   i  r;     )r<   r
   r=   r>   r?   r@   rA   rB   rC   rE   r   r   rH   rG   rI   s       r   test_user_not_in_admin_indexz4PermissionsOnGlobalTest.test_user_not_in_admin_indexE   s    <<>
 5':J(9:"":e"L$$Z0 	8{{x0HX1137	8 %%h=$$Z0 	8{{x0HX1137	8 	8	8 	8	8 	8s   8C=<8D	=D	Dc                    | j                  t        d      }| j                         }| j                         }d|d<   | 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add1_addanotheradd_pageuserr6   Tr7   )rE   r   r<   r#   r=   r>   r?   r@   postassertRedirects
assertTruer   r   rG   rH   r"   rI   s        r   test_user_can_add_userz.PermissionsOnGlobalTest.test_user_can_add_userV   s    %%h6<<>
""$!]J7J(9:"":d"K$$Z0 	1{{''$7H  84OOD--/0	1 	1 	1s   ACC$c                    | 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)NrQ   rT   r6   Fr7   rM   )rE   r   r<   r#   r=   r>   r?   r@   rU   rB   rC   assertFalser   rX   s        r   test_user_cant_add_userz/PermissionsOnGlobalTest.test_user_cant_add_usere   s    %%h6<<>
""$J7J(9:"":e"L$$Z0 	2{{''$7HX1137T..01	2 	2 	2s   ?AC  C)c                 8   | j                         }| j                  t        d|j                        }| j	                         }t        |dg      }d|d<   d|d<   d|d	<   | j                  |d
       | j                  |d       |j                  dk7  rd}nd}|||j                  <   | j                  |      5  | j                  j                  ||      }| j                  ||       | j                  | j                  |             d d d        y # 1 sw Y   y xY w)Nchangedate_joinedexcluderR   	_continue
2016-06-21date_joined_015:00:00date_joined_1r6   Tr7   r   perms-testuser2perms-testuser+2@django-cms.org)get_staff_page_userrE   r   pkr<   r   r=   r>   r   r?   r@   rU   rV   rW   r   r   userrG   rH   r"   r   rI   s          r   test_user_can_change_userz1PermissionsOnGlobalTest.test_user_can_change_users   s   '')%%h$''B<<>
TM?;[ ,_ *_J(9:"":d"K')(H8H$,T  !$$Z0 	9{{''$7H  84OOD--h78	9 	9 	9s   8ADDc                 L   | j                         }| j                  t        d|j                        }| j	                         }t        |dg      }d|d<   d|d<   d|d	<   | j                  |d
       | j                  |d       |j                  dk7  rd}nd}|||j                  <   | j                  |      5  | j                  j                  ||      }| j                  |j                  d       | j                  | j                  |             d d d        y # 1 sw Y   y xY w)Nr^   r_   r`   rR   rb   rc   rd   re   rf   r6   Fr7   r   rg   rh   rM   )ri   rE   r   rj   r<   r   r=   r>   r   r?   r@   rU   rB   rC   r[   r   rk   s          r   test_user_cant_change_userz2PermissionsOnGlobalTest.test_user_cant_change_user   s   '')%%h$''B<<>
TM?;[ ,_ *_J(9:"":e"L')(H8H$,T  !$$Z0 	:{{''$7HX1137T..x89	: 	: 	:s   8ADD#c                    | j                         }| j                  t        d|j                        }t	        d      }| j                         }ddi}| 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)Nr%   indexrU   yesdelete_pageuserTr7   )ri   rE   r   rj   r
   r<   r=   r(   r>   r?   r@   rU   rV   r[   r   )r   rl   rG   redirect_torH   r"   rI   s          r   test_user_can_delete_userz1PermissionsOnGlobalTest.test_user_can_delete_user   s    '')%%h$''B#G,<<>
J(=(=(?@J(9:"":d"K$$Z0 	2{{''$7H  ;7T..01	2 	2 	2s   'AC>>Dc                    | j                         }| j                  t        d|j                        }| j	                         }ddi}| 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)Nr%   rU   rr   rs   Fr7   rM   )ri   rE   r   rj   r<   r=   r(   r>   r?   r@   rU   rB   rC   rW   r   )r   rl   rG   rH   r"   rI   s         r   test_user_cant_delete_userz2PermissionsOnGlobalTest.test_user_cant_delete_user   s    '')%%h$''B<<>
J(=(=(?@J(9:"":e"L$$Z0 	1{{''$7HX1137OOD--/0	1 	1 	1s   AC==DN)r*   r+   r,   __doc__rJ   rO   rY   r\   rm   ro   ru   rw   r   r   r   r/   r/   '   s/    8,8"1292:22 1r   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
    Tests all user interactions with the page user admin
    while permissions are set to True and user has
    page permissions.
    c                 .    | j                         | _        y r)   )get_permissions_test_page_permissions_pager'   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r1   )r
   r<   r=   add_page_permissionr}   r?   r@   rA   rB   rC   rD   rE   r   rF   s       r   rJ   z.PermissionsOnPageTest.test_user_in_admin_index   s    5':<<>
J(9:  ""#' 	! 	
 $$Z0 	{{x0HX1137D   	 %%h=$$Z0 	8{{x0HX1137	8 	8	 		8 	8s    AD8D(D%(D1c                 @   | j                         }t        ddg      }| 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rL   )r<   r
   r=   r   r}   r?   r@   rA   rB   rC   rE   r   rN   s       r   rO   z2PermissionsOnPageTest.test_user_not_in_admin_index   s   <<>
 5':J(9:  ""#( 	! 	
 $$Z0 	8{{x0HX1137	8 %%h=$$Z0 	8{{x0HX1137	8 	8	8 	8	8 	8s    8D8DDDc                    | j                  t        d      }| j                         }| j                         }d|d<   | 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)	zZ
        User can add new users if can_change_permissions
        is set to True.
        rQ   rR   rS   rT   r6   Tr7   N)rE   r   r<   r#   r=   r   r}   r?   r@   rU   rV   rW   r   rX   s        r   rY   z,PermissionsOnPageTest.test_user_can_add_user   s    
 %%h6<<>
""$!]J7J(9:  ""#' 	! 	
 $$Z0 	1{{''$7H  84OOD--/0	1 	1 	1s   AC&&C/c                    | j                  t        d      }| j                         }| j                         }| 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)z]
        User can't add new users if can_change_permissions
        is set to False.
        rQ   rT   r6   Fr7   rM   N)rE   r   r<   r#   r=   r   r}   r?   r@   rU   rB   rC   r[   r   rX   s        r   r\   z-PermissionsOnPageTest.test_user_cant_add_user  s    
 %%h6<<>
""$J7J(9:  ""#( 	! 	
 $$Z0 	2{{''$7HX1137T..01	2 	2 	2s   
AC++C4c                 R   | j                         }| j                  |      }| j                  t        d|j                        }t        |dg      }d|d<   d|d<   d	|d
<   | j                  |d       | j                  || j                  d       |j                  dk7  rd}nd}|||j                  <   | j                  |      5  | j                  j                  ||      }| j                  ||       | j                  | j                  |             ddd       y# 1 sw Y   yxY w)zd
        User can change users he created if can_change_permissions
        is set to True.
        
created_byr^   r_   r`   rR   rb   rc   rd   re   rf   r6   Tr7   r   rg   rh   N)r<   ri   rE   r   rj   r   r=   r   r}   r   r?   r@   rU   rV   rW   r   r   rH   subordinaterG   r"   r   rI   s          r    test_user_can_change_subordinatez6PermissionsOnPageTest.test_user_can_change_subordinate,  s&   
 <<>
..*.E%%h+..I[=/B[ ,_ *_J(9:  ""#' 	! 	
 %%0(H8H+3[''($$Z0 	9{{''$7H  84OOD--h78	9 	9 	9s   ADD&c                 f   | j                         }| j                  |      }| j                  t        d|j                        }t        |dg      }d|d<   d|d<   d	|d
<   | j                  |d       | j                  || j                  d       |j                  dk7  rd}nd}|||j                  <   | j                  |      5  | j                  j                  ||      }| j                  |j                  d       | j                  | j!                  |             ddd       y# 1 sw Y   yxY w)zf
        User cant change users he created if can_change_permissions
        is set to False.
        r   r^   r_   r`   rR   rb   rc   rd   re   rf   r6   Fr7   r   rg   rh   rM   N)r<   ri   rE   r   rj   r   r=   r   r}   r   r?   r@   rU   rB   rC   r[   r   r   s          r   !test_user_cant_change_subordinatez7PermissionsOnPageTest.test_user_cant_change_subordinateM  s.   
 <<>
..*.E%%h+..I[=/B[ ,_ *_J(9:  ""#( 	! 	
 %%0(H8H+3[''($$Z0 	:{{''$7HX1137T..x89	: 	: 	:s   AD''D0c                 h   | j                         }| j                  |      }| j                  t        d|j                        }t        d      }t        |dg      }d|d<   d|d	<   d
|d<   | j                  |d       | j                  || j                  d       |j                  dk7  rd}nd}|||j                  <   | 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)zf
        User cant change his own user,
        even with can_change_permissions set to True.
        r   r^   rq   r_   r`   rR   rb   rc   rd   re   rf   r6   Tr7   r   rg   rh   messagesr   ID "%s"N)get_superuserri   rE   r   rj   r
   r   r=   r   r}   r   r?   r@   rU   rV   r   _decodecookiesvaluerW   r&   verbose_namer[   r   	r   adminrH   rG   rt   r"   r   rI   msgss	            r   test_user_cant_change_selfz0PermissionsOnPageTest.test_user_cant_change_selfn  s   
 ""$---?
%%h*--H#G,Z-A[ ,_ *_J(9:  ""#' 	! 	
 $$/(H8H*2Z&&'$$Z0 	:{{''$7H  ;7 *2283C3CJ3O3U3UVDOODGX^^%@%@AOODGY%>?T..x89	: 	: 	:s   CF((F1c                    | j                         }| j                         }| j                  |      }| j                  t        d|j
                        }t        d      }t        |dg      }d|d<   d|d	<   d
|d<   | j                  |d       | j                  || j                  d       |j                  dk7  rd}nd}|||j                  <   | 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       y# 1 sw Y   yxY w)zy
        User cant change a users created by another user,
        even with can_change_permissions set to True.
        r   r^   rq   r_   r`   rR   rb   rc   rd   re   rf   r6   Tr7   r   rg   rh   r   r   r   N)r   r<   ri   rE   r   rj   r
   r   r=   r   r}   r   r?   r@   rU   rV   r   r   r   r   rW   r&   r   r[   r   
r   r   rH   staff_user_2rG   rt   r"   r   rI   r   s
             r   test_user_cant_change_othersz2PermissionsOnPageTest.test_user_cant_change_others  s   
 ""$<<>
//5/A%%h,//J#G,\M?C[ ,_ *_J(9:  ""#' 	! 	
 &&'1(H8H,4\(()$$Z0 	:{{''$7H  ;7 *2283C3CJ3O3U3UVDOODGX^^%@%@AOODGY%@AT..x89	: 	: 	:s    CF88Gc                 .   | j                         }| j                  |      }| j                  t        d|j                        }t        d      }ddi}| 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)
zd
        User can delete users he created if can_change_permissions
        is set to True.
        r   r%   rq   rU   rr   rs   Tr7   N)r<   ri   rE   r   rj   r
   r=   r(   r   r}   r?   r@   rU   rV   r[   r   )r   rH   r   rG   rt   r"   rI   s          r    test_user_can_delete_subordinatez6PermissionsOnPageTest.test_user_can_delete_subordinate  s    
 <<>
..*.E%%h+..I#G,J(=(=(?@J(9:  ""#' 	! 	
 $$Z0 	2{{''$7H  ;7T..01	2 	2 	2s   4ADDc                 ,   | j                         }| j                  |      }| j                  t        d|j                        }ddi}| 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)
zf
        User cant delete users he created if can_change_permissions
        is set to False.
        r   r%   rU   rr   rs   Fr7   rM   N)r<   ri   rE   r   rj   r=   r(   r   r}   r?   r@   rU   rB   rC   rW   r   )r   rH   r   rG   r"   rI   s         r   !test_user_cant_delete_subordinatez7PermissionsOnPageTest.test_user_cant_delete_subordinate  s    
 <<>
..*.E%%h+..IJ(=(=(?@J(9:  ""#( 	! 	
 $$Z0 	1{{''$7HX1137OOD--/0	1 	1 	1s   )AD

Dc                 \   | j                         }| j                  |      }| j                  t        d|j                        }t        d      }ddi}| j                  || j                                | j                  |d       | j                  || j                  d       | j                  |      5  t        ||j                        }| 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)zf
        User cant delete his own user,
        even with can_change_permissions set to True.
        r   r%   rq   rU   rr   rs   Tr7   r   r   r   N)r   ri   rE   r   rj   r
   r=   r(   r   r}   r?   getattrr   r@   rU   rV   r   r   r   r   rW   r&   r   r   r   s	            r   test_user_cant_delete_selfz0PermissionsOnPageTest.test_user_cant_delete_self  sm   
 ""$---?
%%h*--H#G,J(=(=(?@J(9:  ""#' 	! 	
 $$Z0 	9z:+D+DEH{{''$7H  ;7 *2283C3CJ3O3U3UVDOODGX^^%@%@AOODGY%>?OOD--h78	9 	9 	9s   4C%F""F+c                 |   | j                         }| j                         }| j                  |      }| j                  t        d|j
                        }t        d      }ddi}| j                  || j                                | j                  |d       | j                  || j                  d       | j                  |      5  t        ||j                        }| j                  j                  ||      }| j!                  ||       t#        |      j%                  |j&                  d	   j(                        }	| j+                  |	d
   t        j,                  j.                         | j+                  |	d
   d|j
                  z         | j+                  | j1                  |             ddd       y# 1 sw Y   yxY w)zx
        User cant delete a user created by another user,
        even with can_change_permissions set to True.
        r   r%   rq   rU   rr   rs   Tr7   r   r   r   N)r   r<   ri   rE   r   rj   r
   r=   r(   r   r}   r?   r   r   r@   rU   rV   r   r   r   r   rW   r&   r   r   r   s
             r   test_user_cant_delete_othersz2PermissionsOnPageTest.test_user_cant_delete_others  s{   
 ""$<<>
//5/A%%h,//J#G,J(=(=(?@J(9:  ""#' 	! 	
 $$Z0 	9|\-H-HIH{{''$7H  ;7 *2283C3CJ3O3U3UVDOODGX^^%@%@AOODGY%@AOOD--h78	9 	9 	9s   C%F22F;N)r*   r+   r,   rx   r~   rJ   rO   rY   r\   r   r   r   r   r   r   r   r   r   r   r   rz   rz      sM    B848*1.2,9B:B#:J$:L201.989r   rz   N)django.contrib.authr   r   &django.contrib.messages.storage.cookier   django.forms.modelsr   django.test.utilsr   cms.models.permissionmodelsr   cms.test_utils.testcasesr	   cms.utils.urlutilsr
   r   r/   rz   r   r   r   <module>r      sq    G @ - / 0 0 ,IK I8 $'Z13 Z1 (Z1z $'Z91 Z9 (Z9r   