Ë
    ‘&Ýj  ã                   ó&  — d 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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  ee«      j-                  «       j.                  d	   d
z  dz  Z G d„ dej2                  «      Zedk(  r ej8                  «        yy)z;Konfigurationsdatei: strikt, fail-closed, sichere Defaults.é    N)ÚPath)ÚConfigurationErrorÚload_gateway_configÚparse_gateway_config)ÚPrivacyTier)ÚGateway)Ú
MockRunnerÚSubprocessRunner)ÚOWNER_IDÚconfig_dictÚ	write_keyé   Úconfigzgateway.example.jsonc                   ó”   — e Zd Zd„ Z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d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚConfigFileTestsc                 ó´   — t        j                  «       | _        t        | j                  j                  «      | _        t        | j
                  dz  dz  «       y )NÚkeyszclearance.key)ÚtempfileÚTemporaryDirectoryÚ_tmpr   ÚnameÚrootr   ©Úselfs    ú7/home/aria/aria-v3-dev/python/tests/test_config_file.pyÚsetUpzConfigFileTests.setUp   s<   € Ü×/Ñ/Ó1ˆŒ	Ü˜Ÿ™Ÿ™Ó(ˆŒ	Ü�$—)‘)˜fÑ$ Ñ6Õ7ó    c                 ó8   — | j                   j                  «        y ©N)r   Úcleanupr   s    r   ÚtearDownzConfigFileTests.tearDown   s   € Ø�	‰	×ÑÕr   Nc                 ó@   — t        t        | j                  |«      «      S r   )r   r   r   )r   Ú	overridess     r   ÚparsezConfigFileTests.parse   s   € Ü#¤K°·	±	¸9Ó$EÓFÐFr   c                 óÊ   — | j                  t        «      5 }| j                  |«       d d d «       |r&| j                  |t	        j
                  «      «       y y # 1 sw Y   Œ2xY wr   )ÚassertRaisesr   r$   ÚassertInÚstrÚ	exception)r   r#   ÚfragmentÚctxs       r   ÚassertRejectedzConfigFileTests.assertRejected   sS   € Ø×ÑÔ1Ó2ð 	"°cØ�J‰J�yÔ!÷	"áØ�M‰M˜(¤C¨¯©Ó$6Õ7ð ÷	"ð 	"ús   –AÁA"c                 ó„  — t        t        «      }| j                  |j                  t	        dh«      «       | j                  |j                  j                  «       | j                  |j                  j                  «       | j                  |j                  j                  j                  d«      |j                  j                  j                  d«      «       | j                  t        j                  |j                  j                  j                  d«      «       | j                  |j                   j"                  d«       y )NÚshadowÚcodexÚclaudeÚblock)r   ÚEXAMPLEÚassertEqualÚallowed_modesÚ	frozensetÚassertFalser/   Úreal_executionÚ
