Ë
    ¸2ÚiÕ-  ã                   ó"  — d dl mZ 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 d d	lmZ 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  e«       Ze G d„ de«      «       Ze G d„ de«      «       Ze G d„ de«      «       Zy)é    )Úget_user_model)ÚGroupÚ
Permission)ÚTestCase)Úassign_perm)Úget_groups_with_perms)Úget_objects_for_group)Úget_objects_for_user)Úget_users_with_perms)Úremove_perm)ÚMixedÚReverseMixed)ÚProject)ÚProjectGroupObjectPermission)ÚProjectUserObjectPermission)ÚskipUnlessTestAppc                   óH   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚTestDirectUserPermissionsc                 óš   — t         j                  j                  ddd«      | _        t        j                  j                  d¬«      | _        y )NÚjoeújoe@example.comÚfoobarÚFoobar©Úname)ÚUserÚobjectsÚcreate_userr   r   ÚcreateÚproject©Úselfs    ú]/var/www/html/acx/venv/lib/python3.12/site-packages/guardian/testapp/tests/test_direct_rel.pyÚsetUpzTestDirectUserPermissions.setUp   s6   € Ü—<‘<×+Ñ+¨EÐ3DÀhÓOˆŒÜ—‘×-Ñ-°8Ð-Ó<ˆ�ó    c                 óJ   — d|dœ}t        j                  j                  di |¤ŽS ©NÚtestapp)Úcontent_type__app_labelÚcodename© ©r   r   Úget©r"   r*   Úfilterss      r#   Úget_permz"TestDirectUserPermissions.get_perm   ó&   € Ø.7ÀXÑNˆÜ×!Ñ!×%Ñ%Ñ0¨Ñ0Ð0r%   c                 óü   — | j                  d«      }t        j                  j                  | j                  || j
                  ¬«       | j                  | j                  j                  d| j
                  «      «       y )NÚadd_project)ÚuserÚ
permissionÚcontent_object)r0   r   r   r   r   r    Ú
assertTrueÚhas_perm©r"   Úperms     r#   Ú+test_after_perm_is_created_without_shortcutzETestDirectUserPermissions.test_after_perm_is_created_without_shortcut   s_   € Ø�}‰}˜]Ó+ˆô 	$×+Ñ+×2Ñ2Ø—‘ØØŸ<™<ð 	3ô 	
ð
 	�‰˜Ÿ™×)Ñ)¨-¸¿¹ÓFÕGr%   c                 óø   — t        d| j                  | j                  «       | j                  d| j                  dœ}t        j                  j
                  di |¤Žj                  «       }| j                  |d«       y )Nr3   ©r6   Úpermission__codenamer4   é   r+   )r   r   r    r   r   ÚfilterÚcountÚassertEqual©r"   r/   Úresults      r#   Útest_assign_permz*TestDirectUserPermissions.test_assign_perm*   sb   € Ü�M 4§8¡8¨T¯\©\Ô:à"Ÿl™lØ$1Ø—H‘Hñ
ˆô
 -×4Ñ4×;Ñ;ÑF¸gÑF×LÑLÓNˆØ×Ñ˜ Õ#r%   c                 ó¸  — t        d| j                  | j                  «       | j                  d| j                  dœ}t        j                  j
                  di |¤Žj                  «       }| j                  |d«       t        d| j                  | j                  «       t        j                  j
                  di |¤Žj                  «       }| j                  |d«       y )Nr3   r=   r?   r   r+   )	r   r   r    r   r   r@   rA   rB   r   rC   s      r#   Útest_remove_permz*TestDirectUserPermissions.test_remove_perm4   s¨   € Ü�M 4§8¡8¨T¯\©\Ô:à"Ÿl™lØ$1Ø—H‘Hñ
