Ë
    dQêj¾  ã                   ón   — 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  G d„ d	e«      Zy)
é    N)ÚIsolatedAsyncioTestCase)ÚANYÚ	AsyncMockÚpatché   )ÚConfigException)ÚExecProvider)Ú
ConfigNodec                   óH   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚExecProviderTestc                 ó–  — t        ddg d¢dd dœ«      | _        d| _        t        d«      }|j	                  «       | _        | j
                  j                  | _        t        | j                  ¬«      | j                  j                  _
        t        d	¬«      | j                  j                  _
        t        d
¬«      | j                  _        y )NÚtestúaws-iam-authenticator©Útokenú-iÚdummyú$client.authentication.k8s.io/v1beta1)ÚcommandÚargsÚ
apiVersionÚenvzÌ
        {
            "apiVersion": "client.authentication.k8s.io/v1beta1",
            "kind": "ExecCredential",
            "status": {
                "token": "dummy"
            }
        }
        zBkubernetes.aio.config.exec_provider.asyncio.create_subprocess_exec)Úreturn_valueÚ r   )r
   Úinput_okÚ	output_okr   ÚstartÚ	exec_mockr   Úprocess_mockr   ÚstdoutÚreadÚstderrÚwait)ÚselfÚprocess_patchs     úm/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/kubernetes/aio/config/exec_provider_test.pyÚsetUpzExecProviderTest.setUp   s¢   € Ü" 6Ø.Ú,Ø@Øñ	,
ó ˆŒðˆŒô ÐbÓcˆØ&×,Ñ,Ó.ˆŒØ ŸN™N×7Ñ7ˆÔÜ(1¸t¿~¹~Ô(Nˆ×Ñ× Ñ Ô%Ü(1¸rÔ(Bˆ×Ñ× Ñ Ô%Ü!*¸Ô!:ˆ×ÑÕó    c                 ó,   — t        j                  «        y )N)r   Ústopall)r$   s    r&   ÚtearDownzExecProviderTest.tearDown3   s   € Ü�‰�r(   c                 óà   — i ddiddig}|D ]T  }| j                  t        «      5 }t        |«       d d d «       | j                  dj                  j
                  d   «       ŒV y # 1 sw Y   Œ5xY w)Nr   r   r   z$exec: malformed request. missing keyr   )ÚassertRaisesr   r	   ÚassertInÚ	exceptionr   )r$   Úexec_configsÚexec_configÚcontexts       r&   Útest_missing_input_keysz(ExecProviderTest.test_missing_input_keys6   sv   € Ø˜Y¨˜O¨l¸BÐ-?Ð@ˆØ'ò 	5ˆKØ×"Ñ"¤?Ó3ð *°wÜ˜[Ô)÷*à�M‰MÐ@Ø!×+Ñ+×0Ñ0°Ñ3õ5ñ	5÷*ð *ús   ¤A$Á$A-	c              ƒ   ó@  K  — d| j                   j                  j                  _        d| j                   j                  _        | j                  t        d«      5  t        | j                  «      }|j                  «       ƒ d {  –—†  d d d «       y 7 Œ# 1 sw Y   y xY w­w)Nr   r   zexec: process returned 1)
