a
    !fL                     @   s   d dl Z G dd de jZG dd de jZG dd de jZG dd	 d	e jZG d
d de jZG dd de jZG dd de jZG dd de jZ	G dd de jZ
G dd deZG dd deZG dd deZG dd deZdS )    Nc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )Test__httplib2_debug_levelc                 C   s   ddl m} |S )Nr   )_httplib2_debug_level)gcloud.streaming.http_wrapperr   )selfr    r   c/var/www/html/python-backend/venv/lib/python3.9/site-packages/gcloud/streaming/test_http_wrapper.py_getTargetClass   s    z*Test__httplib2_debug_level._getTargetClassc                 O   s   |   |i |S Nr   r   argskwr   r   r   _makeOne
   s    z#Test__httplib2_debug_level._makeOnec              	   C   s   ddl m} ddlm} t }d}tdd}|||dJ | || | |jd W d    n1 sj0    Y  W d    n1 s0    Y  d S )Nr   _Monkeyhttp_wrapper   
debuglevelhttplib2)	gcloud._testingr   gcloud.streamingr   _Request_Dummyr   assertEqualr   r   r   MUTrequestLEVEL	_httplib2r   r   r   test_wo_loggable_body_wo_http   s    
z8Test__httplib2_debug_level.test_wo_loggable_body_wo_httpc              	   C   s   ddl m} ddlm} tt d}d}tdd}|||dJ | || | |j	| W d    n1 sp0    Y  W d    n1 s0    Y  | |j	d d S )Nr   r   r   loggable_bodyr   r   r   )
r   r   r   r   r   objectr   r   r   r   r   r   r   r   test_w_loggable_body_wo_http   s    
Jz7Test__httplib2_debug_level.test_w_loggable_body_wo_httpc              	   C   s  ddl m} ddlm} G dd dt}tt d}d}tdd}| }| }||d	}	t|	d
}
|||dh | |||
: | |j	| | |j	| | |j	d W d    n1 s0    Y  W d    n1 s0    Y  | |j	d | |j	d | |j	d d S )Nr   r   r   c                   @   s   e Zd ZdZdd ZdS )zKTest__httplib2_debug_level.test_w_loggable_body_w_http.<locals>._Connectionr   c                 S   s
   || _ d S r	   r   )r   valuer   r   r   set_debuglevel+   s    zZTest__httplib2_debug_level.test_w_loggable_body_w_http.<locals>._Connection.set_debuglevelN)__name__
__module____qualname__r   r(   r   r   r   r   _Connection(   s   r,   r#   r   r   )z	update:meskip_meconnectionsr   )
r   r   r   r   r%   r   r   r   r   r   )r   r   r   r,   r   r    r!   Z	update_mer-   r/   _httpr   r   r   test_w_loggable_body_w_http$   s$    


Jz6Test__httplib2_debug_level.test_w_loggable_body_w_httpN)r)   r*   r+   r   r   r"   r&   r1   r   r   r   r   r      s
   r   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )Test_Requestc                 C   s   ddl m} |S )Nr   )Request)r   r3   )r   r3   r   r   r   r   A   s    zTest_Request._getTargetClassc                 O   s   |   |i |S r	   r
   r   r   r   r   r   E   s    zTest_Request._makeOnec                 C   sV   |   }| |jd | |jd | |jddi | |jd | |jd  d S )N GETcontent-length0)r   r   urlhttp_methodheadersbodyr$   r   r   r   r   r   test_ctor_defaultsH   s    zTest_Request.test_ctor_defaultsc                 C   sL   ddl m} | jd d}| | d|_W d    n1 s>0    Y  d S )Nr   RequestError)r;   abc)gcloud.streaming.exceptionsr?   r   assertRaisesr$   )r   r?   r   r   r   r   %test_loggable_body_setter_w_body_NoneP   s    z2Test_Request.test_loggable_body_setter_w_body_Nonec                 C   sB   |   }d|_d |_| |ji  | |jd  | |jd d S )Nr@   )r   r$   r;   r   r:   r<   r   r   r   test_body_setter_w_NoneV   s    z$Test_Request.test_body_setter_w_Nonec                 C   sR   |   }d|_tdd |_}| |jddi | |j|u  | |jd d S )Nr@   {   )lengthr6   123z<media body>)r   r$   r   r;   r   r:   