assertTrueÚprivacyÚcodex_parity_with_claudeÚmatrixÚ	tiers_forr'   r   ÚCONFIDENTIALÚroutingÚmanual_fallback)r   r   s     r   Ú,test_example_config_loads_with_safe_defaultsz<ConfigFileTests.test_example_config_loads_with_safe_defaults#   sÖ   € Ü$¤WÓ-ˆØ×Ñ˜×-Ñ-¬y¸(¸Ó/DÔEØ×Ñ˜Ÿ™×4Ñ4Ô5à�‰˜Ÿ™×?Ñ?Ô@Ø×Ñ˜Ÿ™×.Ñ.×8Ñ8¸ÓAÀ6Ç>Á>×CXÑCX×CbÑCbÐckÓClÔmØ�‰”k×.Ñ.°·±×0EÑ0E×0OÑ0OÐPXÓ0YÔZØ×Ñ˜Ÿ™×7Ñ7¸ÕAr   c                 ó~  — ddl m} dD �]1  }t        t        j	                  d|› d�«      «      }|j
                  }| j                  |j                  «       | j                  |j                  |«       | j                  |j                  «       | j                  |j                  j                  d u |dk(  «       | j                  d|j                  «       | j                  d|j                  «        ||j                   |j                  |dk(  |dk(  ¬	«       | j                  |j"                  j$                  «       �Œ4 y )
Nr   )Úvalidate_command_template)ÚtextÚtoolszgateway.codex-z.example.jsonrD   z-pzMemoryMax=2G)Úallow_bypass_sandboxÚrequire_cage)Úaria_router.codex_adapterrB   r   r2   Ú	with_namer/   r8   r7   r3   Úprofiler6   Úcodex_auth_writableÚresource_limitsÚaddress_space_bytesr'   Úisolation_wrapperÚcommand_templater9   r:   )r   rB   rI   r   r/   s        r   Ú$test_real_codex_example_configs_loadz4ConfigFileTests.test_real_codex_example_configs_load-   s  € åGØ(ó 	EˆGÜ(¬×):Ñ):¸^ÈGÈ9ÐTaÐ;bÓ)cÓdˆFØ—L‘LˆEØ�O‰O˜E×0Ñ0Ô1Ø×Ñ˜UŸ]™]¨GÔ4Ø×Ñ˜U×6Ñ6Ô7Ø×Ñ˜U×2Ñ2×FÑFÈ$ÐNÐPWÐ[bÑPbÔcØ�M‰M˜$ × 7Ñ 7Ô8Ø�M‰M˜.¨%×*AÑ*AÔBÙ% e×&<Ñ&<¸e×>UÑ>UØ;BÀgÑ;MÐ\cÐgnÑ\nõpà�O‰O˜FŸN™N×CÑCÖDñ	Er   c                 ó„   — | j                  ddid«       | j                  ddi iid«       | j                  dddiid«       y )	NÚsurpriser   zunknown keyr9   Úmatrxr/   Úallow_dangerT©r,   r   s    r   Útest_unknown_keys_rejectedz*ConfigFileTests.test_unknown_keys_rejected=   sI   € Ø×Ñ˜Z¨˜O¨]Ô;Ø×Ñ˜Y¨°"¨Ð6¸ÔFØ×Ñ˜W ~°tÐ&<Ð=¸}ÕMr   c                 ó6   — | j                  ddddidœid«       y )Nr/   TÚcpu_secondsé<   )r7   rK   rM   rT   r   s    r   Ú.test_real_execution_requires_isolation_wrapperz>ConfigFileTests.test_real_execution_requires_isolation_wrapperB   s,   € Ø×Ñ˜W¸Ø;HÈ"Ð:Mñ'Oð PØQdõ	fr   c                 ó4   — | j                  dddgdœid«       y )Nr/   Tz/usr/bin/systemd-run)r7   rM   rK   rT   r   s    r   Ú,test_real_execution_requires_resource_limitsz<ConfigFileTests.test_real_execution_requires_resource_limitsF   s#   € Ø×Ñ˜W¸ÐUkÐTlÑ&mÐnØ-õ	/r   c                 ó¸   — t        | j                  dddgddidœi«      }|d   d= | j                  t        «      5  t	        |«       d d d «       y # 1 sw Y   y xY w)Nr/   Tz
/usr/bin/xrW   rX   ©r7   rM   rK   Úworkspace_root©r   r   r&   r   r   ©r   Údatas     r   Ú&test_real_execution_requires_workspacez6ConfigFileTests.test_real_execution_requires_workspaceJ   sk   € Ü˜4Ÿ9™9 wÀ4Ð_kÐ^lØERÐTVÐDWñ1Yð 'Zó [ˆà�‰MÐ*Ð+Ø×ÑÔ1Ó2ñ 	'Ü  Ô&÷	'÷ 	'ñ 	'ús   »AÁAc                 óÂ  — | j                  dddii«      j                  j                  }| j                  dddii«      j                  j                  }| j                  |j	                  dt
        j                  «      «       | j                  |j	                  dt
        j                  «      «       | j                  |j	                  dt
        j                  «      «       y )Nr9   Úclaude_status_quo_confidentialTFr0   r/   )r$   r9   r;   r8   Úpermitsr   r=   r6   )r   ÚonÚoffs      r   Útest_status_quo_switchz&ConfigFileTests.test_status_quo_switchQ   s§   € Ø�Z‰Z˜Ð%EÀtÐ$LÐMÓN×VÑV×]Ñ]ˆØ�j‰j˜)Ð&FÈÐ%NÐOÓP×XÑX×_Ñ_ˆØ�‰˜Ÿ
