Ë
    ÃÝjk  ã                   óð   — d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	m
Z
 ddlmZ ddlmZmZmZ ddlmZmZ  e ee«      j-                  «       j.                  d   d	z  d
z  «      Z G d„ de«      Zy)zWBridge-Protokoll v1: echter Prozessaufruf wie durch das Plugin (python3 -I + Launcher).é    N)ÚPath)Ú	KEY_LABELÚ	Clearance)ÚBRIDGE_REQUEST_FIELDS)ÚOWNER_IDÚGatewayTestCaseÚconfig_dict)Úload_schemaÚvalidateé   Úbinzaria_bridge.pyc                   óž   ‡ — e Zd Zˆ fd„Zdddœdedz  dedz  fd„Zd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d„ Zd„ Zˆ xZS )ÚBridgeCliTestsc                 óÐ   •— t         ‰| �  «        | j                  dz  | _        | j                  j	                  t        j                  t        | j                  «      «      d¬«       y )Nzgateway.jsonúutf-8)Úencoding)ÚsuperÚsetUpÚrootÚconfig_pathÚ
write_textÚjsonÚdumpsr	   )ÚselfÚ	__class__s    €ú6/home/aria/aria-v3-dev/python/tests/test_bridge_cli.pyr   zBridgeCliTests.setUp   sI   ø€ Ü‰‰ŒØŸ9™9 ~Ñ5ˆÔØ×Ñ×#Ñ#¤D§J¡J¬{¸4¿9¹9Ó/EÓ$FÐQXÐ#ÕYó    N)ÚrawÚconfigr   r   c          	      ó  — |�|n#t        j                  |«      j                  d«      }t        j                  t
        j                  dt        d|xs t        | j                  «      g|¢|ddddid¬	«      }| j                  |j                  d
|j                  j                  «       «       |j                  j                  d«      j                  «       }| j                  t!        |«      d«       t        j"                  |d
   «      S )Nr   z-Iz--configTé<   ÚPATHz/usr/bin:/binú/)ÚinputÚcapture_outputÚtimeoutÚenvÚcwdr   r   )r   r   ÚencodeÚ