r   r    r!   r   r#   ÚassertRaisesRegexr   r	   r   Úrun©r$   Úeps     r&   Útest_error_code_returnedz)ExecProviderTest.test_error_code_returned>   s}   è ø€ Ø57ˆ×Ñ× Ñ ×%Ñ%Ô2Ø./ˆ×Ñ×ÑÔ+Ø×#Ñ#¤OÐ5OÓPñ 	Ü˜dŸm™mÓ,ˆBØ—&‘&“(�NˆN÷	ð 	àø÷	ð 	üs0   ‚ABÁ)BÂBÂBÂ	BÂBÂBÂBc              ƒ   ó
  K  — d| j                   j                  j                  _        | j	                  t
        d«      5  t        | j                  «      }|j                  «       ƒ d {  –—†  d d d «       y 7 Œ# 1 sw Y   y xY w­w)Nr   z%exec: failed to decode process output©	r   r    r!   r   r5   r   r	   r   r6   r7   s     r&   Útest_nonjson_output_returnedz-ExecProviderTest.test_nonjson_output_returnedE   si   è ø€ Ø57ˆ×Ñ× Ñ ×%Ñ%Ô2Ø×#Ñ#¤OÐ5\Ó]ñ 	Ü˜dŸm™mÓ,ˆBØ—&‘&“(�NˆN÷	ð 	àø÷	ð 	üs.   ‚<B¾)A7Á'A5Á(A7Á,	BÁ5A7Á7B Á<Bc              ƒ   ó   K  — g d¢}|D ]s  }|| j                   j                  j                  _        | j	                  t
        d«      5  t        | j                  «      }|j                  «       ƒ d {  –—†  d d d «       Œu y 7 Œ# 1 sw Y   Œ‚xY w­w)N)z¦
            {
                "kind": "ExecCredential",
                "status": {
                    "token": "dummy"
                }
            }
            zÂ
            {
                "apiVersion": "client.authentication.k8s.io/v1beta1",
                "status": {
                    "token": "dummy"
                }
            }
            z˜
            {
                "apiVersion": "client.authentication.k8s.io/v1beta1",
                "kind": "ExecCredential"
            }
            z%exec: malformed response. missing keyr;   )r$   ÚoutputsÚoutputr8   s       r&   Útest_missing_output_keysz)ExecProviderTest.test_missing_output_keysK   sƒ   è ø€ ò
