
                         Z    d dl mZ d dlZd dlZd dlZd dlmZ d dlm	Z	 dZ
 G d de      Zy)    N)
WSGIServer)
exceptionsztest.invalidc                   b    e Zd Z ej                  d      d        Zd Zd Zd Zd Z	d Z
d	 Zy
)RequestResponseTestsmodule)scopec              #   J  K   t        j                  t              }d|_        |j	                  d      d        }|j	                  d      d        }|j	                  d      d        }t        |j                        }|j                          | |j                          y	w)
zProvides a test HTTP server.

        The test server is automatically created before
        a test and destroyed at the end. The server is serving a test
        application that can be used to verify requests.
        T/basicc                      t         j                  j                  j                  dd      } d| i}dt        j
                  |fS )Nx-test-headervaluezX-Test-HeaderzBasic Content)flaskrequestheadersgethttp_clientOK)header_valuer   s     Tplatform/gsutil/third_party/google-auth-library-python/tests/transport/compliance.pyindexz*RequestResponseTests.server.<locals>.index*   s9     ==0044_gNL&5G"KNNG;;    /server_errorc                  &    dt         j                  fS )NError)r   INTERNAL_SERVER_ERROR r   r   server_errorz1RequestResponseTests.server.<locals>.server_error0   s    K====r   /waitc                  .    t        j                  d       y)N   Waited)timesleepr   r   r   waitz)RequestResponseTests.server.<locals>.wait4   s    JJqMr   )applicationN)	r   Flask__name__debugrouter   wsgi_appstartstop)selfappr   r   r$   servers         r   r/   zRequestResponseTests.server   s      kk(#	 
8		< 
	<
 
?	#	> 
$	> 
7		 
	 5s   B!B#c                     | j                         } ||j                  dz   d      }|j                  t        j                  k(  sJ |j
                  d   dk(  sJ |j                  dk(  sJ y )Nr
   GETurlmethodr   r      Basic Contentmake_requestr3   statusr   r   r   datar-   r/   r   responses       r   test_request_basicz'RequestResponseTests.test_request_basic@   sg    ##%vzzH4UC+..0000G;;;}} 0000r   c                     | j                         } ||j                  dz   dd      }|j                  t        j                  k(  sJ |j
                  d   dk(  sJ |j                  dk(  sJ y )Nr
   r1      r3   r4   timeoutr   r   r5   r6   r:   s       r   !test_request_with_timeout_successz6RequestResponseTests.test_request_with_timeout_successH   si    ##%vzzH4UAN+..0000G;;;}} 0000r   c                     | j                         }t        j                  t        j                        5   ||j
                  dz   dd       d d d        y # 1 sw Y   y xY w)Nr   r1      r?   )r7   pytestraisesr   TransportErrorr3   )r-   r/   r   s      r   !test_request_with_timeout_failurez6RequestResponseTests.test_request_with_timeout_failureP   sC    ##%]]:445

W,UAF 655s   AAc                     | j                         } ||j                  dz   dddi      }|j                  t        j                  k(  sJ |j
                  d   dk(  sJ |j                  dk(  sJ y )Nr
   r1   r   zhello world)r3   r4   r   r5   r6   r:   s       r   test_request_headersz)RequestResponseTests.test_request_headersV   su    ##%

X%$m4
 +..0000MAAA}} 0000r   c                     | j                         } ||j                  dz   d      }|j                  t        j                  k(  sJ |j
                  dk(  sJ y )Nr   r1   r2   s   Error)r7   r3   r8   r   r   r9   r:   s       r   test_request_errorz'RequestResponseTests.test_request_errorb   sO    ##%vzzO;EJ+"C"CCCC}}(((r   c                     | j                         }t        j                  t        j                        5   |dj                  t              d       d d d        y # 1 sw Y   y xY w)Nz	http://{}r1   r2   )r7   rD   rE   r   rF   formatNXDOMAIN)r-   r   s     r   test_connection_errorz*RequestResponseTests.test_connection_errori   sC    ##%]]:445**84UC 655s   AA$N)r'   
__module____qualname__rD   fixturer/   r<   rA   rG   rI   rK   rO   r   r   r   r   r      s@    V^^(#  $ D11G
1)Dr   r   )http.clientclientr   r"   r   rD   pytest_localserver.httpr   google.authr   rN   objectr   r   r   r   <module>rX      s0    "    . " PD6 PDr   