Ë
    eQêj ã                   ó$  — 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Zd dlZd dlZd dl	m
Z
 d dl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 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 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-d„ Z.dZ/dZ0dZ1dZ2 e*e2«      Z3dZ4 e*e4«      Z5dZ6dZ7dZ8dZ9ej                  ju                  e¬«      jw                  d¬«       ejx                  e'¬«      z
  Z=ej                  ju                  e¬«      jw                  d¬«       ejx                  e(¬«      z   Z> e,e=«      Z?d Z@d!ZA e*eA«      ZBd"ZC e*eC«      ZDd#ZE e*eE«      ZFd$ZGd%ZHd&ZId'ZJd(j—                   e+eI«       e+eJ«      g«      ZLd(j—                  eL e+eF«      g«      ZMd
eMz  ZId)ZN e+eI«      d(z    e+eN«      z   ZOd(j—                  eO e+eE«      g«      ZPd(j—                   e+eI«       e+eJ«      jw                  d*d+«       e+eE«      g«      ZQd(j—                   e+eI«      d, e+eE«      g«      ZR e*eA«      ZS G d-„ d.ej¨                  «      ZU G d/„ d0eU«      ZV G d1„ d2eU«      ZW G d3„ d4«      ZX G d5„ d6eU«      ZY G d7„ d8eU«      ZZ G d9„ d:eU«      Z[e\d;k(  r ejº                  «        yy)<é    N)Úpprint)Ú
namedtuple)Úmock)ÚConfigurationé   )ÚConfigException)ÚUTCÚformat_rfc3339Úparse_rfc3339)ÚENV_KUBECONFIG_PATH_SEPARATORÚCommandTokenSourceÚ
ConfigNodeÚ
FileOrDataÚKubeConfigLoaderÚKubeConfigMergerÚ_cleanup_temp_filesÚ_create_temp_file_with_contentÚ_get_kube_config_loaderÚ%_get_kube_config_loader_for_yaml_fileÚlist_kube_config_contextsÚload_kube_configÚload_kube_config_from_dictÚnew_client_from_configÚnew_client_from_config_dictz	Bearer %sz%Y-%m-%dT%H:%M:%SZé   é<   Úzz_non_existing_file_472398324c                 ód   — t        j                  | j                  «       «      j                  «       S ©N)Úbase64Ústandard_b64encodeÚencodeÚdecode©Ústrings    úg/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/kubernetes/config/kube_config_test.pyÚ_base64r'   5   s"   € Ü×$Ñ$ V§]¡]£_Ó5×<Ñ<Ó>Ð>ó    c                 ó‚   — t        j                  | j                  «       «      j                  «       j	                  d«      S )Nú=)r    Úurlsafe_b64encoder"   r#   Úrstripr$   s    r&   Ú_urlsafe_unpadded_b64encoder-   9   s-   € Ü×#Ñ# F§M¡M£OÓ4×;Ñ;Ó=×DÑDÀSÓIÐIr(   c                 ó,   — | j                  t        «      S r   )ÚstrftimeÚEXPIRY_DATETIME_FORMAT)Údts    r&   Ú_format_expiry_datetimer2   =   s   € Ø�;‰;Ô-Ó.Ð.r(   c                 óî   ‡— ˆfd„| j                   j                  j                  d«      D «       }t        |«      j                  d«      j                  d«      j                  d«      j                  d«      S )Nc              3   óJ   •K  — | ]  }|j                  d «      ‰k(  r|–— Œ y­w)ÚnameN)Úget)Ú.0ÚitemÚactive_contexts     €r&   ú	<genexpr>z_get_expiry.<locals>.<genexpr>B   s)   øè ø€ ò ? ØŸ8™8 FÓ+¨~Ò=ô ñ ?ùs   ƒ #ÚusersÚuserúauth-providerÚconfigÚexpiry)Ú_configÚvaluer6   Únext)Úloaderr9   Úexpired_gcp_confs    ` r&   Ú_get_expiryrE   A   s\   ø€ ó?¨¯©×)=Ñ)=×)AÑ)AÀ'Ó)Jô ?ÐäÐ Ó!×%Ñ% fÓ-×1Ñ1°/ÓBß	‰ˆX‹—s‘s˜8“}ð%r(   c                 ó   — t        | «      ‚r   )Ú	Exception)Ústs    r&   Ú_raise_exceptionrI   H   s   € Ü
�B‹-Ðr(   ÚfileÚdataztest-filenamez	test-datazanother-test-dataz	test-hostÚmeÚpasszBasic bWU6cGFzcw==©Útz©Útzinfo)Úminutesz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}Úaú+Úaaaaac                   ó&   — e Zd Zd„ Zd„ Zdd„Zd„ Zy)ÚBaseTestCasec                 ó   — g | _         y r   )Ú_temp_files©Úselfs    r&   ÚsetUpzBaseTestCase.setUp�   s
   € ØˆÕr(   c                 óP   — | j                   D ]  }t        j                  |«       Œ y r   )r[   ÚosÚremove)r]   Úfs     r&   ÚtearDownzBaseTestCase.tearDown�   s"   € Ø×!Ñ!ò 	ˆAÜ�I‰I�a�Lñ	r(   c                 óæ   — t        j                  «       \  }}| j                  j                  |«       t	        j
                  |t        j                  |«      «       t	        j                  |«       |S r   )	ÚtempfileÚmkstempr[   Úappendr`   ÚwriteÚstrr"   Úclose)r]   ÚcontentÚhandlerr5   s       r&   Ú_create_temp_filezBaseTestCase._create_temp_file”   sP   € Ü ×(Ñ(Ó*‰ˆ�Ø×Ñ×Ñ Ô%Ü
�‰�œ#Ÿ*™* WÓ-Ô.Ü
�‰�ÔØˆr(   c                 ó²   — | j                  t        «      5 } ||i |¤Ž d d d «       | j                  |t        j                  «      «       y # 1 sw Y   Œ/xY wr   )ÚassertRaisesr   ÚassertInri   Ú	exception)r]   ÚfuncÚmessage_partÚargsÚkwargsÚcontexts         r&   Úexpect_exceptionzBaseTestCase.expect_exception›   sM   € Ø×ÑœÓ/ð 	"°7Ù�$Ð!˜&Ò!÷	"à�‰�l¤C¨×(9Ñ(9Ó$:Õ;÷	"ð 	"ús   –	AÁAN)Ú )Ú__name__Ú
__module__Ú__qualname__r^   rc   rm   rw   © r(   r&   rY   rY   ‹   s   „ òòóó<r(   rY   c                   ó|   — 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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)Úfilenamerb   s     r&   Úget_file_contentzTestFileOrData.get_file_content£   s)   € ä�(‹^ð 	˜qØ—6‘6“8÷	÷ 	ò 	ús   Œ&¦/c                 óº   — t        t        «      }t        |i}t        |t        ¬«      }| j	                  t        | j                  |j                  «       «      «       y )N©ÚobjÚfile_key_name)r   Ú	TEST_DATAÚTEST_FILE_KEYr   ÚassertEqualrƒ   Úas_file©r]   Útemp_filenamer†   Úts       r&   Útest_file_given_filez#TestFileOrData.test_file_given_file¨   sC   € Ü6´yÓAˆÜ˜mÐ,ˆÜ˜3¬mÔ<ˆØ×Ñœ D×$9Ñ$9¸!¿)¹)»+Ó$FÕGr(   c                 óz   — t         }t        |i}t        |t        ¬«      }| j                  |j                  d«       y )Nr…   údoes not exist)ÚNON_EXISTING_FILEr‰   r   rw   r‹   rŒ   s       r&   Ú!test_file_given_non_existing_filez0TestFileOrData.test_file_given_non_existing_file®   s2   € Ü)ˆÜ˜mÐ,ˆÜ˜3¬mÔ<ˆØ×Ñ˜aŸi™iÐ)9Õ:r(   c                 ó®   — t         t        i}t        |t        t         ¬«      }| j	                  t
        | j                  |j                  «       «      «       y ©N©r†   r‡   Údata_key_name)ÚTEST_DATA_KEYÚTEST_DATA_BASE64r   r‰   rŠ   rˆ   rƒ   r‹   ©r]   r†   rŽ   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)r†   r‡   r—   Úbase64_file_content)r˜   rˆ   r   r‰   rŠ   rƒ   r‹   rš   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 r•   )r˜   r™   r   r‰   rŠ   Úas_datarš   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 )N©rk   r…   )r‰   rm   rˆ   r   rŠ   r™   r¡   rš   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 )Nr¤   F)r†   r‡   rž   )r‰   rm   rˆ   r   rŠ   r¡   rš   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 ©Nr¤   r–   )r˜   r™   r‰   rm   ÚTEST_ANOTHER_DATAr   rŠ   r¡   rš   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©   )
r˜   r™   r‰   rm   rª   r   rŠ   rˆ   rƒ   r‹   rš   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 )Nr¤   )r†   r‡   Úfile_base_path)rm   rˆ   r`   ÚpathÚdirnameÚbasenamer‰   r   rŠ   rƒ   r‹   )r]   re   Útempfile_dirÚtempfile_basenamer†   rŽ   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                 ó|   — | j                  t        | j                  t        t        «      «      «       t	        «        y r   )rŠ   rˆ   rƒ   r   r   r\   s    r&   Ú"test_create_temp_file_with_contentz1TestFileOrData.test_create_temp_file_with_contentî   s2   € Ø×ÑœØ×.Ñ.Ü;¼IÓFóHô	Iô 	Õr(   c                 óÊ   — t         t        j                  «       i}t        |t        t         ¬«      }| j                  t        | j                  |j                  «       «      «       y r•   )	r˜   r™   r"   r   r‰   rŠ   rˆ   rƒ   r‹   rš   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�   )r˜   rˆ   r"   r   r‰   rŠ   rƒ   r‹   rš   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(   c                 óp   — t        d t        t        ¬«      }| j                  |j	                  «       d «       y r•   )r   r‰   r˜   rŠ   r‹   ©r]   rŽ   s     r&   Útest_file_given_no_objectz(TestFileOrData.test_file_given_no_object   ó)   € Ü˜4¬}Ü%2ô4ˆà×Ñ˜Ÿ™› dÕ+r(   c                 óp   — t        d t        t        ¬«      }| j                  |j	                  «       d «       y r•   )r   r‰   r˜   rŠ   r¡   r½   s     r&   Útest_file_given_no_object_dataz-TestFileOrData.test_file_given_no_object_data  r¿   r(   c                 ó(  — t         t        i}t        |t        t         ¬«      }|j	                  «       }t        j                  |«       t        |t        t         ¬«      }|j	                  «       }| j                  t        | j                  |«      «       y r•   )
r˜   r™   r   r‰   r‹   r`   ra   rŠ   rˆ   rƒ   )r]   r†   Út1Úfirst_file_pathÚt2Úsecond_file_paths         r&   Útest_file_recreationz#TestFileOrData.test_file_recreation
  sv   € ÜÔ.Ð/ˆÜØÜ'Ü'ô
ˆð
 Ÿ*™*›,ˆä
�	‰	�/Ô"äØÜ'Ü'ô
ˆð Ÿ:™:›<ÐØ×Ñœ D×$9Ñ$9Ð:JÓ$KÕLr(   N)ry   rz   r{   Ústaticmethodrƒ   r�   r“   r›   rŸ   r¢   r¥   r§   r«   r­   rµ   r·   r¹   r»   r¾   rÁ   rÇ   r|   r(   r&   r~   r~   ¡   sl   „ àñó ðòHò;òHòHò8ò8ò1ò8òHòHòòHòHò,ò
,ó
M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©rU   ÚbÚcÚ	inner_keyÚinner_valueÚ	test_nameÚ
test_value)r5   rA   Ú
test_name2Úkey1Ú
test_name3)r   r   é   )rÔ   Úkey2Úkey3Ú
with_namesÚwith_names_dupc                 óX   •— t         ‰| �  «        t        d| j                  «      | _        y )NÚtest_obj)Úsuperr^   r   rÜ   Únode)r]   Ú	__class__s    €r&   r^   zTestConfigNode.setUp.  s   ø€ Ü‰‰ŒÜ˜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Ð   )rŠ   rÞ   Úlenr5   rA   r\   s    r&   Ú test_normal_map_array_operationsz/TestConfigNode.test_normal_map_array_operations2  s/  € Ø×Ñ˜ §¡¨6Ñ!2Ô3Ø×Ñ˜œC §	¡	›NÔ+à×Ñ˜¨$¯)©)°FÑ*;×*@Ñ*@ÔAØ×Ñš¨$¯)©)°FÑ*;×*AÑ*AÔBØ×Ñ˜˜dŸi™i¨Ñ/°Ñ2Ô3Ø×Ñ˜œC §	¡	¨&Ñ 1Ó2Ô3à×Ñ˜¨$¯)©)°FÑ*;×*@Ñ*@ÔAØ×Ñ˜+ }Ð5ØŸ™ 6Ñ*×0Ñ0ô	2à×Ñ˜¨¯	©	°&Ñ(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Ñ   rA   rÓ   rÕ   z$test_obj/with_names[name=test_name2]z$test_obj/with_names[name=test_name3])rÞ   rŠ   Úget_with_nameÚ
assertTrueÚ
isinstancer   r5   )r]   rÞ   s     r&   Útest_get_with_namez!TestConfigNode.test_get_with_nameA  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Þ   r\   s   €r&   ú<lambda>z9TestConfigNode.test_key_does_not_exists.<locals>.<lambda>P  s   ø€  d§i¡iÐ0@Ñ&A€ r(   z'Expected key not-exists-key in test_objc                  ó(   •— ‰ j                   d   d   S )NrØ   rë   rì   r\   s   €r&   rí   z9TestConfigNode.test_key_does_not_exists.<locals>.<lambda>R  s   ø€  d§i¡i°Ñ&7Ð8HÑ&I€ r(   z,Expected key not-exists-key in test_obj/key3©rw   r\   s   `r&   Útest_key_does_not_existsz'TestConfigNode.test_key_does_not_existsO  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å   r\   s   €r&   rí   zETestConfigNode.test_get_with_name_on_invalid_object.<locals>.<lambda>W  ó   ø€ �D—I‘I˜fÑ%×3Ñ3°IÓ>€ r(   z<Expected all values in test_obj/key2 list to have 'name' keyrï   r\   s   `r&   Ú$test_get_with_name_on_invalid_objectz3TestConfigNode.test_get_with_name_on_invalid_objectU  s   ø€ Ø×ÑÛ>ØLõ	Nr(   c                 ó0   ‡ — ‰ j                  ˆ fd„d«       y )Nc                  ó@   •— ‰ j                   d   j                  d«      S )NrØ   ró   rô   r\   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ï   r\   s   `r&   Ú%test_get_with_name_on_non_list_objectz4TestConfigNode.test_get_with_name_on_non_list_objectZ  s   ø€ Ø×ÑÛ>Ø1õ	3r(   c                 ó0   ‡ — ‰ j                  ˆ fd„d«       y )Nc                  ó@   •— ‰ j                   d   j                  d«      S )NrÙ   ró   rô   r\   s   €r&   rí   zKTestConfigNode.test_get_with_name_on_name_does_not_exists.<locals>.<lambda>a  s   ø€ �D—I‘I˜lÑ+×9Ñ9¸)ÓD€ r(   z=Expected object with name no-name in test_obj/with_names listrï   r\   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ô   r\   s   €r&   rí   zETestConfigNode.test_get_with_name_on_duplicate_name.<locals>.<lambda>f  s   ø€ �D—I‘IÐ.Ñ/×=Ñ=¸kÓJ€ r(   zLExpected only one object with name test_name in test_obj/with_names_dup listrï   r\   s   `r&   Ú$test_get_with_name_on_duplicate_namez3TestConfigNode.test_get_with_name_on_duplicate_named  s   ø€ Ø×ÑÛJð+õ	,r(   )ry   rz   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ð
 )°<Ñ@Ø(Ø% vÐ.ñ0à)²IÑ>ð	#ñ€Hô:ò4ò@òNòNò
