Ë
    ¸2Úi3  ã                   ó  — 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mZmZ dd
lmZ ddlmZ ddlmZmZmZ  G d„ de«      Z G d„ de«      Zej4                  j7                  ee«        G d„ de«      Zy)é    )Úunicode_literals)Úadmin)Ú	AdminSite)Ú
ChangeList)ÚUser)Úmodels)ÚRequestFactoryÚTestCaseé   )ÚSafeDeleteAdminÚSafeDeleteAdminFilterÚhighlight_deleted)Ú
FIELD_NAME)ÚSafeDeleteModelé   )ÚArticleÚAuthorÚCategoryc                   ó0   — e Zd Z ej                  e«      Zy)ÚOrderN)Ú__name__Ú
__module__Ú__qualname__r   ÚManyToManyFieldr   Úarticles© ó    úR/var/www/html/acx/venv/lib/python3.12/site-packages/safedelete/tests/test_admin.pyr   r      s   „ Ø%ˆv×%Ñ% gÓ.�Hr   r   c                   ó,   — e Zd Zefej
                  z   Zy)ÚCategoryAdminN)r   r   r   r   r   Úlist_displayr   r   r   r    r       s   „ Ø%Ð'¨/×*FÑ*FÑF�Lr   r    c                   óF   — 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)ÚAdminTestCasezsafedelete.tests.urlsc                 óŽ  — t         j                  j                  «       | _        t        j                  j                  d¬«      t        j                  j                  «       t        j                  j                  «       f| _        t        | j                  ¬«      t        | j                  | j
                  d   ¬«      t        | j                  | j
                  d   ¬«      f| _        | j
                  d   j                  «        t        «       | _
        | j                  j                  di «      | _        t        j                  t        t        «       «      | _        t#        t        t        «       «      | _        t&        j                  j)                  dd	d
