Ë
    èÝjr  ã                   óÂ   — 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 ddl	m
Z
 ddlmZ  G d„ dej                  «      Z G d	„ d
e«      Zedk(  r ej"                  «        yy)uS   Entscheidungsprotokoll: strukturiert, ohne Klartext, AusfÃ¼hrung nur mit Protokoll.é    N)ÚPath)ÚDecisionLogÚDecisionLogError)ÚHandling)ÚGatewayTestCasec                   ó   — e Zd Zd„ Zd„ Zy)ÚDecisionLogTestsc           	      óÔ  — t        j                  «       5 }t        t        |«      dz  «      }ddidddiidddigidi iddifD ]L  }| j	                  |¬	«      5  | j                  t        «      5  |j                  |«       d d d «       d d d «       ŒN | j                  t        |«      dz  j                  «       «       d d d «       y # 1 sw Y   ŒGxY w# 1 sw Y   Œ˜xY w# 1 sw Y   y xY w)
Núd.jsonlÚtextÚxÚaÚpromptÚcontentÚ	clearanceÚ
reply_text)Úrecord)
ÚtempfileÚTemporaryDirectoryr   r   ÚsubTestÚassertRaisesr   ÚwriteÚassertFalseÚexists)ÚselfÚtmpÚlogr   s       ú8/home/aria/aria-v3-dev/python/tests/test_decision_log.pyÚtest_forbidden_keys_rejectedz-DecisionLogTests.test_forbidden_keys_rejected   sù   € Ü×(Ñ(Ó*ð 	?¨cÜœd 3›i¨)Ñ3Ó4ˆCØ" C˜=¨3°¸3°Ð*@À3È)ÐUXÐIYÐHZÐB[Ø'¨Ð,¨|¸SÐ.AðCò &�à—\‘\¨�\Ó0ñ &°$×2CÑ2CÔDTÓ2Uñ &Ø—I‘I˜fÔ%÷&÷ &ð &ð&ð ×Ñœd 3›i¨)Ñ3×;Ñ;Ó=Ô>÷	?ð 	?÷&ð &ú÷ &ð &ú÷		?ð 	?ús<   •ACÁCÁ.C	Â CÂ5CÃCÃCÃCÃCÃC'c           	      óž  — t        j                  «       5 }t        t        |«      dz  «      }t	        d«      D ]  }|j                  |ddœ«       Œ t        |«      dz  j                  d¬«      j                  «       }| j                  |D �cg c]  }t        j                  |«      d   ‘Œ c}g d¢«       d d d «       y c c}w # 1 sw Y   y xY w)	Nr   é   Ú@0000000000000000000000000000000000000000000000000000000000000000)ÚnÚprompt_sha256zutf-8)Úencodingr#   )r   é   é   )r   r   r   r   Úranger   Ú	read_textÚ
splitlinesÚassertEqualÚjsonÚloads)r   r   r   ÚindexÚlinesÚlines         r   Útest_records_are_json_linesz,DecisionLogTests.test_records_are_json_lines   s¼   € Ü×(Ñ(Ó*ð 	S¨cÜœd 3›i¨)Ñ3Ó4ˆCÜ˜q›ò C�Ø—	‘	 ¸ÑAÕBðCä˜#“Y Ñ*×5Ñ5¸wÐ5ÓG×RÑRÓTˆEØ×ÑÀÖF¸œdŸj™j¨Ó.¨sÓ3ÒFÊ	ÔR÷	Sð 	Sùò
 G÷	Sð 	Sús   •A7CÂB>
Â+
CÂ>CÃCN)Ú__name__Ú
__module__Ú__qualname__r   r1   © ó    r   r	   r	      s   „ ò?óSr6   r	   c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚGatewayLogTestsc                 ó  — | j                  «       }|j                  | j                  dd«      «      }| j                  |«      D �cg c]#  }|j	                  d«      |j
                  k(  sŒ"|‘Œ% }}| j                  |D �cg c]  }|d   ‘Œ	 c}ddg«       | j                  |d   d   d	«       | j                  |d   d
   d   «       | j                  |d   d   d«       | j                  |d   d   d«       y c c}w c c}w )Nr&   ú#public FrageÚjob_idÚphaseÚdecisionÚoutcomer   ÚcodeÚCLEARANCE_ISSUEDÚauthorizationÚclearance_issuedÚadapter_statusÚsuccessÚhandlingÚreply)ÚgatewayÚhandleÚrequestÚlog_recordsÚgetr;   r+   Ú
assertTrue)r   rG   ÚresultÚrÚrecordss        r   Ú(test_execute_writes_decision_and_outcomez8GatewayLogTests.test_execute_writes_decision_and_outcome!   sì   € Ø—,‘,“.ˆØ—‘ §¡¨Q°Ó @ÓAˆØ"×.Ñ.¨wÓ7Ö\˜¸1¿5¹5À»?ÈfÏmÉmÓ;[’1Ð\ˆÐ\Ø×Ñ¨gÖ6¨˜!˜G›*Ò6¸ÀYÐ8OÔPØ×Ñ˜ ™ FÑ+Ð-?Ô@Ø�‰˜ ™
 ?Ñ3Ð4FÑGÔHØ×Ñ˜ ™Ð$4Ñ5°yÔAØ×Ñ˜ ™ JÑ/°Õ9ùò ]ùÚ6s   Á#C7Á)C7Á>C<c                 ó$  — | j                  «       }|j                  | j                  dd«      «       | j                  |«      d   }| j	                  |d   d«       | j	                  |d   d«       | j	                  |d   d	   d