3ò
Mö
,r(   rÊ   c                   ó.   — e Zd Zg d¢ZdgZdd„Zd„ Zd„ Zy)Ú
FakeConfig)Ússl_ca_certÚkey_fileÚ	cert_fileÚrefresh_api_key_hookNc                 óx   — i | _         d | _        |r|| j                   d<   | j                  j                  |«       y )NÚBearerToken)Úapi_keyr  Ú__dict__Úupdate)r]   Útokenru   s      r&   Ú__init__zFakeConfig.__init__p  s4   € ØˆŒà$(ˆÔ!ÙØ*/ˆD�L‰L˜Ñ'à�‰×Ñ˜VÕ$r(   c                 óÀ  — t        | j                  «      t        |j                  «      k7  ry | j                  j                  «       D ]Ø  \  }}|| j                  v rŒ||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ÚIGNORE_KEYSÚ	FILE_KEYSr€   r�   ÚOSError)r]   ÚotherÚkÚvÚf1Úf2s         r&   Ú__eq__zFakeConfig.__eq__y  sG  € Üˆt�}‰}Ó¤ U§^¡^Ó!4Ò4ØØ—M‘M×'Ñ'Ó)ò 	‰DˆAˆqØ�D×$Ñ$Ñ$ØØ˜Ÿ™Ñ&ÙØ�D—N‘NÑ"Ù˜Ÿ™¨Ò*ð#Ü! !›Wð '¨¬D°·±ÀÑ1BÓ,Cð 'ÀrØ!Ÿw™w›y¨B¯G©G«IÒ5Ø &÷'÷ 'ñ 'Ø5÷'÷ 'øð —~‘~ aÑ(¨AÓ-Ùà—>‘> !Ñ$¨Ó)Ùð+	ð, ÷'ð 'ú÷ 'ð 'ûô #ò #ð !Ÿ>™>¨!Ñ,°Ò1Ú"ò 2ð#úsN   ÂD;ÂD/Â0#D#ÃD/ÃD;Ã&D/Ã.D;Ä#D,Ä(D/Ä/D8	Ä4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€   ri   r#   r�   r  )r]   Úrepr  r  Úvalrb   Ú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   )ry   rz   r{   r  r  r  r  r  r|   r(   r&   r  r  k  s   „ â8€IØ)Ð*€Kó%òó6$r(   r  c                   ód  — 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œ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i 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d0œd-œdde	ed1œd/œe	e
ed0œd-œd	de	ed1œd/œe	e
ed0œd-œd
d2d
d3eid/œid-œdd2d
d4d5eed6d7d8œd/œid-œdd2d
d4d5eed6d7d9œd/œid-œdd2d
d4d5ed6d7d:œd/œid-œdd2d
d4d5ed6d7d:œd/œid-œdd2d
d4d5ed6d7d:œd/œid-œde
ed;œd-œde	eed<œd-œdd=d>d?d@œd-œde	eedAœd-œddBdCdDg dE¢dFœid-œddBdCdGg dFœid-œdd2ddHdIid/œid-œdd2ddHdJid/œid-œdd2ddKdLdMœd/œid-œgdNœZdO„ ZdP„ ZdQ„ ZdR„ ZdS„ ZdT„ ZdU„ ZdV„ Z ej@                  dW«       ej@                  dX«      dY„ «       «       Z! ej@                  dW«       ej@                  dX«      dZ„ «       «       Z" ej@                  dW«       ej@                  dX«      d[„ «       «       Z#d\„ Z$d]„ Z%d^„ Z&d_„ Z'd`„ Z(da„ Z)db„ Z*dc„ Z+dd„ Z,de„ Z-df„ Z.dg„ Z/dh„ Z0di„ Z1dj„ Z2dk„ Z3dl„ Z4dm„ Z5dn„ Z6do„ Z7dp„ Z8dq„ Z9dr„ Z:ds„ Z;dt„ Z< ej@                  du«      dv„ «       Z= ej@                  du«      dw„ «       Z> ej@                  du«      dx„ «       Z? ej@                  dud(¬y«      dz„ «       Z@d{„ ZAd|„ ZBd}„ ZCd~„ ZDd„ ZEd€„ ZFd�„ ZGd‚„ ZHyƒ)„ÚTestKubeConfigLoaderÚno_userÚclusterÚdefault©r5   rv   Úsimple_token©r#  r<   ÚgcpÚexpired_gcpÚexpired_gcp_refreshÚoidcÚexpired_oidcÚexpired_oidc_with_idp_ca_fileÚexpired_oidc_nocertÚ oidc_contains_reserved_characterÚoidc_invalid_padding_lengthÚ	user_passÚsslÚno_ssl_verificationússl-no_fileússl-local-fileÚnon_existing_userÚexec_cred_userÚexec_cred_user_certificateÚcontexttestcmdpathÚclustertestcmdpathÚusertestcmdpathÚcontexttestcmdpathemptyÚusertestcmdpathemptyÚcontexttestcmdpathscopeÚusertestcmdpathscopeútls-server-nameÚproxy_cluster_contextÚproxy_clusterÚserver©r5   r#  )rC  zcertificate-authorityÚ	cert_testF)rC  úcertificate-authority-dataúinsecure-skip-tls-verifyT)rC  rG  )rC  rF  rG  r@  )rC  z	proxy-url©r  ÚusernameÚpassword©r5   r<   úaccess-token©r5   r>   )r=   r  rI  rJ  )rL  r?   r=   úid-tokenútectonic-kubectlÚFAKE_SECRETúhttps://example.org/identityÚ lucWJjEhlxZW01cXI3YmVlcYnpxNGhzk©ú	client-idúclient-secretrN  zidp-certificate-authority-dataúidp-issuer-urlúrefresh-token)rT  rU  rN  zidp-certificate-authorityrV  rW  )rT  rU  rN  rV  rW  )rI  rJ  )r  úclient-certificaterS   Ú
token_fileÚclient_certÚ
client_key)Ú	tokenFilerX  rS   ©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úcmd-pathÚcmdtorunrx   ÚcmdÚscope)ra  Úscopes©úcurrent-contextÚcontextsÚclustersr;   c                 ó¨   — t        t        ¬«      }t        «       }t        | j                  d¬«      j	                  |«       | j                  ||«       y )N©Úhostr"  ©Úconfig_dictr9   ©r  Ú	TEST_HOSTr   ÚTEST_KUBE_CONFIGÚload_and_setrŠ   ©r]   ÚexpectedÚactuals      r&   Útest_no_user_contextz)TestKubeConfigLoader.test_no_user_contextw  sA   € Ü¤9Ô-ˆÜ“ˆÜØ×-Ñ-Ø$ô	&ç&2¡l°6Ô&:Ø×Ñ˜ 6Õ*r(   c                 óÀ   — t        t        t        t        z  ¬«      }t        «       }t	        | j
                  d¬«      j                  |«       | j                  ||«       y )N©rl  r  r&  rm  )r  rp  ÚBEARER_TOKEN_FORMATr™   r   rq  rr  rŠ   rs  s      r&   Útest_simple_tokenz&TestKubeConfigLoader.test_simple_token  sM   € Ü¤9Ü$7Ô:JÑ$JôLˆä“ˆÜØ×-Ñ-Ø)ô	+ç+7©<¸Ô+?Ø×Ñ˜ 6Õ*r(   c                 ó¾   — t        | j                  d¬«      }| j                  |j                  «       «       | j	                  t
        t        z  |j                  «       y )Nr&  rm  )r   rq  ræ   Ú_load_user_tokenrŠ   ry  r™   r  ©r]   rC   s     r&   Útest_load_user_tokenz)TestKubeConfigLoader.test_load_user_tokenˆ  sJ   € Ü!Ø×-Ñ-Ø)ô+ˆð 	�‰˜×/Ñ/Ó1Ô2Ø×ÑÔ,Ô/?Ñ?ÀÇÁÕNr(   c                 óh  — t        «       }| j                  |j                  «       t        | j                  dd„ ¬«      j                  |«       | j                  |j                  «       | j                  t        |j                  «       | j                  t        t        z  |j                  d   «       y )Nr(  c                  ó   — t        d«      S ©NzSHOULD NOT BE CALLED©rI   r|   r(   r&   rí   z:TestKubeConfigLoader.test_gcp_no_refresh.<locals>.<lambda>•  ó   € Ô+;Ø&ó,(€ r(   ©rn  r9   Úget_google_credentialsr  )r  ÚassertIsNoner  r   rq  rr  ÚassertIsNotNonerŠ   rp  rl  ry  r™   r	  )r]   Úfake_configs     r&   Útest_gcp_no_refreshz(TestKubeConfigLoader.test_gcp_no_refresh�  s‘   € Ü “lˆØ×Ñ˜+×:Ñ:Ô;ÜØ×-Ñ-Ø ñ$(ô	)÷ *6©°kÔ)Bà×Ñ˜[×=Ñ=Ô>Ø×Ñœ K×$4Ñ$4Ô5Ø×ÑÔ,Ô/?Ñ?Ø$×,Ñ,¨]Ñ;õ	=r(   c                 óÂ   — t        | j                  dd„ ¬«      }| j                  |j                  «       «       | j	                  t
        t        z  |j                  «       y )Nr(  c                  ó   — t        d«      S r�  r‚  r|   r(   r&   rí   zETestKubeConfigLoader.test_load_gcp_token_no_refresh.<locals>.<lambda>¡  rƒ  r(   r„  )r   rq  ræ   Ú_load_auth_provider_tokenrŠ   ry  r™   r  r}  s     r&   Útest_load_gcp_token_no_refreshz3TestKubeConfigLoader.test_load_gcp_token_no_refresh�  sR   € Ü!Ø×-Ñ-Ø ñ$(ô)ˆð
 	�‰˜×8Ñ8Ó:Ô;Ø×ÑÔ,Ô/?Ñ?ØŸ™õ	'r(   c                 ó®  ‡— d„ Št         ‰_        t        j                  j                  t        ¬«      j                  d ¬«      ‰_        t        | j                  dˆfd„¬«      }t        |d«      }| j                  |j                  «       «       t        |d«      }| j                  ||kD  «       | j                  t        t         z  |j                  «       y )Nc                   ó   — y r   r|   r|   r(   r&   ÚcredzCTestKubeConfigLoader.test_load_gcp_token_with_refresh.<locals>.cred¨  s   € ˜4r(   rN   rP   r)  c                  ó   •— ‰ S r   r|   )r�  s   €r&   rí   zGTestKubeConfigLoader.test_load_gcp_token_with_refresh.<locals>.<lambda>¯  s   ø€ ¨4€ r(   r„  )ÚTEST_ANOTHER_DATA_BASE64r  ÚdatetimeÚnowr	   Úreplacer?   r   rq  rE   ræ   rŒ  rŠ   ry  )r]   rC   Úoriginal_expiryÚ
new_expiryr�  s       @r&   Ú test_load_gcp_token_with_refreshz5TestKubeConfigLoader.test_load_gcp_token_with_refresh§  s­   ø€ ÚÜ-ˆŒ
Ü×'Ñ'×+Ñ+¬sÐ+Ó3×;Ñ;À4Ð;ÓHˆŒä!Ø×-Ñ-Ø(Û#/ô1ˆô & f¨mÓ<ˆØ�‰˜×8Ñ8Ó:Ô;Ü  ¨Ó7ˆ
à�‰˜
 _Ñ4Ô5Ø×ÑÔ,Ô/GÑGØŸ™õ	'r(   c                 ó”  —  G d„ d«      } G d„ d«      }t        «       }t        j                  «       }||g|_        t	        | j
                  d|¬«      }|j                  |«       t        |d«      }|j                  |«       t        |d«      }| j                  ||kD  «       | j                  t        t        z  |j                  «       y )Nc                   ó   — e Zd ZeZeZy)úDTestKubeConfigLoader.test_gcp_refresh_api_key_hook.<locals>.cred_oldN)ry   rz   r{   r™   r  ÚDATETIME_EXPIRY_PASTr?   r|   r(   r&   Úcred_oldr›  ¹  s   „ Ø$ˆEØ)‰Fr(   r�  c                   ó   — e Zd ZeZeZy)úDTestKubeConfigLoader.test_gcp_refresh_api_key_hook.<locals>.cred_newN)ry   rz   r{   r’  r  ÚDATETIME_EXPIRY_FUTUREr?   r|   r(   r&   Úcred_newrŸ  ½  s   „ Ø,ˆEØ+‰Fr(   r¡  r*  r„  )r  r   ÚMockÚside_effectr   rq  rr  rE   r  ræ   rŠ   ry  r’  r  )r]   r�  r¡  rˆ  Ú_get_google_credentialsrC   r–  r—  s           r&   Útest_gcp_refresh_api_key_hookz2TestKubeConfigLoader.test_gcp_refresh_api_key_hook¸  s¹   € ÷	*ñ 	*÷	,ñ 	,ô !“lˆÜ"&§)¡)£+ÐØ/7¸Ð.BÐÔ+ä!Ø×-Ñ-Ø0Ø#:ô<ˆð 	×Ñ˜KÔ(Ü% fÐ.CÓDˆà×(Ñ(¨Ô5Ü  Ð)>Ó?ˆ
