Ë
    dQêj¿  ã                   ól  — d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZ d dlZddlmZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZmZ d	Zd
Zd„ Zd„ Z d„ Z!dZ"dZ#dZ$dZ% ee%«      Z&dZ' ee'«      Z(dZ)dZ*dZ+dZ,dZ-dZ. ee.«      Z/dZ0 ee0«      Z1dZ2 ee2«      Z3dZ4dZ5dZ6dZ7 e e6«      dz    e e7«      z   Z8e8dz   e3z   Z9d	e9z  Z6d Z: e e6«      dz    e e:«      z   Z;e;dz   e3z   Z< ee.«      Z=d!„ Z> G d"„ d#e«      Z? G d$„ d%e?«      Z@ G d&„ d'e?«      ZA G d(„ d)«      ZB G d*„ d+e?«      ZC G d,„ d-e?«      ZDy).é    N)ÚSimpleNamespace)ÚIsolatedAsyncioTestCase)ÚMockÚpatché   )Úload_config)ÚConfigException)ÚENV_KUBECONFIG_PATH_SEPARATORÚ
ConfigNodeÚ
FileOrDataÚKubeConfigLoaderÚKubeConfigMergerÚlist_kube_config_contextsÚload_kube_configÚload_kube_config_from_dictÚnew_client_from_configÚnew_client_from_config_dictÚrefresh_tokenz	Bearer %sÚzz_non_existing_file_472398324c                 ód   — t        j                  | j                  «       «      j                  «       S ©N)Úbase64Ústandard_b64encodeÚencodeÚdecode©Ústrings    úk/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/kubernetes/aio/config/kube_config_test.pyÚ_base64r   (   s"   € Ü×$Ñ$ V§]¡]£_Ó5×<Ñ<Ó>Ð>ó    c                 ó‚   — t        j                  | j                  «       «      j                  «       j	                  d«      S )NÚ )r   Ú	b64encoder   r   Úrstripr   s    r   Ú_unpadded_base64r%   ,   s-   € Ü×Ñ˜FŸM™M›OÓ,×3Ñ3Ó5×<Ñ<¸RÓ@Ð@r    c                 ó   — t        | «      ‚r   )Ú	Exception)Ústs    r   Ú_raise_exceptionr)   0   s   € Ü
�B‹-Ðr    ÚfileÚdataztest-filenamez	test-datazanother-test-dataz	test-hostÚmeÚpasszBasic bWU6cGFzcw==zhttps://test-hostz	cert-authú
client-keyzclient-certzkubernetes.iozhttp://proxy.example.com:3128ztest-oidc-tokenz{"name": "test"}ú.z!{"name": "test","exp": 536457600}c              ƒ   ó   K  — | S ­wr   © )Úvals    r   Ú_return_async_valuer3   Y   s   è ø€ Ø€Jùs   ‚c                   ó,   — e Zd Zd„ Zd„ Zdd„Zd„ Zd„ Zy)ÚBaseTestCasec                 ó   — g | _         y r   )Ú_temp_files©Úselfs    r   ÚsetUpzBaseTestCase.setUp_   s
   € ØˆÕr    c                 óx   — | j                   D ]  }t        j                  |«       Œ t        j                  «        y r   )r7   ÚosÚremover   Ústopall)r9   Úfs     r   ÚtearDownzBaseTestCase.tearDownb   s+   € Ø×!Ñ!ò 	ˆAÜ�I‰I�a�Lð	ä�‰�r    c                 óæ   — t        j                  «       \  }}| j                  j                  |«       t	        j
                  |t        j                  |«      «       t	        j                  |«       |S r   )	ÚtempfileÚmkstempr7   Úappendr<   ÚwriteÚstrr   Úclose)r9   ÚcontentÚhandlerÚnames       r   Ú_create_temp_filezBaseTestCase._create_temp_fileg   sP   € Ü ×(Ñ(Ó*‰ˆ�Ø×Ñ×Ñ Ô%Ü
�‰�œ#Ÿ*™* WÓ-Ô.Ü
�‰�ÔØˆr    c                 ó²   — | j                  t        «      5 } ||i |¤Ž d d d «       | j                  |t        j                  «      «       y # 1 sw Y   Œ/xY wr   ©ÚassertRaisesr	   ÚassertInrF   Ú	exception©r9   ÚfuncÚmessage_partÚargsÚkwargsÚcontexts         r   Úexpect_exceptionzBaseTestCase.expect_exceptionn   sM   € Ø×ÑœÓ/ð 	"°7Ù�$Ð!˜&Ò!÷	"à�‰�l¤C¨×(9Ñ(9Ó$:Õ;÷	"ð 	"ús   –	AÁAc              �   óÎ   K  — | j                  t        «      5 } ||i |¤Žƒ d {  –—†  d d d «       | j                  |t        j                  «      «       y 7 Œ2# 1 sw Y   Œ1xY w­wr   rM   rQ   s         r   Úasync_expect_exceptionz#BaseTestCase.async_expect_exceptions   s\   è ø€ Ø×ÑœÓ/ð 	(°7Ù˜Ð' Ñ'×'Ð'÷	(à�‰�l¤C¨×(9Ñ(9Ó$:Õ;ð (ø÷	(ð 	(üs+   ‚A%˜A¤A¥A©.A%ÁAÁA"ÁA%N)r"   )Ú__name__Ú
__module__Ú__qualname__r:   r@   rK   rW   rY   r1   r    r   r5   r5   ]   s   „ òòó
ò<ó
<r    r5   c                   ód   — e Zd Ze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)ÚTestFileOrDatac                 ód   — t        | «      5 }|j                  «       cd d d «       S # 1 sw Y   y xY wr   )ÚopenÚread)Úfilenamer?   s     r   Úget_file_contentzTestFileOrData.get_file_content{   s)   € ä�(‹^ð 	˜qØ—6‘6“8÷	÷ 	ò 	ús   Œ&¦/c                 óÄ   — t         | j                  t        ¬«      i}t        |t         ¬«      }| j	                  t        | j                  |j                  «       «      «       y ©N©rH   ©ÚobjÚfile_key_name)ÚTEST_FILE_KEYrK   Ú	TEST_DATAr   ÚassertEqualrc   Úas_file©r9   rh   Úts      r   Útest_file_given_filez#TestFileOrData.test_file_given_file€   sJ   € ä˜4×1Ñ1¼)Ð1ÓDðFˆä˜3¬mÔ<ˆØ×Ñœ D×$9Ñ$9¸!¿)¹)»+Ó$FÕGr    c                 óz   — t         }t        |i}t        |t        ¬«      }| j                  |j                  d«       y )Nrg   údoes not exists)ÚNON_EXISTING_FILErj   r   rW   rm   )r9   Útemp_filenamerh   ro   s       r   Ú!test_file_given_non_existing_filez0TestFileOrData.test_file_given_non_existing_file†   s2   € Ü)ˆÜ˜mÐ,ˆÜ˜3¬mÔ<ˆØ×Ñ˜aŸi™iÐ):Õ;r    c                 ó®   — t         t        i}t        |t        t         ¬«      }| j	                  t
        | j                  |j                  «       «      «       y ©N©rh   ri   Údata_key_name)ÚTEST_DATA_KEYÚTEST_DATA_BASE64r   rj   rl   rk   rc   rm   rn   s      r   Útest_file_given_dataz#TestFileOrData.test_file_given_dataŒ   s?   € ÜÔ.Ð/ˆÜ˜3¬mÜ%2ô4ˆà×Ñœ D×$9Ñ$9¸!¿)¹)»+Ó$FÕGr    c                 ó°   — t         t        i}t        |t        t         d¬«      }| j	                  t        | j                  |j                  «       «      «       y ©NF)rh   ri   ry   Úbase64_file_content)rz   rk   r   rj   rl   rc   rm   rn   s      r   Útest_file_given_data_no_base64z-TestFileOrData.test_file_given_data_no_base64’   sA   € ÜœiÐ(ˆÜ˜3¬mÜ%2ÈôOˆà×Ñœ D×$9Ñ$9¸!¿)¹)»+Ó$FÕGr    c                 ó�   — t         t        i}t        |t        t         ¬«      }| j	                  t        |j                  «       «       y rw   )rz   r{   r   rj   rl   Úas_datarn   s      r   Útest_data_given_dataz#TestFileOrData.test_data_given_data˜   s5   € ÜÔ.Ð/ˆÜ˜3¬mÜ%2ô4ˆà×ÑÔ)¨1¯9©9«;Õ7r    c                 ó¦   — t         | j                  t        ¬«      i}t        |t         ¬«      }| j	                  t
        |j                  «       «       y re   )rj   rK   rk   r   rl   r{   r‚   rn   s      r   Útest_data_given_filez#TestFileOrData.test_data_given_filež   s@   € ä˜4×1Ñ1¼)Ð1ÓDðFˆä˜3¬mÔ<ˆØ×ÑÔ)¨1¯9©9«;Õ7r    c                 ó¨   — t         | j                  t        ¬«      i}t        |t         d¬«      }| j	                  t        |j                  «       «       y )Nrf   F)rh   ri   r   )rj   rK   rk   r   rl   r‚   rn   s      r   Útest_data_given_file_no_base64z-TestFileOrData.test_data_given_file_no_base64¤   sD   € ä˜4×1Ñ1¼)Ð1ÓDðFˆä˜3¬mØ+0ô2ˆà×Ñœ A§I¡I£KÕ0r    c                 óÄ   — t         t        t        | j                  t        ¬«      i}t        |t        t         ¬«      }| j                  t        |j                  «       «       y ©Nrf   rx   )rz   r{   rj   rK   ÚTEST_ANOTHER_DATAr   rl   r‚   rn   s      r   Útest_data_given_file_and_dataz,TestFileOrData.test_data_given_file_and_data«   sQ   € äÔ+Ü˜4×1Ñ1Ü)ð 2ó +ð,ˆô ˜3¬mÜ%2ô4ˆà×ÑÔ)¨1¯9©9«;Õ7r    c                 óâ   — t         t        t        | j                  t        ¬«      i}t        |t        t         ¬«      }| j                  t        | j                  |j                  «       «      «       y r‰   )
rz   r{   rj   rK   rŠ   r   rl   rk   rc   rm   rn   s      r   Útest_file_given_file_and_dataz,TestFileOrData.test_file_given_file_and_data´   s[   € äÔ+Ü˜4×1Ñ1Ü)ð 2ó +ð,ˆô ˜3¬mÜ%2ô4ˆà×Ñœ D×$9Ñ$9¸!¿)¹)»+Ó$FÕGr    c                 óF  — | j                  t        ¬«      }t        j                  j	                  |«      }t        j                  j                  |«      }t        |i}t        |t        |¬«      }| j                  t        | j                  |j                  «       «      «       y )Nrf   )rh   ri   Úfile_base_path)rK   rk   r<   ÚpathÚdirnameÚbasenamerj   r   rl   rc   rm   )r9   rB   Útempfile_dirÚtempfile_basenamerh   ro   s         r   Útest_file_with_custom_dirnamez,TestFileOrData.test_file_with_custom_dirname½   sy   € Ø×)Ñ)´)Ð)Ó<ˆÜ—w‘w—‘ xÓ0ˆÜŸG™G×,Ñ,¨XÓ6ÐÜÐ/Ð0ˆÜ˜3¬mØ&2ô4ˆà×Ñœ D×$9Ñ$9¸!¿)¹)»+Ó$FÕGr    c                 óÊ   — t         t        j                  «       i}t        |t        t         ¬«      }| j                  t        | j                  |j                  «       «      «       y rw   )	rz   r{   r   r   rj   rl   rk   rc   rm   rn   s      r   Útest_file_given_data_bytesz)TestFileOrData.test_file_given_data_bytesÆ   sH   € ÜÔ.×5Ñ5Ó7Ð8ˆÜ˜3¬mÜ%2ô4ˆà×Ñœ D×$9Ñ$9¸!¿)¹)»+Ó$FÕGr    c                 óÌ   — t         t        j                  «       i}t        |t        t         d¬«      }| j                  t        | j                  |j                  «       «      «       y r~   )rz   rk   r   r   rj   rl   rc   rm   rn   s      r   Ú$test_file_given_data_bytes_no_base64z3TestFileOrData.test_file_given_data_bytes_no_base64Ì   sJ   € Üœi×.Ñ.Ó0Ð1ˆÜ˜3¬mÜ%2ÈôOˆà×Ñœ D×$9Ñ$9¸!¿)¹)»+Ó$FÕGr    N)rZ   r[   r\   Ústaticmethodrc   rp   ru   r|   r€   rƒ   r…   r‡   r‹   r�   r•   r—   r™   r1   r    r   r^   r^   y   sW   „ àñó ðòHò<òHòHò8ò8ò1ò8òHòHòHóHr    r^   c            	       ó    ‡ — e Zd Zdg d¢ddidddœdd	dhdœd
g d¢dœgdddœdd	dhdœd
g d¢dœgdœZˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zˆ xZS )ÚTestConfigNodeÚtest©ÚaÚbÚcÚ	inner_keyÚinner_valueÚ	test_nameÚ
test_value)rJ   ÚvalueÚ
test_name2Úkey1Ú
test_name3)r   é   é   )r¨   Úkey2Úkey3Ú
with_namesÚwith_names_dupc                 ó`   •— t         t        | �  «        t        d| j                  «      | _        y )NÚtest_obj)Úsuperrœ   r:   r   r±   Únode)r9   Ú	__class__s    €r   r:   zTestConfigNode.setUpà   s"   ø€ ÜŒn˜dÑ)Ô+Ü˜z¨4¯=©=Ó9ˆ�	r    c                 ó  — | j                  d| j                  d   «       | j                  dt        | j                  «      «       | j                  d| j                  d   j                  «       | j                  g d¢| j                  d   j                  «       | j                  d| j                  d   d   «       | j                  d	t        | j                  d   «      «       | j                  d
| j                  d   j                  «       | j                  ddi| j                  d   j                  «       | j                  d| j                  d   d   «       | j                  dt        | j                  d   «      «       y )Nr�   r¨   é   ztest_obj/key2r¬   rž   r    r   r«   ztest_obj/key3r­   r¢   r£   )rl   r³   ÚlenrJ   r¦   r8   s    r   Ú test_normal_map_array_operationsz/TestConfigNode.test_normal_map_array_operationsä   s,  € Ø×Ñ˜ §¡¨6Ñ!2Ô3Ø×Ñ˜œC §	¡	›NÔ+à×Ñ˜¨$¯)©)°FÑ*;×*@Ñ*@ÔAØ×Ñš¨$¯)©)°FÑ*;×*AÑ*AÔBØ×Ñ˜˜dŸi™i¨Ñ/°Ñ2Ô3Ø×Ñ˜œC §	¡	¨&Ñ 1Ó2Ô3à×Ñ˜¨$¯)©)°FÑ*;×*@Ñ*@ÔAØ×Ñ˜+ }Ð5°t·y±yÀÑ7H×7NÑ7NÔOØ×Ñ˜¨¯	©	°&Ñ(9¸+Ñ(FÔGØ×Ñ˜œC §	¡	¨&Ñ 1Ó2Õ3r    c                 óÎ  — | j                   d   }| j                  d|j                  d«      d   «       | j                  t	        |j                  d«      t
        «      «       | j                  t	        |j                  d«      t
        «      «       | j                  d|j                  d«      j                  «       | j                  d|j                  d«      j                  «       y )	Nr®   r¥   r¤   r¦   r§   r©   z$test_obj/with_names[name=test_name2]z$test_obj/with_names[name=test_name3])r³   rl   Úget_with_nameÚ
assertTrueÚ
isinstancer   rJ   )r9   r³   s     r   Útest_get_with_namez!TestConfigNode.test_get_with_nameò   sÆ   € Ø�y‰y˜Ñ&ˆØ×ÑØØ×Ñ˜{Ó+¨GÑ4ô	6ð 	�‰Ü�t×)Ñ)¨,Ó7¼ÓDô	Fà�‰Ü�t×)Ñ)¨,Ó7¼ÓDô	Fà×ÑÐ?Ø×+Ñ+¨LÓ9×>Ñ>ô	@à×ÑÐ?Ø×+Ñ+¨LÓ9×>Ñ>õ	@r    c                 óZ   ‡ — ‰ j                  ˆ fd„d«       ‰ j                  ˆ fd„d«       y )Nc                  ó"   •— ‰ j                   d   S )Núnot-exists-key©r³   r8   s   €r   ú<lambda>z9TestConfigNode.test_key_does_not_exists.<locals>.<lambda>  s   ø€  d§i¡iÐ0@Ñ&A€ r    z'Expected key not-exists-key in test_objc                  ó(   •— ‰ j                   d   d   S )Nr­   rÀ   rÁ   r8   s   €r   rÂ   z9TestConfigNode.test_key_does_not_exists.<locals>.<lambda>  s   ø€  d§i¡i°Ñ&7Ð8HÑ&I€ r    z,Expected key not-exists-key in test_obj/key3©rW   r8   s   `r   Útest_key_does_not_existsz'TestConfigNode.test_key_does_not_exists   s-   ø€ Ø×ÑÓAØGô	Ià×ÑÓIØLõ	Nr    c                 ó0   ‡ — ‰ j                  ˆ fd„d«       y )Nc                  ó@   •— ‰ j                   d   j                  d«      S )Nr¬   úno-name©r³   rº   r8   s   €r   rÂ   zETestConfigNode.test_get_with_name_on_invalid_object.<locals>.<lambda>  ó   ø€ �D—I‘I˜fÑ%×3Ñ3°IÓ>€ r    z<Expected all values in test_obj/key2 list to have 'name' keyrÄ   r8   s   `r   Ú$test_get_with_name_on_invalid_objectz3TestConfigNode.test_get_with_name_on_invalid_object  s   ø€ Ø×ÑÛ>ØLõ	Nr    c                 ó0   ‡ — ‰ j                  ˆ fd„d«       y )Nc                  ó@   •— ‰ j                   d   j                  d«      S )Nr­   rÈ   rÉ   r8   s   €r   rÂ   zFTestConfigNode.test_get_with_name_on_non_list_object.<locals>.<lambda>  rÊ   r    z#Expected test_obj/key3 to be a listrÄ   r8   s   `r   Ú%test_get_with_name_on_non_list_objectz4TestConfigNode.test_get_with_name_on_non_list_object  s   ø€ Ø×ÑÛ>Ø1õ	3r    c                 ó0   ‡ — ‰ j                  ˆ fd„d«       y )Nc                  ó@   •— ‰ j                   d   j                  d«      S )Nr®   rÈ   rÉ   r8   s   €r   rÂ   zKTestConfigNode.test_get_with_name_on_name_does_not_exists.<locals>.<lambda>  s   ø€ �D—I‘I˜lÑ+×9Ñ9¸)ÓD€ r    z=Expected object with name no-name in test_obj/with_names listrÄ   r8   s   `r   Ú*test_get_with_name_on_name_does_not_existsz9TestConfigNode.test_get_with_name_on_name_does_not_exists  s   ø€ Ø×ÑÛDØKõ	Mr    c                 ó0   ‡ — ‰ j                  ˆ fd„d«       y )Nc                  ó@   •— ‰ j                   d   j                  d«      S )Nr¯   r¤   rÉ   r8   s   €r   rÂ   zETestConfigNode.test_get_with_name_on_duplicate_name.<locals>.<lambda>  s   ø€ �D—I‘IÐ.Ñ/×=Ñ=¸kÓJ€ r    zLExpected only one object with name test_name in test_obj/with_names_dup listrÄ   r8   s   `r   Ú$test_get_with_name_on_duplicate_namez3TestConfigNode.test_get_with_name_on_duplicate_name  s   ø€ Ø×ÑÛJØZõ	\r    )rZ   r[   r\   r±   r:   r¸   r½   rÅ   rË   rÎ   rÑ   rÔ   Ú__classcell__)r´   s   @r   rœ   rœ   Ó   s“   ø„ àªØ$ mÐ4Ø(3¸lÑKØ(4Ø*0°&Ð)9ñ ;à(4ºyÑIðKð -8À,Ñ#OØ,7Ø.4°fÐ-=ñ$?à,8Â9Ñ#Mð#Oñ	P€Hô:ò4ò@òNòNò
3ò
Mö
\r    rœ   c                   ó(   — e Zd Zg d¢Zdd„Zd„ Zd„ Zy)Ú
FakeConfig)Ússl_ca_certÚkey_fileÚ	cert_fileNc                 ój   — i | _         |r|| j                   d<   | j                  j                  |«       y )NÚBearerToken)Úapi_keyÚ__dict__Úupdate)r9   ÚtokenrU   s      r   Ú__init__zFakeConfig.__init__  s,   € ØˆŒÙØ*/ˆD�L‰L˜Ñ'à�‰×Ñ˜VÕ$r    c                 ó¢  — t        | j                  «      t        |j                  «      k7  ry | j                  j                  «       D ]É  \  }}||j                  vr y || j                  v r’|r{|j                  |   rl	 t	        |«      5 }t	        |j                  |   «      5 }|j                  «       |j                  «       k7  r	 d d d «       d d d «        y 	 d d d «       d d d «       Œ¡|j                  |   |k7  sŒ´ y |j                  |   |k7  sŒÉ y  y# 1 sw Y   Œ>xY w# 1 sw Y   ŒBxY w# t        $ r |j                  |   |k7  rY  y Y �Œw xY w)NT)r·   rÞ   ÚitemsÚ	FILE_KEYSr`   ra   ÚIOError)r9   ÚotherÚkÚvÚf1Úf2s         r   Ú__eq__zFakeConfig.__eq__&  s6  € Üˆt�}‰}Ó¤ U§^¡^Ó!4Ò4ØØ—M‘M×'Ñ'Ó)ò 	‰DˆAˆqØ˜Ÿ™Ñ&ÙØ�D—N‘NÑ"Ù˜Ÿ™¨Ò*ð#Ü! !›Wð '¨¬D°·±ÀÑ1BÓ,Cð 'ÀrØ!Ÿw™w›y¨B¯G©G«IÒ5Ø &÷'÷ 'ñ 'Ø5÷'÷ 'øð —~‘~ aÑ(¨AÓ-Ùà—>‘> !Ñ$¨Ó)Ùð'	ð( ÷'ð 'ú÷ 'ð 'ûô #ò #ð !Ÿ>™>¨!Ñ,°Ò1Ú"ò 2ð#úsN   Á=D,ÂD Â!#DÃD ÃD,ÃD ÃD,ÄDÄD Ä D)	Ä%D,Ä,EÅEc                 ób  — d}| j                   j                  «       D ]\  \  }}|}|| j                  v r;	 t        |«      5 }dt        j                  |j                  «       «      z  }d d d «       |d|›d|›d�z  }Œ^ d|z  S # 1 sw Y   ŒxY w# t        $ r}dt	        |«      z  }Y d }~Œ;d }~ww xY w)Nú
zFILE: %sz	ERROR: %sú	z: zConfig(%s
))rÞ   rã   rä   r`   rF   r   ra   rå   )r9   Úreprç   rè   r2   r?   Úes          r   Ú__repr__zFakeConfig.__repr__?  s³   € ØˆØ—M‘M×'Ñ'Ó)ò 	+‰DˆAˆqØˆCØ�D—N‘NÑ"ð/Ü˜a›ð @ AØ(¬3¯:©:°a·f±f³hÓ+?Ñ?˜÷@ñ ¢1¢cÐ*Ñ*‰Cð	+ð  Ñ#Ð#÷@ð @ûäò /Ø%¬¨A«Ñ.•Cûð/ús.   ´B¿'BÁ&BÂB
	ÂBÂ	B.ÂB)Â)B.r   )rZ   r[   r\   rä   rá   rë   rñ   r1   r    r   r×   r×     s   „ â8€Ió%òó2$r    r×   c                   óÌ  — e Zd Zddddidœddddœdœddddœdœddddœdœd	dd	dœdœd
dd
dœdœddddœdœddddœdœddddœdœddddœdœddddœdœddddœdœddddœdœddddœdœddddœdœddddœdœddddœdœddddœdœgddeidœdeedœdœdeddœdœdeeddœdœdeddœdœdeddœdœdeeded œdœdeed!œdœgde	e
ed"œd#œddd$e	id%œe	e
ed&œd#œdde	d'd(œd%œe	e
ed&œd#œd	d)d	d*eid%œid#œd
d)d	d+d,eed-d.d/œd%œid#œdd)d	d+d,ed-d.d0œd%œid#œde
ed1œd#œde	eed2œd#œdd3d4d5d6œd#œde	eed7œd#œdd8d9d:g d;¢d<œid#œdd8d9d=g d<œid#œgd>œZd?„ Zd@„ ZdA„ ZdB„ ZdC„ ZdD„ ZdE„ ZdF„ Z edG«      dH„ «       Z edG«      dI„ «       ZdJ„ ZdK„ Z  edL«      dM„ «       Z! edL«      dN„ «       Z"dO„ Z#dP„ Z$dQ„ Z%dR„ Z&dS„ Z'dT„ Z(dU„ Z)dV„ Z*dW„ Z+dX„ Z,dY„ Z-dZ„ Z.d[„ Z/d\„ Z0d]„ Z1d^„ Z2d_„ Z3d`„ Z4da„ Z5db„ Z6dc„ Z7dd„ Z8de„ Z9df„ Z:yg)hÚTestKubeConfigLoaderÚno_userÚclusterÚdefault©rJ   rV   Úsimple_token©rõ   ÚuserÚgcpÚexpired_gcpÚoidcÚexpired_oidcÚexpired_oidc_no_idp_cert_dataÚ	user_passÚsslÚno_ssl_verificationÚssl_verificationÚproxy_cluster_contextÚproxy_clusterússl-no_fileússl-local-fileÚnon_existing_userÚexec_cred_userÚexec_cred_user_certificateútls-server-nameÚserver©rJ   rõ   )r  zcertificate-authorityÚ	cert_testF)r  úcertificate-authority-dataúinsecure-skip-tls-verifyT)r  r  )r  r  r  r  )r  z	proxy-url©rà   ÚusernameÚpassword©rJ   rú   úaccess-token©rJ   Úconfig)úauth-providerrà   r  r  z2000-01-01T12:00:00Z)r  Úexpiryr  úid-tokenútectonic-kubectlÚFAKE_SECRETz"https://example.localhost/identityÚ lucWJjEhlxZW01cXI3YmVlcYnpxNGhzk©ú	client-idúclient-secretr  zidp-certificate-authority-dataúidp-issuer-urlúrefresh-token)r  r   r  r!  r"  )r  r  )rà   úclient-certificater.   Ú
token_fileÚclient_certÚ
client_key)Ú	tokenFiler#  r.   ©rà   zclient-certificate-datazclient-key-dataÚexecz$client.authentication.k8s.io/v1beta1zaws-iam-authenticator)rà   z-izdummy-cluster)Ú
apiVersionÚcommandrT   z custom-certificate-authenticator©úcurrent-contextÚcontextsÚclustersÚusersc              ƒ   óÄ   K  — t        t        ¬«      }t        «       }t        | j                  d¬«      j	                  |«      ƒ d {  –—†  | j                  ||«       y 7 Œ­w)N©Úhostrô   ©Úconfig_dictÚactive_context©r×   Ú	TEST_HOSTr   ÚTEST_KUBE_CONFIGÚload_and_setrl   ©r9   ÚexpectedÚactuals      r   Útest_no_user_contextz)TestKubeConfigLoader.test_no_user_context“  sV   è ø€ Ü¤9Ô-ˆÜ“ˆÜØ×-Ñ-Ø$ô&ç&2¡l°6Ó&:÷	;ð 	;ð 	×Ñ˜ 6Õ*ð	;úó   ‚AA ÁAÁA c              ƒ   óÜ   K  — t        t        t        t        z  ¬«      }t        «       }t	        | j
                  d¬«      j                  |«      ƒ d {  –—†  | j                  ||«       y 7 Œ­w)N©r3  rà   rø   r4  ©r×   r8  ÚBEARER_TOKEN_FORMATr{   r   r9  r:  rl   r;  s      r   Útest_simple_tokenz&TestKubeConfigLoader.test_simple_token›  se   è ø€ Ü¤9Ü$7Ô:JÑ$JôLˆä“ˆÜØ×-Ñ-Ø)ô+ç+7©<¸Ó+?÷	@ð 	@ð 	×Ñ˜ 6Õ*ð	@ús   ‚AA,ÁA*ÁA,c                 ó¾   — t        | j                  d¬«      }| j                  |j                  «       «       | j	                  t
        t        z  |j                  «       y )Nrø   r4  )r   r9  r»   Ú_load_user_tokenrl   rC  r{   rà   ©r9   Úloaders     r   Útest_load_user_tokenz)TestKubeConfigLoader.test_load_user_token¤  sJ   € Ü!Ø×-Ñ-Ø)ô+ˆð 	�‰˜×/Ñ/Ó1Ô2Ø×ÑÔ,Ô/?Ñ?ÀÇÁÕNr    c              ƒ   óà   K  — t        t        t        t        z  ¬«      }t        «       }t	        | j
                  dd„ ¬«      j                  |«      ƒ d {  –—†  | j                  ||«       y 7 Œ­w)NrA  rû   c                  ó   — t        d«      S ©NzSHOULD NOT BE CALLED©r)   r1   r    r   rÂ   z:TestKubeConfigLoader.test_gcp_no_refresh.<locals>.<lambda>³  ó   € Ô+;Ø&ó,(€ r    ©r5  r6  Úget_google_credentialsrB  r;  s      r   Útest_gcp_no_refreshz(TestKubeConfigLoader.test_gcp_no_refresh«  sk   è ø€ ÜÜÜ%Ô(8Ñ8ô:ˆô “ˆÜØ×-Ñ-Ø ñ$(ô)÷ *6©°fÓ)=÷		>ð 	>ð
 	×Ñ˜ 6Õ*ð	>ús   ‚AA.ÁA,ÁA.c              ƒ   óâ   K  — t        | j                  dd„ ¬«      }|j                  «       ƒ d {  –—† }| j                  |«       | j	                  t
        t        z  |j                  «       y 7 Œ=­w)Nrû   c                  ó   — t        d«      S rL  rM  r1   r    r   rÂ   zETestKubeConfigLoader.test_load_gcp_token_no_refresh.<locals>.<lambda>»  rN  r    rO  )r   r9  Úload_gcp_tokenr»   rl   rC  r{   rà   )r9   rH  Úress      r   Útest_load_gcp_token_no_refreshz3TestKubeConfigLoader.test_load_gcp_token_no_refresh·  sc   è ø€ Ü!Ø×-Ñ-Ø ñ$(ô)ˆð
 ×)Ñ)Ó+×+ˆØ�‰˜ÔØ×ÑÔ,Ô/?Ñ?ØŸ™õ	'ð ,ús   ‚-A/¯A-°>A/c              ƒ   óB  ‡K  — t        t        t        j                  j                  «       ¬«      Št	        | j
                  dˆfd„¬«      }|j                  «       ƒ d {  –—† }| j                  |«       | j                  t        t        z  |j                  «       y 7 Œ=­w)N©rà   r  rü   c                  ó   •— ‰ S r   r1   )Úcreds   €r   rÂ   zGTestKubeConfigLoader.test_load_gcp_token_with_refresh.<locals>.<lambda>Ì  s   ø€ ¨4€ r    rO  )r   ÚTEST_ANOTHER_DATA_BASE64ÚdatetimeÚnowr   r9  rT  r»   rl   rC  rà   )r9   rH  rU  rZ  s      @r   Ú test_load_gcp_token_with_refreshz5TestKubeConfigLoader.test_load_gcp_token_with_refreshÂ  sƒ   øè ø€ äÜ*Ü×$Ñ$×(Ñ(Ó*ô
ˆô
 "Ø×-Ñ-Ø(Û#/ô1ˆð ×)Ñ)Ó+×+ˆØ�‰˜ÔØ×ÑÔ,Ô/GÑGØŸ™õ	'ð ,ús   ƒABÁBÁ >Bc              ƒ   óæ   K  — d„ }t        | j                  d|¬«      }|j                  «       ƒ d {  –—† }| j                  |«       | j	                  t
        t        z  |j                  «       y 7 Œ=­w)Nc               “   ód   K  — t        t        t        j                  j                  «       ¬«      S ­w)NrX  )r   r[  r\  r]  r1   r    r   rZ  zITestKubeConfigLoader.test_async_load_gcp_token_with_refresh.<locals>.credÔ  s(   è ø€ Ü"Ü.Ü×(Ñ(×,Ñ,Ó.ôð ùs   ‚.0rü   rO  )r   r9  rT  r»   rl   rC  r[  rà   )r9   rZ  rH  rU  s       r   Ú&test_async_load_gcp_token_with_refreshz;TestKubeConfigLoader.test_async_load_gcp_token_with_refreshÒ  sh   è ø€ ò	ô "Ø×-Ñ-Ø(Ø#'ô)ˆð ×)Ñ)Ó+×+ˆØ�‰˜ÔØ×ÑÔ,Ô/GÑGØŸ™õ	'ð ,ús   ‚/A1±A/²>A1c              ƒ   ó®   K  — t        | j                  d¬«      }|j                  «       ƒ d {  –—†  | j                  t        |j
                  «       y 7 Œ%­w)Nrý   r4  )r   r9  Ú_load_authenticationrl   ÚTEST_OIDC_TOKENrà   rG  s     r   Útest_oidc_no_refreshz)TestKubeConfigLoader.test_oidc_no_refreshã  sI   è ø€ Ü!Ø×-Ñ-Ø!ô
