a
    ù!fÒ4  ã                   @   sP   d dl 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dS )
é    Nc                   @   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 )ÚTestConnectionc                 C   s   ddl m} |S )Nr   )Ú
Connection)Úgcloud.connectionr   )Úselfr   © r   úW/var/www/html/python-backend/venv/lib/python3.9/site-packages/gcloud/test_connection.pyÚ_getTargetClass   s    zTestConnection._getTargetClassc                 O   s   |   ¡ |i |¤ŽS ©N©r   ©r   ÚargsÚkwr   r   r   Ú_makeOne   s    zTestConnection._makeOnec                 C   s   |   ¡ }|  |jd ¡ d S r	   ©r   ÚassertEqualÚcredentials©r   Úconnr   r   r   Útest_ctor_defaults   s    z!TestConnection.test_ctor_defaultsc                 C   sN   t ƒ }|  |jd¡ |  |¡}|  |jd¡ |  |j|u ¡ |  |jd ¡ d S )Nr   é   )Ú_Credentialsr   Ú_create_scoped_callsr   Ú
assertTruer   Ú_http©r   r   r   r   r   r   Útest_ctor_explicit   s    
z!TestConnection.test_ctor_explicitc                 C   s4   t ƒ }| j|d}|  |jd ¡ |  |j|u ¡ d S )N)Úhttp)Úobjectr   r   r   r   r   )r   r   r   r   r   r   Útest_ctor_explicit_http'   s    z&TestConnection.test_ctor_explicit_httpc                 C   s2   t ƒ }|  |¡}|  |j|u ¡ |  |jd ¡ d S r	   )r   r   r   r   r   r   r   r   r   r   Ú&test_ctor_credentials_wo_create_scoped-   s    
z5TestConnection.test_ctor_credentials_wo_create_scopedc                 C   s(   |   ¡ }tƒ  |_}|  |j|u ¡ d S r	   ©r   r   r   r   r   ©r   r   r   r   r   r   Útest_http_w_existing3   s    z#TestConnection.test_http_w_existingc                 C   s(   dd l }|  ¡ }|  t|j|jƒ¡ d S ©Nr   ©Úhttplib2r   r   Ú
isinstancer   ÚHttp©r   r%   r   r   r   r   Útest_http_wo_creds8   s    z!TestConnection.test_http_wo_credsc                 C   sH   dd l }tƒ }t|ƒ}|  |¡}|  |j|u ¡ |  t|j|jƒ¡ d S r#   ©	r%   r   r   r   r   r   r&   Ú_called_withr'   ©r   r%   Ú
authorizedr   r   r   r   r   Útest_http_w_creds=   s    
z TestConnection.test_http_w_credsc                 C   s6   ddl m} d |dƒj¡}|  ¡ }|  |j|¡ d S )Nr   )Úget_distributionzgcloud-python/{0}Zgcloud)Úpkg_resourcesr/   ÚformatÚversionr   r   Ú
USER_AGENT)r   r/   Zexpected_uar   r   r   r   Útest_user_agent_formatF   s    ÿz%TestConnection.test_user_agent_formatN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r"   r)   r.   r4   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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#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-S ).ÚTestJSONConnectionc                 C   s   ddl m} |S )Nr   )ÚJSONConnection)r   r9   )r   r9   r   r   r   r   P   s    z"TestJSONConnection._getTargetClassc                 O   s   |   ¡ |i |¤ŽS r	   r
   r   r   r   r   r   T   s    zTestJSONConnection._makeOnec                 O   s"   G dd„ d|   ¡ ƒ}||i |¤ŽS )Nc                   @   s   e Zd ZdZdZdZdS )z7TestJSONConnection._makeMockOne.<locals>.MockConnectionz'{api_base_url}/mock/{api_version}{path}zhttp://mockZvMOCKN)r5   r6   r7   ÚAPI_URL_TEMPLATEÚAPI_BASE_URLÚAPI_VERSIONr   r   r   r   ÚMockConnectionX   s   r=   r
   )r   r   r   r=   r   r   r   Ú_makeMockOneW   s    zTestJSONConnection._makeMockOnec                 C   s0   |   ¡ }|  |j¡ |  |j¡ |  |j¡ d S r	   )r   ZassertIsNoner:   r;   r<   )r   Úklassr   r   r   Útest_class_defaults^   s    z&TestJSONConnection.test_class_defaultsc                 C   s   |   ¡ }|  |jd ¡ d S r	   r   r   r   r   r   r   d   s    z%TestJSONConnection.test_ctor_defaultsc                 C   s$   t ƒ }|  |¡}|  |j|u ¡ d S r	   )r   r   r   r   r   r   r   r   r   h   s    