assertTrue)r   r   r;   r   r   r   test_body_setter_w_non_string^   s    z*Test_Request.test_body_setter_w_non_stringN)	r)   r*   r+   r   r   r=   rC   rD   rI   r   r   r   r   r2   ?   s   r2   c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )Test_Responsec                 C   s   ddl m} |S )Nr   )Response)r   rK   )r   rK   r   r   r   r   i   s    zTest_Response._getTargetClassc                 O   s   |   |i |S r	   r
   r   r   r   r   r   m   s    zTest_Response._makeOnec                 C   s^   d}d}ddi}|  |||}| t|t| | |jd | |jd  | |j d S )NCONTENThttp://example.com/apistatus200   )r   r   lenstatus_coderetry_afterassertFalseis_redirectr   rL   URLinforesponser   r   r   	test_ctorp   s    zTest_Response.test_ctorc                 C   s@   d}d}d}dt |d|d}| |||}| t |d d S )NrL   rM   bytes 0-122/5678rO   testing)rN   r6   content-encodingcontent-rangerE   rQ   r   r   r   rL   rW   RANGErX   rY   r   r   r   .test_length_w_content_encoding_w_content_rangez   s    z<Test_Response.test_length_w_content_encoding_w_content_rangec                 C   s>   d}d}dt |dd}| |||}| t |t | d S )NrL   rM   rO   r\   )rN   r6   r]   r_   rV   r   r   r   /test_length_w_content_encoding_wo_content_range   s    z=Test_Response.test_length_w_content_encoding_wo_content_rangec                 C   sJ   d}d}d}dt |d |d}| |||}| t |t |d  d S )NrL   rM   zbytes 0-12/5678rO      )rN   r6   r^   r_   r`   r   r   r   ,test_length_w_content_length_w_content_range   s    