ˆð ×)Ñ)Ó+×+Ð+Ø×Ñœ¨&¯,©,Õ7ð 	,ús   ‚+A­A®&Az?kubernetes.aio.config.kube_config.OpenIDRequestor.refresh_tokenc              ƒ   óº   K  — dddœ|_         t        | j                  d¬«      }|j                  «       ƒ d {  –—†  | j	                  d|j
                  «       y 7 Œ!­w)NÚabc123Únewtoken123©Úid_tokenr   rþ   r4  úBearer abc123©Úreturn_valuer   r9  rc  rl   rà   ©r9   Úmock_refresh_tokenrH  s      r   Útest_oidc_with_refreshz+TestKubeConfigLoader.test_oidc_with_refreshë  s^   è ø€ ð !Ø*ñ+
ÐÔ'ô
 "Ø×-Ñ-Ø)ô
ˆð ×)Ñ)Ó+×+Ð+Ø×Ñ˜¨&¯,©,Õ7ð 	,úó   ‚5A·A¸"Ac              ƒ   óº   K  — dddœ|_         t        | j                  d¬«      }|j                  «       ƒ d {  –—†  | j	                  d|j
                  «       y 7 Œ!­w)Nrg  rh  ri  rÿ   r4  rk  rl  rn  s      r   Ú'test_oidc_with_refresh_no_idp_cert_dataz<TestKubeConfigLoader.test_oidc_with_refresh_no_idp_cert_dataù  s^   è ø€ ð !Ø*ñ+