ˆô
 -×4Ñ4×;Ñ;ÑF¸gÑF×LÑLÓNˆØ×Ñ˜ Ô#ä�M 4§8¡8¨T¯\©\Ô:Ü,×4Ñ4×;Ñ;ÑF¸gÑF×LÑLÓNˆØ×Ñ˜ Õ#r%   c                 óª  — t         j                  j                  ddd«       t         j                  j                  ddd«      }t        d| j                  | j
                  «       t        d| j                  | j
                  «       t        d|| j
                  «       | j                  t        | j
                  d¬«      | j                  ddg|dgi«       y )	NÚjohnújohn@foobar.comÚjaneújane@foobar.comr3   Úchange_projectT©Úattach_perms)r   r   r   r   r   r    rB   r   )r"   rK   s     r#   Útest_get_users_with_permsz3TestDirectUserPermissions.test_get_users_with_permsB   s¥   € Ü�‰× Ñ  Ð):¸FÔCÜ�|‰|×'Ñ'¨Ð0AÀ6ÓJˆÜ�M 4§8¡8¨T¯\©\Ô:ÜÐ$ d§h¡h°·±Ô=ÜÐ$ d¨D¯L©LÔ9Ø×ÑÔ-¨d¯l©lÈÔNà!ŸX™X¨Ð7GÐ'HØ!Ð$4Ð#5ðõ	r%   c                 ó   — t         j                  j                  ddd«       t         j                  j                  ddd«      }t        j                  j	                  d¬«      }| j
                  j                  j                  |«       t        d| j
                  | j                  «       t        d|| j                  «       t        d|| j                  «       | j                  t        | j                  d	¬
«      | j
                  ddg|dgi«       y )NrI   rJ   rK   rL   Údevsr   r3   rM   TrN   )r   r   r   r   r   r   ÚgroupsÚaddr   r    rB   r   )r"   rK   Úgroups      r#   Ú%test_get_users_with_perms_plus_groupsz?TestDirectUserPermissions.test_get_users_with_perms_plus_groupsN   sÎ   € Ü�‰× Ñ  Ð):¸FÔCÜ�|‰|×'Ñ'¨Ð0AÀ6ÓJˆÜ—‘×$Ñ$¨&Ð$Ó1ˆØ�‰�‰×Ñ˜EÔ"Ü�M 4§8¡8¨T¯\©\Ô:ÜÐ$ e¨T¯\©\Ô:ÜÐ$ d¨D¯L©LÔ9Ø×ÑÔ-¨d¯l©lÈÔNà!ŸX™X¨Ð7GÐ'HØ!Ð$4Ð#5ðõ	r%   c                 ó¼  — t         j                  j                  d¬«      }t         j                  j                  d¬«      }t        d| j                  |«       t        d| j                  |«       t        d| j                  |«       t        | j                  d«      }| j                  t        d„ |D «       «      t        |j                  |j                  g«      «       y )NÚfoor   Úbarr3   rM   útestapp.add_projectc              3   ó4   K  — | ]  }|j                   –— Œ y ­w©N©Úpk©Ú.0Úps     r#   ú	<genexpr>zFTestDirectUserPermissions.test_get_objects_for_user.<locals>.<genexpr>d   ó   è ø€ Ò5¨ §¥Ñ5ùó   ‚)	r   r   r   r   r   r
   rB   Úsortedr^   ©r"   rX   rY   rD   s       r#   Útest_get_objects_for_userz3TestDirectUserPermissions.test_get_objects_for_user\   s¢   € Ü�o‰o×$Ñ$¨%Ð$Ó0ˆÜ�o‰o×$Ñ$¨%Ð$Ó0ˆÜ�M 4§8¡8¨SÔ1Ü�M 4§8¡8¨SÔ1ÜÐ$ d§h¡h°Ô4ä% d§h¡hÐ0EÓFˆØ×ÑœÑ5¨fÔ5Ó5Ü §¡¨¯©Ð 0Ó1õ	3r%   c                 óþ   — t         j                  j                  d¬«      }t        d| j                  |«       t        d| j                  |«       | j                  j                  |«      }| j                  |ddh«       y ©NrX   r   r3   rM   )r   r   r   r   r   Úget_all_permissionsrB   ©r"   rX   rD   s      r#   Útest_get_all_permissionsz2TestDirectUserPermissions.test_get_all_permissionsg   sd   € Ü�o‰o×$Ñ$¨%Ð$Ó0ˆÜ�M 4§8¡8¨SÔ1ÜÐ$ d§h¡h°Ô4à—‘×-Ñ-¨cÓ2ˆØ×Ñ˜ -Ð1AÐ!BÕCr%   c                 ó  — t         j                  j                  d¬«      }t        d| j                  |«       t        d| j                  |«       | j                  j                  «       }| j                  |t        «       «       y ri   )r   r   r   r   r   rj   rB   Úsetrk   s      r#   Ú"test_get_all_permissions_no_objectz<TestDirectUserPermissions.test_get_all_permissions_no_objecto   s^   € Ü�o‰o×$Ñ$¨%Ð$Ó0ˆÜ�M 4§8¡8¨SÔ1ÜÐ$ d§h¡h°Ô4à—‘×-Ñ-Ó/ˆØ×Ñ˜¤£Õ'r%   N)Ú__name__Ú
