Ë
    òÝ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
mZ ddlmZmZmZ ddlmZ dd	lmZmZ  G d
„ de«      Zedk(  r ej.                  «        yy)uÞ   Ehemals StagingGateway (zwei injizierte Policy-Callbacks, AnhÃ¤nge pauschal
gesperrt). Neuer Vertrag: Gateway.handle() mit Policy-Matrix aus der
Konfiguration und HMAC-Clearance; BegrÃ¼ndung je Test in docs/AENDERUNGEN.md.é    N)Úreplace)ÚResultStatus)ÚMockAdapter)ÚCommandKindÚparse_command)Ú
AttachmentÚContextEnvelopeÚMemorySnippet)ÚHandling)ÚAdapterHarnessÚGatewayTestCasec                   óh   ‡ — e Zd Zˆ fd„Z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 )ÚGatewayTestsc                 ó0   •— t         ‰| �  «        d | _        y ©N)ÚsuperÚsetUpÚmock)ÚselfÚ	__class__s    €ú?/home/aria/aria-v3-dev/python/tests/test_integration_gateway.pyr   zGatewayTests.setUp   s   ø€ Ü‰‰ŒØˆ�	ó    c                 ó@   — t        |dd¬«      | _        | j                  S )NÚcodexÚMOCK_OK)Úoutput)r   r   )r   Úverifiers     r   Úcodex_factoryzGatewayTests.codex_factory   s   € Ü ¨'¸)ÔDˆŒ	Ø�y‰yÐr   c                 ó@   — | j                  |d| j                  i¬«      S )Nr   )Úadapter_factories)Úgatewayr   )r   Úconfigs     r   ÚgwzGatewayTests.gw   s    € Ø�|‰|˜F°wÀ×@RÑ@RÐ6Sˆ|ÓTÐTr   c                 óþ   — | j                  «       j                  | j                  dd«      «      }| j                  |j                  |j
                  fd«       | j                  | j                  j                  d«       y )Né   ú#public hello)Ú	completedr   )r#   ÚhandleÚrequestÚassertEqualÚstatusÚ
reply_textr   Úcalls)r   Úresults     r   Útest_approved_mockzGatewayTests.test_approved_mock   s[   € Ø—‘“×!Ñ! $§,¡,¨q°/Ó"BÓCˆØ×Ñ˜&Ÿ-™-¨×):Ñ):Ð;Ð=UÔVØ×Ñ˜Ÿ™Ÿ™¨!Õ,r   c                 ó”  — | j                  dddii«      }|j                  | j                  dd«      «      }| j                  |j                  t
        j                  «       | j                  |j                  d«       | j                  | j                  j                  d«       | j                  | j                  j                  g «       y )NÚprivacyÚclaude_status_quo_confidentialFé   u   Angebot fÃ¼r BMWÚPRIVACY_DENIEDr   )r#   r(   r)   r*   Úhandlingr   ÚBLOCKEDÚcoder   r-   ÚsinkÚ	delivered©r   r#   r.   s      r   Útest_no_approvalzGatewayTests.test_no_approval"   s–   € à�W‰W�iÐ"BÀEÐ!JÐKÓLˆØ—‘˜4Ÿ<™<¨Ð+=Ó>Ó?ˆØ×Ñ˜Ÿ™¬(×*:Ñ*:Ô;Ø×Ñ˜Ÿ™Ð&6Ô7Ø×Ñ˜Ÿ™Ÿ™¨!Ô,Ø×Ñ˜Ÿ™×,Ñ,¨bÕ1r   c                 ó>  — t        | j                  dz  «      }t        |j                  d«      }|j	                  d«      }|j                  ||d¬«      }|j                  ||«      }| j                  |j                  d«       | j                  |j                  d«       y )NÚhr   r&   Ú@bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)Úcontext_digestÚCONTEXT_DIGEST_MISMATCHr   )