ˆð, ò 	ˆFØ9?ˆD×Ñ×$Ñ$×)Ñ)Ô6Ø×'Ñ'¬Ð9`Óañ Ü! $§-¡-Ó0�Ø—f‘f“h—�÷ð ñ	ð ø÷ð üs0   ‚ABÁ)BÁ0B Á1BÁ5BÂ BÂB	ÂBc              ƒ   ó6  K  — d}d|z  }|| j                   j                  j                  _        | j	                  t
        dj                  |«      «      5  t        | j                  «      }|j                  «       ƒ d {  –—†  d d d «       y 7 Œ# 1 sw Y   y xY w­w)Nzclient.authentication.k8s.io/v1zª
        {
            "apiVersion": "%s",
            "kind": "ExecCredential",
            "status": {
                "token": "dummy"
            }
        }
        z*exec: plugin api version {} does not match)
r   r    r!   r   r5   r   Úformatr	   r   r6   )r$   Úwrong_api_versionr?   r8   s       r&   Útest_mismatched_api_versionz,ExecProviderTest.test_mismatched_api_versionh   s–   è ø€ Ø=Ððð  ñ ˆð 6<ˆ×Ñ× Ñ ×%Ñ%Ô2Ø×#Ñ#ÜØ<×CÑCÐDUÓVóXñ 	ô ˜dŸm™mÓ,ˆBØ—&‘&“(�NˆN÷		ð 	ð ø÷		ð 	üs0   ‚ABÁ)BÁ=BÁ>BÂ	BÂBÂBÂBc           
   ƒ   ó  K  — t        | j                  «      }|j                  «       ƒ d {  –—† }| j                  t	        |t
        «      «       | j                  d|v «       | j                  j                  ddddt        dd d¬«       | j                  j                  j                  j                  «        | j                  j                  j                  j                  «        | j                  j                  j                  «        y 7 ŒÞ­w)Nr   r   r   r   éÿÿÿÿ©r   r"   Ústdinr    )r	   r   r6   Ú
assertTrueÚ
isinstanceÚdictr   Úassert_called_once_withr   r   r    r!   Úassert_awaited_oncer"   r#   )r$   r8   Úresults      r&   Ú
test_ok_01zExecProviderTest.test_ok_01z   sË   è ø€ Ü˜$Ÿ-™-Ó(ˆØ—v‘v“x—ˆØ�‰œ
 6¬4Ó0Ô1Ø�‰˜ 6Ð)Ô*Ø�‰×.Ñ.Ð/FÈÐQUÐW^Ü36¸rÈÐVXð 	/ô 	Zà×Ñ× Ñ ×%Ñ%×9Ñ9Ô;Ø×Ñ× Ñ ×%Ñ%×9Ñ9Ô;Ø×Ñ×Ñ×2Ñ2Õ4ð  ús   ‚)D«D
¬CDc              ƒ   ó0  K  — t        dddg d¢dœ«      }t        |«      }|j                  «       ƒ d {  –—† }| j                  t	        |t
        «      «       | j                  d|v «       | j                  j                  ddddd	d
t        dd d¬«
       | j                  j                  j                  j                  «        | j                  j                  j                  j                  «        | j                  j                  j                  «        y 7 Œà­w)Nr   r   r   )r   r   r   ú--mockÚ90)r   r   r   r   r   r   rQ   rR   rF   rG   )r
   r	   r6   rI   rJ   rK   r   rL   r   r   r    r!   rM   r"   r#   )r$   r   r8   rN   s       r&   Útest_ok_with_argsz"ExecProviderTest.test_ok_with_args…   sé   è ø€ Ü˜fØ.Ø@Ú<ñ'
ó ˆô
 ˜(Ó#ˆØ—v‘v“x—ˆØ�‰œ
 6¬4Ó0Ô1Ø�‰˜ 6Ð)Ô*Ø�‰×.Ñ.Ð/FÈÐQUÐW^Ð`hÐjnÜ36¸rÈÐVXð 	/ô 	Zà×Ñ× Ñ ×%Ñ%×9Ñ9Ô;Ø×Ñ× Ñ ×%Ñ%×9Ñ9Ô;Ø×Ñ×Ñ×2Ñ2Õ4ð  ús   ‚1D³D´C!Dc           
   ƒ   ó4  K  — t        dddg d¢dddœgdœ«      }t        |«      }|j                  «       ƒ d {  –—† }| j                  t	        |t
        «      «       | j                  d	|v «       | j                  j                  d
   d   d   }| j                  |d   d«       | j                  t        j                  |d   «      dddt        j                  j                  «       idœ«       | j                  j                  dd	ddt        dd d¬«       | j                   j                  j"                  j%                  «        | j                   j&                  j"                  j%                  «        | j                   j(                  j%                  «        y 7 �Œ]­w)Nr   r   r   r   ÚEXEC_PROVIDER_ENV_NAMEÚEXEC_PROVIDER_ENV_VALUE)ÚnameÚvalue)r   r   r   r   r   r   r   r   ÚKUBERNETES_EXEC_INFOÚExecCredentialÚinteractive)r   ÚkindÚspecr   r   rF   rG   )r
   r	   r6   rI   rJ   rK   r   Úawait_args_listÚassertEqualÚjsonÚloadsÚsysr    ÚisattyrL   r   r   r!   rM   r"   r#   )r$   r   r8   rN   Úenv_useds        r&   Útest_ok_with_envz!ExecProviderTest.test_ok_with_env•   so  è ø€ ä˜fØ.Ø@Ú,Ø5Ø7ñ9ð :ñ	';ó <ˆô ˜(Ó#ˆØ—v‘v“x—ˆØ�‰œ
 6¬4Ó0Ô1Ø�‰˜ 6Ð)Ô*à—>‘>×1Ñ1°!Ñ4°QÑ7¸Ñ>ˆØ×Ñ˜Ð":Ñ;Ð=VÔWØ×ÑœŸ™ HÐ-CÑ$DÓEØHnØP`ØQ^Ô`c×`jÑ`j×`qÑ`qÓ`sÐPtñHvô 	wð 	�‰×.Ñ.Ð/FÈÐQUÐW^Ü36¸rÈÐVXð 	/ô 	Zà×Ñ× Ñ ×%Ñ%×9Ñ9Ô;Ø×Ñ× Ñ ×%Ñ%×9Ñ9Ô;Ø×Ñ×Ñ×2Ñ2Õ4ð  ûs   ‚6F¸F¹EFN)Ú__name__Ú
__module__Ú__qualname__r'   r+   r3   r9   r<   r@   rD   rO   rS   re   © r(   r&   r   r      s4   „ ò;ò0ò5òòòò:ò$	5ò5ó 5r(   r   )r`   rb   Úunittestr   Úunittest.mockr   r   r   Úconfig_exceptionr   Úexec_providerr	   Úkube_configr
   r   ri   r(   r&   ú<module>ro      s.   ðó Û 
Ý ,ß /Ñ /å -Ý 'Ý #ôT5Ð.õ T5r(   