Ë
    ¸2Úià  ã                   ó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 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  G d„ de«      Z G d„ de«      Z G d„ dee«      a G d„ dee«      Z G d„ dee«      Z G d„ dee«      Z  G d„ de
«      Z!y) é    )Úget_user_model)ÚAnonymousUser)ÚImproperlyConfigured)ÚPermissionDenied©ÚHttpResponse)ÚTestCase)ÚRequestFactory)ÚView)ÚListView)Úassign_perm)Úmock)ÚLoginRequiredMixin)ÚPermissionRequiredMixin)ÚPermissionListMixiné   )ÚPostc                   ó   — e Zd Zy)ÚDatabaseRemovedErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úY/var/www/html/acx/venv/lib/python3.12/site-packages/guardian/testapp/tests/test_mixins.pyr   r      s   „ Ør   r   c                   ó   — e Zd Zd„ Zy)ÚRemoveDatabaseViewc                 ó   — t        d«      ‚)Nz%You've just allowed db to be removed!)r   )ÚselfÚrequestÚargsÚkwargss       r   ÚgetzRemoveDatabaseView.get   s   € Ü"Ð#JÓKÐKr   N)r   r   r   r#   r   r   r   r   r      s   „ óLr   r   c                   ó   — e Zd ZdZdZy)ÚTestViewútestapp.change_postN)r   r   r   Úpermission_requiredÚobjectr   r   r   r%   r%      s   „ Ø/ÐØ�Fr   r%   c                   ó   — e Zd ZdZy)ÚNoObjectViewr&   N)r   r   r   r'   r   r   r   r*   r*   #   s   „ Ø/Ñr   r*   c                   ó   — e Zd ZdZdZy)ÚGlobalNoObjectViewútestapp.add_postTN)r   r   r   r'   Úaccept_global_permsr   r   r   r,   r,   '   s   „ Ø,ÐØÑr   r,   c                   ó   — e Zd ZeZdZdZy)ÚPostPermissionListViewr&   z	list.htmlN)r   r   r   r   Úmodelr'   Útemplate_namer   r   r   r0   r0   ,   s   „ Ø€EØ/ÐØ�Mr   r0   c                   óT   — 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y)ÚTestViewMixinsc                 óú   — t         j                  j                  d¬«      | _        t	        «       | _        t        «       j                  j                  ddd«      | _        | j                  j                  dd¬«       y )Nzfoo-post-title)ÚtitleÚjoezjoe@doe.comÚdoe)ÚusernameÚpassword)r   ÚobjectsÚcreateÚpostr
   Úfactoryr   Úcreate_userÚuserÚclientÚlogin)r   s    r   ÚsetUpzTestViewMixins.setUp4   s_   € Ü—L‘L×'Ñ'Ð.>Ð'Ó?ˆŒ	Ü%Ó'ˆŒÜ"Ó$×,Ñ,×8Ñ8Ø�= %ó)ˆŒ	à�‰×Ñ 5°5ÐÕ9r   c                 ó~  ‡ — ‰ j                   j                  d«      }‰ j                  |_        t        j	                  ‰ j
                  ¬«      } ||«      }‰ j                  |j                  d«       ˆ fd„t        _        t        j	                  «       } ||«      }‰ j                  |j                  d«       t        `y)úl
        This test would fail if permission is checked **after** view is
        actually resolved.
        ú/©r(   é.  c                 ó   •— ‰j                   S )N)r=   )Úinstancer   s    €r   ú<lambda>zSTestViewMixins.test_permission_is_checked_before_view_is_computed.<locals>.<lambda>H   s   ø€ ¨t¯y©y€ r   N)	r>   r#   r@   r%   Úas_viewr=   ÚassertEqualÚstatus_codeÚ
get_object©r   r    ÚviewÚresponses   `   r   Ú2test_permission_is_checked_before_view_is_computedzATestViewMixins.test_permission_is_checked_before_view_is_computed;   s—   ø€ ð
 —,‘,×"Ñ" 3Ó'ˆØ—y‘yˆŒä×Ñ t§y¡yÐÓ1ˆÙ˜“=ˆØ×Ñ˜×-Ñ-¨sÔ3ó 9ŒÔÜ×ÑÓ!ˆÙ˜“=ˆØ×Ñ˜×-Ñ-¨sÔ3ÜÑr   c                 ó  — | j                   j                  d«      }| j                  |_        t        j	                  d| j
                  ¬«      }| j                  t        «      5   ||«       ddd«       y# 1 sw Y   yxY w)rE   rF   T)Úraise_exceptionr(   N)r>   r#   r@   r%   rL   r=   ÚassertRaisesr   ©r   r    rQ   s      r   ÚEtest_permission_is_checked_before_view_is_computed_perm_denied_raisedzTTestViewMixins.test_permission_is_checked_before_view_is_computed_perm_denied_raisedN   sg   € ð
 —,‘,×"Ñ" 3Ó'ˆØ—y‘yˆŒÜ×Ñ°¸T¿Y¹YÐÓGˆØ×ÑÔ/Ó0ñ 	Ù�ŒM÷	÷ 	ñ 	ús   Á#	A5Á5A>c                 óN  — | j                   j                  d«      }| j                  |_        |j                  j                  d| j                  «       t
        j                  d| j                  ¬«      }| j                  t        «      5   ||«       ddd«       y# 1 sw Y   yxY w)rE   rF   Úchange_postN)r'   r(   )	r>   r#   r@   Úadd_obj_permr=   r%   rL   rV   r   rW   s      r   Ú0test_permission_required_view_configured_wronglyz?TestViewMixins.test_permission_required_view_configured_wronglyY   s   € ð
 —,‘,×"Ñ" 3Ó'ˆØ—y‘yˆŒØ�‰×!Ñ! -°·±Ô;Ü×Ñ°DÀÇÁÐÓKˆØ×ÑÔ3Ó4ñ 	Ù�ŒM÷	÷ 	ñ 	ús   Â		BÂB$c                 óL  — | j                   j                  d«      }| j                  |_        |j                  j                  d| j                  «       t
        j                  | j                  ¬«      }| j                  t        «      5   ||«       ddd«       y# 1 sw Y   yxY w)rE   rF   rZ   rG   N)	r>   r#   r@   r[   r=   r%   rL   rV   r   rW   s      r   Útest_permission_requiredz'TestViewMixins.test_permission_requirede   s}   € ð
 —,‘,×"Ñ" 3Ó'ˆØ—y‘yˆŒØ�‰×!Ñ! -°·±Ô;Ü×Ñ t§y¡yÐÓ1ˆØ×ÑÔ3Ó4ñ 	Ù�ŒM÷	÷ 	ñ 	ús   Â	BÂB#c                 ó  — | j                   j                  d«      }| j                  |_        |j                  j                  d| j                  «       t
        j                  «       } ||«      }| j                  |j                  d«       y)zk
        This test would fail if permission is checked on a view's
        object when it has none
        rF   rZ   rH   N)	r>   r#   r@   r[   r=   r*   rL   rM   rN   rP   s       r   Ú"test_permission_required_no_objectz1TestViewMixins.test_permission_required_no_objectq   sh   € ð —,‘,×"Ñ" 3Ó'ˆØ—y‘yˆŒØ�‰×!Ñ! -°·±Ô;Ü×#Ñ#Ó%ˆÙ˜“=ˆØ×Ñ˜×-Ñ-¨sÕ3r   c                 óÌ   — | j                   j                  d«      }| j                  |_        t        j	                  «       } ||«      }| j                  |j                  d«       y)z‡
        This test would fail if permission is checked on a view's
        object when it not set and **no** global permission
        rF   rH   N)r>   r#   r@   r,   rL   rM   rN   rP   s       r   Ú)test_permission_required_global_no_objectz8TestViewMixins.test_permission_required_global_no_object~   sP   € ð —,‘,×"Ñ" 3Ó'ˆØ—y‘yˆŒÜ!×)Ñ)Ó+ˆÙ˜“=ˆØ×Ñ˜×-Ñ-¨sÕ3r   c                 ó  — | j                   j                  d«      }| j                  |_        t        d|j                  «       t        j                  «       }| j                  t        «      5   ||«       ddd«       y# 1 sw Y   yxY w)zˆ
        This test would fail if permission is checked on a view's
        object when it not set and **has** global permission
        rF   r-   N)r>   r#   r@   r   r,   rL   rV   r   rW   s      r   Ú(test_permission_granted_global_no_objectz7TestViewMixins.test_permission_granted_global_no_objectŠ   sk   € ð —,‘,×"Ñ" 3Ó'ˆØ—y‘yˆŒÜÐ&¨¯©Ô5Ü!×)Ñ)Ó+ˆØ×ÑÔ3Ó4ñ 	Ù�ŒM÷	÷ 	ñ 	ús   Á,	A>Á>Bc                 óX  —  G d„ dt         «      }| j                  j                  d«      }| j                  |_        |j                  j	                  d| j
                  «       ddg|_        |j                  | j
                  ¬«      } ||«      }| j                  |j                  d«       |j                  j                  ||| j
                  ¬	«       |j                  j	                  d