«      }| j*                  j-                  dd
¬«       || j                  _        y )Nõ   Ã©©Úname)Úauthorr   )r(   Úcategoryr   ú/Úsuperzemail@domain.comÚsecret)ÚusernameÚpassword)r   ÚobjectsÚcreater(   r   Ú
categoriesr   r   Údeleter	   Úrequest_factoryÚgetÚrequestr   Ú
ModelAdminr   Úmodeladmin_defaultr    Ú
modeladminr   Úcreate_superuserÚclientÚloginÚuser)Úselfr<   s     r   ÚsetUpzAdminTestCase.setUp   sO  € Ü—n‘n×+Ñ+Ó-ˆŒô ×Ñ×#Ñ#¨Ð#Ó.Ü×Ñ×#Ñ#Ó%Ü×Ñ×#Ñ#Ó%ð
ˆŒô Ø—{‘{ôô Ø—{‘{ØŸ™¨Ñ+ôô Ø—{‘{ØŸ™¨Ñ+ôð
ˆŒð 	�‰˜Ñ×!Ñ!Ô#ä-Ó/ˆÔØ×+Ñ+×/Ñ/°°RÓ8ˆŒä"'×"2Ñ"2´8¼Y»[Ó"IˆÔÜ'¬´)³+Ó>ˆŒä�|‰|×,Ñ,¨WÐ6HÈ(ÓSˆØ�‰×Ñ 7°XÐÔ>Ø ˆ�‰Õr   c                 ó8   — | j                   j                  «        y )N)r:   Úlogout)r=   s    r   ÚtearDownzAdminTestCase.tearDownB   s   € Ø�‰×ÑÕr   c                 ó~  — |||j                   |j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                  |g}t        |d«      r|j                  |j                  «       t        |d«      r|j                  |j                  «       t        |Ž S )NÚsortable_byÚsearch_help_text)r!   Úlist_display_linksÚlist_filterÚdate_hierarchyÚsearch_fieldsÚlist_select_relatedÚlist_per_pageÚlist_max_show_allÚlist_editableÚhasattrÚappendrC   rD   r   )r=   r5   Úmodelr8   Úargss        r   Úget_changelistzAdminTestCase.get_changelistE   s£   € à�U˜J×3Ñ3Ø×)Ñ)¨:×+AÑ+AØ×%Ñ% z×'?Ñ'?Ø×*Ñ*¨J×,DÑ,DØ×(Ñ(¨*×*BÑ*BØð
ˆô �:˜}Ô-Ø�K‰K˜
×.Ñ.Ô/ä�:Ð1Ô2Ø�K‰K˜
×3Ñ3Ô4Ü˜4Ð Ð r   c                 óö  — | j                  | j                  t        | j                  «      }| j                  | j                  t        | j                  «      }| j                  |j                  | j                  «      d   d   j                  t        j                  dd«      «       | j                  |j                  j                  «       d«       | j                  |j                  j                  «       d«       y )Nr   Ú_ú é   r   )rQ   r5   r   r7   r8   ÚassertEqualÚget_filtersÚtitler   ÚreplaceÚquerysetÚcount)r=   Úchangelist_defaultÚ
changelists      r   Útest_admin_modelzAdminTestCase.test_admin_modelV   sº   € Ø!×0Ñ0°·±¼xÈ×I`ÑI`ÓaÐØ×(Ñ(¨¯©´xÀÇÁÓQˆ
Ø×Ñ˜×/Ñ/°·±Ó=¸aÑ@ÀÑC×IÑIÌ:×K]ÑK]Ð^aÐcfÓKgÔhØ×Ñ˜×,Ñ,×2Ñ2Ó4°aÔ8Ø×ÑÐ+×4Ñ4×:Ñ:Ó<¸aÕ@r   c                 óš   — | j                   j                  d«      }dj                  | j                  d   «      }| j	                  ||«       y)z1Test deleted objects are in red in admin listing.ú/admin/safedelete/category/ú <span class="deleted">{0}</span>r   N)r:   r4   Úformatr1   ÚassertContains©r=   ÚrespÚlines      r   Útest_highlight_deletedz$AdminTestCase.test_highlight_deleted]   s>   € à�{‰{�‰Ð<Ó=ˆØ1×8Ñ8¸¿¹ÈÑ9KÓLˆØ×Ñ˜D $Õ'r   c                 óÞ   — d| j                   _        d| j                   _        | j                  j	                  d«      }dj                  | j                  d   «      }| j                  ||«       y )Nr'   )Úhighlight_deleted_fieldr`   ra   r   )r8   Úfield_to_highlightr!   r:   r4   rb   r1   rc   rd   s      r   Útest_highlight_deleted_fieldz*AdminTestCase.test_highlight_deleted_fieldc   sV   € Ø-3ˆ�‰Ô*Ø'Cˆ�‰Ô$Ø�{‰{�‰Ð<Ó=ˆØ1×8Ñ8¸¿¹ÈÑ9KÓLˆØ×Ñ˜D $Õ'r   c                 óÎ  — | j                   xj                  t        fz  c_        | j                  d«      5  | j	                  | j
                  t        | j                   «      }|j                  | j
                  «      }| j                  t        j                  j                  | j                  d   j                  ¬«      |«       | j                  t        j                  j                  | j                  d   j                  ¬«      |«       d d d «       | j                  d«      5  | j                  j                  dt        t        i«      }| j
                  j                   |_        | j                   j#                  |«      }|j                  |«      }| j                  t        j                  j                  | j                  d   j                  ¬«      |«       | j                  t        j                  j                  | j                  d   j                  ¬«      |«       d d d «       | j                  d«      5  | j                  j                  dt        t        dz   i«      }| j
                  j                   |_        | j                   j#                  |«      }|j                  |«      }| j                  t        j                  j                  | j                  d   j                  ¬«      |«       | j                  t        j                  j                  | j                  d   j                  ¬«      |«       d d d «       y # 1 sw Y   �Œ8xY w# 1 sw Y   �Œ0xY w# 1 sw Y   y xY w)	NÚtest_filter_unfilteredr   ©Úpkr   Útest_filter_equals_FIELD_NAMEr*   Ú"test_filter_equals_FIELD_NAME_onlyÚ_only)r8   rF   r   ÚsubTestrQ   r5   r   Úget_querysetÚassertInÚall_objectsr4   r1   ro   ÚassertNotInr3   r   r<   Úget_changelist_instance)r=   r]   rZ   r5   s       r   Útest_soft_delete_admin_filterz+AdminTestCase.test_soft_delete_admin_filterj   sœ  € Ø�‰×#Ò#Ô(=Ð'?Ñ?Õ#à�\‰\Ð2Ó3ñ 	[Ø×,Ñ,¨T¯\©\¼8ÀTÇ_Á_ÓUˆJØ!×.Ñ.¨t¯|©|Ó<ˆHØ�M‰Mœ(×.Ñ.×2Ñ2°d·o±oÀaÑ6H×6KÑ6KÐ2ÓLÈhÔWØ×ÑœX×1Ñ1×5Ñ5¸¿¹ÈÑ9K×9NÑ9NÐ5ÓOÐQYÔZ÷		[ð �\‰\Ð9Ó:ñ 	XØ×*Ñ*×.Ñ.¨s´ZÄÐ4LÓMˆGØŸ<™<×,Ñ,ˆGŒLØŸ™×@Ñ@ÀÓIˆJØ!×.Ñ.¨wÓ7ˆHØ�M‰Mœ(×.Ñ.×2Ñ2°d·o±oÀaÑ6H×6KÑ6KÐ2ÓLÈhÔWØ�M‰Mœ(×.Ñ.×2Ñ2°d·o±oÀaÑ6H×6KÑ6KÐ2ÓLÈhÔW÷	Xð �\‰\Ð>Ó?ñ 	XØ×*Ñ*×.Ñ.¨s´ZÄÈgÑAUÐ4VÓWˆGØŸ<™<×,Ñ,ˆGŒLØŸ™×@Ñ@ÀÓIˆJØ!×.Ñ.¨wÓ7ˆHØ×ÑœX×1Ñ1×5Ñ5¸¿¹ÈÑ9K×9NÑ9NÐ5ÓOÐQYÔZØ�M‰Mœ(×.Ñ.×2Ñ2°d·o±oÀaÑ6H×6KÑ6KÐ2ÓLÈhÔW÷	Xð 	X÷	[ñ 	[ú÷	Xñ 	Xú÷	Xð 	Xús&   ¶CMÄ$C<MÈ9C?MÍMÍMÍM$c                 ó    — t         j                  j                  d¬«      f | j                  j	                  d«      }| j                  |d«       y)z"Test whether admin XSS is blocked.z<script>alert(42)</script>r&   r`   N)r   r/   r0   r:   r4   ÚassertNotContains)r=   re   s     r   Útest_admin_xsszAdminTestCase.test_admin_xssƒ   sA   € ä×Ñ×ÑÐ%AÐÓBÑCØ�{‰{�‰Ð<Ó=ˆà×Ñ˜tÐ%AÕBr   c                 ó„  — | j                   j                  dddg| j                  d   j                  gdœ¬«      }| j	                  |d«       t
        j                  j                  | j                  d   j                  ¬«      }| j                  t        | j                  d   t        «      «       | j                   j                  dddgd	| j                  d   j                  gd