ÐÔ'ô
 "Ø×-Ñ-Ø:ô
ˆð ×)Ñ)Ó+×+Ð+Ø×Ñ˜¨&¯,©,Õ7ð 	,úrq  c              ƒ   ót  K  — t        | j                  ¬«      }| j                  t        «      5  di i|_        |j                  «       ƒ d {  –—†  d d d «       | j                  t        «      5  ddddiii|_        |j                  «       ƒ d {  –—†  d d d «       y 7 ŒP# 1 sw Y   ŒOxY w7 Œ# 1 sw Y   y xY w­w)N©r5  r  r  r  Únotvalid)r   r9  rN   Ú
ValueErrorÚ_userÚ_load_oid_tokenrG  s     r   Útest_invalid_oidc_configsz.TestKubeConfigLoader.test_invalid_oidc_configs  s¾   è ø€ Ü!¨d×.CÑ.CÔDˆà×ÑœzÓ*ñ 	+Ø+¨RÐ0ˆFŒLØ×(Ñ(Ó*×*Ð*÷	+ð ×ÑœzÓ*ñ 	+àØØ" Jðð"ðˆFŒLð ×(Ñ(Ó*×*Ð*÷	+ð 	+ð +ø÷	+ð 	+úð +ø÷	+ð 	+üsX   ‚,B8®BÁBÁBÁB8Á-!B,ÂB*ÂB,Â	B8ÂBÂB'Â#B8Â*B,Â,B5Â1B8c              ƒ   óÆ   K  — t        | j                  ¬«      }| j                  t        «      5  |j	                  di i«      ƒ d {  –—†  d d d «       y 7 Œ# 1 sw Y   y xY w­w)Nru  r  )r   r9  rN   r	   Ú_refresh_oidcrG  s     r   Útest_invalid_refreshz)TestKubeConfigLoader.test_invalid_refresh  sY   è ø€ Ü!¨d×.CÑ.CÔDˆà×ÑœÓ/ñ 	7Ø×&Ñ&¨°" ~Ó6×6Ð6÷	7ð 	7Ø6ø÷	7ð 	7üs.   ‚,A!®AÁAÁAÁ
	A!ÁAÁAÁA!z2kubernetes.aio.config.kube_config.ExecProvider.runc              ƒ   óî   K  — d}d|i|_         t        t        dt        |z  i¬«      }t        «       }t	        | j
                  d¬«      j                  |«      ƒ d {  –—†  | j                  ||«       y 7 Œ­w)NÚdummyrà   rÜ   )r3  rÝ   r	  r4  )rm  r×   r8  rC  r   r9  r:  rl   )r9   Úmockrà   r<  r=  s        r   Útest_user_exec_authz(TestKubeConfigLoader.test_user_exec_auth  sƒ   è ø€ àˆà�Uð
ˆÔô ¤9Ø+Ô-@À5Ñ-Hð7Jô Kˆä“ˆÜØ×-Ñ-Ø+ô-ç-9©\¸&Ó-A÷	Bð 	Bð 	×Ñ˜ 6Õ*ð	Bús   ‚AA5ÁA3ÁA5c              ƒ   ób  K  — t         t        dœ|_        t        t        | j                  t         «      | j                  t        «      | j                  t        «      d¬«      }t        «       }t        | j                  d¬«      j                  |«      ƒ d {  –—†  | j                  ||«       y 7 Œ­w)N)ÚclientCertificateDataÚclientKeyDataT)r3  rÚ   rÙ   rØ   Ú
verify_sslr
  r4  )ÚTEST_CLIENT_CERTÚTEST_CLIENT_KEYrm  r×   ÚTEST_SSL_HOSTrK   ÚTEST_CERTIFICATE_AUTHr   r9  r:  rl   )r9   r€  r<  r=  s       r   Ú test_user_exec_auth_certificatesz5TestKubeConfigLoader.test_user_exec_auth_certificates,  s¡   è ø€ ô &6Ü,ñ