z:Test_Response.test_length_w_content_length_w_content_rangec                 C   s8   d}d}d}d|d}|  |||}| t|d d S )NrL   rM   r[   rO   )rN   r^   rE   )r   r   rQ   r`   r   r   r   -test_length_wo_content_length_w_content_range   s    z;Test_Response.test_length_wo_content_length_w_content_rangec                 C   s2   d}d}ddd}|  |||}| |jd d S )NrL   rM   rO   rG   )rN   zretry-afterrE   )r   r   rS   rV   r   r   r   test_retry_after_w_header   s    z'Test_Response.test_retry_after_w_headerc                 C   s.   d}d}ddi}|  |||}| |j d S )NrL   rM   rN   301)r   rT   rU   rV   r   r   r   #test_is_redirect_w_code_wo_location   s    z1Test_Response.test_is_redirect_w_code_wo_locationc                 C   s0   d}d}ddd}|  |||}| |j d S )NrL   rM   rh   zhttp://example.com/other)rN   location)r   rH   rU   rV   r   r   r   "test_is_redirect_w_code_w_location   s    z0Test_Response.test_is_redirect_w_code_w_locationN)r)   r*   r+   r   r   rZ   rb   rc   re   rf   rg   ri   rk   r   r   r   r   rJ   g   s   

	rJ   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )Test__check_responsec                 O   s   ddl m} ||i |S )Nr   )_check_response)r   rm   )r   r   r   rm   r   r   r   _callFUT   s    zTest__check_response._callFUTc                 C   sD   ddl m} | | | d  W d    n1 s60    Y  d S )Nr   r>   )rA   r?   rB   rn   )r   r?   r   r   r   test_w_none   s    z Test__check_response.test_w_nonec                 C   sT   ddl m} ddlm} | | | t| W d    n1 sF0    Y  d S )Nr   BadStatusCodeError)TOO_MANY_REQUESTS)rA   rq   r   rr   rB   rn   	_Response)r   rq   rr   r   r   r   test_w_TOO_MANY_REQUESTS   s    z-Test__check_response.test_w_TOO_MANY_REQUESTSc                 C   s   ddl m} | | | td W d    n1 s:0    Y  | | | td W d    n1 sr0    Y  d S )Nr   rp   i  i  )rA   rq   rB   rn   rs   )r   rq   r   r   r   
test_w_50x   s
    ,zTest__check_response.test_w_50xc                 C   sJ   ddl m} | |  | tdd W d    n1 s<0    Y  d S )Nr   RetryAfterErrorrP      )rA   rw   rB   rn   rs   )r   rw   r   r   r   test_w_retry_after   s    z'Test__check_response.test_w_retry_afterc                 C   s   |  td d S )NrP   )rn   rs   )r   r   r   r   	test_pass   s    zTest__check_response.test_passN)	r)   r*   r+   rn   ro   rt   ru   ry   rz   r   r   r   r   rl      s   	rl   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )Test__reset_http_connectionsc                 O   s   ddl m} ||i |S )Nr   )_reset_http_connections)r   r|   )r   r   r   r|   r   r   r   rn      s    z%Test__reset_http_connections._callFUTc                 C   s   t  }| | d S r	   )r%   rn   )r   httpr   r   r   test_wo_connections   s    z0Test__reset_http_connections.test_wo_connectionsc                 C   sB   t  t  d}t|d}| | | d|v  | d|v  d S )N)	delete:mer-   r.   r   r-   )r%   r   rn   rT   rH   )r   r/   r}   r   r   r   test_w_connections   s
    

z/Test__reset_http_connections.test_w_connectionsN)r)   r*   r+   rn   r~   r   r   r   r   r   r{      s   r{   c                   @   sF   e Zd Zdd ZdddZdd Zd	d
 Zdd Zdd Zdd Z	dS ) Test___make_api_request_no_retryc                 O   s   ddl m} ||i |S )Nr   )_make_api_request_no_retry)r   r   )r   r   r   r   r   r   r   rn      s    z)Test___make_api_request_no_retry._callFUT   Nc                 C   s   |  t|jd |jd \}}|  ||j |  |d |j |  |d |j |  |d |j |  |d | |  |d | d S )Nr   r   methodr;   r:   redirectionsconnection_type)r   rQ   
_requestedr8   r9   r;   r:   )r   r}   r   r   r   r8   r   r   r   r   _verify_requested  s    z2Test___make_api_request_no_retry._verify_requestedc           
      C   s   ddl m} ddlm} ddi}d}t||f}tdd}t }g }|||d	" | j|||jd
}	W d    n1 sx0    Y  | 	t
|	|j | |	j| | |	j| | |	j|j | ||	g | || d S )Nr   r   r   rN   rO   rL   r   r   r   check_response_funcr   r   r   r   _Httpr   r   rn   appendrH   
isinstancerK   r   rX   contentrequest_urlr8   r   
r   r   r   INFOrL   r0   r!   _request_checkedrY   r   r   r   test_defaults_wo_connections  s$    
$z=Test___make_api_request_no_retry.test_defaults_wo_connectionsc           
      C   s   ddl m} ddlm} ddi}d}t||f}tdd}t }g }|||d	$ | j||d
|jd}	W d    n1 sz0    Y  | 	t
|	|j | |	j| | |	j| | |	j|j | ||	g | j||d
d d S )Nr   r   r   rN   rO   rL   r   r   r   
   r   r   )r   r   r   r   r   r   test_w_explicit_redirections"  s&    
$z=Test___make_api_request_no_retry.test_w_explicit_redirectionsc                 C   s   ddl m} ddlm} ddi}d}t }t||f}d|i|_tdd	}t }g }	|||d
" | j	|||	j
d}
W d    n1 s0    Y  | t|
|j | |
j| | |
j| | |
j|j | |	|
g | || d S )Nr   r   r   rN   rO   rL   httpsr   r   r   r   r   r   r   r   r%   r   r/   r   r   rn   r   rH   r   rK   r   rX   r   r   r8   r   r   r   r   r   rL   	CONN_TYPEr0   r!   r   r   rY   r   r   r   test_w_http_connections_miss6  s(    

$z=Test___make_api_request_no_retry.test_w_http_connections_missc                 C   s   ddl m} ddlm} ddi}d}t }t||f}d|i|_tdd	}t }g }	|||d
" | j	|||	j
d}
W d    n1 s0    Y  | t|
|j | |
j| | |
j| | |
j|j | |	|
g | j|||d d S )Nr   r   r   rN   rO   rL   r}   r   r   r   r   r   r   r   r   r   r   test_w_http_connections_hitK  s(    

$z<Test___make_api_request_no_retry.test_w_http_connections_hitc           
   	   C   s   ddl m} ddlm} ddlm} d }d }t }t||f}d|i|_t	dd}t
 }	|||dF | | | ||	 W d    n1 s0    Y  W d    n1 s0    Y  | j||	|d	 d S )
Nr   r   r   r>   r}   r   r   r   r   )r   r   r   r   rA   r?   r%   r   r/   r   r   rB   rn   r   )
r   r   r   r?   r   rL   r   r0   r!   r   r   r   r   test_w_request_returning_None`  s    

