
    =Ki	                        S SK r SSKJr  SSKJr  S SKJr  S SKrS SKrS SKrS SK	r	S SK
JrJrJr   S SKr\R                  " 5         \	R"                  " SS9S	 5       rSS
 jr " S S\R(                  5      r " S S\ R,                  5      r\	R"                  " SS9S 5       r\	R"                  " SS9S 5       rS rS rS r\S:X  a  \ R<                  " 5         gg! \ a     Nf = f)    N   )get_websocket_url)websocket_proxycare)Configuration)streamclientconfigT)autousec                 j    SnU S-  nUR                  U5        UR                  S[        U5      5        g )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       b/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/kubernetes/stream/ws_client_test.pydummy_kubeconfigr      s7    G" ,&H |S]3    c                 $    U R                  X5      $ N)get)dict_objkeydefaults      r   dictvalr   8   s    <<%%r   c                   6   ^  \ rS rSrSrSU 4S jjrS rSrU =r$ )
DummyProxy<   zo
A minimal HTTP proxy that flags any CONNECT request and returns 200 OK.
Listens on 127.0.0.1:8888 by default.
c                   > [         TU ]  SS9  Xl        X l        SU l        [
        R
                  " [
        R                  [
        R                  5      U l        U R                  R                  [
        R                  [
        R                  S5        U R                  R                  U R                  S45        U R                  R                  S5        g )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%   DummyProxy.__init__A   s    %		 %"MM&..&:L:LM$$V%6%68K8KQO		1~.  #r   c                 "   U R                   R                  5       u  p UR                  S5      R                  SSS9nUR	                  S5      (       a  SU l        UR                  S5        UR                  5         g ! UR                  5         f = f)Ni   zutf-8ignore)errorszCONNECT Ts'   HTTP/1.1 200 Connection established

)r,   acceptrecvdecode
startswithr(   sendallclose)r2   conn_datas       r   runDummyProxy.runK   sq    ##**,	99T?))'()CDz**(,%KLJJLDJJLs   AA< <B)r,   r&   r'   r(   )	127.0.0.1"  )	__name__
__module____qualname____firstlineno____doc__r%   rA   __static_attributes____classcell__)r3   s   @r   r    r    <   s    $ r   r    c                        \ rS rSrS rS rSrg)WSClientTestU   c                 P    S H   u  pU R                  [        U5      U5        M"     g )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   )r2   urlws_urls      r   test_websocket_client"WSClientTest.test_websocket_clientW   s(    	KC .s3V<	r   c                    SSSSSSSSS	S
S/4SSSSS	S
S/4SSSSS	S
/ SQ44 H  u  pp4pVn[        5       nU(       a  Xl        U(       a"  [        R                  R	                  US9Ul        Ub  X8l        [        0 US S 5      n	[        U	S5      U:X  d   e[        U	S5      U:X  d   e[        U	S5      U:X  d   e[        U	S5      U:X  a  M   e   g )N)NNNNNNN)http://proxy.example.com:8080/NNproxy.example.com  NN)rV   	user:passNrW   rX   userpassN)rV   rY    rW   rX   rZ   NrV   rY   *rW   rX   rZ   .example.comzlocalhost,.local,.example.com)	localhostz.localr_   )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   )
r2   rf   idpassrk   expect_hostexpect_portexpect_authexpect_noproxycfgconnect_optss
             r   test_websocket_proxycare%WSClientTest.test_websocket_proxycared   sE    J J T T2Kbuw{  ~M  PS  OT  U2Kbuw{  ~M  P^  O_  `2KA`cvx|  N  Pu  v_ZE8+N  /C!	$+LL$=$=v$=$V!#' /r3dCL<):;{JJJ<):;{JJJ<):;{JJJ<9^KKK/_r    N)rE   rF   rG   rH   rS   rs   rJ   ru   r   r   rM   rM   U   s    =Lr   rM   module)scopec               #   F   #    [        SS9n U R                  5         U v   g 7f)NrD   )r'   )r    start)rf   s    r   dummy_proxyrz   ~   s      D!E	KKM
Ks   !c                 6    S H  nU R                  USS9  M     g )N)
HTTP_PROXY
http_proxyHTTPS_PROXYhttps_proxyNO_PROXYrk   F)raising)delenv)r   vars     r   clear_proxy_envr      s     a3. br   c                      [         R                  R                  5       n [        R                  " S5      U l        [        R                  " SS5      U l        [         R                  R                  U 5        g )Nr~   r   r]   )r   r   get_default_copyosgetenvrf   rk   set_default)rq   s    r   apply_proxy_to_confr      sL    



/
/
1C		-(CI99Z,CL
$$S)r   c                    UR                  SS5        UR                  [        R                  SS 5        [        R
                  " [        R                  S   S9  [        5         UR                  SS5        [        R
                  " [        R                  S   S9  [        5         [        R                  " 5       nUR                  SS9  U R                  (       a   S	5       eg )
Nr~   http://127.0.0.1:8888list_namespacec                     g r   ru   )r2   _args_kwargss      r   <lambda>,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(   )rz   r   v1s      r   test_rest_call_ignores_envr      s    }&=>((*:<`a


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

<(@A				Bu-++R-RR++r   c                 ^   UR                  SS5        [        R                  " [        R                  S   S9  [        5         [        0 [        R                  R                  5       S S 5      nUR                  S5      S:X  d   eUR                  S5      S:X  d   eUR                  S	5      b   eg )
Nr~   r   r   r   rb   rC   rc   rD   re   )r   r	   r   r   r   r   r   r   r   r   r   )rz   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	   rg   disable_warningsImportErrorfixturer   r   Threadr    TestCaserM   rz   r   r   r   r   rE   mainru   r   r   <module>r      s     ( * 9 	    - -	 4 40&!! 2'L8$$ 'LR h   / /*S 
- zMMO a  		s   C C#"C#