ˆÔô ÜØ×,Ñ,Ô-=Ó>Ø×+Ñ+¬OÓ<Ø×.Ñ.Ô/DÓEØôˆô “ˆÜØ×-Ñ-Ø7ô9ç9E¹ÀfÓ9M÷	Nð 	Nð 	×Ñ˜ 6Õ*ð	Nús   ‚BB/ÂB-ÂB/c              ƒ   óÎ   K  — t        t        t        ¬«      }t        «       }t        | j                  d¬«      j                  |«      ƒ d {  –—†  | j                  ||«       y 7 Œ­w)NrA  r   r4  )r×   r8  ÚTEST_BASIC_TOKENr   r9  r:  rl   r;  s      r   Útest_user_passz#TestKubeConfigLoader.test_user_pass>  sY   è ø€ Ü¤9Ô4DÔEˆÜ“ˆÜØ×-Ñ-Ø&ô(ç(4©°VÓ(<÷	=ð 	=ð 	×Ñ˜ 6Õ*ð	=ús   ‚A	A%ÁA#ÁA%c                 ó°   — t        | j                  d¬«      }| j                  |j                  «       «       | j	                  t
        |j                  «       y )Nr   r4  )r   r9  r»   Ú_load_user_pass_tokenrl   rŒ  rà   rG  s     r   Útest_load_user_pass_tokenz.TestKubeConfigLoader.test_load_user_pass_tokenF  sD   € Ü!Ø×-Ñ-Ø&ô(ˆð 	�‰˜×4Ñ4Ó6Ô7Ø×ÑÔ)¨6¯<©<Õ8r    c              ƒ   ó˜   K  — t        | j                  d¬«      }| j                  |j                  dt	        «       «      ƒ d {  –—†  y 7 Œ­w)Nr  r4  rr   )r   r9  rY   r:  r×   rG  s     r   Útest_ssl_no_cert_filesz+TestKubeConfigLoader.test_ssl_no_cert_filesM  sG   è ø€ Ü!Ø×-Ñ-Ø(ô*ˆð ×)Ñ)Ø×ÑØÜ‹Ló÷ 	ò 	ús   ‚A A