™
 8¬[×-EÑ-EÓFÔGØ×Ñ˜Ÿ™ G¬[×-EÑ-EÓFÔGØ×Ñ˜Ÿ™ X¬{×/GÑ/GÓHÕIr   c                 óÂ  — t        | j                  ddddœi«      }|d   d   d= t        |«      j                  j                  }t
        D ]5  }| j                  |j                  d|«      |j                  d|«      |«       Œ7 | j                  |j                  dt
        j                  «      «       | j                  |j                  dt
        j                  «      «       y )Nr9   T©rd   r:   r;   r/   r0   )r   r   r   r9   r;   r   r3   re   r8   r=   ÚUNKNOWN)r   ra   r;   Útiers       r   Ú%test_codex_parity_copies_claude_tiersz5ConfigFileTests.test_codex_parity_copies_claude_tiersX   sÃ   € Ü˜4Ÿ9™9 yÐUYØOSñ3Uð 'Vó Wˆà�‰O˜HÑ% gÐ.Ü% dÓ+×3Ñ3×:Ñ:ˆÜò 	bˆDØ×Ñ˜VŸ^™^¨G°TÓ:¸F¿N¹NÈ8ÐUYÓ<ZÐ\`Õað	bà�‰˜Ÿ™ w´×0HÑ0HÓIÔJØ�‰˜Ÿ™ w´×0CÑ0CÓDÕEr   c                 óF  — t        | j                  ddddœi«      }|d   d   d= t        |«      j                  j                  }| j                  |j                  dt        j                  «      «       | j                  |j                  dt        j                  «      «       y )Nr9   FTrj   r;   r/   )r   r   r   r9   r;   r6   re   r   r=   r8   rk   )r   ra   r;   s      r   Ú3test_codex_parity_follows_claude_without_status_quozCConfigFileTests.test_codex_parity_follows_claude_without_status_quob   sŠ   € Ü˜4Ÿ9™9 yÐUZØOSñ3Uð 'Vó Wˆà�‰O˜HÑ% gÐ.Ü% dÓ+×3Ñ3×:Ñ:ˆØ×Ñ˜Ÿ™¨´×1IÑ1IÓJÔKØ�‰˜Ÿ™ w´×0CÑ0CÓDÕEr   c                 óÒ   — t        | j                  dddii«      }| j                  d|d   d   «       | j                  t        «      5  t        |«       d d d «       y # 1 sw Y   y xY w)Nr9   r:   Tr/   r;   )r   r   r'   r&   r   r   r`   s     r   Ú/test_codex_parity_rejects_separate_codex_matrixz?ConfigFileTests.test_codex_parity_rejects_separate_codex_matrixj   s`   € Ü˜4Ÿ9™9 yÐ3MÈtÐ2TÐ&UÓVˆØ�‰�g˜t I™¨xÑ8Ô9Ø×ÑÔ1Ó2ñ 	'Ü  Ô&÷	'÷ 	'ñ 	'ús   ÁAÁA&c                 ó¬   — | j                  i «      j                  j                  }| j                  |j	                  dt
        j                  «      «       y ©Nr/   )r$   r9   r;   r6   re   r   rk   )r   r;   s     r   Ú test_codex_parity_off_by_defaultz0ConfigFileTests.test_codex_parity_off_by_defaultp   s:   € Ø—‘˜B“×'Ñ'×.Ñ.ˆØ×Ñ˜Ÿ™¨´×1DÑ1DÓEÕFr   c                 ó¤   — t        | j                  «      }|d   d= | j                  t        «      5  t	        |«       d d d «       y # 1 sw Y   y xY w)NÚbudgetr/   r_   r`   s     r   Ú(test_budget_required_for_enabled_backendz8ConfigFileTests.test_budget_required_for_enabled_backendt   sH   € Ü˜4Ÿ9™9Ó%ˆØ�‰N˜7Ð#Ø×ÑÔ1Ó2ñ 	'Ü  Ô&÷	'÷ 	'ñ 	'ús   ±AÁAc                 óì   — t        | j                  «      }i |d<   | j                  t        «      5 }t	        |«       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)NÚauth)r   r   r&   r   r   r'   r(   r)   )r   ra   r+   s      r   Útest_auth_requiredz"ConfigFileTests.test_auth_requiredz   s^   € Ü˜4Ÿ9™9Ó%ˆØˆˆV‰Ø×ÑÔ1Ó2ð 	'°cÜ  Ô&÷	'à�‰�fœc #§-¡-Ó0Õ1÷	'ð 	'ús   °A*Á*A3c                 ó0   — | j                  dddgii«       y )Nry   Úallowed_sender_idsÚkaisrT   r   s    r   Ú test_invalid_sender_ids_rejectedz0ConfigFileTests.test_invalid_sender_ids_rejected�   s   € Ø×Ñ˜VÐ&:¸V¸HÐ%EÐFÕGr   c                 óØ   — | j                  ddddiii«       | j                  ddddiii«       | j                  dddii«       | j                  d	d
