ó
    Éj!  ã                   óv   • S SK rS SKJs  Jr  S SKJrJrJ	r	J
r
Jr  S rS rS rS rS rS rS	 rS
 rS rS rg)é    N)ÚADMIN_PASSWORDÚDIRECTOR_PASSWORDÚOTHER_DIRECTOR_PASSWORDÚSCHOOLÚOTHER_SCHOOLc              ƒ   óò  #   • U R                  SSS0S9I S h  v•N nUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S	.-  nS
SU0-  n[        [        R                  " U5      5      eS =n=pCg  NÜ7f)Nú/api/admin/loginÚpasswordznot-the-password©Újsoné‘  ©ú==©z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚr©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7)
ÚpostÚstatus_codeÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanation©Úclientr   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8s          ÚXD:\Ingenieria\TRABAJOS ONLINE\Projects\11- Photo School\backend\tests\test_admin_auth.pyÚtest_login_wrong_password_401r*      s–   é € Ø�k‰kÐ,°JÐ@RÐ3SˆkÐT×T€AØ�=‰=Ð˜CÐ˜CÑ×××Òˆ=×××××Õˆ1×××Ñˆ1××Õˆ=××Ó˜C××××××Ôñ 	Uùó   ‚C7˜C5™CC7c              ƒ   ó´  #   • U R                  SS[        0S9I S h  v•N nUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nS	S
U0-  n[        [        R                  " U5      5      eS =n=pCUR                  5       nUS   nSoHU:H  o™(       do  [        R                  " SU	4SX„45      [        R                  " U5      [        R                  " U5      S.-  n
SSU
0-  n[        [        R                  " U5      5      eS =n=p”US   oˆ(       d:  SS[        R                  " U5      0-  n[        [        R                  " U5      5      eS ng  GN¹7f)Nr	   r
   r   éÈ   r   r   r   r   r   r   ÚroleÚoperator)z%(py1)s == %(py4)s©Úpy1Úpy4úassert %(py6)sÚpy6Útokenzassert %(py1)sr1   )r   r   r   r   r   r   r   r   r   r    r!   r   )r#   r   r$   r%   r&   r'   r(   ÚbodyÚ@py_assert0Ú@py_assert2Ú@py_format5Ú@py_format7Ú@py_format2s                r)   Útest_login_operator_okr<   	   s  é € Ø�k‰kÐ,°JÄÐ3OˆkÐP×P€AØ�=‰=Ð˜CÐ˜CÑ×××Òˆ=×××××Õˆ1×××Ñˆ1××Õˆ=××Ó˜C××××××ÓØ�6‰6‹8€DØ�‰<Ð%˜:Ð%˜:Ñ%×%×%×%Ò%ˆ<×%×%Ô%ˆ<×%×%Ó%˜:×%×%×%×%×%×%Ó%Ø�‰=Ð�=××Ñˆ=×××××Ñò	 	Qùs   ‚GœG�F9Gc              ƒ   ó®
  #   • U R                  S[        [        S.S9I S h  v•N nUR                  nSo2U:H  oD(       dº  [        R
                  " SU4SX#45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nS	S
U0-  n[        [        R                  " U5      5      eS =n=pC/ o!R                  5       S   nSo‡U:H  o3o“(       a  UR                  5       S   oª[        :H  o»n	U	(       GdJ  [        R
                  " SU4SXx45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  oÒR                  U5        U(       a£  [        R
                  " SW4SW
[        45      [        R                  " U
5      S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OSS.-  nSSU0-  oòR                  U5        [        R                  " US5      0 -  nSSU0-  n[        [        R                  " U5      5      eS =n	=n=n=n=n=p«U R                  SS[        0S9I S h  v•N o™R                  nSo‡U:H  o3(       d„  [        R
                  " SU4SXx45      [        R                  " U	5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n	=n=p8U R                  S[        [        S.S9I S h  v•N nUR                  nSo2U:H  oD(       dº  [        R
                  " SU4SX#45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nS	S
U0-  n[        [        R                  " U5      5      eS =n=pCU R                  S[        S S.S9I S h  v•N nUR                  nSo2U:H  oD(       dº  [        R
                  " SU4SX#45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nS	S
U0-  n[        [        R                  " U5      5      eS =n=pCg  GN) GN› GNÙ Nå7f)!Nr	   )r
   Úschoolr   r-   r   r   Úokr   r   r   r.   Údirectorr>   )z%(py3)s == %(py6)s)Úpy3r4   z%(py8)sÚpy8)z%(py11)s == %(py13)sr   )Úpy11Úpy13z%(py15)sÚpy15r   zassert %(py18)sÚpy18r
   r   ©z3%(py3)s
{%(py3)s = %(py1)s.status_code
} == %(py6)s©r1   rA   r4   úassert %(py8)sr   Únope)r   r   r   r   r   r   r   r   r   r   r    r!   r   ÚappendÚ_format_boolopr   )r#   r?   r$   r%   r&   r'   r(   r8   Ú@py_assert5r7   Ú@py_assert10Ú@py_assert12r:   Ú@py_format9Ú@py_format14Ú@py_format16Ú@py_format17Ú@py_format19r   s                      r)   Ú6test_login_director_needs_school_and_matching_passwordrU      s  é € Ø�{‰{Ð-ÔARÔ^dÑ4eˆ{Ðf×	f€BØ�>‰>Ð ˜SÐ ˜SÑ × × × Ò ˆ>× × × × × Õ ˆ2× × × Ñ ˆ2× × Õ ˆ>× × Ó ˜S× × × × × × Ó ÙL�7‰7‹9�VÑÐL 
ÐL 
Ñ*×L¨r¯w©w«y¸Ñ/BÐLÄfÑ/L×L×L×LÕLÐ×L×LÔLÐ×L×LÓL 
×L×L×L×L×L×L×LÒLÐ/BÄf×L×LÔLÐ/B×L×L×L×L×LÔLÄf×L×L×LÑLÄf×L×L×L×L×L×L×L×L×L×L×L×L×LÖLà—+‘+Ð0¸
ÔDUÐ7V�+ÐW×WÐk×dÑdÐkÐhkÐkÐhkÑk×k×k×kÒkÐd×k×kÔkÐW×k×kÓkÐd×k×kÓkÐhk×k×k×k×k×k×kÕkà�k‰kÐ,Ô@WÔciÑ3jˆkÐk×k€AØ�=‰=Ð˜CÐ˜CÑ×××Òˆ=×××××Õˆ1×××Ñˆ1××Õˆ=××Ó˜C××××××Óà�k‰kÐ,Ô@QÐ]cÑ3dˆkÐe×e€AØ�=‰=Ð˜CÐ˜CÑ×××Òˆ=×××××Õˆ1×××Ñˆ1××Õˆ=××Ó˜C××××××Ôò 
gò Xâkñ 	fùsI   ‚U¡U
¢JUÊ2UÊ3CUÍ7UÍ8C5UÑ-UÑ.CUÕUÕUÕUc              ƒ   óè  #   • [        S5       Vs/ s H'  nU R                  SSS0S9I S h  v•N R                  PM)     nnUS S nS/nSoTU-  ocU:H  ow(       d„  [        R                  " SU4S	X645      [        R
                  " U5      [        R
                  " U5      [        R
                  " U5      S
.-  nSSU0-  n	[        [        R                  " U	5      5      eS =n=n=n=pVSo2SS  oCU;   ow(       do  [        R                  " SU4SX445      [        R
                  " U5      [        R
                  " U5      S.-  n
SSU
0-  n[        [        R                  " U5      5      eS =n=ptg  GN?s  snf 7f)Né   r	   r
   Úwrongr   é   r   r   )z%(py1)s == (%(py4)s * %(py6)s))r1   r2   r4   zassert %(py9)sÚpy9i­  )Úin)z%(py1)s in %(py4)sr0   r3   r4   )Úranger   r   r   r   r   r    r!   )r#   Ú_Ústatusesr7   r&   rM   Ú@py_assert7r8   r(   Ú@py_format10r9   r:   s               r)   Ú/test_login_brute_force_blocked_after_5_attemptsra      s	  é € ô �q”óâˆAð �{‰{Ð-°ZÀÐ4Iˆ{ÐJ×	J×WÔWÙð ð ð �B�Qˆ<Ð$˜C˜5Ð$ 1Ð$ 1™9Ð$˜9Ñ$×$×$×$Ò$ˆ<×$×$Ô$ˆ<×$×$Ó$˜5×$×$Ó$ 1×$×$×$×$×$×$×$ØÐ˜1˜2�,Ð�,Ñ×××Òˆ3××Ôˆ3××Ó�,××××××Ôò	 
Kùòùs&   ‚E2�E-«E*
¬E-¾D,E2Å*E-Å-E2c              ƒ   ó†  #   • U R                  S5      I S h  v•N oR                  nSo2U:H  oD(       d„  [        R                  " SU4SX#45      [        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=pCg  N§7f)Nú/api/admin/statsr   r   rG   rH   rI   rB   ©Úgetr   r   r   r   r    r!   )r#   r7   r8   rM   r%   r:   rP   s          r)   Ú#test_protected_route_requires_tokenrf   (   su   é € Ø—*‘*Ð/Ó0×0ÐD×=Ñ=ÐDÀÐDÀÑD×D×D×DÒDÐ=×D×DÔDÐ0×D×DÓDÐ=×D×DÓDÀ×D×D×D×D×D×DÖDÑ0ùs   ‚C—B?˜B(Cc              ƒ   óò  #   • U R                  SSS0S9I S h  v•N nUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S	.-  nS
SU0-  n[        [        R                  " U5      5      eS =n=pCg  NÜ7f)Nrc   ÚAuthorizationzBearer not-a-real-token©Úheadersr   r   r   r   r   r   r   ©
re   r   r   r   r   r   r   r   r    r!   r"   s          r)   Ú*test_protected_route_rejects_invalid_tokenrl   ,   s–   é € Ø�j‰jÐ+°oÐG`Ð5aˆjÐb×b€AØ�=‰=Ð˜CÐ˜CÑ×××Òˆ=×××××Õˆ1×××Ñˆ1××Õˆ=××Ó˜C××××××Ôñ 	cùr+   c              ƒ   óè  #   • U R                  SSSU 30S9I S h  v•N nUR                  nSoCU:H  oU(       dº  [        R                  " SU4SX445      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S	.-  nS
SU0-  n[        [        R                  " U5      5      eS =n=pTU R                  SSU 3SS.S9I S h  v•N nUR                  nSoCU:H  oU(       dº  [        R                  " SU4SX445      S[        R
                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S	.-  nS
SU0-  n[        [        R                  " U5      5      eS =n=pTg  GNÒ Nß7f)Nrc   rh   zBearer ri   i�  r   r   r   r   r   r   rJ   )rh   úX-Schooli”  rk   )r#   Úadmin_tokenr   r$   r%   r&   r'   r(   s           r)   Ú"test_operator_must_select_a_schoolrp   1   s5  é € Ø�j‰jÐ+°oÈÐQ\ÐP]ÐG^Ð5_ˆjÐ`×`€AØ�=‰=Ð˜CÐ˜CÑ×××Òˆ=×××××Õˆ1×××Ñˆ1××Õˆ=××Ó˜C××××××ÓØ�j‰jÐ+ÈÐQ\ÐP]ÐG^ÐlrÑ5sˆjÐt×t€AØ�=‰=Ð˜CÐ˜CÑ×××Òˆ=×××××Õˆ1×××Ñˆ1××Õˆ=××Ó˜C××××××Ôò 	aátùs#   ‚G2›G-œC4G2ÄG0ÄCG2Ç0G2c              ƒ   ó„  #   • U R                  SUS9I S h  v•N o"R                  nSoCU:H  oU(       d„  [        R                  " SU4SX445      [        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=pTg  N§7f)	Nrc   ri   r-   r   rG   rH   rI   rB   rd   )r#   Úadmin_headersr7   r8   rM   r%   r:   rP   s           r)   Ú(test_protected_route_accepts_valid_tokenrs   8   s|   é € Ø—*‘*Ð/¸�*ÐG×GÐ[×TÑTÐ[ÐX[Ð[ÐX[Ñ[×[×[×[Ò[ÐT×[×[Ô[ÐG×[×[Ó[ÐT×[×[Ó[ÐX[×[×[×[×[×[×[Ö[ÑGùs   ‚C –B>—B(C c              ƒ   óx  #   • U R                  SUS9I S h  v•N o"R                  nSoCU:H  oU(       d„  [        R                  " SU4SX445      [        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=pTU R                  S	US9I S h  v•N o"R                  nSoCU:H  oU(       d„  [        R                  " SU4SX445      [        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=pTU R                  S
US9I S h  v•N o"R                  nSoCU:H  oU(       d„  [        R                  " SU4SX445      [        R                  " U5      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=n=pTg  GN GNe N­7f)Nrc   ri   i“  r   rG   rH   rI   rB   z/api/admin/schoolsz/api/director/dashboardr-   rd   )r#   Údirector_headersr7   r8   rM   r%   r:   rP   s           r)   Ú(test_director_cannot_use_operator_routesrv   <   sp  é € Ø—*‘*Ð/Ð9I�*ÐJ×JÐ^×WÑWÐ^Ð[^Ð^Ð[^Ñ^×^×^×^Ò^ÐW×^×^Ô^ÐJ×^×^Ó^ÐW×^×^Ó^Ð[^×^×^×^×^×^×^Õ^Ø—*‘*Ð1Ð;K�*ÐL×LÐ`×YÑYÐ`Ð]`Ð`Ð]`Ñ`×`×`×`Ò`ÐY×`×`Ô`ÐL×`×`Ó`ÐY×`×`Ó`Ð]`×`×`×`×`×`×`Õ`Ø—*‘*Ð6Ð@P�*ÐQ×QÐe×^Ñ^ÐeÐbeÐeÐbeÑe×e×e×eÒeÐ^×e×eÔeÐQ×e×eÓeÐ^×e×eÓeÐbe×e×e×e×e×e×eÖeò KÚLÙQùs6   ‚H:–H2—B9H:ÃH5ÃB9H:Æ
H8ÆB(H:È5H:È8H:c              ƒ   ó¶  #   • U R                  S0 UES[        0ES9I Sh  v•N nUR                  nSoCU:H  oU(       dº  [        R                  " SU4SX445      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S	.-  nS
SU0-  n[        [        R                  " U5      5      eS=n=pTUR                  5       S   S   oˆ[        :H  o™(       d²  [        R                  " SU	4SU[        45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OSS.-  n
SSU
0-  n[        [        R                  " U5      5      eS=p‰g GN¶7f)uE   Un directeur ne peut pas viser une autre Ã©cole en forgeant X-School.z/api/admin/settingsrn   ri   Nr-   r   r   r   r   r   r   r>   Úid)z%(py1)s == %(py3)sr   )r1   rA   zassert %(py5)sr   )re   r   r   r   r   r   r   r   r   r    r!   r   r   )r#   ru   r   r$   r%   r&   r'   r(   r7   r8   Ú@py_format4s              r)   Ú6test_director_is_locked_to_own_school_even_with_headerrz   B   s  é € à�j‰jÐ.Ð8fÐ;KÐ8fÈZÔYeÑ8fˆjÐg×g€AØ�=‰=Ð˜CÐ˜CÑ×××Òˆ=×××××Õˆ1×××Ñˆ1××Õˆ=××Ó˜C××××××ÓØ�6‰6‹8�HÑ˜dÑ#Ð-¤vÑ-×-×-×-Ò-Ð#¤v×-×-Ô-Ð#×-×-×-×-×-Ô-¤v×-×-×-Ñ-¤v×-×-×-×-×-×-Ô-ò 	hùs   ‚G G¡F6G)Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   Úconftestr   r   r   r   r   r*   r<   rU   ra   rf   rl   rp   rs   rv   rz   © ó    r)   Ú<module>r‚      sE   ðß  „ × eÕ eò ò
ò òòEò ò
 ò\òfó.r�   