à�‰˜
 _Ñ4Ô5Ø×ÑÔ,Ô/GÑGØŸ™õ	'r(   c                 ó°   — t        | j                  d¬«      }| j                  |j                  «       «       | j	                  t
        |j                  «       y )Nr+  rm  )r   rq  ræ   rŒ  rŠ   ÚTEST_OIDC_TOKENr  r}  s     r&   Útest_oidc_no_refreshz)TestKubeConfigLoader.test_oidc_no_refreshÒ  sC   € Ü!Ø×-Ñ-Ø!ô
ˆð 	�‰˜×8Ñ8Ó:Ô;Ø×Ñœ¨&¯,©,Õ7r(   z9kubernetes.config.kube_config.OAuth2Session.refresh_tokenz0kubernetes.config.kube_config.ApiClient.call_apic                 ó¬  — t        j                  «       }t        j                  d¬«      t        |«      _        t        j                  t        j                  ddi«      ¬«      t        |«      _        ||_        dddœ|_        t        | j                  d¬	«      }| j                  |j                  «       «       | j                  d
|j                  «       y )NéÈ   ©Úreturn_valueÚtoken_endpointú"https://example.org/identity/tokenÚabc123Únewtoken123©Úid_tokenÚrefresh_tokenr,  rm  úBearer abc123©r   Ú	MagicMockÚPropertyMockÚtypeÚstatusÚjsonÚdumpsrK   r¬  r   rq  ræ   rŒ  rŠ   r  ©r]   Úmock_ApiClientÚmock_OAuth2SessionÚmock_responserC   s        r&   Útest_oidc_with_refreshz+TestKubeConfigLoader.test_oidc_with_refreshÚ  s»   € ô Ÿ™Ó(ˆÜ%)×%6Ñ%6Øô&
Œˆ]ÓÔ"ô $(×#4Ñ#4ÜŸ™Ø Ð"Fð%ó ô$
Œˆ]ÓÔ ð '4ˆÔ#à7?Ø<Iñ+KÐÔ'ô "Ø×-Ñ-Ø)ô
ˆð 	�‰˜×8Ñ8Ó:Ô;Ø×Ñ˜¨&¯,©,Õ7r(   c                 ó¬  — t        j                  «       }t        j                  d¬«      t        |«      _        t        j                  t        j                  ddi«      ¬«      t        |«      _        ||_        dddœ|_        t        | j                  d¬	«      }| j                  |j                  «       «       | j                  d
|j                  «       y )Nrª  r«  r­  r®  r¯  r°  r±  r-  rm  r´  rµ  r¼  s        r&   Ú"test_oidc_with_idp_ca_file_refreshz7TestKubeConfigLoader.test_oidc_with_idp_ca_file_refreshó  s»   € ô Ÿ™Ó(ˆÜ%)×%6Ñ%6Øô&
Œˆ]ÓÔ"ô $(×#4Ñ#4ÜŸ™Ø Ð"Fð%ó ô$
Œˆ]ÓÔ ð '4ˆÔ#à7?Ø<Iñ+KÐÔ'ô "Ø×-Ñ-Ø:ô
ˆð
 	�‰˜×8Ñ8Ó:Ô;Ø×Ñ˜¨&¯,©,Õ7r(   c                 ó¬  — t        j                  «       }t        j                  d¬«      t        |«      _        t        j                  t        j                  ddi«      ¬«      t        |«      _        ||_        dddœ|_        t        | j                  d¬	«      }| j                  |j                  «       «       | j                  d
