
    [j                     v    d dl Z d dlZd dlmZ d dlmZmZmZ ddlm	Z	 ddl
mZ ddlmZ  G d d	e          ZdS )
    N)IsolatedAsyncioTestCase)ANY	AsyncMockpatch   )ConfigException)ExecProvider)
ConfigNodec                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )ExecProviderTestc                 x   t          ddg ddd d          | _        d| _        t          d          }|                                | _        | j        j        | _        t          | j                  | j        j	        _
        t          d	          | j        j        _
        t          d
          | j        _        d S )Ntestaws-iam-authenticatortoken-idummy$client.authentication.k8s.io/v1beta1)commandargs
apiVersionenvz
        {
            "apiVersion": "client.authentication.k8s.io/v1beta1",
            "kind": "ExecCredential",
            "status": {
                "token": "dummy"
            }
        }
        zFkubernetes_asyncio.config.exec_provider.asyncio.create_subprocess_exec)return_value r   )r
   input_ok	output_okr   start	exec_mockr   process_mockr   stdoutreadstderrwait)selfprocess_patchs     i/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/kubernetes_asyncio/config/exec_provider_test.pysetUpzExecProviderTest.setUp   s    "6.,,,@	,
 ,
   fgg&,,.. N7(1t~(N(N(N %(1r(B(B(B %!*!:!:!:    c                 ,    t          j                     d S )N)r   stopall)r$   s    r&   tearDownzExecProviderTest.tearDown3   s    r(   c                     i ddiddig}|D ]i}|                      t                    5 }t          |           d d d            n# 1 swxY w Y   |                     d|j        j        d                    jd S )Nr   r   r   z$exec: malformed request. missing keyr   )assertRaisesr   r	   assertIn	exceptionr   )r$   exec_configsexec_configcontexts       r&   test_missing_input_keysz(ExecProviderTest.test_missing_input_keys6   s    YOlB-?@' 	5 	5K""?33 *w[)))* * * * * * * * * * * * * * *MM@!+035 5 5 5	5 	5s   AA	A	c                   K   d| j         j        j        _        d| j         j        _        |                     t          d          5  t          | j                  }|	                                 d {V  d d d            d S # 1 swxY w Y   d S )Nr   r   zexec: process returned 1)
r   r    r!   r   r#   assertRaisesRegexr   r	   r   runr$   eps     r&   test_error_code_returnedz)ExecProviderTest.test_error_code_returned>   s      57 %2./+##O5OPP 	 	dm,,B&&((NNNNNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   /BBBc                    K   d| j         j        j        _        |                     t
          d          5  t          | j                  }|                                 d {V  d d d            d S # 1 swxY w Y   d S )Nr   z%exec: failed to decode process output	r   r    r!   r   r5   r   r	   r   r6   r7   s     r&   test_nonjson_output_returnedz-ExecProviderTest.test_nonjson_output_returnedE   s      57 %2##O5\]] 	 	dm,,B&&((NNNNNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   /A00A47A4c                 
  K   g d}|D ]y}|| j         j        j        _        |                     t
          d          5  t          | j                  }|                                 d {V  d d d            n# 1 swxY w Y   zd S )N)z
            {
                "kind": "ExecCredential",
                "status": {
                    "token": "dummy"
                }
            }
            z
            {
                "apiVersion": "client.authentication.k8s.io/v1beta1",
                "status": {
                    "token": "dummy"
                }
            }
            z
            {
                "apiVersion": "client.authentication.k8s.io/v1beta1",
                "kind": "ExecCredential"
            }
            z%exec: malformed response. missing keyr;   )r$   outputsoutputr8   s       r&   test_missing_output_keysz)ExecProviderTest.test_missing_output_keysK   s      
 
 