__module__Ú__qualname__r$   r0   r;   rE   rG   rP   rV   rg   rl   ro   r+   r%   r#   r   r      s6   „ ò=ò1ò
Hò$ò$ò
òò	3òDó(r%   r   c                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚTestDirectGroupPermissionsc                 óB  — t         j                  j                  ddd«      | _        t        j                  j                  d¬«      | _        | j                  j                  j                  | j                  «       t        j                  j                  d¬«      | _
        y ©Nr   r   r   Úadminsr   r   )r   r   r   r   r   r   rU   rS   rT   r   r    r!   s    r#   r$   z TestDirectGroupPermissions.setUpz   si   € Ü—<‘<×+Ñ+¨EÐ3DÀhÓOˆŒÜ—]‘]×)Ñ)¨xÐ)Ó8ˆŒ
Ø�‰�‰×Ñ˜DŸJ™JÔ'Ü—‘×-Ñ-°8Ð-Ó<ˆ�r%   c                 óJ   — d|dœ}t        j                  j                  di |¤ŽS r'   r,   r.   s      r#   r0   z#TestDirectGroupPermissions.get_perm€   r1   r%   c                 óü   — | j                  d«      }t        j                  j                  | j                  || j
                  ¬«       | j                  | j                  j                  d| j
                  «      «       y )Nr3   )rU   r5   r6   )	r0   r   r   r   rU   r    r7   r   r8   r9   s     r#   r;   zFTestDirectGroupPermissions.test_after_perm_is_created_without_shortcut„   s_   € Ø�}‰}˜]Ó+ˆô 	%×,Ñ,×3Ñ3Ø—*‘*ØØŸ<™<ð 	4ô 	
ð
 	�‰˜Ÿ™×)Ñ)¨-¸¿¹ÓFÕGr%   c                 óø   — t        d| j                  | j                  «       | j                  d| j                  dœ}t        j                  j
                  di |¤Žj                  «       }| j                  |d«       y )Nr3   ©r6   r>   rU   r?   r+   )r   rU   r    r   r   r@   rA   rB   rC   s      r#   rE   z+TestDirectGroupPermissions.test_assign_perm�   sb   € Ü�M 4§:¡:¨t¯|©|Ô<à"Ÿl™lØ$1Ø—Z‘Zñ
ˆô
 .×5Ñ5×<Ñ<ÑG¸wÑG×MÑMÓOˆØ×Ñ˜ Õ#r%   c                 ó¸  — t        d| j                  | j                  «       | j                  d| j                  dœ}t        j                  j
                  di |¤Žj                  «       }| j                  |d«       t        d| j                  | j                  «       t        j                  j
                  di |¤Žj                  «       }| j                  |d«       y )Nr3   r{   r?   r   r+   )	r   rU   r    r   r   r@   rA   rB   r   rC   s      r#   rG   z+TestDirectGroupPermissions.test_remove_permš   s¨   € Ü�M 4§:¡:¨t¯|©|Ô<à"Ÿl™lØ$1Ø—Z‘Zñ
ˆô
 .×5Ñ5×<Ñ<ÑG¸wÑG×MÑMÓOˆØ×Ñ˜ Ô#ä�M 4§:¡:¨t¯|©|Ô<Ü-×5Ñ5×<Ñ<ÑG¸wÑG×MÑMÓOˆØ×Ñ˜ Õ#r%   c                 ó¦  — t         j                  j                  d¬«       t         j                  j                  d¬«      }t        d| j                  | j
                  «       t        d| j                  | j
                  «       t        d|| j
                  «       | j                  t        | j
                  d¬«      | j                  ddg|dgi«       y )NÚmanagersr   rR   r3   rM   TrN   )r   r   r   r   rU   r    rB   r   )r"   rR   s     r#   Útest_get_groups_with_permsz5TestDirectGroupPermissions.test_get_groups_with_perms¨   s¡   € Ü�‰×Ñ *ÐÔ-Ü�}‰}×#Ñ#¨Ð#Ó0ˆÜ�M 4§:¡:¨t¯|©|Ô<ÜÐ$ d§j¡j°$·,±,Ô?ÜÐ$ d¨D¯L©LÔ9Ø×ÑÔ.¨t¯|©|È$ÔOà!ŸZ™Z¨-Ð9IÐ)JØ!Ð$4Ð#5ðõ	r%   c                 ó¨  — t         j                  j                  d¬«       t         j                  j                  d¬«      }t         j                  j                  d¬«      }t         j                  j                  d¬«      }t         j                  j                  d¬«      }t         j                  j                  d¬«      }t         j                  j                  d¬«      }t        d	| j                  | j
                  «       t        d