|j                  «       y )Nrª  r«  r­  r®  r¯  r°  r±  r.  rm  r´  rµ  r¼  s        r&   Útest_oidc_with_refresh_nocertz2TestKubeConfigLoader.test_oidc_with_refresh_nocert  s»   € ô Ÿ™Ó(ˆÜ%)×%6Ñ%6Øô&
Œˆ]ÓÔ"ô $(×#4Ñ#4ÜŸ™Ø Ð"Fð%ó ô$
Œˆ]ÓÔ ð '4ˆÔ#à7?Ø<Iñ+KÐÔ'ô "Ø×-Ñ-Ø0ô
ˆð 	�‰˜×8Ñ8Ó:Ô;Ø×Ñ˜¨&¯,©,Õ7r(   c                 ót   — t        | j                  d¬«      }| j                  |j                  d«      d «       y )Nr/  rm  ©r   rq  rŠ   Ú_load_oid_tokenr}  s     r&   Ú*test_oidc_fails_if_contains_reserved_charsz?TestKubeConfigLoader.test_oidc_fails_if_contains_reserved_chars'  s:   € Ü!Ø×-Ñ-Ø=ô
ˆð 	×ÑØ×"Ñ"Ð#EÓFØõ	
r(   c                 ót   — t        | j                  d¬«      }| j                  |j                  d«      d «       y )Nr0  rm  rÆ  r}  s     r&   Ú)test_oidc_fails_if_invalid_padding_lengthz>TestKubeConfigLoader.test_oidc_fails_if_invalid_padding_length1  s:   € Ü!Ø×-Ñ-Ø8ô
ˆð 	×ÑØ×"Ñ"Ð#@ÓAØõ	
r(   c                 ó²   — t        t        t        ¬«      }t        «       }t        | j                  d¬«      j                  |«       | j                  ||«       y )Nrx  r1  rm  )r  rp  ÚTEST_BASIC_TOKENr   rq  rr  rŠ   rs  s      r&   Útest_user_passz#TestKubeConfigLoader.test_user_pass<  sD   € Ü¤9Ô4DÔEˆÜ“ˆÜØ×-Ñ-Ø&ô	(ç(4©°VÔ(<Ø×Ñ˜ 6Õ*r(   c                 ó°   — t        | j                  d¬«      }| j                  |j                  «       «       | j	                  t
        |j                  «       y )Nr1  rm  )r   rq  ræ   Ú_load_user_pass_tokenrŠ   rÌ  r  r}  s     r&   Útest_load_user_pass_tokenz.TestKubeConfigLoader.test_load_user_pass_tokenD  sD   € Ü!Ø×-Ñ-Ø&ô(ˆð 	�‰˜×4Ñ4Ó6Ô7Ø×ÑÔ)¨6¯<©<Õ8r(   c                 ó|   — t        | j                  d¬«      }| j                  |j                  dt	        «       «       y )Nr4  rm  r‘   )r   rq  rw   rr  r  r}  s     r&   Útest_ssl_no_cert_filesz+TestKubeConfigLoader.test_ssl_no_cert_filesK  s9   € Ü!Ø×-Ñ-Ø(ô*ˆð 	×ÑØ×ÑØÜ‹Lõ	r(   c           	      ó:  — t        t        t        t        z  | j	                  t
        «      | j	                  t        «      | j	                  t        «      d¬«      }t        «       }t        | j                  d¬«      j                  |«       | j                  ||«       y )NT©rl  r  r  r  r  Ú
