Ë
    Ýj  ã                   ó¬   — d Z ddlZddl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mZ ddlmZmZ  G d	„ d
e«      Zedk(  r ej&                  «        yy)z™Ehemals SecureOrchestrator (Policy als beliebiger Callable, Digest ohne
Bindung an Job/Backend/Ablauf). Neuer Vertrag: Gateway.handle() + HMAC-Clearance.é    N)ÚResultStatus©ÚMockAdapter)ÚConfigurationError)ÚHandling)Ú
MockRunnerÚ	RunResult)ÚAdapterHarnessÚGatewayTestCasec                   ój   ‡ — e Zd Zˆ fd„Zd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ˆ xZS )ÚSecureTestsc                 ó>   •— t         ‰| �  «        d | _        d | _        y ©N)ÚsuperÚsetUpÚcodexÚclaude)ÚselfÚ	__class__s    €ú?/home/aria/aria-v3-dev/python/tests/test_secure_orchestrator.pyr   zSecureTests.setUp   s   ø€ Ü‰‰ŒØˆŒ
Øˆ�ó    c                 ó*   ‡ ‡‡— ˆˆˆ fd„}ˆ fd„}||dœS )Nc                 óD   •— t        | d‰‰¬«      ‰_        ‰j                  S )Nr   )ÚoutputÚ	fail_code)r   r   )ÚverifierÚ
codex_failÚcodex_outputr   s    €€€r   r   z$SecureTests.factories.<locals>.codex   s    ø€ Ü$ X¨w¸|ÐWaÔbˆDŒJØ—:‘:Ðr   c                 óB   •— t        | dd¬«      ‰_        ‰j                  S )Nr   ÚOK)r   )r   r   )r   r   s    €r   r   z%SecureTests.factories.<locals>.claude   s   ø€ Ü% h°ÀÔFˆDŒKØ—;‘;Ðr   ©r   r   © )r   r   r   r   r   s   ```  r   Ú	factorieszSecureTests.factories   s   ú€ ö	ô	ð ¨&Ñ1Ð1r   c                 óŠ   — | j                  | | j                  di |¤Ž¬«      }|j                  | j                  d|«      «      S )N©Úadapter_factoriesé   r"   )Úgatewayr#   ÚhandleÚrequest)r   ÚtextÚconfigÚfactory_argsr(   s        r   Úrun_withzSecureTests.run_with   s<   € Ø—,‘,˜v¸¸¿¹Ñ9WÈ,Ñ9W�,ÓXˆØ�~‰~˜dŸl™l¨1¨dÓ3Ó4Ð4r   c                 óÜ   — | j                  dd¬«      }| j                  |j                  |j                  |j                  fd«       | j                  | j
                  j                  d«       y )Nú#public hellor    )r   )Ú	completedr   r    r   )r.   ÚassertEqualÚstatusÚbackendÚ
reply_textr   Úcalls©r   Úrs     r   Útest_codex_tiezSecureTests.test_codex_tie#   sR   € Ø�M‰M˜/¸ˆMÓ=ˆØ×Ñ˜!Ÿ(™( A§I¡I¨q¯|©|Ð<Ð>ZÔ[Ø×Ñ˜Ÿ™×*Ñ*¨AÕ.r   c                 ó  — | j                  ddg g dœddœi«      }| j                  |j                  t        j                  «       | j                  |j
                  d«       | j                  | j                  j                  d«       y )NÚhelloÚprivacyr!   F)ÚmatrixÚclaude_status_quo_confidentialÚPRIVACY_DENIEDr   )r.   r2   Úhandlingr   ÚBLOCKEDÚcoder   r6   r7   s     r   Útest_no_policyzSecureTests.test_no_policy(   su   € Ø�M‰M˜' IÀBÐRTÑ:UØRWñ0Yð $Zó [ˆà×Ñ˜Ÿ™¤X×%5Ñ%5Ô6Ø×Ñ˜Ÿ™Ð!1Ô2Ø×Ñ˜Ÿ™×)Ñ)¨1Õ-r   c                 óX  — t        | j                  dz  «      }t        |j                  d«      }|j	                  d«      }|j	                  d«      }|j                  |j                  ||«      |«      }| j                  |j                  d«       | j                  |j                  d«       y )NÚhr   r0   z#public hello worldÚCONTEXT_DIGEST_MISMATCHr   )
r
   Úrootr   r   ÚjobÚexecuteÚclearr2   Ú
error_coder6   )r   ÚharnessÚadapterrH   Úotherr8   s         r   Útest_context_mismatchz!SecureTests.test_context_mismatch/   s‡   € Ü  §¡¨S¡Ó1ˆÜ˜g×.Ñ.°Ó8ˆØ�k‰k˜/Ó*ˆØ—‘Ð1Ó2ˆØ�O‰O˜GŸM™M¨'°5Ó9¸3Ó?ˆØ×Ñ˜Ÿ™Ð'@ÔAØ×Ñ˜Ÿ™¨Õ*r   c                 óâ   — | j                  d«      }| j                  |j                  d«       | j                  |j                  d«       | j                  | j                  j
                  d«       y )Nz/codex Vertrag mit BMWÚblockedÚMANUAL_CHOICE_NOT_PERMITTEDr   )r.   r2   r3   rB   r   r6   r7   s     r   Útest_confidentialzSecureTests.test_confidential8   sT   € Ø�M‰MÐ2Ó3ˆØ×Ñ˜Ÿ™ 9Ô-Ø×Ñ˜Ÿ™Ð!>Ô?Ø×Ñ˜Ÿ™×)Ñ)¨1Õ-r   c                 ó^   — | j                  d«      }| j                  |j                  d«       y )Nz/claude #public hellor   ©r.   r2   r4   r7   s     r   Útest_manual_claudezSecureTests.test_manual_claude>   s%   € Ø�M‰MÐ1Ó2ˆØ×Ñ˜Ÿ™ HÕ-r   c                 ór   — | j                  dddg g d¢dœii«      }| j                  |j                  d«       y )Nr0   r<   r=   )ÚpublicÚinternalÚunknownr!   r   rU   r7   s     r   Útest_policy_only_claudez#SecureTests.test_policy_only_claudeB   sC   € Ø�M‰M˜/¨I¸ÈBÚNoñCqð 8rð ,só tˆà×Ñ˜Ÿ™ HÕ-r   c                 óÌ   — | j                  t        «      5 }| j                  dd„ i¬«       d d d «       | j                  t	        j
                  «      d«       y # 1 sw Y   Œ/xY w)Nr   c                 ó   — t        | d«      S )Nr   r   )r   s    r   ú<lambda>z3SecureTests.test_adapter_mismatch.<locals>.<lambda>I   s   € ÄkÐRZÐ\dÓFe€ r   r%   ÚADAPTER_MISMATCH)ÚassertRaisesr   r(   r2   ÚstrÚ	exception)r   Úctxs     r   Útest_adapter_mismatchz!SecureTests.test_adapter_mismatchG   sZ   € Ø×ÑÔ1Ó2ð 	h°cØ�L‰L¨GÑ5eÐ+fˆLÔg÷	hà×Ñœ˜SŸ]™]Ó+Ð-?Õ@÷	hð 	hús   –AÁA#c                 ó¶   — | j                  dd¬«      }| j                  |j                  d«       | j                  |j                  t        j
                  «       y )Nr0   ÚMODEL_FAILED)r   Úfailed)r.   r2   r3   r@   r   ÚFAILEDr7   s     r   Útest_failed_resultzSecureTests.test_failed_resultL   s@   € Ø�M‰M˜/°nˆMÓEˆØ×Ñ˜Ÿ™ 8Ô,Ø×Ñ˜Ÿ™¤X§_¡_Õ5r   c                 ó@  ‡— dj                  d„ ddiddddœd	œdd
ifD «       «      dz   j                  «       Š| j                  t        ˆfd„«      ¬«      }|j	                  | j                  dd«      «      }| j                  |j                  |j                  fd«       y )Nú
c              3   óF   K  — | ]  }t        j                  |«      –— Œ y ­wr   )ÚjsonÚdumps)Ú.0Úes     r   ú	<genexpr>z.SecureTests.test_tool_event.<locals>.<genexpr>R   s   è ø€ ò ¨Aœ$Ÿ*™* QŸ-ñ ùs   ‚!Útypezturn.startedzitem.startedÚcommand_executionÚid)rr   Úcommand)rr   Úitemzturn.completedc                 ó    •— t        dd‰¬«      S )NTr   )Ú	exit_codeÚstdout)r	   )ÚspecÚtools    €r   r^   z-SecureTests.test_tool_event.<locals>.<lambda>W   s   ø€ ÄIÈdÐ^_ÐhlÔDm€ r   )Úcodex_runneré   r0   )rg   ÚTOOL_EVENT_SEEN)	ÚjoinÚencoder(   r   r)   r*   r2   r3   rB   )r   r(   r8   r{   s      @r   Útest_tool_eventzSecureTests.test_tool_eventQ   s¥   ø€ Ø—	‘	ñ Ø�^Ð$Ø#Ð6IÐVZÑ-[Ñ\ØÐ%Ð&ð2
ô ó ð ñ	÷ ‘6“8ð	 	ð
 —,‘,¬JÓ7mÓ,n�,ÓoˆØ�N‰N˜4Ÿ<™<¨¨?Ó;Ó<ˆØ×Ñ˜!Ÿ(™( A§F¡FÐ+Ð-JÕKr   c                 ó*  —  G d„ d«      }| j                  | j                  «        |«       ¬«      }|j                  | j                  dd«      «      }| j	                  |j
                  d«       | j	                  | j                  j                  d«       y )Nc                   ó   — e Zd Zd„ Zy)ú7SecureTests.test_policy_exception.<locals>.BrokenMemoryc                 ó   — t        d«      ‚)NÚno)ÚRuntimeError)r   r*   r4   s      r   Úsnippets_forzDSecureTests.test_policy_exception.<locals>.BrokenMemory.snippets_for]   s   € Ü" 4Ó(Ð(r   N)Ú__name__Ú
__module__Ú__qualname__rˆ   r"   r   r   ÚBrokenMemoryr„   \   s   „ ó)r   rŒ   )r&   Úmemory_provideré   r0   ÚMEMORY_PROVIDER_ERRORr   )r(   r#   r)   r*   r2   rB   r   r6   )r   rŒ   r(   r8   s       r   Útest_policy_exceptionz!SecureTests.test_policy_exception[   ss   € ÷	)ñ 	)ð —,‘,°·±Ó1AÑS_ÓSa�,ÓbˆØ�N‰N˜4Ÿ<™<¨¨?Ó;Ó<ˆØ×Ñ˜Ÿ™Ð!8Ô9Ø×Ñ˜Ÿ™×)Ñ)¨1Õ-r   )NNr   )r‰   rŠ   r‹   r   r#   r.   r9   rC   rO   rS   rV   r[   rd   ri   r�   r�   Ú__classcell__)r   s   @r   r   r      sF   ø„ ôó
2ó5ò/ò
.ò+ò.ò.ò.ò
Aò
6ò
Lö.r   r   Ú__main__)Ú__doc__rm   ÚunittestÚaria_router.adapter_contractr   Úaria_router.adaptersr   Úaria_router.configr   Úaria_router.gatewayr   Úaria_router.runnerr   r	   Útests.helpersr
   r   r   r‰   Úmainr"   r   r   ú<module>rœ      sL   ðñUã Û å 5Ý ,Ý 1Ý (ß 4ç 9ôS.�/ô S.ðl ˆzÒØ€H‡M�M…Oð r   