| j                  | j
                  «       ||||||fD ]0  }t        d	|| j
                  «       t        d
|| j
                  «       Œ2 | j                  d«      5  t        | j
                  d¬«      }d d d «       | j                  | j                  d	d
g|d	d
g|d	d
g|d	d
g|d	d
g|d	d
g|d	d
gi«       y # 1 sw Y   ŒBxY w)Nr~   r   rR   Údevs1Údevs2Údevs3Údevs4Údevs5r3   rM   é   TrN   )	r   r   r   r   rU   r    ÚassertNumQueriesr   rB   )	r"   rR   r�   r‚   rƒ   r„   r…   rU   rD   s	            r#   ÚPtest_get_groups_with_perms_doesnt_spawn_extra_queries_for_more_groups_with_permszkTestDirectGroupPermissions.test_get_groups_with_perms_doesnt_spawn_extra_queries_for_more_groups_with_perms´   s¨  € Ü�‰×Ñ *ÐÔ-Ü�}‰}×#Ñ#¨Ð#Ó0ˆÜ—‘×$Ñ$¨'Ð$Ó2ˆÜ—‘×$Ñ$¨'Ð$Ó2ˆÜ—‘×$Ñ$¨'Ð$Ó2ˆÜ—‘×$Ñ$¨'Ð$Ó2ˆÜ—‘×$Ñ$¨'Ð$Ó2ˆÜ�M 4§:¡:¨t¯|©|Ô<ÜÐ$ d§j¡j°$·,±,Ô?Ø˜E 5¨%°¸Ð>ò 	?ˆEÜ˜ u¨d¯l©lÔ;ÜÐ(¨%°·±Õ>ð	?ð ×"Ñ" 1Ó%ñ 	LÜ*¨4¯<©<ÀdÔKˆF÷	Lð 	×Ñ˜à!ŸZ™Z¨-Ð9IÐ)JØ! MÐ3CÐ#DØ" ]Ð4DÐ$EØ" ]Ð4DÐ$EØ" ]Ð4DÐ$EØ" ]Ð4DÐ$EØ" ]Ð4DÐ$Eðõ		÷	Lð 	Lús   Å/GÇGc                 ó¼  — t         j                  j                  d¬«      }t         j                  j                  d¬«      }t        d| j                  |«       t        d| j                  |«       t        d| j                  |«       t        | j                  d«      }| j                  t        d„ |D «       «      t        |j                  |j                  g«      «       y )NrX   r   rY   r3   rM   rZ   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr\   r]   r_   s     r#   rb   zHTestDirectGroupPermissions.test_get_objects_for_group.<locals>.<genexpr>Ø   rc   rd   )	r   r   r   r   rU   r	   rB   re   r^   rf   s       r#   Útest_get_objects_for_groupz5TestDirectGroupPermissions.test_get_objects_for_groupÐ   s¢   € Ü�o‰o×$Ñ$¨%Ð$Ó0ˆÜ�o‰o×$Ñ$¨%Ð$Ó0ˆÜ�M 4§:¡:¨sÔ3Ü�M 4§:¡:¨sÔ3ÜÐ$ d§j¡j°#Ô6ä& t§z¡zÐ3HÓIˆØ×ÑœÑ5¨fÔ5Ó5Ü §¡¨¯©Ð 0Ó1õ	3r%   N)rp   rq   rr   r$   r0   r;   rE   rG   r   rˆ   r‹   r+   r%   r#   rt   rt   x   s+   „ ò=ò1ò
Hò$ò$ò
òó8	3r%   rt   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)Ú)TestMixedDirectAndGenericObjectPermissionc                 óŒ  — t         j                  j                  ddd«      | _        t        j                  j                  d¬«      | _        | j                  j                  j                  | j                  «       t        j                  j                  d¬«      | _
        t        j                  j                  d¬«      | _        y rv   )r   r   r   r   r   r   rU   rS   rT   r   Úmixedr   Úreverse_mixedr!   s    r#   r$   z/TestMixedDirectAndGenericObjectPermission.setUpÞ   s…   € Ü—<‘<×+Ñ+¨EÐ3DÀhÓOˆŒÜ—]‘]×)Ñ)¨xÐ)Ó8ˆŒ