,  	 	F9?D$)6''9`aa  !$-00ffhh              	 	s   /A77A;	>A;	c                 .  K   d}d|z  }|| j         j        j        _        |                     t
          d                    |                    5  t          | j                  }|	                                 d {V  d d d            d S # 1 swxY w Y   d S )Nzclient.authentication.k8s.io/v1z
        {
            "apiVersion": "%s",
            "kind": "ExecCredential",
            "status": {
                "token": "dummy"
            }
        }
        z*exec: plugin api version {} does not match)
r   r    r!   r   r5   r   formatr	   r   r6   )r$   wrong_api_versionr?   r8   s       r&   test_mismatched_api_versionz,ExecProviderTest.test_mismatched_api_versionh   s      =    6< %2##<CCDUVVX X 	 	 dm,,B&&((NNNNNNN		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   /B

BBc           
        K   t          | j                  }|                                 d {V }|                     t	          |t
                               |                     d|v            | j                            ddddt          dd d           | j	        j
        j                                         | j	        j        j                                         | j	        j                                         d S )Nr   r   r   r   r   r"   stdinr    )r	   r   r6   
assertTrue
isinstancedictr   assert_called_once_withr   r   r    r!   assert_awaited_oncer"   r#   )r$   r8   results      r&   
test_ok_01zExecProviderTest.test_ok_01z   s      $-((vvxx
64001116)***../FQUW^36rVX 	/ 	Z 	Z 	Z %99;;; %99;;;2244444r(   c                    K   t          dddg dd          }t          |          }|                                 d {V }|                     t	          |t
                               |                     d|v            | j                            ddddd	d
t          dd d
  
         | j	        j
        j                                         | j	        j        j                                         | j	        j                                         d S )Nr   r   r   )r   r   r   --mock90)r   r   r   r   r   r   rQ   rR   rF   rG   )r
   r	   r6   rI   rJ   rK   r   rL   r   r   r    r!   rM   r"   r#   )r$   r   r8   rN   s       r&   test_ok_with_argsz"ExecProviderTest.test_ok_with_args   s     f.@<<<'
 '
  
 (##vvxx
64001116)***../FQUW^`hjn36rVX 	/ 	Z 	Z 	Z %99;;; %99;;;2244444r(   c           
      :  K   t          dddg ddddgd          }t          |          }|                                 d {V }|                     t	          |t
                               |                     d	|v            | j        j        d
         d         d         }|                     |d         d           |                     t          j
        |d                   dddt          j                                        id           | j                            dd	ddt          dd d           | j        j        j                                         | j        j        j                                         | j        j                                         d S )Nr   r   r   r   EXEC_PROVIDER_ENV_NAMEEXEC_PROVIDER_ENV_VALUE)namevalue)r   r   r   r   r   r   r   r   KUBERNETES_EXEC_INFOExecCredentialinteractive)r   kindspecr   r   rF   rG   )r
   r	   r6   rI   rJ   rK   r   await_args_listassertEqualjsonloadssysr    isattyrL   r   r   r!   rM   r"   r#   )r$   r   r8   rN   env_useds        r&   test_ok_with_envz!ExecProviderTest.test_ok_with_env   s     f.@,,,579 9 :	'; '; < < (##vvxx
64001116)***>1!4Q7>":;=VWWWH-C$DEEHnP`Q^`c`j`q`q`s`sPtHv Hv 	w 	w 	w 	../FQUW^36rVX 	/ 	Z 	Z 	Z %99;;; %99;;;2244444r(   N)__name__
__module____qualname__r'   r+   r3   r9   r<   r@   rD   rO   rS   re    r(   r&   r   r      s        ; ; ;0  5 5 5      :  $	5 	5 	55 5 5 5 5 5 5 5r(   r   )r`   rb   unittestr   unittest.mockr   r   r   config_exceptionr   exec_providerr	   kube_configr
   r   ri   r(   r&   <module>ro      s     



 , , , , , , / / / / / / / / / / - - - - - - ' ' ' ' ' ' # # # # # #T5 T5 T5 T5 T5. T5 T5 T5 T5 T5r(   