| j
                  «       | j                  t        «      5   ||«       ddd«       y# 1 sw Y   yxY w)rE   c                   ó.   — e Zd Z ej                  «       Zy)úCTestViewMixins.test_permission_required_as_list.<locals>.SecretViewN)r   r   r   r   ÚMockÚon_permission_check_failr   r   r   Ú
SecretViewrg   Ÿ   s   „ Ø'0 t§y¡y£{Ñ$r   rj   rF   rZ   r&   r-   rG   rH   )ÚobjÚadd_postN)r%   r>   r#   r@   r[   r=   r'   rL   rM   rN   ri   Úassert_called_once_withrV   r   ©r   rj   r    rQ   rR   s        r   Ú test_permission_required_as_listz/TestViewMixins.test_permission_required_as_list—   sû   € ô	3œô 	3ð —,‘,×"Ñ" 3Ó'ˆØ—y‘yˆŒØ�‰×!Ñ! -°·±Ô;Ø*?Ø*<ð*>ˆ
Ô&à×!Ñ!¨¯©Ð!Ó3ˆÙ˜“=ˆØ×Ñ˜×-Ñ-¨sÔ3Ø×+Ñ+×CÑCÀGØDLÐRV×R[ÑR[ð 	Dô 	]ð 	�‰×!Ñ! *¨d¯i©iÔ8Ø×ÑÔ3Ó4ñ 	Ù�ŒM÷	÷ 	ñ 	ús   Ä	D Ä D)c                 ó´  —  G d„ dt         t        «      }| j                  j                  d«      }t	        «       |_        |j                  «       } ||«      }| j                  |j                  d«       | j                  |d   d«       | j
                  |_         ||«      }| j                  |j                  d«       | j                  |j                  d«       y )	Nc                   ó   — e Zd ZdZdZd„ Zy)ú<TestViewMixins.test_login_required_mixin.<locals>.SecretViewÚfoobarz/let-me-in/c                 ó   — t        d«      S )Nzsecret-viewr   )r   r    s     r   r#   z@TestViewMixins.test_login_required_mixin.<locals>.SecretView.get·   s   € Ü# MÓ2Ð2r   N)r   r   r   Úredirect_field_nameÚ	login_urlr#   r   r   r   rj   rr   ³   s   „ Ø"*ÐØ%ˆIó3r   rj   z/some-secret-page/rH   ÚLocationz%/let-me-in/?foobar=/some-secret-page/éÈ   s   secret-view)