Hz>Test___make_api_request_no_retry.test_w_request_returning_None)r   N)
r)   r*   r+   rn   r   r   r   r   r   r   r   r   r   r   r      s    
r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
Test_make_api_requestc                 O   s   ddl m} ||i |S )Nr   )make_api_request)r   r   )r   r   r   r   r   r   r   rn   s  s    zTest_make_api_request._callFUTc                    s   t  t  t    }} g g  } fdd}| j||||jd}| | u  d|jd}| ||f|fg | |g  d S )Nc                     s    | |f  S r	   r   r   r   RESPONSE_createdr   r   _wo_exception{  s    z>Test_make_api_request.test_wo_exception.<locals>._wo_exception)wo_retry_funcr   r   r   )r%   rn   r   rH   r   )r   HTTPREQUESTr   r   rY   expected_kwr   r   r   test_wo_exceptionw  s    
z'Test_make_api_request.test_wo_exceptionc                    s   ddl m t t  }t  d}g g  }d gd  fdd}| j| d|||jd}| |u  | td d|jd	}D ]}| || f|f q| |g  d S )
Nr   rv   r      c                     s.    | |f r*  d jdS )Nr4   皙?)r   popr8   r   r   r   rw   _counterr   r   r   r     s
    zMTest_make_api_request.test_w_exceptions_lt_max_retries.<locals>._wo_exceptionr   retriesZmax_retry_waitr   r   r   )	rA   rw   r%   r   rn   r   rH   r   rQ   )r   r   WAITr   r   rY   r   attemptr   r   r    test_w_exceptions_lt_max_retries  s*    

z6Test_make_api_request.test_w_exceptions_lt_max_retriesc           
   
      s   ddl m} ddlm} t }t }d}g g   } fdd}||dd d	R | t( | j||d
|||j	d W d    n1 s0    Y  W d    n1 s0    Y  | 
t d
 d|j	d} D ]}	| 