z%TestJSONConnection.test_ctor_explicitc                 C   s(   |   ¡ }tƒ  |_}|  |j|u ¡ d S r	   r    r!   r   r   r   r"   m   s    z'TestJSONConnection.test_http_w_existingc                 C   s(   dd l }|  ¡ }|  t|j|jƒ¡ d S r#   r$   r(   r   r   r   r)   r   s    z%TestJSONConnection.test_http_wo_credsc                 C   sH   dd l }tƒ }t|ƒ}|  |¡}|  |j|u ¡ |  t|j|jƒ¡ d S r#   r*   r,   r   r   r   r.   w   s    
z$TestJSONConnection.test_http_w_credsc                 C   s4   |   ¡ }d |jd|jdg¡}|  | d¡|¡ d S )Nú/ÚmockÚfooú/foo)r>   Újoinr;   r<   r   Úbuild_api_url)r   r   ÚURIr   r   r   Ú(test_build_api_url_no_extra_query_params€   s    üz;TestJSONConnection.test_build_api_url_no_extra_query_paramsc                 C   s˜   ddl m} ddl m} |  ¡ }| dddi¡}||ƒ\}}}}}	|  d||f |j¡ d d	d
|jdg¡}
|  ||
¡ t	||ƒƒ}|  |d d¡ d S )Nr   ©Ú	parse_qsl©ÚurlsplitrD   ÚbarZbazú%s://%srA   Ú rB   rC   )
Úsix.moves.urllib.parserJ   rL   r>   rF   r   r;   rE   r<   Údict)r   rJ   rL   r   ÚuriÚschemeÚnetlocÚpathÚqsÚ_ÚPATHÚparmsr   r   r   Ú'test_build_api_url_w_extra_query_params‹   s    üz:TestJSONConnection.test_build_api_url_w_extra_query_paramsc                 C   s¸   |   ¡ }d}tdddœdƒ }|_| d|¡\}}|  |d d¡ |  |d d¡ |  |d¡ |  |jd	 d¡ |  |jd
 |¡ |  |jd d ¡ dd|jdœ}|  |jd |¡ d S )Núhttp://example.com/testÚ200ú
