
    I                    p    d dl mZ d dl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 ddlmZ  G d	 d
      Zy)    )annotationsN)MaxRetryErrorNewConnectionError
ProxyError)ProxyManager)Retry)	parse_url   )find_unused_portc                  v    e Zd Zej                  j                  dddg      d
d       ZddZddZddZ	ddZ
y	)TestProxyManagerproxy_schemehttphttpsc                P   d}| d}t        |      5 }ddd}|j                  |      }||k(  sJ dddd	}|j                  ||      }||k(  sJ d
di}|j                         }|j                  ddi       d}	|j                  |	|      }||k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nz http://pypi.org/project/urllib3/z://something:1234z*/*zpypi.org)AcceptHostzapplication/jsonheaderztest.python.org)r   customr   r   r   zpypi.org:8080z%http://pypi.org:8080/project/urllib3/)r   _set_proxy_headerscopyupdate)
selfr   url	proxy_urlpdefault_headersheadersprovided_headersexpected_headersurl_with_ports
             =platform/gsutil/third_party/urllib3/test/test_proxymanager.pytest_proxy_headersz#TestProxyManager.test_proxy_headers   s    0#n$56	)$).
CO**3/Go--- -") 
 **30@AG.... !)*<=/446##V_$=>CM**=:JKG....1 %$$s   A?BB%c                ,   t        d      5 }|j                  J |j                  j                  dk(  sJ 	 d d d        t        d      5 }|j                  J |j                  j                  dk(  sJ 	 d d d        y # 1 sw Y   HxY w# 1 sw Y   y xY w)Nzhttp://somethingP   zhttps://somethingi  )r   proxyport)r   r   s     r"   test_default_portz"TestProxyManager.test_default_port,   s    ,-77&&&77<<2%%% . -.!77&&&77<<3&&& /. .- /.s   *A>
*B
>B
Bc                    t        j                  t              5  t        d       d d d        t        j                  t              5  t        d       d d d        y # 1 sw Y   7xY w# 1 sw Y   y xY w)Nzinvalid://host/p)pytestraisesAssertionErrorr   
ValueError)r   s    r"   test_invalid_schemez$TestProxyManager.test_invalid_scheme4   sI    ]]>*+, +]]:&+, '& +*&&s   AA(A%(A1c                   t        d      }t        d      }t        d      5 }|j                  |      sJ |j                  |      du sJ 	 d d d        t        d      5 }|j                  |      sJ |j                  |      du sJ 	 d d d        t        dd      5 }|j                  |      sJ |j                  |      sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   SxY w# 1 sw Y   y xY w)Nzhttp://example.comzhttps://example.comzhttp://proxy:8080Fzhttps://proxy:8080T)use_forwarding_for_https)r	   r   !_proxy_requires_url_absolute_form)r   http_url	https_urlr   s       r"   test_proxy_tunnelz"TestProxyManager.test_proxy_tunnel:   s    1234	-.!66x@@@66yAUJJJ / ./166x@@@66yAUJJJ 0 .NRS66x@@@66yAAA ON /. 0/ ONs#   )C)C'C'CC$'C0c                   t        d d      }t               }t        d|       5 }t        j                  t
              5 }|j                  dd|       d d d        t        j                  j                  t              sJ 	 d d d        t        d d      }t        d|       5 }t        j                  t              5 }|j                  dd|       d d d        j                  j                  J t        |j                  j                  t
              sJ t        |j                  j                  j                  t              sJ 	 d d d        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   y xY w)NF)totalconnectzhttp://localhost:HEADzhttp://localhost/)r   retries   )r   r   r   r*   r+   r   urlopen
isinstancevalueoriginal_errorr   r   reason)r   retryr'   r   eiei1s         r"   test_proxy_connect_retryz)TestProxyManager.test_proxy_connect_retryI   s1   D%0!-dV45z*b		&&95	I +bhh557IJJJ 6
 D!,-dV45}-		&&95	I .99##///cii..
;;;cii..==?QRRR 65 +* 65 .- 65sH   E# E.E#'E;E/A6E;E 	E##E,/E8	4E;;FN)r   strreturnNone)rE   rF   )__name__
__module____qualname__r*   markparametrizer#   r(   r.   r4   rC        r"   r   r      sA    [[^fg->?/ @/:'-BSrM   r   )
__future__r   r*   urllib3.exceptionsr   r   r   urllib3.poolmanagerr   urllib3.util.retryr   urllib3.util.urlr	   port_helpersr   r   rL   rM   r"   <module>rT      s+    "  L L , $ & *JS JSrM   