r   r   r>   r#   r   r@   rL   rM   rN   Úcontentrn   s        r   Útest_login_required_mixinz(TestViewMixins.test_login_required_mixin±   s¹   € ô	3Ô+¬Tô 	3ð —,‘,×"Ñ"Ð#7Ó8ˆÜ$“ˆŒà×!Ñ!Ó#ˆá˜“=ˆØ×Ñ˜×-Ñ-¨sÔ3Ø×Ñ˜ *Ñ-Ø@ô	Bð —y‘yˆŒÙ˜“=ˆØ×Ñ˜×-Ñ-¨sÔ3Ø×Ñ˜×)Ñ)¨>Õ:r   c                 óV  — | j                   j                  d«      }t        «       |_        t        j                  «       } ||«      }| j                  |d«       | j                  |_        |j                  j                  d| j                  «        ||«      }| j                  |d«       y )Nz/some-secret-list/s   foo-post-titlerZ   )
r>   r#   r   r@   r0   rL   ÚassertNotContainsr[   r=   ÚassertContainsrP   s       r   Útest_list_permissionz#TestViewMixins.test_list_permissionÉ   s…   € Ø—,‘,×"Ñ"Ð#7Ó8ˆÜ$“ˆŒä%×-Ñ-Ó/ˆá˜“=ˆØ×Ñ˜xÐ):Ô;à—y‘yˆŒØ�‰×!Ñ! -°·±Ô;á˜“=ˆØ×Ñ˜HÐ&7Õ8r   c                 ó¼  — | j                   j                  d«      }| j                  |_        |j                  j                  d| j                  «       | j                  |j                  j                  d| j                  «      d«       | j                  |j                  j                  d| j                  «      d«       t        j                  dddg| j                  ¬«      }| j                  t        «      5   ||«       d d d «       t        j                  dddg| j                  ¬«      } ||«      }| j                  |j                  d«       y # 1 sw Y   ŒRxY w)NrF   Ú	view_postTrZ   F)Úany_permr'   r(   rH   )r>   r#   r@   r[   r=   ÚassertIsÚhas_permr%   rL   rV   r   rM   rN   rP   s       r   Útest_any_perm_parameterz&TestViewMixins.test_any_perm_parameterØ   s  € Ø—,‘,×"Ñ" 3Ó'ˆØ—y‘yˆŒØ�‰×!Ñ! +¨t¯y©yÔ9Ø�‰�g—l‘l×+Ñ+¨K¸¿¹ÓCÀTÔJØ�‰�g—l‘l×+Ñ+¨M¸4¿9¹9ÓEÀuÔMä×ÑØØ!.°Ð <Ø—9‘9ð  ó 
ˆð
 ×ÑÔ3Ó4ñ 	Ù�ŒM÷	ô ×ÑØØ!.°Ð <Ø—9‘9ð  ó 
ˆñ
 ˜“=ˆØ×Ñ˜×-Ñ-¨sÕ3÷	ð 	ús   Ã8	EÅEN)r   r   r   rC   rS   rX   r\   r^   r`   rb   rd   ro   rz   r~   r„   r   r   r   r4   r4   2   s>   „ ò:ò ò&	ò
ò
ò4ò
4òòò4;ò09ó4r   r4   N)"Údjango.contrib.authr   Údjango.contrib.auth.modelsr   Údjango.core.exceptionsr   r   Údjango.httpr   Údjango.testr	   Údjango.test.clientr
   Údjango.views.genericr   r   Úguardian.shortcutsr   Úunittestr   Úguardian.mixinsr   r   r   Úmodelsr   Ú	Exceptionr   r   r%   r*   r,   r0   r4   r   r   r   ú<module>r‘      s™   ðÝ .Ý 4Ý 7Ý 3Ý $Ý  Ý -Ý %Ý )å *Ý Ý .Ý 3Ý /å ô	˜9ô 	ôL˜ô LôÐ&Ð(:ô ô
0Ð*Ð,>ô 0ôÐ0Ð2Dô ô
 Ð0°(ô  ô{4�Xõ {4r   