œ¬«      }t
        j                  j                  | j                  d   j                  ¬«      }| j                  t        |t        «      «       y)z0Test objects are undeleted and action is logged.r`   r   Úundelete_selectedr   )ÚindexÚactionÚ_selected_action)Údataz.safedelete/undelete_selected_confirmation.htmlrn   T)r   r€   Úpostr�   N)r:   rƒ   r1   ro   ÚassertTemplateUsedr   rv   r4   Ú
assertTrueÚgetattrr   r/   ÚassertFalse)r=   re   r)   s      r   Útest_admin_undelete_actionz(AdminTestCase.test_admin_undelete_actionŠ   s%  € à�{‰{×ÑÐ =ØØ*Ð+Ø!%§¡°Ñ!3×!6Ñ!6Ð 7ñE
Ðó ˆð
 	×Ñ Ð&VÔWÜ×'Ñ'×+Ñ+Ø�‰˜qÑ!×$Ñ$ð ,ó 
ˆð 	�‰œ §¡°Ñ 2´JÓ?Ô@à�{‰{×ÑÐ =ØØ*Ð+ØØ!%§¡°Ñ!3×!6Ñ!6Ð 7ñ	E
Ðó ˆô ×#Ñ#×'Ñ'Ø�‰˜qÑ!×$Ñ$ð (ó 
ˆð 	×Ñœ ¬:Ó6Õ7r   N)r   r   r   Úurlsr>   rA   rQ   r^   rg   rk   ry   r|   rˆ   r   r   r   r#   r#      s8   „ Ø"€Dò!!òFò!ò"Aò(ò(òXò2Có8r   r#   N)Ú
__future__r   Údjango.contribr   Údjango.contrib.admin.sitesr   Údjango.contrib.admin.views.mainr   Údjango.contrib.auth.modelsr   Ú	django.dbr   Údjango.testr	   r
   r   r   r   Úconfigr   r   r   r   r   r   r    ÚsiteÚregisterr#   r   r   r   ú<module>r”      sj   ðå 'å  Ý 0Ý 6Ý +Ý ß 0ç MÑ MÝ Ý $ß -Ñ -ô/ˆOô /ôG�Oô Gð ‡
�
× Ñ �H˜mÔ ,ôD8�Hõ D8r   