ÁAÁA
c           	   ƒ   óV  K  — t        t        t        t        z  | j	                  t
        «      | j	                  t        «      | j	                  t        «      d¬«      }t        «       }t        | j                  d¬«      j                  |«      ƒ d {  –—†  | j                  ||«       y 7 Œ­w)NT©r3  rà   rÚ   rÙ   rØ   r…  r  r4  )r×   rˆ  rC  r{   rK   r†  r‡  r‰  r   r9  r:  rl   r;  s      r   Útest_sslzTestKubeConfigLoader.test_sslV  s“   è ø€ ÜÜÜ%Ô(8Ñ8Ø×,Ñ,Ô-=Ó>Ø×+Ñ+¬OÓ<Ø×.Ñ.Ô/DÓEØô
ˆô “ˆÜØ×-Ñ-Ø ô"ç".¡,¨vÓ"6÷	7ð 	7ð 	×Ñ˜ 6Õ*ð	7ús   ‚BB)ÂB'ÂB)c              ƒ   ó0  K  — t        t        t        t        z  | j	                  t
        «      | j	                  t        «      dd ¬«      }t        «       }t        | j                  d¬«      j                  |«      ƒ d {  –—†  | j                  ||«       y 7 Œ­w)NF©r3  rà   rÚ   rÙ   r…  rØ   r  r4  ©r×   rˆ  rC  r{   rK   r†  r‡  r   r9  r:  rl   r;  s      r   Útest_ssl_no_verificationz-TestKubeConfigLoader.test_ssl_no_verificatione  sŠ   è ø€ ÜÜÜ%Ô(8Ñ8Ø×,Ñ,Ô-=Ó>Ø×+Ñ+¬OÓ<ØØô
ˆô “ˆÜØ×-Ñ-Ø0ô2ç2>±,¸vÓ2F÷	Gð 	Gð 	×Ñ˜ 6Õ*ð	Gúó   ‚A:BÁ<BÁ=Bc              ƒ   ó0  K  — t        t        t        t        z  | j	                  t
        «      | j	                  t        «      dd ¬«      }t        «       }t        | j                  d¬«      j                  |«      ƒ d {  –—†  | j                  ||«       y 7 Œ­w)NTr—  r  r4  r˜  r;  s      r   Útest_ssl_verificationz*TestKubeConfigLoader.test_ssl_verificationt  sŠ   è ø€ ÜÜÜ%Ô(8Ñ8Ø×,Ñ,Ô-=Ó>Ø×+Ñ+¬OÓ<ØØô
ˆô “ˆÜØ×-Ñ-Ø-ô/ç/;©|¸FÓ/C÷	Dð 	Dð 	×Ñ˜ 6Õ*ð	Dúrš  c           	   ƒ   ó`  K  — t        t        t        t        z  | j	                  t
        «      | j	                  t        «      | j	                  t        «      dt        ¬«      }t        «       }t        | j                  d¬«      j                  |«      ƒ d {  –—†  | j                  ||«       y 7 Œ­w)NT)r3  rà   rÚ   rÙ   rØ   r…  Útls_server_namer  r4  )r×   rˆ  rC  r{   rK   r†  r‡  r‰  ÚTEST_TLS_SERVER_NAMEr   r9  r:  rl   r;  s      r   Útest_tls_server_namez)TestKubeConfigLoader.test_tls_server_nameƒ  s™   è ø€ ÜÜÜ%Ô(8Ñ8Ø×,Ñ,Ô-=Ó>Ø×+Ñ+¬OÓ<Ø×.Ñ.Ô/DÓEØÜ0ô
ˆô “ˆÜØ×-Ñ-Ø,ô.ç.:©l¸6Ó.B÷	Cð 	Cð 	×Ñ˜ 6Õ*ð	Cús   ‚BB.ÂB,ÂB.c              ƒ   óæ   K  — t        t        t        t        z  t        ¬«      }t        «       }t        | j                  d¬«      j                  |«      ƒ d {  –—†  | j                  ||«       y 7 Œ­w)N)r3  rà   Úproxyr  r4  )	r×   r8  rC  r{   ÚTEST_PROXY_URLr   r9  r:  rl   r;  s      r   Útest_proxy_url_from_clusterz0TestKubeConfigLoader.test_proxy_url_from_cluster“  sj   è ø€ ÜÜÜ%Ô(8Ñ8Ü ô
ˆô
 “ˆÜØ×-Ñ-Ø2ô4ç4@±LÀÓ4H÷	Ið 	Ið 	×Ñ˜ 6Õ*ð	Iús   ‚AA1ÁA/ÁA1c                 óò   — t        | j                  d¬«      }|j                  «       }t        d| j                  «      d   }|D ]2  }|j	                  |d   «      }| j                  |j                  |«       Œ4 y )Nrô   r4  r"   r.  rJ   )r   r9  Úlist_contextsr   rº   rl   r¦   )r9   rH  Úactual_contextsÚexpected_contextsr=  r<  s         r   Útest_list_contextsz'TestKubeConfigLoader.test_list_contextsŸ  sw   € Ü!Ø×-Ñ-Ø$ô&ˆð !×.Ñ.Ó0ˆÜ& r¨4×+@Ñ+@ÓAÀ*ÑMÐØ%ò 	5ˆFØ(×6Ñ6°v¸f±~ÓFˆHØ×Ñ˜XŸ^™^¨VÕ4ñ	5r    c                 óÌ   — t        | j                  ¬«      }t        d| j                  «      d   }| j                  |j	                  d«      j
                  |j                  «       y )Nru  r"   r.  rô   )r   r9  r   rl   rº   r¦   Úcurrent_context©r9   rH  r¨  s      r   Útest_current_contextz)TestKubeConfigLoader.test_current_context©  sU   € Ü!¨d×.CÑ.CÔDˆÜ& r¨4×+@Ñ+@ÓAÀ*ÑMÐØ×ÑÐ*×8Ñ8¸ÓC×IÑIØ×/Ñ/õ	1r    c                 óî   — t        | j                  ¬«      }|j                  d«       t        d| j                  «      d   }| j	                  |j                  d«      j                  |j                  «       y )Nru  r  r"   r.  )r   r9  Úset_active_contextr   rl   rº   r¦   r«  r¬  s      r   Útest_set_active_contextz,TestKubeConfigLoader.test_set_active_context¯  sc   € Ü!¨d×.CÑ.CÔDˆØ×!Ñ! %Ô(Ü& r¨4×+@Ñ+@ÓAÀ*ÑMÐØ×ÑÐ*×8Ñ8¸Ó?×EÑEØ×/Ñ/õ	1r    c           	   ƒ   óò  K  — t        t        t        t        z  | j	                  t
        «      | j	                  t        «      | j	                  t        «      ¬«      }	 t        j                  «       }t        «       }t        t        j                  j                  |d«      d«      5 }|j                  t        j                  «       «       d d d «       t        t        j                  j                  |d«      d«      5 }|j                  t
        j                  «       «       d d d «       t        t        j                  j                  |d«      d«      5 }|j                  t        j                  «       «       d d d «       t        t        j                  j                  |d«      d«      5 }|j                  t        j                  «       «       d d d «       t!        | j"                  d|¬«      j%                  |«      ƒ d {  –—†  | j'                  ||«       t)        j*                  |«       y # 1 sw Y   �ŒcxY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒÐxY w# 1 sw Y   Œ†xY w7 Œ^# t)        j*                  «       w xY w­w)	N)r3  rà   rÚ   rÙ   rØ   r  Úwbr%  r&  r$  r  )r5  r6  Úconfig_base_path)r×   rˆ  rC  r{   rK   r†  r‡  r‰  rB   Úmkdtempr`   r<   r�   ÚjoinrE   r   r   r9  r:  rl   ÚshutilÚrmtree)r9   r<  Útemp_dirr=  Úfds        r   Ú test_ssl_with_relative_ssl_filesz5TestKubeConfigLoader.test_ssl_with_relative_ssl_files¶  sÛ  è ø€ ÜÜÜ%Ô(8Ñ8Ø×,Ñ,Ô-=Ó>Ø×+Ñ+¬OÓ<Ø×.Ñ.Ô/DÓEô
ˆð	$Ü×'Ñ'Ó)ˆHÜ“\ˆFÜ”b—g‘g—l‘l 8¨[Ó9¸4Ó@ð 9ÀBØ—‘Ô.×5Ñ5Ó7Ô8÷9ä”b—g‘g—l‘l 8¨]Ó;¸TÓBð 4ÀbØ—‘Ô)×0Ñ0Ó2Ô3÷4ä”b—g‘g—l‘l 8¨\Ó:¸DÓAð 3ÀRØ—‘œ×/Ñ/Ó1Ô2÷3ä”b—g‘g—l‘l 8¨\Ó:¸DÓAð 4ÀRØ—‘Ô)×0Ñ0Ó2Ô3÷4ä"Ø ×1Ñ1Ø/Ø!)ô+÷ ,8©<¸Ó+?÷@ð @ð ×Ñ˜X vÔ.ä�M‰M˜(Õ#÷9ñ 9ú÷4ñ 4ú÷3ð 3ú÷4ð 4úð@ùô �M‰M˜(Õ#üs‹   ‚AI7ÁAI Â$$H)Ã2I Ã:$H6Ä2I Å$IÅ42I Æ&$IÇ
2I Ç<IÇ=I ÈI7È)H3È.I È6I È;I ÉIÉI ÉIÉI ÉI4É4I7c              ƒ   ó  K  — t        t        t        t        z  ¬«      }| j	                  t        j                  | j                  «      «      }t        «       }t        |d|¬«      ƒ d {  –—†  | j                  ||«       y 7 Œ­w©NrA  rø   )Úconfig_filerV   Úclient_configuration)
r×   r8  rC  r{   rK   ÚyamlÚ	safe_dumpr9  r   rl   ©r9   r<  r½  r=  s       r   Útest_load_kube_configz*TestKubeConfigLoader.test_load_kube_configÑ  ss   è ø€ Ü¤9Ü$7Ô:JÑ$JôLˆà×,Ñ,¬T¯^©^¸D×<QÑ<QÓ-RÓSˆÜ“ˆÜ¨;Ø'5Ø4:ô<÷ 	<ð 	<ð 	×Ñ˜ 6Õ*ð	<úó   ‚A&BÁ(B Á)Bc              ƒ   óÀ   K  — t        t        t        t        z  ¬«      }t        «       }t	        | j
                  d|¬«      ƒ d {  –—†  | j                  ||«       y 7 Œ­w)NrA  rø   )r5  rV   r¾  )r×   r8  rC  r{   r   r9  rl   r;  s      r   Útest_load_kube_config_from_dictz4TestKubeConfigLoader.test_load_kube_config_from_dictÛ  s^   è ø€ Ü¤9Ü$7Ô:JÑ$JôLˆä“ˆÜ(°T×5JÑ5JØ1?Ø>DôF÷ 	Fð 	Fð 	×Ñ˜ 6Õ*ð	Fús   ‚AAÁAÁAc           	   ƒ   óÂ  K  — t        t        t        t        z  | j	                  t
        «      | j	                  t        «      | j	                  t        «      d¬«      }t        «       }t        j                  d«      }t        | j                  d||¬«      ƒ d {  –—†  | j                  ||«       | j                  t        t        j                  |«      «      d«       y 7 ŒE­w)NTr”  Útest_temp_file_pathr  )r5  rV   r¾  Útemp_file_pathr«   )r×   rˆ  rC  r{   rK   r†  r‡  r‰  rB   r´  r   r9  rl   r·   r<   Úlistdir)r9   r<  r=  Útmp_paths       r   Ú3test_load_kube_config_from_dict_with_temp_file_pathzHTestKubeConfigLoader.test_load_kube_config_from_dict_with_temp_file_pathä  sÃ   è ø€ ÜÜÜ%Ô(8Ñ8Ø×,Ñ,Ô-=Ó>Ø×+Ñ+¬OÓ<Ø×.Ñ.Ô/DÓEØô
ˆô “ˆä×#Ñ#Ð$9Ó:ˆä(°T×5JÑ5JØ16Ø>DØ8@ôB÷ 	Bð 	Bð 	×Ñ˜ 6Ô*ð 	×ÑœœRŸZ™Z¨Ó1Ó2°AÕ6ð	Bús   ‚BCÂCÂACc                 ó   — | j                  t        j                  | j                  «      «      }t	        |¬«      \  }}| j                  | j                  d   d   |«       | j                  | j                  d   |«       y )N©r½  r.  r   )rK   r¿  rÀ  r9  r   ÚassertDictEqualÚassertCountEqual)r9   r½  r.  r6  s       r   Útest_list_kube_config_contextsz3TestKubeConfigLoader.test_list_kube_config_contextsú  sq   € Ø×,Ñ,¬T¯^©^¸D×<QÑ<QÓ-RÓSˆÜ#<Ø#ô$%Ñ ˆ�.à×Ñ˜T×2Ñ2°:Ñ>¸qÑAØ+ô	-à×Ñ˜d×3Ñ3°JÑ?ÀÕJr    c              ƒ   óR  K  — | j                  t        j                  | j                  «      «      }t	        |d¬«      ƒ d {  –—† }| j                  t        |j                  j                  «       | j                  t        t        z  |j                  j                  d   «       y 7 Œc­w©Nrø   ©r½  rV   rÜ   )rK   r¿  rÀ  r9  r   rl   r8  Úconfigurationr3  rC  r{   rÝ   ©r9   r½  Úclients      r   Útest_new_client_from_configz0TestKubeConfigLoader.test_new_client_from_config  s†   è ø€ Ø×,Ñ,¬T¯^©^¸D×<QÑ<QÓ-RÓSˆÜ-Ø#¨^ô=÷ =ˆà×Ñœ F×$8Ñ$8×$=Ñ$=Ô>Ø×ÑÔ,Ô/?Ñ?Ø×-Ñ-×5Ñ5°mÑDõ	Fð=ús   ‚?B'ÁB%ÁA$B'c              ƒ   ó¦  K  — | j                  t        j                  | j                  «      «      }t	        |d¬«      ƒ d {  –—† }| j                  t        |j                  j                  «       | j                  t        t        z  |j                  j                  d   «       | j                  t        |j                  j                  «       y 7 Œ�­w)Nr  rÓ  rÜ   )rK   r¿  rÀ  r9  r   rl   r8  rÔ  r3  rC  r{   rÝ   r£  r¢  rÕ  s      r   Ú!test_new_client_from_config_proxyz6TestKubeConfigLoader.test_new_client_from_config_proxy
  s¦   è ø€ Ø×,Ñ,¬T¯^©^¸D×<QÑ<QÓ-RÓSˆÜ-Ø#Ð-DôF÷ Fˆà×Ñœ F×$8Ñ$8×$=Ñ$=Ô>Ø×ÑÔ,Ô/?Ñ?Ø×-Ñ-×5Ñ5°mÑDô	Fà×Ñœ¨×)=Ñ)=×)CÑ)CÕDðFús   ‚?CÁCÁBCc              ƒ   ó
  K  — t        | j                  d¬«      ƒ d {  –—† }| j                  t        |j                  j
                  «       | j                  t        t        z  |j                  j                  d   «       y 7 Œc­w)Nrø   )r5  rV   rÜ   )	r   r9  rl   r8  rÔ  r3  rC  r{   rÝ   )r9   rÖ  s     r   Ú test_new_client_from_config_dictz5TestKubeConfigLoader.test_new_client_from_config_dict  sp   è ø€ Ü2Ø×-Ñ-°~ôG÷ Gˆà×Ñœ F×$8Ñ$8×$=Ñ$=Ô>Ø×ÑÔ,Ô/?Ñ?Ø×-Ñ-×5Ñ5°mÑDõ	FðGús   ‚B�BžA$Bc              ƒ   óê   K  — t        t        ¬«      }t        «       }| j                  j                  «       }|d= t	        |d¬«      j                  |«      ƒ d {  –—†  | j                  ||«       y 7 Œ­w)Nr2  r0  rû   r4  )r×   r8  r9  Úcopyr   r:  rl   )r9   r<  r=  Útest_kube_configs       r   Útest_no_users_sectionz*TestKubeConfigLoader.test_no_users_section  sm   è ø€ Ü¤9Ô-ˆÜ“ˆØ×0Ñ0×5Ñ5Ó7ÐØ˜WÐ%ÜØ(Ø ô"ç".¡,¨vÓ"6÷	7ð 	7ð 	×Ñ˜ 6Õ*ð	7ús   ‚AA3ÁA1ÁA3c              ƒ   óÄ   K  — t        t        ¬«      }t        «       }t        | j                  d¬«      j	                  |«      ƒ d {  –—†  | j                  ||«       y 7 Œ­w)Nr2  r  r4  r7  r;  s      r   Útest_non_existing_userz+TestKubeConfigLoader.test_non_existing_user$  sY   è ø€ Ü¤9Ô-ˆÜ“ˆÜØ×-Ñ-Ø.ô0ç0<±¸VÓ0D÷	Eð 	Eð 	×Ñ˜ 6Õ*ð	Eúr?  c              ƒ   óz  K  — t        | j                  dd„ ¬«      }t        d«      j                  «       }dt        g|_        t        «       }i |_        | j                  t        «      5  t        ||«      ƒ d {  –—†  d d d «       | j                  t        t        z  |j                  «       y 7 Œ4# 1 sw Y   Œ3xY w­w)Nrû   c                  ó   — t        d«      S rL  rM  r1   r    r   rÂ   z=TestKubeConfigLoader.test_refresh_gcp_token.<locals>.<lambda>0  rN  r    rO  úasyncio.sleepr   )r   r9  r   ÚstartÚAssertionErrorÚside_effectr   rÝ   rN   r   rl   rC  r{   rà   )r9   rH  Ú
mock_sleepÚmock_configs       r   Útest_refresh_gcp_tokenz+TestKubeConfigLoader.test_refresh_gcp_token,  sª   è ø€ Ü!Ø×-Ñ-Ø ñ$(ô)ˆô
 ˜?Ó+×1Ñ1Ó3ˆ
Ø"#¤^Ð!4ˆ
Ôä“fˆØ ˆÔà×Ñœ~Ó.ñ 	5Ü ¨Ó4×4Ð4÷	5ð 	×ÑÔ,Ô/?Ñ?ØŸ™õ	'ð 5ø÷	5ð 	5üs0   ‚A&B;Á(B/Á8B-Á9B/Á=0B;Â-B/Â/B8Â4B;c              ƒ   óÌ  K  —  G d„ dt         «      } || j                  d¬«      }t        d«      j                  «       }dt        g|_        t        «       }i |_        t        j                  j                  «       |_
        | j                  t        «      5  t        ||«      ƒ d {  –—†  d d d «       | j                  t        |j                  d   «       y 7 Œ0# 1 sw Y   Œ/xY w­w)Nc                   ó   — e Zd Zd„ Zy)úJTestKubeConfigLoader.test_refresh_exec_token.<locals>.MockKubeConfigLoaderc              “   ó"   K  — t         | _        y ­wr   )r[  rà   r8   s    r   Úload_from_exec_pluginz`TestKubeConfigLoader.test_refresh_exec_token.<locals>.MockKubeConfigLoader.load_from_exec_plugin@  s   è ø€ Ü5�•
ùs   ‚N)rZ   r[   r\   rï  r1   r    r   ÚMockKubeConfigLoaderrí  ?  s   „ ó6r    rð  r	  r4  rä  r   rÜ   )r   r9  r   rå  ræ  rç  r   rÝ   r\  r]  Úexec_plugin_expiryrN   r   rl   r[  )r9   rð  rH  rè  ré  s        r   Útest_refresh_exec_tokenz,TestKubeConfigLoader.test_refresh_exec_token>  sÉ   è ø€ ô	6Ô#3ô 	6ñ &Ø×-Ñ-Ø+ô-ˆô ˜?Ó+×1Ñ1Ó3ˆ
Ø"#¤^Ð!4ˆ
Ôä“fˆØ ˆÔä$,×$5Ñ$5×$9Ñ$9Ó$;ˆÔ!à×Ñœ~Ó.ñ 	5Ü ¨Ó4×4Ð4÷	5ð 	×ÑÔ1°;×3FÑ3FÀ}Ñ3UÕVð 5ø÷	5ð 	5üs0   ‚BC$ÂCÂ%CÂ&CÂ*,C$ÃCÃC!ÃC$c              ƒ   ó  K  — t        t        t        t        z  ¬«      }| j	                  t        j                  | j                  «      «      }t        «       }t        |d|¬«      ƒ d {  –—†  | j                  ||«       y 7 Œ­wr¼  )
r×   r8  rC  r{   rK   r¿  rÀ  r9  r   rl   rÁ  s       r   Útest_load_config_helperz,TestKubeConfigLoader.test_load_config_helperS  ss   è ø€ Ü¤9Ü$7Ô:JÑ$JôLˆà×,Ñ,¬T¯^©^¸D×<QÑ<QÓ-RÓSˆÜ“ˆÜ kØ"0Ø/5ô7÷ 	7ð 	7ð 	×Ñ˜ 6Õ*ð	7úrÃ  N);rZ   r[   r\   r8  rˆ  r‰  ÚTEST_CERTIFICATE_AUTH_BASE64rŸ  r£  r{   ÚTEST_USERNAMEÚTEST_PASSWORDÚTEST_OIDC_LOGINÚTEST_OIDC_EXPIRED_LOGINÚTEST_OIDC_CAr†  r‡  ÚTEST_CLIENT_CERT_BASE64ÚTEST_CLIENT_KEY_BASE64r9  r>  rD  rI  rQ  rV  r^  ra  re  r   rp  rs  rz  r}  r�  rŠ  r�  r�  r’  r•  r™  rœ  r   r¤  r©  r­  r°  rº  rÂ  rÅ  rË  rÐ  r×  rÙ  rÛ  rß  rá  rê  rò  rô  r1   r    r   ró   ró   M  s  „ à$ð "à˜yðñð 'à(Ø*ññð à(Ø!ññð &à(Ø)ññð à(Ø"ññð 'à(Ø*ññð 8à(Ø;ññð $à(Ø'ññð à$Ø!ññð .à4Ø!ññð +à1Ø!ññð 0à.Ø*ññð &à,Ø)ññð )à/Ø,ññð ,à(Ø/ññð )à(Ø,ññð 5à$Ø8ññð *à0Ø!ññðo~
ðB "à˜iðñð &à+Ø-Bññð )à+Ø-8ññð à+à4Ø05ñ	ñð .à+Ø04ññð +à+Ø05ññð *à+à4Ø05Ø';ññ	ð (à'Ø!/ññðm=
ð@ 'à-Ø -Ø -ññð ð !&à*Ð,<ð#ñ&ð .Ø -Ø -ñ
ñð &ð !&à,<Ø&<ñ#ñ&ð .Ø -Ø -ññð  à#Ø &à&¨ð#ñ&ðñ
ð 'à#Ø &à);Ø-:Ø(?Ø>JØ.RØ-Oñ#ñ
&ðñð" 8à#Ø &à);Ø-:Ø(?Ø.RØ-Oñ#ñ	&ðñð  $à -Ø -ññð &à-Ø*:Ø"1ññð )à!-Ø*7Ø".ññð à-Ø/FØ'=ññð )àØ&LØ#:Ú @ñðñ	ð 5àØ&LØ#EØ "ñðñ	ðsC
ñCÐòJ
+ò+òOò
+ò	'ò'ò 'ò"8ñ ÐLÓMñ8ó Nð8ñ ÐLÓMñ8ó Nð8ò+ò"7ñ Ð?Ó@ñ+ó Að+ñ Ð?Ó@ñ+ó Að+ò"+ò9òò+ò+ò+ò+ò 
+ò5ò1ò1ò$ò6+ò+ò7ò,KòFòEòFò+ò+ò'ò$Wó*+r    ró   c                   ó2  — e Zd Zddddidœgddeidœgg dœdd	d	d	d
œdœdddd
œdœgd	eedœdœgd	eeedœdœgdœddddd
œdœd	ddd
œdœgg ddddde	e
dddœdœidœdeeedœdœgdœgZdddeidœgiddddd
œdœgdœddeeedœdœgigZd„ Zd„ Zd „ Zd!„ Zd"„ Zy#)$ÚTestKubeConfigMergerrô   rõ   rö   r÷   r  r  r,  r"   r  rù   rø   )r  r  r(  r  rþ   z"skipped-part2-defined-this-contextÚskippedr  rý   r  r  zhttps://example.org/identityr  r  r  r  r/  )r-  r.  r0  c                 ó¤   — g }|D ]5  }|j                  | j                  t        j                  |«      «      «       Œ7 t	        j
                  |«      S r   )rD   rK   r¿  rÀ  r
   rµ  )r9   ÚpartsÚfilesÚparts       r   Ú_create_multi_configz)TestKubeConfigMerger._create_multi_configë  sI   € ØˆØò 	GˆDØ�L‰L˜×/Ñ/´·±¸tÓ0DÓEÕFð	Gä,×1Ñ1°%Ó8Ð8r    c                 óà   — | j                  | j                  «      }ddiddœdddœddœdddœddœdddœddœg}t        |¬	«      \  }}| j                  ||«       | j                  ||d
   «       y )Nrõ   rö   rô   ©rV   rJ   r  rù   rø   rþ   rÍ  r«   )r  ÚTEST_KUBE_CONFIG_SET1r   rl   )r9   Úkubeconfigsr¨  r.  r6  s        r   rÐ  z3TestKubeConfigMerger.test_list_kube_config_contextsñ  s–   € Ø×/Ñ/°×0JÑ0JÓKˆà" IÐ.¸	ÑBØ$)°5Ñ9À5ÑIØ$-°~ÑFØ#ñ%à$-°~ÑFÐP^Ñ_ðaÐô $=Ø#ô$%Ñ ˆ�.ð 	×Ñ˜Ð#4Ô5Ø×Ñ˜Ð):¸1Ñ)=Õ>r    c              ƒ   ó,  K  — | j                  | j                  «      }t        |d¬«      ƒ d {  –—† }| j                  t        |j
                  j                  «       | j                  t        t        z  |j
                  j                  d   «       y 7 Œc­wrÒ  )