|	||f|f q| 
|g  d S )Nr   r   r   r   c                     s     | |f tdd S )NZ	Retryable)r   
ValueErrorr   r   r   r   r     s    zMTest_make_api_request.test_w_exceptions_gt_max_retries.<locals>._wo_exceptionc                  W   s   dS )Nr   r   )Zignoredr   r   r   <lambda>      zHTest_make_api_request.test_w_exceptions_gt_max_retries.<locals>.<lambda>)Zcalculate_wait_for_retry   r   r   r   )r   r   r   r   r%   r   rB   r   rn   r   r   rQ   )
r   r   r   r   r   r   r   r   r   r   r   r   r    test_w_exceptions_gt_max_retries  s,    
Bz6Test_make_api_request.test_w_exceptions_gt_max_retriesN)r)   r*   r+   rn   r   r   r   r   r   r   r   r   q  s   r   c                   @   s   e Zd Zdd Zdd ZdS )Test__register_http_factoryc                 O   s   ddl m} ||i |S )Nr   )_register_http_factory)r   r   )r   r   r   r   r   r   r   rn     s    z$Test__register_http_factory._callFUTc                 C   sj   ddl m} ddlm} g }t }|||d( | | | ||g W d    n1 s\0    Y  d S )Nr   r   r   Z_HTTP_FACTORIES)r   r   r   r   r%   rn   r   )r   r   r   
_factoriesZFACTORYr   r   r   test_it  s    
z#Test__register_http_factory.test_itN)r)   r*   r+   rn   r   r   r   r   r   r     s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )Test_get_httpc                 O   s   ddl m} ||i |S )Nr   )get_http)r   r   )r   r   r   r   r   r   r   rn     s    zTest_get_http._callFUTc                 C   sp   ddl m} ddlm} ddlm} g }|||d |  }W d    n1 sR0    Y  | t|| d S )Nr   )Httpr   r   r   )	r   r   r   r   r   r   rn   rH   r   )r   r   r   r   r   r}   r   r   r   test_wo_registered_factories  s    &z*Test_get_http.test_wo_registered_factoriesc                    s   ddl m} ddlm} t  g fdd}g  fdd}||g}|||d | jd	d
}W d    n1 sv0    Y  | | u  | dd	ig | dd	ig d S )Nr   r   r   c                     s     |  d S r	   r   r   )_missesr   r   _miss  s    
z8Test_get_http.test_w_registered_factories.<locals>._missc                     s    |   S r	   r   r   )FOUND_hitsr   r   _hit  s    
z7Test_get_http.test_w_registered_factories.<locals>._hitr   bar)foor   )r   r   r   r   r%   rn   rH   r   )r   r   r   r   r   r   r}   r   )r   r   r   r   test_w_registered_factories  s    *z)Test_get_http.test_w_registered_factoriesN)r)   r*   r+   rn   r   r   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd ZdS )r   c                 K   s   | j | d S r	   )__dict__update)r   r   r   r   r   __init__  s    z_Dummy.__init__N)r)   r*   r+   r   r   r   r   r   r     s   r   c                   @   s&   e Zd ZdZdZedddfddZdS )r   r8   r9   r;   r:   r$   rM   r5   r4   Nc                 C   s"   || _ || _|| _i | _|| _d S r	   r   )r   r8   r9   r;   r$   r   r   r   r     s
    z_Request.__init__)r)   r*   r+   	__slots__rW   r   r   r   r   r   r     s
   r   c                   @   s    e Zd ZdZejZdddZdS )rs   r4   Nc                 C   s   d|i| _ || _|| _d S )NrN   )rX   rR   rS   )r   rR   rS   r   r   r   r     s    
z_Response.__init__)N)r)   r*   r+   r   r   rW   r   r   r   r   r   r   rs     s   rs   c                   @   s   e Zd Zdd Zdd ZdS )r   c                 G   s   || _ g | _d S r	   )
_responsesr   )r   	responsesr   r   r   r   %  s    z_Http.__init__c                 K   s0   | j ||f | jd | jdd   }| _|S )Nr   r   )r   r   r   )r   r8   r   rY   r   r   r   r   )  s    z_Http.requestN)r)   r*   r+   r   r   r   r   r   r   r   #  s   r   )Z	unittest2ZTestCaser   r2   rJ   rl   r{   r   r   r   r   r%   r   r   rs   r   r   r   r   r   <module>   s   ;(`%sW-