gi«       | j                  ddi«       y )NÚbackendsr/   ÚqualityTÚ90Ú	clearanceÚttl_secondsiY  r4   ÚliveÚ	state_dirzrelative/pathrT   r   s    r   Útest_types_strictz!ConfigFileTests.test_types_strict„   s|   € Ø×Ñ˜Z¨'°I¸tÐ3DÐ)EÐFÔGØ×Ñ˜Z¨'°I¸tÐ3DÐ)EÐFÔGØ×Ñ˜[¨=¸#Ð*>Ð?Ô@Ø×Ñ˜_¨v¨hÐ7Ô8Ø×Ñ˜[¨/Ð:Õ;r   c                 ó,  — | j                   dz  }|j                  dd¬«       || j                   dz  fD ]F  }| j                  |¬«      5  | j                  t        «      5  t        |«       d d d «       d d d «       ŒH y # 1 sw Y   ŒxY w# 1 sw Y   Œ_xY w)Nzbroken.jsonz{nopezutf-8)Úencodingzmissing.json)Úpath)r   Ú
write_textÚsubTestr&   r   r   )r   ÚbrokenrŠ   s      r   Útest_load_rejects_invalid_filesz/ConfigFileTests.test_load_rejects_invalid_files‹   s“   € Ø—‘˜]Ñ*ˆØ×Ñ˜'¨GÐÔ4Ø˜TŸY™Y¨Ñ7Ð8ò 	*ˆDØ—‘ 4�Ó(ñ *¨$×*;Ñ*;Ô<NÓ*Oñ *Ü# DÔ)÷*÷ *ð *ñ	*÷*ð *ú÷ *ð *ús$   Á	B
ÁA>Á+B
Á>BÂB
Â
B	c                 ó�   — t        | j                  «       «      }| j                  |j                  d   j                  t
        «       y rs   )r   r$   ÚassertIsInstanceÚadaptersÚrunnerr	   )r   Úgateways     r   Útest_default_runner_is_mockz+ConfigFileTests.test_default_runner_is_mock’   s3   € Ü˜$Ÿ*™*›,Ó'ˆØ×Ñ˜g×.Ñ.¨wÑ7×>Ñ>Ä
ÕKr   c                 óP  — | j                  dddgddidœi«      }t        |«      }|j                  d   j                  }| j	                  |t
        «       | j                  |j                  j                  d«       | j                  |j                  d   j                  d   d«       y )Nr/   Tz/usr/bin/envrW   rX   r]   r   )
r$   r   r‘   r’   r�   r
   r3   rK   rW   Úargv)r   r   r“   r’   s       r   Ú=test_real_execution_selects_subprocess_runner_without_runningzMConfigFileTests.test_real_execution_selects_subprocess_runner_without_running–   s¡   € Ø—‘˜W¸ÐUcÐTdØ;HÈ"Ð:Mñ'Oð Pó Qˆä˜&“/ˆØ×!Ñ! 'Ñ*×1Ñ1ˆØ×Ñ˜fÔ&6Ô7Ø×Ñ˜×/Ñ/×;Ñ;¸RÔ@Ø×Ñ˜×)Ñ)¨'Ñ2×7Ñ7¸Ñ:¸NÕKr   r   )Ú__name__Ú
__module__Ú__qualname__r   r!   r$   r,   r@   rO   rU   rY   r[   rb   rh   rm   ro   rq   rt   rw   rz   r~   r‡   rŽ   r”   r—   © r   r   r   r      s|   „ ò8ò
óGó8òBòEò Nò
fò/ò'òJòFòFò'òGò'ò2òHò<ò*òLóLr   r   Ú__main__)Ú__doc__Újsonr   ÚunittestÚpathlibr   Úaria_router.configr   r   r   Úaria_router.corer   Úaria_router.gatewayr   Úaria_router.runnerr	   r
   Útests.helpersr   r   r   Ú__file__ÚresolveÚparentsr2   ÚTestCaser   r˜   Úmainr›   r   r   ú<module>r«      s‚   ðÙ AÛ Û Û Ý ç \Ñ \Ý (Ý 'ß ;ç :Ñ :á
ˆx‹.×
 Ñ
 Ó
"×
*Ñ
*¨1Ñ
-°Ñ
8Ð;QÑ
Q€ôLL�h×'Ñ'ô LLð^ ˆzÒØ€H‡M�M…Oð r   