text/plain©Ústatusúcontent-typeó    ÚGETr_   r`   ÚmethodrR   ÚbodyÚgzipÚ0©úAccept-EncodingúContent-Lengthú
User-AgentÚheaders©r   Ú_Httpr   Ú_make_requestr   r+   r3   )r   r   rG   r   rk   ÚcontentÚexpected_headersr   r   r   Ú5test__make_request_no_data_no_content_type_no_headersž   s$    þ
ýzHTestJSONConnection.test__make_request_no_data_no_content_type_no_headersc                 C   sŽ   |   ¡ }d}tdddœdƒ }|_| d|i d¡ |  |jd d¡ |  |jd	 |¡ |  |jd
 i ¡ ddd|jdœ}|  |jd |¡ d S )Nr[   r\   r]   r^   ra   rb   úapplication/jsonrc   rR   rd   re   rf   ©rh   ri   zContent-Typerj   rk   rl   ©r   r   rG   r   rp   r   r   r   Ú*test__make_request_w_data_no_extra_headers³   s     þ
üz=TestJSONConnection.test__make_request_w_data_no_extra_headersc                 C   s’   |   ¡ }d}tdddœdƒ }|_|jd|ddid	 |  |jd
 d¡ |  |jd |¡ |  |jd d ¡ ddd|jdœ}|  |jd |¡ d S )Nr[   r\   r]   r^   ra   rb   úX-FoorC   )rk   rc   rR   rd   re   rf   )rh   ri   rv   rj   rk   rl   rt   r   r   r   Ú"test__make_request_w_extra_headersÆ   s     þ
üz5TestJSONConnection.test__make_request_w_extra_headersc                 C   s¬   d}|   ¡ }d |jdd|j|f g¡}tdddœdƒ }|_|  | d	|¡i ¡ |  |jd
 d	¡ |  |jd |¡ |  |jd d ¡ dd|j	dœ}|  |jd |¡ d S )Nz/path/requiredrA   rB   z%s%sr\   rr   r^   ó   {}rb   rc   rR   rd   re   rf   rg   rk   )
r>   rE   r;   r<   rm   r   r   Úapi_requestr+   r3   )r   rX   r   rG   r   rp   r   r   r   Útest_api_request_defaultsÙ   s(    ýþ
ýz,TestJSONConnection.test_api_request_defaultsc                 C   s0   |   ¡ }tdddœdƒ|_|  t|jdd¡ d S )Nr\   r]   r^   ó   CONTENTrb   rA   )r>   rm   r   ÚassertRaisesÚ	TypeErrorry   r   r   r   r   Ú$test_api_request_w_non_json_responseñ   s    þz7TestJSONConnection.test_api_request_w_non_json_responsec                 C   s6   |   ¡ }tdddœdƒ|_|  |jddddd¡ d S )	Nr\   r]   r^   r{   rb   rA   F)Zexpect_json)r>   rm   r   r   ry   r   r   r   r   Ú!test_api_request_wo_json_expectedú   s    þÿz4TestJSONConnection.test_api_request_wo_json_expectedc                 C   s  ddl m} ddl m} |  ¡ }tdddœdƒ }|_|  | dd	d
di¡i ¡ |  |jd d¡ |jd }||ƒ\}}}}	}
|  d||f |j	¡ d	 
dd|jdg¡}|  ||¡ t||	ƒƒ}|  |d
 d¡ |  |jd d ¡ dd|jdœ}|  |jd |¡ d S )Nr   rI   rK   r\   rr   r^   rx   rb   rA   rC   rM   rc   rR   rN   rO   rB   rd   re   rf   rg   rk   )rP   rJ   rL   r>   rm   r   r   ry   r+   r;   rE   r<   rQ   r3   )r   rJ   rL   r   r   rR   rS   rT   rU   rV   rW   rX   rY   rp   r   r   r   Útest_api_request_w_query_params  s6    þ

üýz2TestJSONConnection.test_api_request_w_query_paramsc                 C   sÊ   dd l }ddi}| |¡}|  ¡ }d |jd|jdg¡}tddd	œd
ƒ }|_|  |j	dd|di ¡ |  |j
d d¡ |  |j
d |¡ |  |j
d |¡ dtt|ƒƒd|jdœ}|  |j
d |¡ d S )Nr   rC   rM   rA   rB   rO   r\   rr   r^   rx   ÚPOST)Údatarc   rR   rd   re   rs   rk   )ÚjsonÚdumpsr>   rE   r;   r<   rm   r   r   ry   r+   ÚstrÚlenr3   )r   rƒ   ZDATAZDATAJr   rG   r   rp   r   r   r   Útest_api_request_w_data"  s0    
üþ

üz*TestJSONConnection.test_api_request_w_datac                 C   s<   ddl m} |  ¡ }tdddœdƒ|_|  ||jdd¡ d S )	Nr   )ÚNotFoundZ404r]   r^   rx   rb   rA   )Úgcloud.exceptionsrˆ   r>   rm   r   r|   ry   )r   rˆ   r   r   r   r   Útest_api_request_w_404>  s    þz)TestJSONConnection.test_api_request_w_404c                 C   s<   ddl m} |  ¡ }tdddœdƒ|_|  ||jdd¡ d S )	Nr   )ÚInternalServerErrorÚ500r]   r^   rx   rb   rA   )r‰   r‹   r>   rm   r   r|   ry   )r   r‹   r   r   r   r   Útest_api_request_w_500G  s    þz)TestJSONConnection.test_api_request_w_500c                 C   s¦   |   ¡ }tdddœdƒ }|_| dd¡}d |jd|jdg¡}|  |i ¡ |  |jd	 d¡ |  |jd
 |¡ |  |jd d ¡ dd|j	dœ}|  |jd |¡ d S )Nr\   rr   r^   z{}rb   rA   rB   rO   rc   rR   rd   re   rf   rg   rk   )
r>   rm   r   ry   rE   r;   r<   r   r+   r3   )r   r   r   ÚresultrG   rp   r   r   r   Ú$test_api_request_non_binary_responseP  s*    þ
üýz7TestJSONConnection.test_api_request_non_binary_responseN)r5   r6   r7   r   r   r>   r@   r   r   r"   r)   r.   rH   rZ   rq   ru   rw   rz   r~   r   r€   r‡   rŠ   r   r   r   r   r   r   r8   N   s,   					r8   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )rm   Nc                 C   s    ddl m} ||ƒ| _|| _d S )Nr   )ÚResponse)r%   r   Ú	_responseÚ_content)r   rk   ro   r   r   r   r   Ú__init__n  s    
z_Http.__init__c                 K   s   || _ | j| jfS r	   )r+   r‘   r’   )r   r   r   r   r   Úrequests  s    z_Http.request)r5   r6   r7   r+   r“   r”   r   r   r   r   rm   j  s   rm   c                   @   s*   e Zd ZdZddd„Zdd„ Zdd„ ZdS )	r   Nc                 C   s   || _ d| _d S r#   )Ú_authorizedr   )r   r-   r   r   r   r“   |  s    z_Credentials.__init__c                 C   s   || _ | jS r	   )r+   r•   )r   r   r   r   r   Ú	authorize€  s    z_Credentials.authorizec                 C   s   |  j d7  _ dS )Nr   F)r   )r   r   r   r   Úcreate_scoped_required„  s    z#_Credentials.create_scoped_required)N)r5   r6   r7   Z_scopesr“   r–   r—   r   r   r   r   r   x  s   
r   )Z	unittest2ZTestCaser   r8   r   rm   r   r   r   r   r   Ú<module>   s   <  