subprocessÚrunÚsysÚ
executableÚLAUNCHERÚstrr   ÚassertEqualÚ
returncodeÚstderrÚdecodeÚstdoutÚ
splitlinesÚlenÚloads)r   Úpayloadr   r   ÚargsÚdataÚprocÚliness           r   Úrun_clizBridgeCliTests.run_cli   sÑ   € Ø�o‰s¬4¯:©:°gÓ+>×+EÑ+EÀgÓ+NˆÜ�~‰~Ü�^‰^˜T¤8¨Z¸Ò9XÄ3Àt×GWÑGWÓCXÐ`Ð[_Ð`Ø t°R¸fÀoÐ=VÐ\_ô
ˆð 	×Ñ˜Ÿ™¨!¨T¯[©[×-?Ñ-?Ó-AÔBØ—‘×"Ñ" 7Ó+×6Ñ6Ó8ˆØ×Ñœ˜U› QÔ'Ü�z‰z˜% ™(Ó#Ð#r   c                 óŠ   — d|dt         dt         d|d|dœ
}|j                  |«       | j                  t        |d«      g «       |S )Nr   ÚtelegramÚ	kais_testÚprivatez2026-10-24T18:00:00.000Z)
ÚprotocolÚmodeÚ	transportÚ	sender_idÚsender_usernameÚchat_idÚ	chat_typeÚ
message_idÚtsÚtextÚinbound_request)r   Úupdater0   r   )r   rI   rK   rC   Úextrar8   s         r   ÚinboundzBridgeCliTests.inbound#   sP   € Ø ¨$¸ZÔV^Ø&1¼hÐU^Ø!+Ð3MÐW[ñ]ˆð 	�‰�uÔØ×Ñœ 'Ð+<Ó=¸rÔBØˆr   c                 ód   — | j                  t        |d«      g «       | j                  |d   «       y )NÚresponseÚ	delivered)r0   r   ÚassertFalse©r   rQ   s     r   ÚassertResponsezBridgeCliTests.assertResponse+   s,   € Ø×Ñœ (¨JÓ7¸Ô<Ø×Ñ˜ +Ñ.Õ/r   c                 óÆ   — | j                  | j                  dd«      «      }| j                  |«       | j                  |d   |d   fd«       | j                  |d   d«       y )Nr   ú#public halloÚhandlingÚbackend)ÚreplyÚcodexÚ
reply_textÚMOCK_CODEX_RESPONSE©r=   rO   rU   r0   rT   s     r   Útest_roundtrip_execute_codexz+BridgeCliTests.test_roundtrip_execute_codex/   s_   € Ø—<‘< §¡¨Q°Ó @ÓAˆØ×Ñ˜HÔ%Ø×Ñ˜( :Ñ.°¸Ñ0CÐDÐFXÔYà×Ñ˜ ,Ñ/Ð1FÕGr   c                 ód  — | j                  | j                  dd«      «      }| j                  |«       | j                  |d   d«       |d   }| j                  |d   d«       | j                  |d   d	   d«       | j                  |d   d
   d   t        «       | j                  |d   d   d«       y )Né   ÚhallorX   Úforward_to_claude_channelÚforwardÚmethodznotifications/claude/channelÚparamsÚcontentÚmetaÚuser_idÚ	clearancerY   Úclaude)r=   rO   rU   r0   r   )r   rQ   rd   s      r   Útest_roundtrip_forward_claudez,BridgeCliTests.test_roundtrip_forward_claude6   s²   € Ø—<‘< §¡¨Q°Ó 8Ó9ˆØ×Ñ˜HÔ%Ø×Ñ˜ *Ñ-Ð/JÔKØ˜9Ñ%ˆØ×Ñ˜ Ñ*Ð,JÔKØ×Ñ˜ Ñ*¨9Ñ5°wÔ?Ø×Ñ˜ Ñ*¨6Ñ2°9Ñ=¼xÔHØ×Ñ˜ Ñ-¨iÑ8¸(ÕCr   c                 ó    — | j                  | j                  ddd¬«      «      }| j                  |«       | j                  |d   |d   fd«       y )Né   rW   Úshadow)rC   rX   Úplanned_handling)Úshadow_decisionrZ   r^   rT   s     r   Útest_roundtrip_shadowz$BridgeCliTests.test_roundtrip_shadow@   sN   € Ø—<‘< §¡¨Q°Àh Ó OÓPˆØ×Ñ˜HÔ%Ø×Ñ˜( :Ñ.°Ð9KÑ0LÐMÐOkÕlr   c                 óf  — | j                  dd«      }t        |d<   | j                  |«      }| j                  |d   |d   fd«       | j                  dz  dz  j                  «       j                  «       D �cg c]  }t        j                  |«      ‘Œ }}| j                  |d	   d
   d«       y c c}w )Né   rb   ri   rX   Úcode)ÚerrorÚUNKNOWN_FIELDÚstatezdecisions.jsonléÿÿÿÿÚrejected_atÚbridge)	rO   r   r=   r0   r   Ú	read_textr5   r   r7   )r   r8   rQ   ÚlineÚlogs        r   Ú&test_unknown_field_rejected_and_loggedz5BridgeCliTests.test_unknown_field_rejected_and_loggedE   s¦   € Ø—,‘,˜q 'Ó*ˆÜ%ˆ�	ÑØ—<‘< Ó(ˆØ×Ñ˜( :Ñ.°¸Ñ0@ÐAÐC]Ô^Ø-1¯Y©Y¸Ñ-@ÐCTÑ-T×,_Ñ,_Ó,a×,lÑ,lÓ,nÖo DŒt�z‰z˜$ÕÐoˆÐoØ×Ñ˜˜R™ Ñ/°Õ:ùò ps   Á7B.c                 óP   — | j                  | j                  d d¬«      d   d«       y )Ns   {kaputt©r   ru   ÚINVALID_JSON©r0   r=   ©r   s    r   Útest_invalid_jsonz BridgeCliTests.test_invalid_jsonM   s$   € Ø×Ñ˜Ÿ™ d°