r   Úrootr   r   ÚjobÚclearÚexecuter*   Ú
error_coder-   )r   ÚharnessÚadapterrB   Ú	clearancer.   s         r   Útest_wrong_digestzGatewayTests.test_wrong_digest+   sƒ   € Ü  §¡¨S¡Ó1ˆÜ˜g×.Ñ.°Ó8ˆØ�k‰k˜/Ó*ˆØ—M‘M '¨3¸x�MÓHˆ	Ø—‘ ¨CÓ0ˆØ×Ñ˜×*Ñ*Ð,EÔFØ×Ñ˜Ÿ™¨Õ*r   c                 ó¾   — t        dt        dd«      f«      }t        |t        dd«      f¬«      }| j                  |j	                  «       |j	                  «       «       y )NÚhelloz
brain/a.mdz
memory-oneÚ	different)Úmemory)r	   r
   r   ÚassertNotEqualÚdigest)r   ÚcontextÚchangeds      r   Útest_memory_changes_digestz'GatewayTests.test_memory_changes_digest4   sL   € Ü! '¬M¸,ÈÓ,UÐ+WÓXˆÜ˜'¬=¸À{Ó+SÐ*UÔVˆØ×Ñ˜GŸN™NÓ,¨g¯n©nÓ.>Õ?r   c           	      óè  — | j                  «       }t        ddddt        j                  d«      j	                  «       ¬«      }|j                  | j                  dd«      «       |j                  | j                  d	d
|g¬«      «      }| j                  |j                  t        j                  «       | j                  |j                  d«       | j                  | j                  j                  d«       y )NÚdocumentÚBQAC1zdoc.pdfzapplication/pdfs   doc)ÚkindÚfile_idÚnameÚmimeÚsha256é   z/codexé   r&   )ÚattachmentsÚMANUAL_CHOICE_NOT_PERMITTEDr   )r#   r   ÚhashlibrZ   Ú	hexdigestr(   r)   r*   r5   r   r6   r7   r   r-   )r   r#   Údocr.   s       r   Útest_attachments_blockedz%GatewayTests.test_attachments_blocked9   s³   € à�W‰W‹YˆÜ˜j°'À	ÐPaÜ '§¡¨vÓ 6× @Ñ @Ó BôDˆà
�	‰	�$—,‘,˜q (Ó+Ô,Ø—‘˜4Ÿ<™<¨¨?ÈÈ˜<ÓNÓOˆØ×Ñ˜Ÿ™¬(×*:Ñ*:Ô;Ø×Ñ˜Ÿ™Ð&CÔDØ×Ñ˜Ÿ™Ÿ™¨!Õ,r   c                 ó@  — | j                  dddii«      }|j                  | j                  dd«      «      }| j                  |j                  d«       | j                  | j
                  j                  d«       | j                  | j                  j                  g «       y )Nr1   r2   Fé   zKundendaten von adessoÚblockedr   )	r#   r(   r)   r*   r+   r   r-   r8   r9   r:   s      r   Útest_confidential_blockedz&GatewayTests.test_confidential_blockedD   s{   € Ø�W‰W�iÐ"BÀEÐ!JÐKÓLˆØ—‘˜4Ÿ<™<¨Ð+CÓDÓEˆØ×Ñ˜Ÿ™¨	Ô2Ø×Ñ˜Ÿ™Ÿ™¨!Ô,Ø×Ñ˜Ÿ™×,Ñ,¨bÕ1r   c                 ó&  —  G d„ d«      }| j                  d| j                  i |«       ¬«      }|j                  | j                  dd«      «      }| j	                  |j
                  d«       | j	                  | j                  j                  d«       y )	Nc                   ó   — e Zd Zd„ Zy)ú@GatewayTests.test_policy_exception_blocked.<locals>.BrokenMemoryc                 ó   — t        d«      ‚)NÚfail)ÚRuntimeError)r   r)   Úbackends      r   Úsnippets_forzMGatewayTests.test_policy_exception_blocked.<locals>.BrokenMemory.snippets_forM   s   € Ü" 6Ó*Ð*r   N)Ú__name__Ú