verify_sslr2  rm  )r  ÚTEST_SSL_HOSTry  r™   rm   ÚTEST_CLIENT_CERTÚTEST_CLIENT_KEYÚTEST_CERTIFICATE_AUTHr   rq  rr  rŠ   rs  s      r&   Útest_sslzTestKubeConfigLoader.test_sslT  s~   € ÜÜÜ%Ô(8Ñ8Ø×,Ñ,Ô-=Ó>Ø×+Ñ+¬OÓ<Ø×.Ñ.Ô/DÓEØô
ˆô “ˆÜØ×-Ñ-Ø ô	"ç".¡,¨vÔ"6Ø×Ñ˜ 6Õ*r(   c                 ó  — t        t        t        t        z  | j	                  t
        «      | j	                  t        «      dd ¬«      }t        «       }t        | j                  d¬«      j                  |«       | j                  ||«       y )NF)rl  r  r  r  rÕ  r  r3  rm  )r  rÖ  ry  r™   rm   r×  rØ  r   rq  rr  rŠ   rs  s      r&   Útest_ssl_no_verificationz-TestKubeConfigLoader.test_ssl_no_verificationc  sr   € ÜÜÜ%Ô(8Ñ8Ø×,Ñ,Ô-=Ó>Ø×+Ñ+¬OÓ<ØØô
ˆô “ˆÜØ×-Ñ-Ø0ô	2ç2>±,¸vÔ2FØ×Ñ˜ 6Õ*r(   c           	      óD  — t        t        t        t        z  | j	                  t
        «      | j	                  t        «      | j	                  t        «      dt        ¬«      }t        «       }t        | j                  d¬«      j                  |«       | j                  ||«       y )NT)rl  r  r  r  r  rÕ  Útls_server_namer@  rm  )r  rÖ  ry  r™   rm   r×  rØ  rÙ  ÚTEST_TLS_SERVER_NAMEr   rq  rr  rŠ   rs  s      r&   Útest_tls_server_namez)TestKubeConfigLoader.test_tls_server_namer  s�   € ÜÜÜ%Ô(8Ñ8Ø×,Ñ,Ô-=Ó>Ø×+Ñ+¬OÓ<Ø×.Ñ.Ô/DÓEØÜ0ô
ˆô “ˆÜØ×-Ñ-Ø,ô	.ç.:©l¸6Ô.BØ×Ñ˜ 6Õ*r(   c                 óÊ   — t        t        t        t        z  t        ¬«      }t        «       }t        | j                  d¬«      j                  |«       | j                  ||«       y )N)rl  r  ÚproxyrA  rm  )	r  rp  ry  r™   ÚTEST_PROXY_URLr   rq  rr  rŠ   rs  s      r&   Útest_proxy_url_from_clusterz0TestKubeConfigLoader.test_proxy_url_from_cluster‚  sR   € ÜÜÜ%Ô(8Ñ8Ü ô
ˆô
 “ˆÜØ×-Ñ-Ø2ô	4ç4@±LÀÔ4HØ×Ñ˜ 6Õ*r(   c                 óò   — t        | j                  d¬«      }|j                  «       }t        d| j                  «      d   }|D ]2  }|j	                  |d   «      }| j                  |j                  |«       Œ4 y )Nr"  rm  rx   rh  r5   )r   rq  Úlist_contextsr   rå   rŠ   rA   )r]   rC   Úactual_contextsÚexpected_contextsru  rt  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 )N©rn  rx   rh  r"  )r   rq  r   rŠ   rå   rA   Úcurrent_context©r]   rC   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 )Nrë  r2  rx   rh  )r   rq  Úset_active_contextr   rŠ   rå   rA   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           	      óÖ  — 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%                  |«       | j'                  ||«       t)        j*                  |«       y # 1 sw Y   �Œ[xY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒÈxY w# 1 sw Y   Œ~xY w# t)        j*                  «       w xY w)	N)rl  r  r  r  r  rE  ÚwbrZ  r[  rY  r5  ©rn  r9   Úconfig_base_path)r  rÖ  ry  r™   rm   r×  rØ  rÙ  re   Úmkdtempr€   r`   r°   Újoinrh   r"   r   rq  rr  rŠ   ÚshutilÚrmtree)r]   rt  Útemp_dirru  Ú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˜(Õ#úsn   ÁAI Â"$HÃ2I Ã8$H,Ä2I Å$H9Å22I Æ$$IÇAI ÈH)È$I È,H6È1I È9IÈ>I ÉIÉ
I ÉI(c                 óì   — t        t        t        t        z  ¬«      }| j	                  t        j                  | j                  «      «      }t        «       }t        |d|¬«       | j                  ||«       y )Nrx  r&  ©Úconfig_filerv   Úclient_configuration)
r  rp  ry  r™   rm   ÚyamlÚ	safe_dumprq  r   rŠ   ©r]   rt  rÿ  ru  s       r&   Ú$test_load_kube_config_from_file_pathz9TestKubeConfigLoader.test_load_kube_config_from_file_pathÀ  s`   € Ü¤9Ü$7Ô:JÑ$JôLˆà×,Ñ,Ü�N‰N˜4×0Ñ0Ó1ó3ˆä“ˆÜ [¸.Ø.4õ	6à×Ñ˜ 6Õ*r(   c                 ó¼  — t        t        t        t        z  ¬«      }t	        j
                  «       }	 t        d«       |j                  t        t        j                  | j                  «      d¬«      «       t        «       }t        |d|¬«       | j                  ||«       y # t        $ r1 |j                  t        j                  | j                  «      «       Y Œdw xY w)Nrx  rx   r•  )Úerrorsr&  rþ  )r  rp  ry  r™   ÚioÚStringIOÚunicoderh   r  r  rq  Ú	NameErrorr   rŠ   )r]   rt  Úconfig_file_like_objectru  s       r&   Ú+test_load_kube_config_from_file_like_objectz@TestKubeConfigLoader.test_load_kube_config_from_file_like_objectÊ  s¾   € Ü¤9Ü$7Ô:JÑ$JôLˆä"$§+¡+£-Ðð
	,Ü�BŒKØ#×)Ñ)ÜÜ—N‘NØ×-Ñ-ó/à$ô&ô'ô “ˆÜØ/Ø"Ø!'õ	)ð 	×Ñ˜ 6Õ*øô ò 	,Ø#×)Ñ)Ü—‘Ø×)Ñ)ó+ö,ð	,ús   ²AB! Â!7CÃCc                 ó¤   — t        t        t        t        z  ¬«      }t        «       }t	        | j
                  d|¬«       | j                  ||«       y )Nrx  r&  )rn  rv   r   )r  rp  ry  r™   r   rq  rŠ   rs  s      r&   Útest_load_kube_config_from_dictz4TestKubeConfigLoader.test_load_kube_config_from_dictá  sH   € Ü¤9Ü$7Ô:JÑ$JôLˆä“ˆÜ"¨t×/DÑ/DØ+9Ø8>õ	@ð 	×Ñ˜ 6Õ*r(   c           	      óz  — t        t        t        t        z  | j	                  t
        «      | j	                  t        «      | j	                  t        «      d¬«      }t        «       }t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        «      «      «      d«      }t        | j                  d||¬«       | j!                  t        j"                  |«      sdnd«       | j%                  ||«       t'        «        y )NTrÔ  Útmp_file_path_testr2  )rn  rv   r   Útemp_file_pathF)r  rÖ  ry  r™   rm   r×  rØ  rÙ  r`   r°   r÷  r±   ÚabspathÚ__file__r   rq  ÚassertFalseÚlistdirrŠ   r   )r]   rt  ru  Ú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Øô