˜Ó;¸FÑCÀ^ÕTr   c                 óV   — | j                  | j                  d ddz  ¬«      d   d«       y )Nó    i  r�   ru   ÚINPUT_LIMITrƒ   r„   s    r   Útest_input_limitzBridgeCliTests.test_input_limitP   s*   € Ø×Ñ˜Ÿ™ d°¸Ñ0H˜ÓIÈ&ÑQÐS`Õar   c                 óz   — | j                  dd«      }d|d<   | j                  | j                  |«      d   d«       y )Né   rb   ra   rB   ru   ÚUNSUPPORTED_PROTOCOL)rO   r0   r=   )r   r8   s     r   Útest_unsupported_protocolz(BridgeCliTests.test_unsupported_protocolS   s;   € Ø—,‘,˜q 'Ó*ˆØˆ�
ÑØ×Ñ˜Ÿ™ gÓ.¨vÑ6Ð8NÕOr   c                 óª   — | j                  | j                  dd«      t        | j                  dz  «      ¬«      }| j	                  |d   |d   fd«       y )Né   rb   zmissing.json)r   rX   ru   )rv   ÚCONFIG_UNAVAILABLE)r=   rO   r/   r   r0   rT   s     r   Útest_config_unavailablez&BridgeCliTests.test_config_unavailableX   sN   € Ø—<‘< §¡¨Q°Ó 8ÄÀTÇYÁYÐQ_ÑE_ÓA`�<ÓaˆØ×Ñ˜( :Ñ.°¸Ñ0@ÐAÐCbÕcr   c                 ó@  — | j                  d dd¬«      }| j                  |d   «       | j                  t        |d   «      ddh«       | j                  dz  d	z  j                  «       j                  «       }| j                  |d d
 t        j                  |«      «       y )Nz--statusr   r�   Úkey_availableÚbackendsr[   rk   Úkeysúclearance.keyé   )
r=   Ú
assertTruer0   Úsetr   Ú
read_bytesÚhexÚassertNotInr   r   )r   ÚstatusÚkey_hexs      r   Ú#test_status_command_without_secretsz2BridgeCliTests.test_status_command_without_secrets\   sŠ   € Ø—‘˜d J°C�Ó8ˆØ�‰˜˜Ñ/Ô0Ø×Ñœ˜V JÑ/Ó0°7¸HÐ2EÔFØ—9‘9˜vÑ%¨Ñ7×CÑCÓE×IÑIÓKˆØ×Ñ˜  "˜¤t§z¡z°&Ó'9Õ:r   c                 óŒ  — | j                  | j                  dd«      «      d   }dd|d   |d   d   d	d
œ}| j                  t        |d«      g «       | j                  |«      }| j                  t        |d«      g «       | j                  |d   d«       t	        |d¬«      }| j                  | j                  |«      d   d«       y )Né   rb   rd   r   Údelivery_reportÚjob_idrj   ÚnonceF)rB   Útyper£   r¤   ÚokÚ
report_ackru   ÚREPORTEDÚ 00000000000000000000000000000000)r¤   ÚUNKNOWN_CLEARANCE)r=   rO   r0   r   Údict)r   rd   ÚreportÚackÚunknowns        r   Útest_delivery_reportz#BridgeCliTests.test_delivery_reportc   sÀ   € Ø—,‘,˜tŸ|™|¨A¨wÓ7Ó8¸ÑCˆØÐ):ÀgÈhÑFWØ" ;Ñ/°Ñ8ÀñGˆà×Ñœ &Ð*;Ó<¸bÔAØ�l‰l˜6Ó"ˆØ×Ñœ # |Ó4°bÔ9Ø×Ñ˜˜V™ jÔ1Ü�v XÔ.ˆØ×Ñ˜Ÿ™ gÓ.¨vÑ6Ð8KÕLr   c                 ó˜   — | j                  | j                  dddz  «      «      }| j                  |«       | j                  |d   d«       y )Né   ú"i   rX   rv   )r=   rO   rU   ÚassertNotEqualrT   s     r   Útest_text_with_many_quotesz)BridgeCliTests.test_text_with_many_quotesn   sB   € Ø—<‘< §¡¨Q°°e±Ó <Ó=ˆØ×Ñ˜HÔ%Ø×Ñ˜H ZÑ0°'Õ:r   c                 óÎ   — t        «       d   d   }| j                  t        |d   «      h d£z
  t        t        «      «       | j                  t        |d   «      ddhz
  h d£«       y )	Nz$defsrL   Ú
