
    I                    p    S SK Jr  S SKrS SKJrJrJr  S SKJr  S SK	J
r
  S SKJr  SSKJr   " S	 S
5      rg)    )annotationsN)MaxRetryErrorNewConnectionError
ProxyError)ProxyManager)Retry)	parse_url   )find_unused_portc                      \ rS rSr\R
                  R                  SSS/5      SS j5       rSS jrSS jr	SS jr
SS	 jrS
rg)TestProxyManager   proxy_schemehttphttpsc                V   SnU S3n[        U5       nSSS.nUR                  U5      nXe:X  d   eSSSS	.nUR                  X'5      nXg:X  d   eS
S0nUR                  5       nUR                  SS05        Sn	UR                  X5      nXh:X  d   e S S S 5        g ! , (       d  f       g = f)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_headers#TestProxyManager.test_proxy_headers   s    0#n$56	)$).
CO**3/G--- -") 
 **3AG... !)*<=/446##V_$=>CM**=KG...1 %$$s   A=B
B(c                H   [        S5       nUR                  c   eUR                  R                  S:X  d   e S S S 5        [        S5       nUR                  c   eUR                  R                  S:X  d   e S S S 5        g ! , (       d  f       NO= f! , (       d  f       g = f)Nzhttp://somethingP   zhttps://somethingi  )r   proxyport)r   r   s     r#   test_default_port"TestProxyManager.test_default_port,   s    ,-77&&&77<<2%%% . -.!77&&&77<<3&&& /. .- /.s   ,B,B
B
B!c                    [         R                  " [        5         [        S5        S S S 5        [         R                  " [        5         [        S5        S S S 5        g ! , (       d  f       N== f! , (       d  f       g = f)Nzinvalid://host/p)pytestraisesAssertionErrorr   
ValueError)r   s    r#   test_invalid_scheme$TestProxyManager.test_invalid_scheme4   sI    ]]>*+, +]]:&+, '& +*&&s   A	A/
A,/
A=c                *   [        S5      n[        S5      n[        S5       nUR                  U5      (       d   eUR                  U5      SL d   e S S S 5        [        S5       nUR                  U5      (       d   eUR                  U5      SL d   e S S S 5        [        SSS9 nUR                  U5      (       d   eUR                  U5      (       d   e S S S 5        g ! , (       d  f       N= f! , (       d  f       Nd= f! , (       d  f       g = f)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_tunnel"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A ON /. 0/ ONs#   /C"%/C3'1D"
C03
D
Dc                B   [        S SS9n[        5       n[        SU 35       n[        R                  " [
        5       nUR                  SSUS9  S S S 5        [        WR                  R                  [        5      (       d   e S S S 5        [        S SS9n[        SU 35       n[        R                  " [        5       nUR                  SSUS9  S S S 5        WR                  R                  c   e[        UR                  R                  [
        5      (       d   e[        UR                  R                  R                  [        5      (       d   e S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)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_retry)TestProxyManager.test_proxy_connect_retryI   s:   D%0!-dV45z*b		&&95	I +bhh557IJJJJ 6
 D!,-dV45}-		&&95	I .99##///cii..
;;;;cii..==?QRRRR 65 +* 65 .- 65sG   E.E3E.$F?E?BF
E+	&E..
E<?
F		F
F N)r   strreturnNone)rL   rM   )__name__
__module____qualname____firstlineno__r-   markparametrizer$   r*   r1   r8   rH   __static_attributes__rJ       r#   r   r      sA    [[^fg->?/ @/:'-BSrU   r   )
__future__r   r-   urllib3.exceptionsr   r   r   urllib3.poolmanagerr   urllib3.util.retryr   urllib3.util.urlr	   port_helpersr   r   rJ   rU   r#   <module>r\      s+    "  L L , $ & *JS JSrU   