+
    Ö„ja  c                   ó|  € ^ RI t^ RIHu Ht ^ RIHt ^ RIt^ RI	H
t
 ^ RIHt ^ RIHtHtHt ^ RIHtHtHtHt ]P,                  P.                  R 4       t]P,                  P.                  R 4       tR	 tR
 tR tR tR t]P,                  P.                  R 4       t]P,                  P.                  R 4       t R t!R# )é    N)Ú	timedelta)Ústatus)Úget_database)Úcreate_agentÚget_agent_by_emailÚget_agent_by_id)Úhash_passwordÚverify_passwordÚcreate_access_tokenÚdecode_access_tokenc               ƒ   óŠ  "  € \        4       p \        V R RRRR7      G Rj  x€L
 pVR,          q"P                  pRqC! V4      qU'       g�   RR	\        P                  ! V4      R
\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          p\        \        P                  ! V4      4      hR;p;p;rEVR,          pR qrV8H  q3'       gy   \        P                  ! RV3RW'34      R	\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p	\        \        P                  ! V	4      4      hR;p;r7VR,          pRqrV8g  q3'       gy   \        P                  ! RV3RW'34      R	\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p	\        \        P                  ! V	4      4      hR;p;r7Rq¡R,          p\        W§4      pRqËVJ qÝ'       gû   \        P                  ! RV3R W¼34      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V
4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p
;p;p;rÜRq¡R,          p\        W§4      pRqËVJ qÝ'       gû   \        P                  ! RV3R W¼34      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V
4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p
;p;p;rÜR#  EL 5i)!zagent.test@example.comzSecretPassword123!z
Test AgentÚAGENT©ÚemailÚpasswordÚnameÚroleNÚagentIdÚagent_zLassert %(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.startswith
}(%(py5)s)
}Úpy1Úpy3Úpy5Úpy7r   Úpy4úassert %(py6)sÚpy6ÚpasswordHashTÚpy0r	   Úpy2Úpy9zassert %(py11)sÚpy11ÚWrongPasswordF©ú==©z%(py1)s == %(py4)s©ú!=©z%(py1)s != %(py4)s)Úis)z9%(py6)s
{%(py6)s = %(py0)s(%(py2)s, %(py4)s)
} is %(py9)s)r   r   Ú
startswithÚ
@pytest_arÚ	_safereprÚAssertionErrorÚ_format_explanationÚ_call_reprcomparer	   Ú@py_builtinsÚlocalsÚ_should_repr_global_name)ÚdbÚagentÚ@py_assert0Ú@py_assert2Ú@py_assert4Ú@py_assert6Ú@py_format8Ú@py_assert3Ú@py_format5Ú@py_format7Ú@py_assert1Ú@py_assert5Ú@py_assert8Ú@py_assert7Ú@py_format10Ú@py_format12s                   ÚEC:\Users\alokc\chatbot\dev\chatbot\chatbot\backend\tests\test_auth.pyÚ(test_agent_creation_and_password_hashingrC      s|  é € ä	‹€BÜØ
Ø&Ø%ØØô÷ €Eð �ÕÐ0×&Ñ&Ð0 xÐ0Ð& xÓ0Ð0Ö0×0×0Ñ0Ð×0×0Ô0Ð&×0×0Ô0 x×0×0Ô0Ð0×0×0×0×0×0×0Ñ0Ø��>Ð5Ð5Ð5Ð5Ñ5×5×5×5Ó5ˆ>×5×5Õ5ˆ>×5×5Ô5Ð5×5×5×5×5×5×5×5Ò5Ø�Õ Ð8Ð$8Ð8Ð$8Ñ8×8×8×8Ó8Ð ×8×8Õ8Ð ×8×8Ô8Ð$8×8×8×8×8×8×8×8Ò8Ø/ÐO°~Õ1FÐOŒ?Ð/ÓGÐOÈ4ÐOÈ4ÐO×O×O×OÓOÐG×O×O×O×O×O×OŒ?×O×O×OÒOŒ?×O×OÖOÐ/×O×OÔOÐ1F×O×OÔOÐG×O×OÔOÈ4×O×O×O×O×O×O×OÖOØ*ÐK°.Õ,AÐKŒ?˜?ÓBÐKÀeÐKÀeÐK×K×K×KÓKÐB×K×K×K×K×K×KŒ?×K×K×KÒKŒ?×K×KÖK˜?×K×KÔKÐ,A×K×KÔKÐB×K×KÔKÀe×K×K×K×K×K×K×K×KÐKòùs   ‚Q Q ¡I
QÉ,D#QÎB1Qc              ƒ   ór  "  € \        4       p\        VR RRRR7      G Rj  x€L
  V P                  RRR RR/R	7      pVP                  p\        P
                  qCV8H  qU'       Eg   \        P                  ! R!V3R"W434      R
R\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;rTVP                  4       pRq™V9   qª'       g±   \        P                  ! R#V
3R$W˜34      R\        P                  ! V	4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pRRV/,          p\        \        P                  ! V4      4      hR;ršVR,          p	RqYV8H  qª'       gy   \        P                  ! R!V
3R%W•34      R\        P                  ! V	4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p	;r¥VR,          R,          p	R qYV8H  qª'       gy   \        P                  ! R!V
3R%W•34      R\        P                  ! V	4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p	;r¥VR,          R,          p	RqYV8H  qª'       gy   \        P                  ! R!V
3R%W•34      R\        P                  ! V	4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p	;r¥Rq˜R,          qYV9  qª'       gy   \        P                  ! R&V
3R'W•34      R\        P                  ! V	4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p	;r¥\        VR,          4      pRq®V
Jq3'       g±   \        P                  ! R(V3R)Wê34      R
R\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V
4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;r:VR,          q˜R,          R ,          qYV8H  qª'       gy   \        P                  ! R!V
3R%W•34      R\        P                  ! V	4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p	;r¥VR,          p	RqYV8H  qª'       gy   \        P                  ! R!V
3R%W•34      R\        P                  ! V	4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p	;r¥R#  EL”5i)*úlogin.agent@example.comzValidPassword123!zLogin AgentÚADMINr   Nú/api/v1/auth/loginr   r   ©Újsonr   Ú	login_resr   r   r   r   úassert %(py8)sÚpy8ÚaccessTokenr   r   Údatazassert %(py5)sr   Ú	tokenTypeÚbearerr   r3   r   r   ÚpayloadÚsubr   r"   ©zT%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py6)s
{%(py6)s = %(py4)s.HTTP_200_OK
})Úin)z%(py1)s in %(py3)sr$   )únot in)z%(py1)s not in %(py4)s)úis not)z%(py0)s is not %(py3)s)r   r   ÚpostÚstatus_coder   ÚHTTP_200_OKr*   r.   r/   r0   r1   r+   r,   r-   rI   r   )Úclientr2   rJ   r<   r=   r9   r;   Ú@py_format9rN   r4   r5   Ú@py_format4Ú@py_format6r:   rQ   s   &              rB   Útest_successful_agent_loginr^      sÎ  é € ä	‹€BÜ
Ø
Ø'Ø$ØØô÷ ð ð —‘Ð0ØÐ*ØÐ'ð8�ó €Ið
 × Ñ Ð6¤F×$6Ñ$6Ð6Ð$6Ñ6×6×6×6Ô6Ð ×6×6×6×6×6×6ˆ9×6×6×6Ò6ˆ9×6×6Ö6Ð ×6×6×6×6×6Ö6¤F×6×6×6Ò6¤F×6×6Ö6Ð$6×6×6×6×6×6×6×6Ò6Ø�>‰>Ó€DØÐ ˜DÑ × × × Ó ˆ=× × Õ ˆ=× × × × × Ö ˜D× × × Ò ˜D× × × × × × × Ò Ø�ÕÐ( Ð( Ñ(×(×(×(Ó(Ð×(×(Õ(Ð×(×(Ô( ×(×(×(×(×(×(×(Ò(Ø��=˜Õ!Ð>Ð%>Ð>Ð%>Ñ>×>×>×>Ó>Ð!×>×>Õ>Ð!×>×>Ô>Ð%>×>×>×>×>×>×>×>Ò>Ø��=˜Õ Ð+ GÐ+ GÑ+×+×+×+Ó+Ð ×+×+Õ+Ð ×+×+Ô+ G×+×+×+×+×+×+×+Ò+ØÐ. g¥Ð. Ñ.×.×.×.Ó.ˆ>×.×.Õ.ˆ>×.×.Ô. ×.×.×.×.×.×.×.Ò.ô " $ }Õ"5Ó6€GØÐ˜$Ð×××Óˆ7××××××ˆ7×××Òˆ7××Ö˜$×××××××ÐØ�5�>Ð5 '�]¨9Õ5Ð5Ð5Ñ5×5×5×5Ó5ˆ>×5×5Õ5ˆ>×5×5Ô5Ð5×5×5×5×5×5×5×5Ò5Ø�6�?Ð%˜gÐ%˜gÑ%×%×%×%Ó%ˆ?×%×%Õ%ˆ?×%×%Ô%˜g×%×%×%×%×%×%×%Ô%ò3ùs,   ‚Z7 Z4¡BZ7Â5A'Z7ÄC+Z7È	LZ7ÔFZ7c                 ó6  € V P                  R RRRR/R7       V P                  RRRR	R
/R7      pVP                  p\        P                  q2V8H  qD'       Eg   \        P
                  ! RV3RW#34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;rCVP                  4       R,          pRqGV8H  qˆ'       gy   \        P
                  ! RV3RWt34      R\        P                  ! V4      R\        P                  ! V4      /,          p	RRV	/,          p\        \        P                  ! V4      4      hR;p;r„R# )z/api/v1/tenant/registerÚdomainzshop.comr   ÚStorerH   rG   r   rE   r   zWrongPassword!r   rJ   r   r   r   r   rK   rL   NÚdetailúInvalid email or passwordr   r   r"   ©z^%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py6)s
{%(py6)s = %(py4)s.HTTP_401_UNAUTHORIZED
}r$   ©rW   rX   r   ÚHTTP_401_UNAUTHORIZEDr*   r.   r/   r0   r1   r+   r,   r-   rI   ©
rZ   rJ   r<   r=   r9   r;   r[   r4   r5   r:   s
   &         rB   Ú'test_login_invalid_password_returns_401rh   <   s?  € Ø
‡K�KÐ)°¸:ÀvÈwÐ0W€KÔXà—‘Ð0ØÐ*ØÐ$ð8�ó €Ið
 × Ñ Ð@¤F×$@Ñ$@Ð@Ð$@Ñ@×@×@×@Ô@Ð ×@×@×@×@×@×@ˆ9×@×@×@Ò@ˆ9×@×@Ö@Ð ×@×@×@×@×@Ö@¤F×@×@×@Ò@¤F×@×@Ö@Ð$@×@×@×@×@×@×@×@Ò@Ø�>‰>Ó˜HÕ%ÐDÐ)DÐDÐ)DÑD×D×D×DÓDÐ%×D×DÕDÐ%×D×DÔDÐ)D×D×D×D×D×D×D×DÔDó    c                 ó  € V P                  R RRRR/R7      pVP                  p\        P                  q2V8H  qD'       Eg   \        P
                  ! RV3RW#34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      R	R
\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MR
R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;rCVP                  4       R,          pRqGV8H  qˆ'       gy   \        P
                  ! RV3RWt34      R\        P                  ! V4      R	\        P                  ! V4      /,          p	RRV	/,          p\        \        P                  ! V4      4      hR;p;r„R# )rG   r   znonexistent.agent@example.comr   zPassword123!rH   r   rJ   r   r   r   r   rK   rL   Nrb   rc   r   r   r"   rd   r$   re   rg   s
   &         rB   Ú$test_login_unknown_email_returns_401rk   G   s$  € Ø—‘Ð0ØÐ0Ø�Nð8�ó €Ið
 × Ñ Ð@¤F×$@Ñ$@Ð@Ð$@Ñ@×@×@×@Ô@Ð ×@×@×@×@×@×@ˆ9×@×@×@Ò@ˆ9×@×@Ö@Ð ×@×@×@×@×@Ö@¤F×@×@×@Ò@¤F×@×@Ö@Ð$@×@×@×@×@×@×@×@Ò@Ø�>‰>Ó˜HÕ%ÐDÐ)DÐDÐ)DÑD×D×D×DÓDÐ%×D×DÕDÐ%×D×DÔDÐ)D×D×D×D×D×D×D×DÔDri   c                 óº  € V P                  R 4      pVP                  p\        P                  q2V8H  qD'       Eg   \        P
                  ! R
V3RW#34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR	;p;rCR	# )ú/api/v1/auth/mer   Úresr   r   r   r   rK   rL   Nr"   rd   ©ÚgetrX   r   rf   r*   r.   r/   r0   r1   r+   r,   r-   )rZ   rn   r<   r=   r9   r;   r[   s   &      rB   Ú-test_protected_endpoint_rejects_missing_tokenrq   P   s­   € Ø
�*‰*Ð&Ó
'€CØ�?‰?Ð:œf×:Ñ:Ð:Ð:Ñ:×:×:×:Ô:ˆ?×:×:×:×:×:×:ˆ3×:×:×:Ò:ˆ3×:×:Ö:ˆ?×:×:×:×:×:Ö:œf×:×:×:Ò:œf×:×:Ö:Ð:×:×:×:×:×:×:×:Ô:ri   c                 óÆ  € R R/pV P                  RVR7      pVP                  p\        P                  qCV8H  qU'       Eg   \        P
                  ! RV3RW434      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR	\        P                  ! V4      /,          pR
RV/,          p\        \        P                  ! V4      4      hR;p;rTR# )ÚAuthorizationzBearer invalid_garbage_tokenrm   ©Úheadersr   rn   r   r   r   r   rK   rL   Nr"   rd   ro   )rZ   ru   rn   r<   r=   r9   r;   r[   s   &       rB   Ú-test_protected_endpoint_rejects_invalid_tokenrv   T   s¼   € ØÐ >Ð?€GØ
�*‰*Ð&°ˆ*Ó
8€CØ�?‰?Ð:œf×:Ñ:Ð:Ð:Ñ:×:×:×:Ô:ˆ?×:×:×:×:×:×:ˆ3×:×:×:Ò:ˆ3×:×:Ö:ˆ?×:×:×:×:×:Ö:œf×:×:×:Ò:œf×:×:Ö:Ð:×:×:×:×:×:×:×:Ô:ri   c                 ó  € \        R RRR/\        RR7      R7      pRRV 2/pV P                  RVR	7      pVP                  p\        P
                  qTV8H  qf'       Eg   \        P                  ! RV3RWE34      R
R\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;reR# )rR   Úagent_test_999r   r   )Úseconds)rN   Úexpires_deltars   úBearer rm   rt   r   rn   r   r   r   r   rK   rL   Niöÿÿÿr"   rd   )r
   r   rp   rX   r   rf   r*   r.   r/   r0   r1   r+   r,   r-   )	rZ   Úexpired_tokenru   rn   r<   r=   r9   r;   r[   s	   &        rB   Ú-test_protected_endpoint_rejects_expired_tokenr}   Y   sã   € Ü'ØÐ% v¨wÐ7Ü¨Ô,ô€Mð  '¨-¨Ð 9Ð:€GØ
�*‰*Ð&°ˆ*Ó
8€CØ�?‰?Ð:œf×:Ñ:Ð:Ð:Ñ:×:×:×:Ô:ˆ?×:×:×:×:×:×:ˆ3×:×:×:Ò:ˆ3×:×:Ö:ˆ?×:×:×:×:×:Ö:œf×:×:×:Ò:œf×:×:Ö:Ð:×:×:×:×:×:×:×:Ô:ri   c              ƒ   óè  "  € \        4       p\        VR RRRR7      G Rj  x€L
 p\        RVR,          RR/4      pR	R
V 2/pV P                  RVR7      pVP                  p\
        P                  qvV8H  qˆ'       Eg   \        P                  ! RV3RWg34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \
        4      '       d   \        P                  ! \
        4      MRR\        P                  ! V4      /,          p	RRV	/,          p
\        \        P                  ! V
4      4      hR;p;r‡VP                  4       pVR,          qÂR,          qŒV8H  qÝ'       gy   \        P                  ! RV3RWÈ34      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p	\        \        P                  ! V	4      4      hR;p;rØVR,          pR qŒV8H  qÝ'       gy   \        P                  ! RV3RWÈ34      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p	\        \        P                  ! V	4      4      hR;p;rØVR,          pRqŒV8H  qÝ'       gy   \        P                  ! RV3RWÈ34      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p	\        \        P                  ! V	4      4      hR;p;rØR#  ELO5i)zme.agent@example.comzMyPassword123!zMe Agentr   r   NrR   r   r   rs   r{   rm   rt   r   rn   r   r   r   r   rK   rL   r   r   r   r"   rS   r$   ©r   r   r
   rp   rX   r   rY   r*   r.   r/   r0   r1   r+   r,   r-   rI   )rZ   r2   r3   Útokenru   rn   r<   r=   r9   r;   r[   Úprofiler4   r5   r:   s   &              rB   Ú+test_protected_endpoint_accepts_valid_tokenr‚   b   s  é € ä	‹€BÜØ
Ø$Ø!ØØô÷ €Eô   ¨¨iÕ(8¸&À'Ð JÓK€EØ '¨%¨Ð 1Ð2€Gà
�*‰*Ð&°ˆ*Ó
8€CØ�?‰?Ð0œf×0Ñ0Ð0Ð0Ñ0×0×0×0Ô0ˆ?×0×0×0×0×0×0ˆ3×0×0×0Ò0ˆ3×0×0Ö0ˆ?×0×0×0×0×0Ö0œf×0×0×0Ò0œf×0×0Ö0Ð0×0×0×0×0×0×0×0Ò0Ø�h‰h‹j€GØ�9ÕÐ1 yÕ!1Ð1Ð!1Ñ1×1×1×1Ó1Ð×1×1Õ1Ð×1×1Ô1Ð!1×1×1×1×1×1×1×1Ò1Ø�7ÕÐ5Ð5Ð5Ð5Ñ5×5×5×5Ó5Ð×5×5Õ5Ð×5×5Ô5Ð5×5×5×5×5×5×5×5Ò5Ø�6�?Ð%˜gÐ%˜gÑ%×%×%×%Ó%ˆ?×%×%Õ%ˆ?×%×%Ô%˜g×%×%×%×%×%×%×%Ô%ò!ùs   ‚M2 M/¡B,M2ÃA'M2Ä6H:M2c              ƒ   ó  "  € \        4       p\        VR RRR7      G Rj  x€L
 p\        VRRRR7      G Rj  x€L
 p\        RVR,          R	R
/4      pRRV 2/pV P                  RVR7      pVP                  p\
        P                  q‡V8H  q™'       Eg   \        P                  ! RV	3RWx34      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \
        4      '       d   \        P                  ! \
        4      MRR\        P                  ! V4      /,          p
RRV
/,          p\        \        P                  ! V4      4      hR;p;r˜VP                  4       R,          qÂR,          qœV	8H  qÝ'       gy   \        P                  ! RV3RWÉ34      R\        P                  ! V4      R\        P                  ! V	4      /,          pRRV/,          p
\        \        P                  ! V
4      4      hR;p;rÙVP                  4       R,          qÃR,          qœV	8g  qÝ'       gy   \        P                  ! RV3RWÉ34      R\        P                  ! V4      R\        P                  ! V	4      /,          pRRV/,          p
\        \        P                  ! V
4      4      hR;p;rÙR#  ELå ELÑ5i)zagent.a@example.comzPass123!zAgent A)r   r   r   Nzagent.b@example.comzAgent BrR   r   r   r   rs   r{   rm   rt   r   rn   r   r   r   r   rK   rL   r   r   r"   rS   r$   r%   r'   r   )rZ   r2   Úagent_aÚagent_bÚtoken_aru   rn   r<   r=   r9   r;   r[   r4   r5   r:   s   &              rB   Ú0test_authenticated_identity_comes_from_jwt_tokenr‡   w   s×  é € ä	‹€BÜ  Ð+@È:Ð\eÔf×f€GÜ  Ð+@È:Ð\eÔf×f€Gô " 5¨'°)Õ*<¸fÀgÐ"NÓO€GØ '¨'¨Ð 3Ð4€Gð �*‰*Ð&°ˆ*Ó
8€CØ�?‰?Ð0œf×0Ñ0Ð0Ð0Ñ0×0×0×0Ô0ˆ?×0×0×0×0×0×0ˆ3×0×0×0Ò0ˆ3×0×0Ö0ˆ?×0×0×0×0×0Ö0œf×0×0×0Ò0œf×0×0Ö0Ð0×0×0×0×0×0×0×0Ò0Ø�8‰8‹:�iÕ Ð6¨IÕ$6Ð6Ð$6Ñ6×6×6×6Ó6Ð ×6×6Õ6Ð ×6×6Ô6Ð$6×6×6×6×6×6×6×6Ò6Ø�8‰8‹:�iÕ Ð6¨IÕ$6Ð6Ð$6Ñ6×6×6×6Ó6Ð ×6×6Õ6Ð ×6×6Ô6Ð$6×6×6×6×6×6×6×6Ô6ò gÚfùs.   ‚L
ŸL L
¶L·B,L
Ã$A'L
ÅF9L
ÌL
c                 ó  € ^ RI Hp V P                  RRR7       V P                  RRR7       V P                  RRR7       \        P                  ! \
        RR7      ;_uu_ 4        V! R	R
7       RRR4       R#   + '       g   i     R# ; i)r   )ÚSettingsÚPYTEST_CURRENT_TESTF)ÚraisingÚENVÚ
JWT_SECRETz3JWT_SECRET environment variable is missing or empty)ÚmatchÚ )Ú
jwt_secretN)Ú
app.configr‰   ÚdelenvÚpytestÚraisesÚ
ValueError)Úmonkeypatchr‰   s   & rB   Ú(test_jwt_secret_configuration_validationr—   ‡   si   € Ý#Ø×ÑÐ,°eÐÔ<Ø×Ñ�u eÐÔ,Ø×Ñ�|¨UÐÔ3ä	�Š”zÐ)^×	_Ö	_Ù˜BÕ÷ 
`×	_×	_Ò	_ús   Á$
A8Á8B		)"Úbuiltinsr/   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter*   Údatetimer   r“   Úfastapir   Úapp.databaser   Ú!app.repositories.agent_repositoryr   r   r   Úapp.utils.securityr   r	   r
   r   ÚmarkÚanyiorC   r^   rh   rk   rq   rv   r}   r‚   r‡   r—   © ri   rB   Ú<module>r¤      sÀ   ðß  „ Õ Û Ý Ý %ß _Ñ _÷ó ð ‡�×ÑñLó ðLð  ‡�×Ññ&ó ð&ò:	EòEò;ò;ò
;ð ‡�×Ññ&ó ð&ð( ‡�×Ññ7ó ð7ô ri   