r  r  r   rl   r8  rÔ  r3  rC  r{   rÝ   )r9   r  rÖ  s      r   r×  z0TestKubeConfigMerger.test_new_client_from_config   s}   è ø€ Ø×/Ñ/°×0JÑ0JÓKˆÜ-Ø#¨^ô=÷ =ˆà×Ñœ F×$8Ñ$8×$=Ñ$=Ô>Ø×ÑÔ,Ô/?Ñ?Ø×-Ñ-×5Ñ5°mÑDõ	Fð=ús   ‚,B®B¯A$Bc              ƒ   ó¨  K  — | j                  | j                  «      }t        |¬«      ƒ d {  –—† }dddœddœg}t        |¬«      \  }}| j	                  ||«       | j	                  ||d   «       | j	                  t
        |j                  j                  «       | j	                  t        t        z  |j                  j                  d   «       y 7 Œ¢­w)NrÍ  rö   rø   rù   r  r   rÜ   )r  ÚTEST_KUBE_CONFIG_SET2r   r   rl   r8  rÔ  r3  rC  r{   rÝ   )r9   r  rÖ  r¨  r.  r6  s         r   Ú)test_merge_with_context_in_different_filez>TestKubeConfigMerger.test_merge_with_context_in_different_file  sÌ   è ø€ Ø×/Ñ/°×0JÑ0JÓKˆÜ-¸+ÔF×Fˆð %.°~ÑFØ#ñ%ð