ˆô “ˆÜ—7‘7—<‘<Ü�G‰G�O‰OÜ—‘—‘Ü—G‘G—O‘O¤HÓ-ó/ó0ð !ó	"ˆô
 	#¨t×/DÑ/DØ+0Ø8>Ø2:õ	<ð 	×Ñ¤R§Z¡Z°Ô%9™¸uÔEØ×Ñ˜ 6Ô*ÜÕr(   c                 ób   — t        j                  «       }| j                  t        t        |«       y r   )r  r  ro   r   r   )r]   r  s     r&   Ú1test_load_kube_config_from_empty_file_like_objectzFTestKubeConfigLoader.test_load_kube_config_from_empty_file_like_object  s%   € Ü"$§+¡+£-ÐØ×ÑÜÜØ#õ	%r(   c                 ó‚   — | j                  t        j                  d «      «      }| j                  t        t
        |«       y r   )rm   r  r  ro   r   r   )r]   rÿ  s     r&   Ú%test_load_kube_config_from_empty_filez:TestKubeConfigLoader.test_load_kube_config_from_empty_file  s5   € Ø×,Ñ,Ü�N‰N˜4Ó ó"ˆà×ÑÜÜØõ	r(   c                 ó   — | j                  t        j                  | j                  «      «      }t	        |¬«      \  }}| j                  | j                  d   d   |«       | j                  | j                  d   |«       y )N©rÿ  rh  r   )rm   r  r  rq  r   ÚassertDictEqualÚassertCountEqual)r]   rÿ  rh  r9   s       r&   Útest_list_kube_config_contextsz3TestKubeConfigLoader.test_list_kube_config_contexts  sw   € Ø×,Ñ,Ü�N‰N˜4×0Ñ0Ó1ó3ˆä#<Ø#ô$%Ñ ˆ�.à×Ñ˜T×2Ñ2°:Ñ>¸qÑAØ+ô	-à×Ñ˜d×3Ñ3°JÑ?Ø&õ	(r(   c                 ó6  — | j                  t        j                  | j                  «      «      }t	        |d¬«      }| j                  t        |j                  j                  «       | j                  t        t        z  |j                  j                  d   «       y ©Nr&  ©rÿ  rv   r  )rm   r  r  rq  r   rŠ   rp  Úconfigurationrl  ry  r™   r	  ©r]   rÿ  Úclients      r&   Útest_new_client_from_configz0TestKubeConfigLoader.test_new_client_from_config  s{   € Ø×,Ñ,Ü�N‰N˜4×0Ñ0Ó1ó3ˆä'Ø#¨^ô=ˆà×Ñœ F×$8Ñ$8×$=Ñ$=Ô>Ø×ÑÔ,Ô/?Ñ?Ø×-Ñ-×5Ñ5°mÑDõ	Fr(   c                 ó"  — | j                  t        j                  | j                  «      «      }t	        |d¬«      }| j                  t        |j                  j                  «       | j                  t        |j                  j                  «       y )NrA  r#  )rm   r  r  rq  r   rŠ   rp  r$  rl  rã  râ  r%  s      r&   Ú!test_new_client_from_config_proxyz6TestKubeConfigLoader.test_new_client_from_config_proxy#  sm   € Ø×,Ñ,Ü�N‰N˜4×0Ñ0Ó1ó3ˆä'Ø#Ð-DôFˆà×Ñœ F×$8Ñ$8×$=Ñ$=Ô>Ø×Ñœ¨×)=Ñ)=×)CÑ)CÕDr(   c                 óî   — t        | j                  d¬«      }| j                  t        |j                  j
                  «       | j                  t        t        z  |j                  j                  d   «       y )Nr&  )rn  rv   r  )	r   rq  rŠ   rp  r$  rl  ry  r™   r	  )r]   r&  s     r&   Ú test_new_client_from_config_dictz5TestKubeConfigLoader.test_new_client_from_config_dict+  s`   € Ü,Ø×-Ñ-°~ôGˆà×Ñœ F×$8Ñ$8×$=Ñ$=Ô>Ø×ÑÔ,Ô/?Ñ?Ø×-Ñ-×5Ñ5°mÑDõ	Fr(   c                 óÎ   — t        t        ¬«      }t        «       }| j                  j                  «       }|d= t	        |d¬«      j                  |«       | j                  ||«       y )Nrk  r;   r(  rm  )r  rp  rq  Úcopyr   rr  rŠ   )r]   rt  ru  Útest_kube_configs       r&   Útest_no_users_sectionz*TestKubeConfigLoader.test_no_users_section2  sX   € Ü¤9Ô-ˆÜ“ˆØ×0Ñ0×5Ñ5Ó7ÐØ˜WÐ%ÜØ(Ø ô	"ç".¡,¨vÔ"6Ø×Ñ˜ 6Õ*r(   c                 ó¨   — t        t        ¬«      }t        «       }t        | j                  d¬«      j	                  |«       | j                  ||«       y )Nrk  r6  rm  ro  rs  s      r&   Útest_non_existing_userz+TestKubeConfigLoader.test_non_existing_user<  sA   € Ü¤9Ô-ˆÜ“ˆÜØ×-Ñ-Ø.ô	0ç0<±¸VÔ0DØ×Ñ˜ 6Õ*r(   z.kubernetes.config.kube_config.ExecProvider.runc                 óÒ   — d}d|i|_         t        t        dt        |z  i¬«      }t        «       }t	        | j
                  d¬«      j                  |«       | j                  ||«       y )NÚdummyr  r  )rl  r	  r7  rm  )r¬  r  rp  ry  r   rq  rr  rŠ   )r]   r   r  rt  ru  s        r&   Útest_user_exec_authz(TestKubeConfigLoader.test_user_exec_authD  sk   € àˆà�Uð
ˆÔô ¤9Ø+Ô-@À5Ñ-Hð7Jô Kˆä“ˆÜØ×-Ñ-Ø+ô	-ç-9©\¸&Ô-AØ×Ñ˜ 6Õ*r(   c                 óä  — d}d}|t        t        «      dœ|t        t        «      dœg|_        t	        «       }| j                  |j                  «       t        | j                  d¬«      j                  |«       | j                  |j                  d   t        |z  «       | j                  |j                  «       |j                  |«       | j                  |j                  d   t        |z  «       y )NÚexpiredÚcurrent)r  ÚexpirationTimestampr7  rm  r  )r
   rœ  r   r£  r  r†  r  r   rq  rr  rŠ   r	  ry  r‡  )r]   r   Úexpired_tokenÚcurrent_tokenrˆ  s        r&   Útest_user_exec_auth_with_expiryz4TestKubeConfigLoader.test_user_exec_auth_with_expiryR  sã   € à!ˆØ!ˆð 'Ü'5Ô6JÓ'Kñð
 'Ü'5Ô6LÓ'Mñð	
ˆÔô !“lˆØ×Ñ˜+×:Ñ:Ô;äØ×-Ñ-Ø+ô	-ç-9©\¸+Ô-Fð 	×Ñ˜×,Ñ,¨]Ñ;Ü,¨}Ñ<ô	>ð 	×Ñ˜[×=Ñ=Ô>à×(Ñ(¨Ô5Ø×Ñ˜×,Ñ,¨]Ñ;Ü,¨}Ñ<õ	>r(   c                 óF  — t         t        dœ|_        t        t        | j                  t         «      | j                  t        «      | j                  t        «      d¬«      }t        «       }t        | j                  d¬«      j                  |«       | j                  ||«       y )N)ÚclientCertificateDataÚclientKeyDataT)rl  r  r  r  rÕ  r8  rm  )r×  rØ  r¬  r  rÖ  rm   rÙ  r   rq  rr  rŠ   )r]   r   rt  ru  s       r&   Ú test_user_exec_auth_certificatesz5TestKubeConfigLoader.test_user_exec_auth_certificatesr  s‰   € ô &6Ü,ñ
ˆÔô ÜØ×,Ñ,Ô-=Ó>Ø×+Ñ+¬OÓ<Ø×.Ñ.Ô/DÓEØôˆô “ˆÜØ×-Ñ-Ø7ô	9ç9E¹ÀfÔ9MØ×Ñ˜ 6Õ*r(   )Úautospecc                 ó®   ‡— i Šˆfd„}||_         d}t        | j                  d|¬«      j                  t	        «       «       | j                  |‰d   «       y )Nc                 ó$   •— | j                   ‰d<   y )NÚcwd)rC  )Úexec_providerÚcaptures    €r&   Úcapture_cwdz<TestKubeConfigLoader.test_user_exec_cwd.<locals>.capture_cwdˆ  s   ø€ Ø*×.Ñ.ˆG�EŠNr(   z/some/random/pathr7  rô  rC  )r£  r   rq  rr  r  rŠ   )r]   r   rF  rt  rE  s       @r&   Útest_user_exec_cwdz'TestKubeConfigLoader.test_user_exec_cwd„  sS   ø€ àˆô	/à&ˆÔà&ˆÜØ×-Ñ-Ø+Ø%ô	'÷ (4¡|´J³LÔ'AØ×Ñ˜ 7¨5¡>Õ2r(   c                 ól  — t        dddg«      }d} ||t        t        j                  j                  «       «      «      }t	        j
                  |¬«      t        _        t        dt        |z  i¬«      }t        «       }t        | j                  d¬	«      j                  |«       | j                  ||«       y )
NÚAr  r?   r3  r«  r  ©r	  r9  rm  )r   r   r“  r”  r   r¢  r   r  r  ry  r   rq  rr  rŠ   ©r]   rI  r  r¬  rt  ru  s         r&   Útest_user_cmd_pathz'TestKubeConfigLoader.test_user_cmd_path“  s›   € Ü�s˜W hÐ/Ó0ˆØˆÙ˜¤¬h×.?Ñ.?×.CÑ.CÓ.EÓ FÓGˆÜ#'§9¡9¸,Ô#GÔÔ ÜØ+Ô-@À5Ñ-Hð'Jô Kˆä“ˆÜØ×-Ñ-Ø/ô	1ç1=±¸fÔ1EØ×Ñ˜ 6Õ*r(   c                 ó,  ‡ ‡— t        dddg«      }d} ||t        t        j                  j                  «       «      «      }t	        j
                  |¬«      t        _        t        dt        |z  i¬«      }t        «       Š‰ j                  ˆˆ fd„d	«       y )
NrI  r  r?   r3  r«  r  rJ  c                  óP   •— t        ‰j                  d¬«      j                  ‰ «      S )Nr<  rm  ©r   rq  rr  ©ru  r]   s   €€r&   rí   z?TestKubeConfigLoader.test_user_cmd_path_empty.<locals>.<lambda>¨  ó&   ø€ Ô&6Ø×-Ñ-Ø4ô'6ç6B±lÀ6Ó6Jð r(   zNmissing access token cmd (cmd-path is an empty string in your kubeconfig file)©r   r   r“  r”  r   r¢  r   r  r  ry  rw   rK  s   `    @r&   Útest_user_cmd_path_emptyz-TestKubeConfigLoader.test_user_cmd_path_empty   s‰   ù€ Ü�s˜W hÐ/Ó0ˆØˆÙ˜¤¬h×.?Ñ.?×.CÑ.CÓ.EÓ FÓGˆÜ#'§9¡9¸,Ô#GÔÔ ÜØ+Ô-@À5Ñ-Hð'Jô Kˆä“ˆØ×Ñô KðDõ	Er(   c                 ó,  ‡ ‡— t        dddg«      }d} ||t        t        j                  j                  «       «      «      }t	        j
                  |¬«      t        _        t        dt        |z  i¬«      }t        «       Š‰ j                  ˆˆ fd„d	«       y )