__module__Ú__qualname__rn   © r   r   ÚBrokenMemoryri   L   s   „ ó+r   rs   r   )r    Úmemory_provideré   r&   ÚMEMORY_PROVIDER_ERRORr   )r!   r   r(   r)   r*   r7   r   r-   )r   rs   r#   r.   s       r   Útest_policy_exception_blockedz*GatewayTests.test_policy_exception_blockedK   su   € ÷	+ñ 	+ð �\‰\¨W°d×6HÑ6HÐ,IÑ[gÓ[iˆ\ÓjˆØ—‘˜4Ÿ<™<¨¨?Ó;Ó<ˆØ×Ñ˜Ÿ™Ð&=Ô>Ø×Ñ˜Ÿ™Ÿ™¨!Õ,r   c                 ó²  — | j                  t        d«      j                  t        j                  «       | j                  t        d«      j
                  d«       | j                  t        d«      j                  t        j                  «       | j                  t        d«      j                  t        j                  «       | j                  t        d«      j                  t        j                  «       | j                  t        d«      j                  t        j                  «       | j                  t        d«      j                  t        j                  «       y )Nz/codex analyzeÚanalyzez/claudez/autoz/statusz/status extrarK   )	r*   r   rV   r   ÚONE_SHOTÚtextÚSET_MODEÚPLUGIN_OWNEDÚMESSAGE©r   s    r   Útest_command_parsingz!GatewayTests.test_command_parsingT   så   € Ø×ÑœÐ'7Ó8×=Ñ=¼{×?SÑ?SÔTØ×ÑœÐ'7Ó8×=Ñ=¸yÔIØ×Ñœ yÓ1×6Ñ6¼×8LÑ8LÔMØ×Ñœ wÓ/×4Ñ4´k×6JÑ6JÔKØ×Ñœ yÓ1×6Ñ6¼×8PÑ8PÔQØ×Ñœ Ó7×<Ñ<¼k×>VÑ>VÔWØ×Ñœ wÓ/×4Ñ4´k×6IÑ6IÕJr   c                 óR  — | j                  ddg g d¢dœii«      }|j                  | j                  dd«      «      }| j                  |j                  t
        j                  «       | j                  |j                  d«       | j                  | j                  j                  d«       y )	Nr1   Úmatrix)ÚpublicÚinternalÚunknown)r   Úclaudeé   z/codex #public hellor^   r   )
r#   r(   r)   r*   r5   r   r6   r7   r   r-   r:   s      r   Ú,test_gateway_backend_denied_before_executionz9GatewayTests.test_gateway_backend_denied_before_execution]   s�   € Ø�W‰W�i (°bÒDeÑ,fÐ!gÐhÓiˆØ—‘˜4Ÿ<™<¨Ð+AÓBÓCˆØ×Ñ˜Ÿ™¬(×*:Ñ*:Ô;Ø×Ñ˜Ÿ™Ð&CÔDØ×Ñ˜Ÿ™Ÿ™¨!Õ,r   c                 ót   — | j                  t        «      5  t        ddd¬«       d d d «       y # 1 sw Y   y xY w)NrT   ÚxÚbad)rV   rW   rZ   )ÚassertRaisesÚ
ValueErrorr   r   s    r   Útest_invalid_attachment_digestz+GatewayTests.test_invalid_attachment_digestd   s5   € Ø×ÑœzÓ*ñ 	CÜ˜J°¸EÕB÷	C÷ 	Cñ 	Cús   –.®7r   )ro   rp   rq   r   r   r#   r/   r;   rI   rR   rb   rf   rw   r€   rˆ   rŽ   Ú__classcell__)r   s   @r   r   r      sH   ø„ ôòóUò-ò
2ò+ò@ò
	-ò2ò-òKò-öCr   r   Ú__main__)Ú__doc__r_   ÚunittestÚdataclassesr   Úaria_router.adapter_contractr   Úaria_router.adaptersr   Úaria_router.commandsr   r   Úaria_router.contextr   r	   r
   Úaria_router.gatewayr   Útests.helpersr   r   r   ro   Úmainrr   r   r   ú<module>r›      sV   ðñQó Û Ý å 5Ý ,ß ;ß JÑ JÝ (ç 9ôUC�?ô UCðp ˆzÒØ€H‡M�M…Oð r   