Ðô $=Ø#ô$%Ñ ˆ�.à×Ñ˜Ð#4Ô5Ø×Ñ˜Ð):¸1Ñ)=Ô>Ø×Ñœ F×$8Ñ$8×$=Ñ$=Ô>Ø×ÑÔ,Ô/?Ñ?Ø×-Ñ-×5Ñ5°mÑDõ	Fð Gús   ‚+C­C®B#Cc                 ó†  — | j                  | j                  «      }t        |«      }|j                  d   j	                  d«      d   }|d   d   }d|j
                  d<   |j                  «        t        |«      }|j                  d   j	                  d«      d   }|d   d   }| j                  |j
                  d   d«       y )Nr0  rþ   rú   r  r  ztoken-changedr  )r  r  r   r  rº   r¦   Úsave_changesrl   )r9   r  Úkconfrú   Úproviders        r   Útest_save_changesz&TestKubeConfigMerger.test_save_changes  s¿   € Ø×/Ñ/°×0JÑ0JÓKˆô ! Ó-ˆØ�|‰|˜GÑ$×2Ñ2°>ÓBÀ6ÑJˆØ˜Ñ(¨Ñ2ˆØ%4ˆ�‰�zÑ"Ø×ÑÔô ! Ó-ˆØ�|‰|˜GÑ$×2Ñ2°>ÓBÀ6ÑJˆØ˜Ñ(¨Ñ2ˆð 	×Ñ˜Ÿ™¨
Ñ3°_ÕEr    N)rZ   r[   r\   r8  rˆ  rõ  r{   rû  rü  rù  rú  rö  r÷  r  r  r  rÐ  r×  r  r  r1   r    r   rþ  rþ  ^  sØ  „ à$ð "à˜yðñð
ð "à˜iðñð
ð ñ%ð( ð à$Ø!ññð 'à(Ø*ññð
ð$ à+à4ññð	
ð à-Ø/FØ'=ññð	
ñ9&ðN *ð 'à(Ø*ññð àCØ%ññð
ð 
ð 'à#Ø &à);Ø-:Ø(?Ø>JØ.Là Bñ#ñ&ðñð$ 'à-Ø -Ø -ññð%
ñ)/ðshÐðX 	à!à˜iðñð
ð	ð *ð 'à(Ø*ññð
ñð 	à&à-Ø -Ø -ññð	
ðð)ÐòB9ò?òFòFó Fr    rþ  )Er   r\  r<   r¶  rB   Útypesr   Úunittestr   Úunittest.mockr   r   r¿  r"   r   Úconfig_exceptionr	   Úkube_configr
   r   r   r   r   r   r   r   r   r   r   rC  rs   r   r%   r)   rj   rz   ÚTEST_FILENAMErk   r{   rŠ   r[  r8  rö  r÷  rŒ  rˆ  r‰  rõ  r‡  rü  r†  rû  rŸ  r£  rd  ÚTEST_OIDC_INFOÚTEST_OIDC_BASErø  ÚTEST_OIDC_EXPÚTEST_OIDC_EXP_BASErù  rú  r3   r5   r^   rœ   r×   ró   rþ  r1   r    r   ú<module>r     s¿  ðó Û Û 	Û Û Ý !Ý ,ß %ã å Ý -÷÷ ÷ ñ ð "Ð à4Ð ò?òAòð €Ø€Ø€à€	Ù˜9Ó%Ð à'Ð Ù"Ð#4Ó5Ð à€	Ø€Ø€à'Ð à#€Ø#Ð Ù&Ð'<Ó=Ð Ø€Ù  Ó1Ð Ø Ð Ù!Ð"2Ó3Ð Ø&Ð Ø0€à#€Ø'€Ù! /Ó2°SÑ8Ñ;KÈNÓ;[Ñ[€Ø  3Ñ&Ð)@Ñ@€Ø Ñ/€Ø9€Ù% oÓ6¸Ñ<Ñ?OÐP]Ó?^Ñ^Ð Ø,¨sÑ2Ð5LÑLÐ ÙÐ,Ó-€òô<Ð*ô <ô8WH�\ô WHôtE\�\ô E\÷P/$ñ /$ôdN+˜<ô N+ôbJF˜<õ JFr    