«       | j                  |d   d   «       | j	                  |d   d   D �ch c]  }|d   ’Œ	 c}d
dh«       | j                  d|d   «       | j                  d
|d   «       | j	                  |d   d   d«       y c c}w )Nr'   z#public Bitte debug mein PythonéÿÿÿÿÚprivacyÚpublicÚ
task_classÚcodingÚroutingÚselectedÚcodexÚ	tie_breakÚ
candidatesÚbackendÚclauder?   ÚcapabilitiesÚbackend_stateÚauthenticationÚ	principalÚowner)rG   rH   rI   Údecision_recordsr+   rL   ÚassertIn)r   rG   r   Úcs       r   Útest_routing_record_structuredz.GatewayLogTests.test_routing_record_structured+   s  € Ø—,‘,“.ˆØ�‰�t—|‘| AÐ'HÓIÔJØ×&Ñ& wÓ/°Ñ3ˆØ×Ñ˜ 	Ñ*¨HÔ5Ø×Ñ˜ Ñ-¨xÔ8Ø×Ñ˜ 	Ñ*¨:Ñ6¸Ô@Ø�‰˜˜yÑ)¨+Ñ6Ô7Ø×Ñ°°yÑ0AÀ,Ñ0OÖP¨1˜!˜I›,ÒPÐSZÐ\dÐReÔfØ�‰�f˜f ^Ñ4Ô5Ø�‰�g˜v oÑ6Ô7Ø×Ñ˜Ð 0Ñ1°+Ñ>ÀÕHùò Qs   Â4Dc                 ó<  — | j                  «       }|j                  | j                  dd«      «       | j                  |«      d   }| j	                  |d   d«       t        d„ |d   d   D «       «      }| j                  d	|d
   «       | j                  d|d   «       y )Nr!   z/codex Angebot BMWrR   r?   ÚMANUAL_CHOICE_NOT_PERMITTEDc              3   ó2   K  — | ]  }|d    dk(  sŒ|–— Œ y­w)r\   rY   Nr5   )Ú.0re   s     r   ú	<genexpr>zKGatewayLogTests.test_blocked_decision_logged_with_reason.<locals>.<genexpr>=   s   è ø€ Ò[˜1À1ÀYÁ<ÐSZÓCZ”QÑ[ùs   ‚�rW   r[   ÚPRIVACY_NOT_PERMITTEDÚreasonszcustomer.bmwÚprivacy_rules)rG   rH   rI   rc   r+   Únextrd   )r   rG   r   rY   s       r   Ú(test_blocked_decision_logged_with_reasonz8GatewayLogTests.test_blocked_decision_logged_with_reason8   s�   € Ø—,‘,“.ˆØ�‰�t—|‘| AÐ';Ó<Ô=Ø×&Ñ& wÓ/°Ñ3ˆØ×Ñ˜ ™Ð)FÔGÜÑ[  yÑ 1°,Ñ ?Ô[Ó[ˆØ�‰Ð-¨u°YÑ/?Ô@Ø�‰�n f¨_Ñ&=Õ>r6   c                 ó  — | j                  «       }| j                  dz  j                  d¬«       | j                  dz  dz  j                  «        |j                  | j	                  dd«      «      }| j                  |j                  |j                  ft        j                  df«       | j                  |j                  d   j                  j                  g «       | j                  |j                  «       d	   d   d
   d   d«       y )NÚstateT©Úexist_okúdecisions.jsonlé   r:   ÚLOG_UNAVAILABLErY   ÚbackendsÚbudgetÚjobsr   )rG   ÚrootÚmkdirrH   rI   r+   rE   r?   r   ÚERRORÚadaptersÚrunnerÚcallsÚstatus)r   rG   rM   s      r   Ú!test_log_failure_blocks_executionz1GatewayLogTests.test_log_failure_blocks_executionA   sÕ   € Ø—,‘,“.ˆØ	�‰�WÑ	×#Ñ#¨TÐ#Ô2Ø	�‰�WÑ	Ð0Ñ	0×7Ñ7Ô9Ø—‘ §¡¨Q°Ó @ÓAˆØ×Ñ˜&Ÿ/™/¨6¯;©;Ð7¼(¿.¹.ÐJ[Ð9\Ô]Ø×Ñ˜×)Ñ)¨'Ñ2×9Ñ9×?Ñ?ÀÔDØ×Ñ˜Ÿ™Ó)¨*Ñ5°gÑ>¸xÑHÈÑPÐRSÕTr6   c                 ó  — | j                  «       }| j                  dz  j                  d¬«       | j                  dz  dz  j                  «        | j                  |j	                  | j                  dd«      «      j                  d«       y )Nrr   Trs   ru   é   Úhallorw   )rG   r{   r|   r+   ÚshadowrI   r?   )r   rG   s     r   Útest_shadow_requires_logz(GatewayLogTests.test_shadow_requires_logJ   sm   € Ø—,‘,“.ˆØ	�‰�WÑ	×#Ñ#¨TÐ#Ô2Ø	�‰�WÑ	Ð0Ñ	0×7Ñ7Ô9Ø×Ñ˜Ÿ™¨¯©°Q¸Ó(@ÓA×FÑFÐHYÕZr6   N)r2   r3   r4   rP   rf   rp   r‚   r‡   r5   r6   r   r8   r8       s   „ ò:òIò?òUó[r6   r8   Ú__main__)Ú__doc__r,   r   ÚunittestÚpathlibr   Úaria_router.decision_logr   r   Úaria_router.gatewayr   Útests.helpersr   ÚTestCaser	   r8   r2   Úmainr5   r6   r   ú<module>r‘      sZ   ðÙ YÛ Û Û Ý ç BÝ (å )ôS�x×(Ñ(ô Sô&.[�oô .[ðb ˆzÒØ€H‡M�M…Oð r6   