Ë
   ˜KŽ™ùËFSã                  ó  — d Z ddlmZ ddlZddlmc mZ ddl	Z	ddl
Z
ddlmZ ddlmZ e
j                  dd„«       Zddd„Zdd„Zdd	„Zdd
„Zdd„Zdd„Ze
j.                  j1                   ed„ dD «       «       d¬«      dd„«       Zy)zÂTesty monoliticke FastAPI aplikace (Faze 4).

Testy se deli na:
- Sub-app testy: /safe-oi/*, / (webapp) - nevyzaduji bezici sluzby
- Agregovany /health: vyzaduje bezici sluzby na 4100/7782/8180
é    )ÚannotationsN)Ú
TestClient)Úappc                 ó    — t        t        «      S ©N)r   r   © ó    ú0/home/oem/CyberBrain26-unified/tests/test_app.pyÚclientr      s   € ä”c‹?Ðr	   c                ó   — t        j                   t         j                  t         j                  «      }|j                  |«       	 |j	                  d| f«      dk(  |j                  «        S # |j                  «        w xY w)Nz	127.0.0.1r   )ÚsocketÚAF_INETÚSOCK_STREAMÚ
settimeoutÚ
connect_exÚclose)ÚportÚtimeoutÚss      r
   Ú
_port_openr      sV   € Ü�‰”f—n‘n¤f×&8Ñ&8Ó9€AØ‡L�L�ÔðØ�|‰|˜[¨$Ð/Ó0°AÑ5à	�‰�	øˆ�‰�	ús   ÁA+ Á+A=c                óÒ  — | j                  d«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d	x}x}}|j                  «       }|j                   }d
} ||«      }d}	||	k(  }
|
sÕt        j                  d|
fd||	f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      t        j                  |	«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d	x}x}x}x}
}	y	)u:   Webapp root vracÃ­ status (nepotÅ™ebuje externÃ­ sluÅ¾by).ú/éÈ   ©ú==©z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚr©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7NÚstatusÚok©zI%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get
}(%(py4)s)
} == %(py9)sÚbody©r   r    Úpy4Úpy6Úpy9úassert %(py11)sÚpy11©ÚgetÚstatus_codeÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚjson©r   r   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8r'   Ú@py_assert5Ú@py_assert8Ú@py_assert7Ú@py_format10Ú@py_format12s                r
   Útest_webapp_rootrE      s  € à�
‰
�3‹€AØ�=‰=Ð˜CÐˆ=˜CÑ××Õˆ=˜C×××××Ñˆ1××Óˆ1××Ôˆ=××Ò˜C××××××ÓØ�6‰6‹8€DØ�8‰8Ð%�HÐ%‰8�HÓÐ% Ð%Ð Ñ%×%×%Õ%Ð ×%×%×%×%×%Ñ%ˆ4×%×%Ó%ˆ4×%×%Ô%ˆ8×%×%Ò%�H×%×%Ò%Ð×%×%Ò% ×%×%×%×%×%×%×%Ð%r	   c                óÎ  — | j                  d«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d	x}x}}|j                  «       }|j                   }d
} ||«      }d}	||	k(  }
|
sÕt        j                  d|
fd||	f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      t        j                  |	«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d	x}x}x}x}
}	|j                   }d} ||«      }d}	||	k(  }
|
sÕt        j                  d|
fd||	f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      t        j                  |	«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d	x}x}x}x}
}	y	)z'safe_oi /health pod /safe-oi/ prefixem.z/safe-oi/healthr   r   r   r   r   r"   r#   Nr$   r%   r&   r'   r(   r,   r-   ÚserviceÚsafe_oi_apir.   r:   s                r
   Ú test_safe_oi_health_via_monolithrI   '   s¶  € à�
‰
Ð$Ó%€AØ�=‰=Ð˜CÐˆ=˜CÑ××Õˆ=˜C×××××Ñˆ1××Óˆ1××Ôˆ=××Ò˜C××××××ÓØ�6‰6‹8€DØ�8‰8Ð%�HÐ%‰8�HÓÐ% Ð%Ð Ñ%×%×%Õ%Ð ×%×%×%×%×%Ñ%ˆ4×%×%Ó%ˆ4×%×%Ô%ˆ8×%×%Ò%�H×%×%Ò%Ð×%×%Ò% ×%×%×%×%×%×%×%Ø�8‰8Ð/�IÐ/‰8�IÓÐ/ -Ð/Ð -Ñ/×/×/Õ/Ð -×/×/×/×/×/Ñ/ˆ4×/×/Ó/ˆ4×/×/Ô/ˆ8×/×/Ò/�I×/×/Ò/Ð×/×/Ò/ -×/×/×/×/×/×/×/Ð/r	   c                ó   — | j                  d«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d	x}x}}|j                  «       }d
}||v }	|	s™t        j                  d|	fd||f«      t        j                  |«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      nddœz  }
dd|
iz  }t        t        j                  |«      «      ‚d	x}}	y	)z)safe_oi /sessions pod /safe-oi/ prefixem.z/safe-oi/sessionsr   r   r   r   r   r"   r#   NÚsessions©Úin©z%(py1)s in %(py3)sr'   ©Úpy1Úpy3úassert %(py5)sr!   r.   ©r   r   r;   r<   r=   r>   r?   r'   Ú@py_assert0Ú@py_assert2Ú@py_format4s              r
   Ú"test_safe_oi_sessions_via_monolithrW   0   sâ   € à�
‰
Ð&Ó'€AØ�=‰=Ð˜CÐˆ=˜CÑ××Õˆ=˜C×××××Ñˆ1××Óˆ1××Ôˆ=××Ò˜C××××××ÓØ�6‰6‹8€DØÐˆ:˜Ð××Õˆ:˜××Óˆ:×××××Ð˜××Ó˜××××××Ôr	   c                ó   — | j                  d«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d	x}x}}|j                  «       }d
}||v }	|	s™t        j                  d|	fd||f«      t        j                  |«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      nddœz  }
dd|
iz  }t        t        j                  |«      «      ‚d	x}}	y	)z+webapp /v1/worktree/tasks pod monolit root.z/v1/worktree/tasksr   r   r   r   r   r"   r#   NÚtasksrL   rN   r'   rO   rR   r!   r.   rS   s              r
   Ú$test_webapp_v1_worktree_via_monolithrZ   8   sá   € à�
‰
Ð'Ó(€AØ�=‰=Ð˜CÐˆ=˜CÑ××Õˆ=˜C×××××Ñˆ1××Óˆ1××Ôˆ=××Ò˜C××××××ÓØ�6‰6‹8€DØÐˆ7�dˆ?××Õˆ7�d××Óˆ7×××××Ð�d××Ó�d××××××Ôr	   c                ó¶  — | j                  d«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d	x}x}}y	)
z;safe_oi endpointy NEJSOU na rootu (jsou jen pod /safe-oi/).z	/sessionsi”  r   r   r   r   r"   r#   N)
r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   )r   r   r;   r<   r=   r>   r?   s          r
   Útest_no_safe_oi_at_rootr\   @   s}   € à�
‰
�;Ó€Aà�=‰=Ð˜CÐˆ=˜CÑ××Õˆ=˜C×××××Ñˆ1××Óˆ1××Ôˆ=××Ò˜C××××××Ôr	   c              #  ó2   K  — | ]  }t        |«      –— Œ y ­wr   )r   )Ú.0Úps     r
   ú	<genexpr>r`   H   s   è ø€ Ò6˜aŒJ�q�MÑ6ùs   ‚)i  if  iô  z8Agregovany /health vyzaduje bezici sluzby 4100/7782/8180)Úreasonc           	     ó6  — | j                  d«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d	x}x}}|j                  «       }|j                   }d
} ||«      }d}	||	k(  }
|
sÕt        j                  d|
fd||	f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      t        j                  |	«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d	x}x}x}x}
}	|j                   }d} ||«      }d}	||	k(  }
|
sÕt        j                  d|
fd||	f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      t        j                  |	«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d	x}x}x}x}
}	|j                  di «      }d}||v }|s™t        j                  d|fd||f«      t        j                  |«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      nddœz  }dd|iz  }t        t        j                  |«      «      ‚d	x}}d}||v }|s™t        j                  d|fd||f«      t        j                  |«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      nddœz  }dd|iz  }t        t        j                  |«      «      ‚d	x}}d}||v }|s™t        j                  d|fd||f«      t        j                  |«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      nddœz  }dd|iz  }t        t        j                  |«      «      ‚d	x}}|j                  «       D �]  \  }}|j                   }d
} ||«      }d}	||	k(  }
|
sðt        j                  d|
fd||	f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      t        j                  |	«      dœz  }t        j                  |› d|› �«      dz   d|iz  }t        t        j                  |«      «      ‚d	x}x}x}x}
}	�Œ" y	)z/Agregovany /health vraci stav vsech tri sluzeb.z/healthr   r   r   r   r   r"   r#   Nr$   r%   r&   r'   r(   r,   r-   Úversionz4.0.0ÚservicesÚlitellmrL   rN   rO   rR   r!   Úsafe_oiÚwebappÚinfoz
 neni ok: z
>assert %(py11)s)r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   ÚitemsÚ_format_assertmsg)r   r   r;   r<   r=   r>   r?   r'   r@   rA   rB   rC   rD   rd   rT   rU   rV   Únamerh   s                      r
   Útest_aggregate_healthrl   G   s–  € ð 	�
‰
�9Ó€AØ�=‰=Ð˜CÐˆ=˜CÑ××Õˆ=˜C×××××Ñˆ1××Óˆ1××Ôˆ=××Ò˜C××××××ÓØ�6‰6‹8€DØ�8‰8Ð%�HÐ%‰8�HÓÐ% Ð%Ð Ñ%×%×%Õ%Ð ×%×%×%×%×%Ñ%ˆ4×%×%Ó%ˆ4×%×%Ô%ˆ8×%×%Ò%�H×%×%Ò%Ð×%×%Ò% ×%×%×%×%×%×%×%Ø�8‰8Ð)�IÐ)‰8�IÓÐ) 'Ð)Ð 'Ñ)×)×)Õ)Ð '×)×)×)×)×)Ñ)ˆ4×)×)Ó)ˆ4×)×)Ô)ˆ8×)×)Ò)�I×)×)Ò)Ð×)×)Ò) '×)×)×)×)×)×)×)Ø�x‰x˜
 BÓ'€HØÐ ˆ9˜Ð × × Õ ˆ9˜× × Ó ˆ9× × × × × Ð ˜× × Ó ˜× × × × × × Ó ØÐ ˆ9˜Ð × × Õ ˆ9˜× × Ó ˆ9× × × × × Ð ˜× × Ó ˜× × × × × × Ó ØÐˆ8�xÐ××Õˆ8�x××Óˆ8×××××Ð�x××Ó�x××××××ÓØ—n‘nÓ&ó E‰
ˆˆdØ�x‰xÐD˜ÐD‰x˜Ó!ÐD TÐDÐ! TÑ)×D×DÕDÐ! T×D×D×D×D×DÑDˆt×D×DÓDˆt×D×DÔDˆx×D×DÒD˜×D×DÒDÐ!×D×DÒD T×D×D×D¨d¨V°:¸d¸VÐ+D×D×D×D×D×D×DÖDñEr	   )Úreturnr   )g333333Ó?)r   Úintr   Úfloatrm   Úbool)r   r   rm   ÚNone)Ú__doc__Ú
__future__r   Úbuiltinsr3   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter1   r   ÚpytestÚfastapi.testclientr   Úcyberbrain26.appr   Úfixturer   r   rE   rI   rW   rZ   r\   ÚmarkÚskipifÚallrl   r   r	   r
   ú<module>r      s”   ðñõ #ç  „ ƒã Ý )å  ð ‡�òó ðôó&ó0óóó ð ‡�×ÑÙÑ6Ð#5Ô6Ó6Ð6ØEð ó òEó	ñEr	   