Ø�‰�‰×Ñ˜DŸJ™JÔ'Ü—]‘]×)Ñ)¨xÐ)Ó8ˆŒ
Ü)×1Ñ1×8Ñ8¸hÐ8ÓGˆÕr%   c                 óÌ  — t         j                  j                  ddd«       t         j                  j                  ddd«      }t        j                  j	                  d¬«      }| j
                  j                  j                  |«       t        d| j
                  | j                  «       t        d|| j                  «       t        d|| j                  «       | j                  t        | j                  d	¬
«      | j
                  ddg|dgi«       t        | j
                  d«      }| j                  t        d„ |D «       «      t        | j                  j                  g«      «       y )NrI   rJ   rK   rL   rR   r   Ú	add_mixedÚchange_mixedTrN   ztestapp.add_mixedc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr\   r]   r_   s     r#   rb   zbTestMixedDirectAndGenericObjectPermission.test_get_users_with_perms_plus_groups.<locals>.<genexpr>ó   rc   rd   )r   r   r   r   r   r   rS   rT   r   r�   rB   r   r
   re   r^   ©r"   rK   rU   rD   s       r#   rV   zOTestMixedDirectAndGenericObjectPermission.test_get_users_with_perms_plus_groupså   s
  € Ü�‰× Ñ  Ð):¸FÔCÜ�|‰|×'Ñ'¨Ð0AÀ6ÓJˆÜ—‘×$Ñ$¨&Ð$Ó1ˆØ�‰�‰×Ñ˜EÔ"Ü�K §¡¨4¯:©:Ô6Ü�N E¨4¯:©:Ô6Ü�N D¨$¯*©*Ô5Ø×ÑÔ-¨d¯j©jÀtÔLà!ŸX™X¨°^Ð'DØ! NÐ#3ðô	ô
 & d§h¡hÐ0CÓDˆØ×ÑœÑ5¨fÔ5Ó5Ü §¡§¡ Ó0õ	2r%   c                 óÌ  — t         j                  j                  ddd«       t         j                  j                  ddd«      }t        j                  j	                  d¬«      }| j
                  j                  j                  |«       t        d| j
                  | j                  «       t        d|| j                  «       t        d|| j                  «       | j                  t        | j                  d	¬
«      | j
                  ddg|dgi«       t        | j
                  d«      }| j                  t        d„ |D «       «      t        | j                  j                  g«      «       y )NrI   rJ   rK   rL   rR   r   Úadd_reversemixedÚchange_reversemixedTrN   ztestapp.add_reversemixedc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr\   r]   r_   s     r#   rb   zpTestMixedDirectAndGenericObjectPermission.test_get_users_with_perms_plus_groups_reverse_mixed.<locals>.<genexpr>  rc   rd   )r   r   r   r   r   r   rS   rT   r   r�   rB   r   r
   re   r^   r•   s       r#   Ú3test_get_users_with_perms_plus_groups_reverse_mixedz]TestMixedDirectAndGenericObjectPermission.test_get_users_with_perms_plus_groups_reverse_mixedö   s  € Ü�‰× Ñ  Ð):¸FÔCÜ�|‰|×'Ñ'¨Ð0AÀ6ÓJˆÜ—‘×$Ñ$¨&Ð$Ó1ˆØ�‰�‰×Ñ˜EÔ"ÜÐ&¨¯©°$×2DÑ2DÔEÜÐ)¨5°$×2DÑ2DÔEÜÐ)¨4°×1CÑ1CÔDØ×ÑÔ-¨d×.@Ñ.@ÈtÔTà!ŸX™XÐ(:Ð<QÐ'RØ!Ð$9Ð#:ðô	ô
 & d§h¡hÐ0JÓKˆØ×ÑœÑ5¨fÔ5Ó5Ü ×!3Ñ!3×!6Ñ!6Ð 7Ó8õ	:r%   N)rp   rq   rr   r$   rV   rš   r+   r%   r#   r�   r�   Ü   s   „ òHò2ó":r%   r�   N)Údjango.contrib.authr   Údjango.contrib.auth.modelsr   r   Údjango.testr   Úguardian.shortcutsr   r   r	   r
   r   r   Úguardian.testapp.modelsr   r   r   r   r   Úguardian.testapp.tests.confr   r   r   rt   r�   r+   r%   r#   ú<module>r¡      s�   ðÝ .ß 8Ý  å *Ý 4Ý 4Ý 3Ý 3Ý *ß 7Ý +Ý @Ý ?Ý 9áÓ€ð ô`( ó `(ó ð`(ðF ô`3 ó `3ó ð`3ðF ô(:°ó (:ó ñ(:r%   