
    ci	                        d dl Z ddlmZ ddlmZ d dlmZ d dlZd dlZd dlZd dl	Z	d dl
mZmZmZ 	 d dlZ ej                           e	j"                  d      d	        Zdd
Z G d dej(                        Z G d de j,                        Z e	j"                  d      d        Z e	j"                  d      d        Zd Zd Zd Zedk(  r e j<                          yy# e$ r Y w xY w)    N   )get_websocket_url)websocket_proxycare)Configuration)streamclientconfigT)autousec                 j    d}| dz  }|j                  |       |j                  dt        |             y )Nak  
        apiVersion: v1
        kind: Config
        clusters:
        - name: default
          cluster:
            server: http://127.0.0.1:8888
        contexts:
        - name: default
          context:
            cluster: default
            user: default
        users:
        - name: default
          user: {}
        current-context: default
        
kubeconfig
KUBECONFIG)
write_textsetenvstr)tmp_pathmonkeypatchcontentcfg_files       j/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/kubernetes/stream/ws_client_test.pydummy_kubeconfigr      s7    G" ,&H |S]3    c                 &    | j                  ||      S N)get)dict_objkeydefaults      r   dictvalr   8   s    <<W%%r   c                   *     e Zd ZdZd fd	Zd Z xZS )
DummyProxyz{
    A minimal HTTP proxy that flags any CONNECT request and returns 200 OK.
    Listens on 127.0.0.1:8888 by default.
    c                    t         |   d       || _        || _        d| _        t        j
                  t
        j                  t
        j                        | _        | j                  j                  t
        j                  t
        j                  d       | j                  j                  | j                  df       | j                  j                  d       y )NT)daemonFr   r   )super__init__hostportreceived_connectsocketAF_INETSOCK_STREAM_server_sock
setsockopt
SOL_SOCKETSO_REUSEADDRbindlisten)selfr%   r&   	__class__s      r   r$   zDummyProxy.__init__A   s    %		 %"MM&..&:L:LM$$V%6%68K8KQO		1~.  #r   c                     | j                   j                         \  }}	 |j                  d      j                  dd      }|j	                  d      rd| _        |j                  d       |j                          y # |j                          w xY w)Ni   zutf-8ignore)errorszCONNECT Ts'   HTTP/1.1 200 Connection established

)r+   acceptrecvdecode
startswithr'   sendallclose)r1   conn_datas       r   runzDummyProxy.runK   sp    ##**,a	99T?))'()CDz*(,%KLJJLDJJLs   AA; ;B)	127.0.0.1"  )__name__
__module____qualname____doc__r$   r?   __classcell__)r2   s   @r   r    r    <   s    $r   r    c                       e Zd Zd Zd Zy)WSClientTestc                 N    dD ]   \  }}| j                  t        |      |       " y )N))zhttp://localhost/apizws://localhost/api)zhttps://localhost/apizwss://localhost/api)zhttps://domain.com/apizwss://domain.com/api)zhttps://api.domain.com/apizwss://api.domain.com/api)zhttp://api.domain.comzws://api.domain.com)zhttps://api.domain.comzwss://api.domain.com)zhttp://api.domain.com/zws://api.domain.com/)zhttps://api.domain.com/zwss://api.domain.com/)assertEqualr   )r1   urlws_urls      r   test_websocket_clientz"WSClientTest.test_websocket_clientW   s/    	 
	=KC .s3V<
	=r   c                    ddddddddd	d
dgfddddd	d
dgfddddd	d
g dffD ]  \  }}}}}}}t               }|r||_        |r%t        j                  j	                  |      |_        |||_        t        i |d d       }	t        |	d      |k(  sJ t        |	d      |k(  sJ t        |	d      |k(  sJ t        |	d      |k(  rJ  y )N)NNNNNNN)http://proxy.example.com:8080/NNproxy.example.com  NN)rO   	user:passNrP   rQ   userpassN)rO   rR    rP   rQ   rS   NrO   rR   *rP   rQ   rS   .example.comzlocalhost,.local,.example.com)	localhostz.localrX   )proxy_basic_authhttp_proxy_hosthttp_proxy_porthttp_proxy_authhttp_no_proxy)	r   proxyurllib3utilmake_headersproxy_headersno_proxyr   r   )
r1   r_   idpassrd   expect_hostexpect_portexpect_authexpect_noproxycfgconnect_optss
             r   test_websocket_proxycarez%WSClientTest.test_websocket_proxycared   sU    J J T T2Kbuw{  ~M  PS  OT  U2Kbuw{  ~M  P^  O_  `2KA`cvx|  N  Pu  v_ 	LZE68[+{N  /C!	$+LL$=$=v$=$V!#' /r3dCL<):;{JJJ<):;{JJJ<):;{JJJ<9^KKK/	Lr   N)rB   rC   rD   rM   rl    r   r   rH   rH   U   s    =Lr   rH   module)scopec               #   L   K   t        d      } | j                          |  y w)NrA   )r&   )r    start)r_   s    r   dummy_proxyrr   ~   s       D!E	KKM
Ks   "$c                 8    dD ]  }| j                  |d        y )N)
HTTP_PROXY
http_proxyHTTPS_PROXYhttps_proxyNO_PROXYrd   F)raising)delenv)r   vars     r   clear_proxy_envr|      s$    a /3./r   c                      t         j                  j                         } t        j                  d      | _        t        j                  dd      | _        t         j                  j                  |        y )Nrv   rx   rV   )r   r   get_default_copyosgetenvr_   rd   set_default)rj   s    r   apply_proxy_to_confr      sL    



/
/
1C		-(CI99Z,CL
$$S)r   c                    |j                  dd       |j                  t        j                  dd        t	        j
                  t        j                  d          t                |j                  dd       t	        j
                  t        j                  d          t                t        j                         }|j                  d       | j                  rJ d	       y )
Nrv   http://127.0.0.1:8888list_namespacec                      y r   rm   )r1   _args_kwargss      r   <lambda>z,test_rest_call_ignores_env.<locals>.<lambda>   s    r   r   config_fileF)_preload_contentz#REST path should ignore HTTPS_PROXY)r   setattrr   	CoreV1Apir	   load_kube_configr   environr   r   r'   )rr   r   v1s      r   test_rest_call_ignores_envr      s    }&=>((*:<`a


<(@A}&=>


<(@A				Bu-++R-RR++r   c                 \   |j                  dd       t        j                  t        j                  d          t                t        i t        j                  j                         d d       }|j                  d      dk(  sJ |j                  d      dk(  sJ |j                  d	      J y )
Nrv   r   r   r   r[   r@   r\   rA   r^   )r   r	   r   r   r   r   r   r   r   r~   r   )rr   r   optss      r   test_websocket_call_honors_envr      s    }&=>


<(@Ar6#7#7#H#H#JDRVWD88%&+55588%&$...88O$,,,r   __main__r   )unittest	ws_clientr   r   kubernetes.client.configurationr   r   r(   	threadingpytest
kubernetesr   r   r	   r`   disable_warningsImportErrorfixturer   r   Threadr    TestCaserH   rr   r|   r   r   r   rB   mainrm   r   r   <module>r      s    ( * 9 	    - -	G 4 40&!! 2'L8$$ 'LR h   / /*S 
- zHMMO a  		s   C! !C)(C)