NrI  r  r?   r3  r«  r  rJ  c                  óP   •— t        ‰j                  d¬«      j                  ‰ «      S )Nr>  rm  rO  rP  s   €€r&   rí   zDTestKubeConfigLoader.test_user_cmd_path_with_scope.<locals>.<lambda>¶  rQ  r(   zGscopes can only be used when kubectl is using a gcp service account keyrR  rK  s   `    @r&   Útest_user_cmd_path_with_scopez2TestKubeConfigLoader.test_user_cmd_path_with_scope®  s‡   ù€ Ü�s˜W hÐ/Ó0ˆØˆÙ˜¤¬h×.?Ñ.?×.CÑ.CÓ.EÓ FÓGˆÜ#'§9¡9¸,Ô#GÔÔ ÜØ+Ô-@À5Ñ-Hð'Jô Kˆä“ˆØ×Ñô Kð(õ	)r(   c                 óä   — t        t        t        t        z  ¬«      }| j	                  t        j                  | j                  «      «      }t        |«      }| j                  |j                  «       y )Nrx  )r  rp  ry  r™   rm   r  r  rq  r   r†  Ú_config_persisterr  s       r&   Ú5test__get_kube_config_loader_for_yaml_file_no_persistzJTestKubeConfigLoader.test__get_kube_config_loader_for_yaml_file_no_persist¼  sX   € Ü¤9Ü$7Ô:JÑ$JôLˆà×,Ñ,Ü�N‰N˜4×0Ñ0Ó1ó3ˆä6°{ÓCˆØ×Ñ˜&×2Ñ2Õ3r(   c                 óF  — t        t        t        t        z  ¬«      }| j	                  t        j                  | j                  «      «      }t        |d¬«      }| j                  t        |j                  «      «       | j                  |j                  j                  d«       y )Nrx  T)Úpersist_configÚsave_changes)r  rp  ry  r™   rm   r  r  rq  r   ræ   ÚcallablerX  rŠ   ry   r  s       r&   Ú2test__get_kube_config_loader_for_yaml_file_persistzGTestKubeConfigLoader.test__get_kube_config_loader_for_yaml_file_persistÄ  s}   € Ü¤9Ü$7Ô:JÑ$JôLˆà×,Ñ,Ü�N‰N˜4×0Ñ0Ó1ó3ˆä6°{ØFJôLˆà�‰œ ×!9Ñ!9Ó:Ô;Ø×Ñ˜×1Ñ1×:Ñ:¸NÕKr(   c                 óæ   — t        t        t        t        z  ¬«      }| j	                  t        j                  | j                  «      «      }t        |¬«      }| j                  |j                  «       y )Nrx  )r‚   )r  rp  ry  r™   rm   r  r  rq  r   r†  rX  r  s       r&   Ú,test__get_kube_config_loader_file_no_persistzATestKubeConfigLoader.test__get_kube_config_loader_file_no_persistÎ  sX   € Ü¤9Ü$7Ô:JÑ$JôLˆà×,Ñ,Ü�N‰N˜4×0Ñ0Ó1ó3ˆä(°+Ô>ˆØ×Ñ˜&×2Ñ2Õ3r(   c                 óF  — t        t        t        t        z  ¬«      }| j	                  t        j                  | j                  «      «      }t        |d¬«      }| j                  t        |j                  «      «       | j                  |j                  j                  d«       y )Nrx  T)r‚   r[  r\  )r  rp  ry  r™   rm   r  r  rq  r   ræ   r]  rX  rŠ   ry   r  s       r&   Ú)test__get_kube_config_loader_file_persistz>TestKubeConfigLoader.test__get_kube_config_loader_file_persistÖ  s|   € Ü¤9Ü$7Ô:JÑ$JôLˆà×,Ñ,Ü�N‰N˜4×0Ñ0Ó1ó3ˆä(°+Ø8<ô>ˆà�‰œ ×!9Ñ!9Ó:Ô;Ø×Ñ˜×1Ñ1×:Ñ:¸NÕKr(   c                 óž   — t        t        t        t        z  ¬«      }t	        | j
                  ¬«      }| j                  |j                  «       y )Nrx  rë  )r  rp  ry  r™   r   rq  r†  rX  rs  s      r&   Ú,test__get_kube_config_loader_dict_no_persistzATestKubeConfigLoader.test__get_kube_config_loader_dict_no_persistà  s?   € Ü¤9Ü$7Ô:JÑ$JôLˆä(Ø×-Ñ-ô/ˆà×Ñ˜&×2Ñ2Õ3r(   N)Iry   rz   r{   rp  rÖ  rÙ  ÚTEST_CERTIFICATE_AUTH_BASE64rß  rã  r™   ÚTEST_USERNAMEÚTEST_PASSWORDÚTEST_TOKEN_EXPIRY_PASTÚTEST_OIDC_LOGINÚTEST_OIDC_EXPIRED_LOGINÚTEST_OIDC_CAÚ&TEST_OIDC_CONTAINS_RESERVED_CHARACTERSÚ TEST_OIDC_INVALID_PADDING_LENGTHr×  rØ  ÚTEST_CLIENT_CERT_BASE64ÚTEST_CLIENT_KEY_BASE64rq  rv  rz  r~  r‰  r�  r˜  r¥  r¨  r   ÚpatchrÀ  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  r4  r;  r?  rG  rL  rS  rV  rY  r^  r`  rb  rd  r|   r(   r&   r!  r!  ¢  s€  „ à$ð "à˜yðñð 'à(Ø*ññð à(Ø!ññð &à(Ø)ññð .à(Ø1ññð à(Ø"ññð 'à(Ø*ññð 8à(Ø;ññð .à(Ø1ññð ;à(Ø>ññð 6à(Ø9ññð $à(Ø'ññð à$Ø!ññð .à4Ø!ññð &à,Ø)ññð )à/Ø,ññð ,à(Ø/ññð )à(Ø,ññð 5à$Ø8ññð -à3Ø-ññð 2à3Ø2ññð 2à3Ø2ññð *à0Ø!ññð 0à.Ø*ññðGj
ðZ "à˜iðñð &à+Ø-Bññð )à+Ø-8ññð à+à4Ø05ñ	ñð .à+Ø04ññð -Øñð
 *à+à4Ø05Ø';ññ	ð (à'Ø!/ññðg:
ðz 'à-Ø -Ø -ññð ð !&à*Ð,<ð#ñ&ð .Ø -Ø -ñ
ñð &ð !&à,<Ø&<ñ#ñ&ð .Ø -Ø -ññð$ .ð !&à,<Ø&<ñ#ñ&ð .Ø -Ø -ññð  à#Ø &à&¨ð#ñ&ðñ
ð 'à#Ø &à);Ø-:Ø(?Ø>JØ.Là Bñ#ñ&ðñð$ 8à#Ø &à);Ø-:Ø(?Ø9NØ.Là Bñ#ñ&ðñð$ .à#Ø &à);Ø-:Ø(?Ø.Là Bñ#ñ
&ðñð" ;à#Ø &à);Ø-:Ø(NØ.Là Bñ#ñ
&ðñð" 6à#Ø &à);Ø-:Ø(HØ.Là Bñ#ñ
&ðñð" $à -Ø -ññð &à-Ø*:Ø"1ññð )à!-Ø*7Ø".ññð à-Ø/FØ'=ññð )àØ&LØ#:Ú @ñðñ	ð 5àØ&LØ#EØ "ñðñ	ð *à#Ø %à&¨
ð#ñ&ðñ
ð /à#Ø %à&¨ð#ñ&ðñ
ð /à#Ø %à(-Ø&-ñ#ñ&ðñð{i
ñQRÐòh+ò+òOò=ò'ò'ò"'ò48ð €T‡Z�ZÐKÓLØ€T‡Z�ZÐBÓCñ8ó Dó Mð8ð. €T‡Z�ZÐKÓLØ€T‡Z�ZÐBÓCñ8ó Dó Mð8ð0 €T‡Z�ZÐKÓLØ€T‡Z�ZÐBÓCñ8ó Dó Mð8ò0
ò
ò+ò9òò+ò+ò+ò 
+ò5ò1ò1ò$ò6+ò+ò.+òò.%òò(òFòEòFò+ò+ð €T‡Z�ZÐ@ÓAñ+ó Bð+ð €T‡Z�ZÐ@ÓAñ>ó Bð>ð> €T‡Z�ZÐ@ÓAñ+ó Bð+ð" €T‡Z�ZÐ@È4ÔPñ3ó Qð3ò+òEò)ò4òLò4òLó4r(   r!  c                   ó   — e Zd Zd„ Zd„ Zy)Ú!TestKubernetesClientConfigurationc                 óJ   — | j                  t        t        «       d«      «       y )Nr  )ræ   Úhasattrr   r\   s    r&   Ú test_refresh_api_key_hook_existszBTestKubernetesClientConfiguration.test_refresh_api_key_hook_existsî  s   € Ø�‰œ¤£Ð1GÓHÕIr(   c                 ó    ‡ ‡‡‡— dŠdŠd}t        ‰|i‰di¬«      Šˆˆˆˆ fd„}|‰_        ‰ j                  d‰z   ‰j                  ‰«      «       y )NÚauthorizationÚexpected_tokenÚ	old_tokenÚBearer)r	  Úapi_key_prefixc                 óH   •— ‰j                  | ‰«       ‰| j                  ‰<   y r   )rŠ   r	  )Úclient_configr>   rx  Ú
identifierr]   s    €€€€r&   r  zkTestKubernetesClientConfiguration.test_get_api_key_calls_refresh_api_key_hook.<locals>.refresh_api_key_hookú  s#   ø€ Ø×Ñ˜]¨FÔ3Ø0>ˆM×!Ñ! *Ò-r(   zBearer )r   r  rŠ   Úget_api_key_with_prefix)r]   ry  r  r>   rx  r~  s   `  @@@r&   Ú+test_get_api_key_calls_refresh_api_key_hookzMTestKubernetesClientConfiguration.test_get_api_key_calls_refresh_api_key_hookñ  s_   û€ Ø$ˆ
Ø)ˆØˆ	ÜØ Ð+Ø&¨Ð1ô
ˆ÷
	?ð ';ˆÔ#à×Ñ˜ ^Ñ3Ø×7Ñ7¸