properties>   rC   r¥   rB   ÚrequiredrB   rC   >   rK   rG   rH   rE   rD   rI   )r
   r0   r™   r   )r   Úschemas     r   Ú"test_schema_matches_implementationz1BridgeCliTests.test_schema_matches_implementations   sc   € Ü“˜wÑ'Ð(9Ñ:ˆØ×Ñœ˜V LÑ1Ó2Ò5QÑQÔSVÔWlÓSmÔnØ×Ñœ˜V JÑ/Ó0°JÀÐ3GÑGÚaõ	cr   c                 óø  — | j                  | j                  dd«      «      d   }t        j                  |d   «      }| j                  dz  dz  j                  «       }t        j                  |t        dz   t        j                  «      j                  «       }t        j                  |t        dz   t        j                  «      j                  «       }|j                  «       }| j                  t        j                  ||t        j                  «      j                  «       |j                  «       | j!                  t        j                  ||t        j                  «      j                  «       |j                  «       y )	Né	   rb   rd   rj   r•   r–   s   claudes   codex)r=   rO   r   Ú	from_dictr   rš   ÚhmacÚnewr   ÚhashlibÚsha256ÚdigestÚsigning_payloadr0   Ú	hexdigestÚmacr³   )r   rd   rj   ÚmasterÚ
claude_keyÚ	codex_keyr8   s          r   Ú.test_plugin_side_verification_with_derived_keyz=BridgeCliTests.test_plugin_side_verification_with_derived_keyy   s	  € Ø—,‘,˜tŸ|™|¨A¨wÓ7Ó8¸ÑCˆÜ×'Ñ'¨°Ñ(<Ó=ˆ	Ø—)‘)˜fÑ$ Ñ6×BÑBÓDˆÜ—X‘X˜f¤i°)Ñ&;¼W¿^¹^ÓL×SÑSÓUˆ
Ü—H‘H˜V¤Y°Ñ%9¼7¿>¹>ÓJ×QÑQÓSˆ	Ø×+Ñ+Ó-ˆØ×ÑœŸ™ *¨g´w·~±~ÓF×PÑPÓRÐT]×TaÑTaÔbØ×ÑœDŸH™H Y°¼¿¹ÓH×RÑRÓTÐV_×VcÑVcÕdr   )Úexecute)Ú__name__Ú
__module__Ú__qualname__r   Úbytesr/   r=   rO   rU   r_   rl   rr   r   r…   r‰   r�   r‘   rŸ   r¯   r´   r¹   rÈ   Ú__classcell__)r   s   @r   r   r      s�   ø„ ôZð
 ;?ÐUYò 	$¨5°4©<ð 	$ÈÈdÉ
ó 	$óò0òHòDòmò
;òUòbòPò
dò;ò	Mò;ò
cöer   r   )Ú__doc__r¿   r½   r   r*   r,   Úpathlibr   Úaria_router.authorizationr   r   Úaria_router.gatewayr   Útests.helpersr   r   r	   Útests.schema_checkr
   r   r/   Ú__file__ÚresolveÚparentsr.   r   © r   r   ú<module>rÙ      sf   ðÙ ]Û Û Û Û Û 
Ý ç :Ý 5ç @Ñ @ß 4á‰t�H‹~×%Ñ%Ó'×/Ñ/°Ñ2°UÑ:Ð=MÑMÓN€ôoe�_õ oer   