ÓCõ	Er(   N)ry   rz   r{   ru  r€  r|   r(   r&   rr  rr  è  s   „ òJóEr(   rr  c                   ó’  — 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œddidddd
œdœgdi dœgdddd d!idœidœgd"œddddidœgddeidœgd#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%  rC  rD  rf  rx   r2  r'  r&  )rC  rF  r]  rK  r,  z"skipped-part2-defined-this-contextÚskippedr=   r+  rO  rP  rQ  rR  rS  rM  rH  rg  r9  r:  r;  r(  ra  rb  )rh  ri  r;   Nri  )rg  rh  r;   c                 ó¤   — g }|D ]5  }|j                  | j                  t        j                  |«      «      «       Œ7 t	        j
                  |«      S r   )rg   rm   r  r  r   r÷  )r]   Ú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œd	d
dœddœg}t        |¬«      \  }}| j                  ||«       | j                  ||d   «       y )Nr#  r$  r"  ©rv   r5   r2  r'  r&  r,  r:  r;  r9  r  r   )rˆ  ÚTEST_KUBE_CONFIG_SET1r   rŠ   )r]   Úkubeconfigsrè  rh  r9   s        r&   r   z3TestKubeConfigMerger.test_list_kube_config_contextsÈ  sª   € Ø×/Ñ/°×0JÑ0JÓKˆà" IÐ.¸	ÑBØ$)°5Ñ9À5ÑIØ$-°~ÑFØ#ñ%à$-°~ÑFØ#ñ%à$8Ø!2ñ4à)ñ+ð	,Ðô $=Ø#ô$%Ñ ˆ�.ð 	×Ñ˜Ð#4Ô5Ø×Ñ˜Ð):¸1Ñ)=Õ>r(   c                 ó  — | j                  | j                  «      }t        |d¬«      }| j                  t        |j
                  j                  «       | j                  t        t        z  |j
                  j                  d   «       y r"  )
rˆ  r‹  r   rŠ   rp  r$  rl  ry  r™   r	  )r]   rŒ  r&  s      r&   r'  z0TestKubeConfigMerger.test_new_client_from_configÛ  so   € Ø×/Ñ/°×0JÑ0JÓKˆÜ'Ø#¨^ô=ˆà×Ñœ F×$8Ñ$8×$=Ñ$=Ô>Ø×ÑÔ,Ô/?Ñ?Ø×-Ñ-×5Ñ5°mÑDõ	Fr(   c                 óŒ  — | j                  | j                  «      }t        |¬«      }dddœddœg}t        |¬«      \  }}| j	                  ||«       | j	                  ||d   «       | j	                  t
        |j                  j                  «       | j	                  t        t        z  |j                  j                  d   «       y )Nr  r$  r&  r'  rŠ  r   r  )rˆ  ÚTEST_KUBE_CONFIG_SET2r   r   rŠ   rp  r$  rl  ry  r™   r	  )r]   rŒ  r&  rè  rh  r9   s         r&   Ú)test_merge_with_context_in_different_filez>TestKubeConfigMerger.test_merge_with_context_in_different_fileã  s¿   € Ø×/Ñ/°×0JÑ0JÓKˆÜ'°KÔ@ˆð %.°~ÑFØ#ñ%ð
Ðô $=Ø#ô$%Ñ ˆ�.à×Ñ˜Ð#4Ô5Ø×Ñ˜Ð):¸1Ñ)=Ô>Ø×Ñœ F×$8Ñ$8×$=Ñ$=Ô>Ø×ÑÔ,Ô/?Ñ?Ø×-Ñ-×5Ñ5°mÑDõ	Fr(   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 )Nr;   r,  r<   r=   r>   ztoken-changedrN  )rˆ  r‹  r   r>   rå   rA   r\  rŠ   )r]   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(   )ry   rz   r{   rp  rÖ  re  r™   rn  ro  rj  rk  rf  rg  r‹  r�  rˆ  r   r'  r�  r”  r|   r(   r&   r‚  r‚    s€  „ à$ð "à˜yðñð
ð "à˜iðñð
ð ñ%ð( ð à$Ø!ññð 'à(Ø*ññð
ð$ à+à4ññð	
ð à-Ø/FØ'=ññð	
ñ9&ðN %ð 'à(Ø*ññð àCØ%ññð
ð 
ð 'à#Ø &à);Ø-:Ø(?Ø>JØ.Là Bñ#ñ&ðñð$ 'à-Ø -Ø -ññð%
ñ)/ð` 	˜9ðð -à3Ø-ññð
ð -Øñð
ð *à#Ø %à&¨
ð#ñ&ðñ
ð
ñ#ð> %ð "à˜yðñð
ð "à˜iðñð
ð ñ%ðQ[Ðð| 	à!à˜iðñð
ð	ð *ð 'à(Ø*ññð
ñð 	à&à-Ø -Ø -ññð	
ðð)ÐòB9ò?ò&FòFó Fr(   r‚  Ú__main__)^r    r“  r  rº  r`   r   rø  re   ÚunittestÚcollectionsr   r   r  Úkubernetes.clientr   Úconfig_exceptionr   Údateutilr	   r
   r   Úkube_configr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ry  r0   ÚPAST_EXPIRY_TIMEDELTAÚFUTURE_EXPIRY_TIMEDELTAr’   r'   r-   r2   rE   rI   r‰   r˜   ÚTEST_FILENAMErˆ   r™   rª   r’  rp  rf  rg  rÌ  r”  r•  Ú	timedeltarœ  r   rh  rÖ  rÙ  re  rØ  ro  r×  rn  rß  rã  r§  ÚTEST_OIDC_INFOr÷  ÚTEST_OIDC_BASEri  ÚTEST_OIDC_EXPÚTEST_OIDC_EXP_BASErj  rl  rm  rk  ÚTestCaserY   r~   rÊ   r  r!  rr  r‚  ry   Úmainr|   r(   r&   ú<module>r¦     s@  ðó Û Û 	Û Û 	Ý Û Û Û Ý "å Û å +å -ß 8Ñ 8÷k÷ k÷ k÷ kñ kð "Ð à-Ð àÐ àÐ à4Ð ò?òJò/ò%òð €Ø€Ø€à€	Ù˜9Ó%Ð à'Ð Ù"Ð#4Ó5Ð à€	Ø€Ø€à'Ð Ø×(Ñ(×,Ñ,°Ð,ó /ß/6©w¸d¨wÓ/CÐFXÀh×FXÑFXÐavÔFwñxÐ à!×*Ñ*×.Ñ.°#Ð.ó 1ß18±À°Ó1EÐHZÈ×HZÑHZÐczÔH{ñ|Ð á0Ð1EÓFÐ à#€Ø#Ð Ù&Ð'<Ó=Ð Ø€Ù  Ó1Ð Ø Ð Ù!Ð"2Ó3Ð Ø&Ð Ø0€à#€Ø'€Ø—‘Ù Ó0Ù Ó/ðó €ð —(‘(ØÙÐ 7Ó8ðó €ð  Ñ/€Ø9€Ù0ØóØñÙ8¸ÓGñHÐ àŸ(™(ØÙÐ 0Ó1ð$ó Ð ð *-¯©Ù Ó0Ù Ó/×7Ñ7¸¸SÓAÙÐ 0Ó1ð3ó *Ð &ð
 $'§8¡8Ù Ó0ØÙÐ 0Ó1ð-ó $Ð  ñ Ð,Ó-€ô<�8×$Ñ$ô <ô,{M�\ô {Mô|I,�\ô I,÷X4$ñ 4$ônC4˜<ô C4ôL"E¨ô Eô6@F˜<ô @FðF ˆzÒØ€H‡M�M…Oð r(   