a
    ù!fî<  ã                   @   s`   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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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 )(Ú
TestClientc                 C   s   ddl m} |S )Nr   )ÚClient)Úgcloud.storage.clientr   )Úselfr   © r   ú[/var/www/html/python-backend/venv/lib/python3.9/site-packages/gcloud/storage/test_client.pyÚ_getTargetClass   s    zTestClient._getTargetClassc                 O   s   |   ¡ |i |¤ŽS ©N©r   ©r   ÚargsÚkwr   r   r   Ú_makeOne   s    zTestClient._makeOnec                 C   s|   ddl m} d}tƒ }| j||d}|  |j|¡ |  t|j|ƒ¡ |  |jj	|u ¡ |  |j
d u ¡ |  t|jƒg ¡ d S )Nr   )Ú
ConnectionÚPROJECT©ÚprojectÚcredentials)Zgcloud.storage.connectionr   Ú_Credentialsr   ÚassertEqualr   Ú
assertTrueÚ
isinstanceÚ
connectionr   Úcurrent_batchÚlistÚ_batch_stack)r   r   r   ÚCREDENTIALSÚclientr   r   r   Útest_ctor_connection_type   s    z$TestClient.test_ctor_connection_typec                 C   sà   ddl m} d}tƒ }| j||d}||ƒ}||ƒ}| |¡ |  t|jƒ|g¡ |  |j	|u ¡ | |¡ |  |j	|u ¡ |  t|jƒ||g¡ |  | 
¡ |u ¡ |  t|jƒ|g¡ |  | 
¡ |u ¡ |  t|jƒg ¡ d S ©Nr   )ÚBatchr   r   )Úgcloud.storage.batchr    r   r   Ú_push_batchr   r   r   r   r   Z
_pop_batch)r   r    r   r   r   Zbatch1Zbatch2r   r   r   Útest__push_batch_and__pop_batch(   s     

z*TestClient.test__push_batch_and__pop_batchc                 C   s>   d}t ƒ }| j||d}d |_tƒ  |_}|  |j|u ¡ d S ©Nr   r   )r   r   Ú_connectionÚobjectr   r   )r   r   r   r   r   r   r   r   Útest_connection_setter=   s    z!TestClient.test_connection_setterc                 C   s.   d}t ƒ }| j||d}|  tt|dd ¡ d S )Nr   r   r   )r   r   ÚassertRaisesÚ
ValueErrorÚsetattr©r   r   r   r   r   r   r   Útest_connection_setter_when_setE   s    z*TestClient.test_connection_setter_when_setc                 C   s>   d}t ƒ }| j||d}|  |j|ju ¡ |  |jd u ¡ d S r$   )r   r   r   r   r%   r   r+   r   r   r   Útest_connection_getter_no_batchK   s
    z*TestClient.test_connection_getter_no_batchc                 C   sl   ddl m} d}tƒ }| j||d}||ƒ}| |¡ |  |j|ju¡ |  |j|u ¡ |  |j|u ¡ d S r   )	r!   r    r   r   r"   r   r   r%   r   ©r   r    r   r   r   Úbatchr   r   r   Ú!test_connection_getter_with_batchR   s    
z,TestClient.test_connection_getter_with_batchc                 C   sd   ddl m} d}tƒ }d}| j||d}| |¡}|  t||ƒ¡ |  |j|u ¡ |  |j	|¡ d S )Nr   ©ÚBucketr   ÚBUCKET_NAMEr   )
Úgcloud.storage.bucketr2   r   r   Úbucketr   r   r   r   Úname)r   r2   r   r   r3   r   r5   r   r   r   Útest_bucket]   s    
zTestClient.test_bucketc                 C   sP   ddl m} d}tƒ }| j||d}| ¡ }|  t||ƒ¡ |  |j|u ¡ d S r   )r!   r    r   r   r/   r   r   Z_clientr.   r   r   r   Ú
test_batchj   s    zTestClient.test_batchc                 C   s”   ddl m} d}tƒ }| j||d}d}d |jjd|jjdd	g¡}td
ddœdƒ }|j_	|  
||j|¡ |  |jd d¡ |  |jd |¡ d S )Nr   )ÚNotFoundr   r   Únonesuchú/ÚstorageÚbúnonesuch?projection=noAclÚ404úapplication/json©Ústatuszcontent-typeó   {}ÚmethodÚGETÚuri)Úgcloud.exceptionsr9   r   r   Újoinr   ÚAPI_BASE_URLÚAPI_VERSIONÚ_HttpÚ_httpr(   Ú
get_bucketr   Ú_called_with)r   r9   r   r   r   ÚNONESUCHÚURIÚhttpr   r   r   Útest_get_bucket_missu   s&    ûþzTestClient.test_get_bucket_missc           	      C   s¾   ddl m} d}tƒ }| j||d}d}d |jjd|jjdd	|f g¡}td
ddœd 	|¡ 
d¡ƒ }|j_| |¡}|  t||ƒ¡ |  |j|¡ |  |jd d¡ |  |jd |¡ d S ©Nr   r1   r   r   ú	blob-namer;   r<   r=   z%s?projection=noAclÚ200r@   rA   ú{{"name": "{0}"}}úutf-8rD   rE   rF   )r4   r2   r   r   rH   r   rI   rJ   rK   ÚformatÚencoderL   rM   r   r   r   r6   rN   ©	r   r2   r   r   r   Ú	BLOB_NAMErP   rQ   r5   r   r   r   Útest_get_bucket_hitŒ   s*    ûþ
zTestClient.test_get_bucket_hitc                 C   sŽ   d}t ƒ }| j||d}d}d |jjd|jjddg¡}tdd	d
œdƒ }|j_| |¡}|  	|d ¡ |  	|j
d d¡ |  	|j
d |¡ d S )Nr   r   r:   r;   r<   r=   r>   r?   r@   rA   rC   rD   rE   rF   )r   r   rH   r   rI   rJ   rK   rL   Úlookup_bucketr   rN   )r   r   r   r   rO   rP   rQ   r5   r   r   r   Útest_lookup_bucket_miss¦   s&    ûþ
z"TestClient.test_lookup_bucket_missc           	      C   s¾   ddl m} d}tƒ }| j||d}d}d |jjd|jjdd	|f g¡}td
ddœd 	|¡ 
d¡ƒ }|j_| |¡}|  t||ƒ¡ |  |j|¡ |  |jd d¡ |  |jd |¡ d S rS   )r4   r2   r   r   rH   r   rI   rJ   rK   rX   rY   rL   r]   r   r   r   r6   rN   rZ   r   r   r   Útest_lookup_bucket_hit¼   s*    ûþ
z!TestClient.test_lookup_bucket_hitc                 C   s˜   ddl m} d}tƒ }| j||d}d}d |jjd|jjd|f g¡}td	d
dœdƒ }|j_	|  
||j|¡ |  |jd d¡ |  |jd |¡ d S )Nr   )ÚConflictr   r   rT   r;   r<   úb?project=%sZ409r@   rA   z"{"error": {"message": "Conflict"}}rD   ÚPOSTrF   )rG   r`   r   r   rH   r   rI   rJ   rK   rL   r(   Úcreate_bucketr   rN   )r   r`   r   r   r   r[   rP   rQ   r   r   r   Útest_create_bucket_conflictÖ   s$    üþz&TestClient.test_create_bucket_conflictc           	      C   s¼   ddl m} d}tƒ }| j||d}d}d |jjd|jjd|f g¡}td	d
dœd 	|¡ 
d¡ƒ }|j_| |¡}|  t||ƒ¡ |  |j|¡ |  |jd d¡ |  |jd |¡ d S )Nr   r1   r   r   rT   r;   r<   ra   rU   r@   rA   rV   rW   rD   rb   rF   )r4   r2   r   r   rH   r   rI   rJ   rK   rX   rY   rL   rc   r   r   r   r6   rN   rZ   r   r   r   Útest_create_bucket_successí   s(    üþ
z%TestClient.test_create_bucket_successc                 C   sè   ddl m} ddl m} d}tƒ }| j||d}|gdgdœ}tdd	d
œdƒ }|j_t| 	¡ ƒ}|  
t|ƒd¡ |  
|jd d¡ |  
|jd d ¡ d |jjd|jjdg¡}	|jd }
|  |
 |	¡¡ ||
ƒ}|  
||jƒ|¡ d S )Nr   ©Úparse_qs©Úurlparser   r   ÚnoAcl©r   Ú
projectionrU   r@   rA   rC   rD   rE   Úbodyr;   r<   r=   rF   )Úsix.moves.urllib.parserg   ri   r   r   rK   r   rL   r   Úlist_bucketsr   ÚlenrN   rH   rI   rJ   r   Ú
startswithÚquery)r   rg   ri   r   r   r   ÚEXPECTED_QUERYrQ   ÚbucketsÚBASE_URIrP   Ú	uri_partsr   r   r   Útest_list_buckets_empty  s4    þþü
z"TestClient.test_list_buckets_emptyc                 C   s  ddl m} ddl m} ddl m} d}tƒ }| j||d}d}||dd	œƒ}d
 |jjd|jj	g¡}	d
 |	d|f g¡}
t
dddœd |¡ d¡ƒ }|j_t| ¡ ƒ}|  t|ƒd¡ |  |d j|¡ |  |jd d¡ |  |jd  |	¡¡ |  |||jd ƒjƒ|||
ƒjƒ¡ d S )Nr   rf   )Ú	urlencoderh   r   r   zbucket-namerj   rk   r;   r<   zb?%srU   r@   rA   z {{"items": [{{"name": "{0}"}}]}}rW   é   rD   rE   rF   )rn   rg   rx   ri   r   r   rH   r   rI   rJ   rK   rX   rY   rL   r   ro   r   rp   r6   rN   r   rq   rr   )r   rg   rx   ri   r   r   r   r3   Zquery_paramsru   rP   rQ   rt   r   r   r   Útest_list_buckets_non_empty&  s8    ý
ÿþÿz&TestClient.test_list_buckets_non_emptyc                 C   s  ddl m} ddl m} d}tƒ }| j||d}d}d}d}d	}	d
}
|gt|ƒg|g|g|	g|
gdœ}tdddœdƒ }|j_|j	||||	|
d}t
|ƒ}|  |g ¡ |  |jd d¡ |  |jd d ¡ d |jjd|jjdg¡}|jd }|  | |¡¡ ||ƒ}|  ||jƒ|¡ d S )Nr   rf   rh   zfoo-barr   é
   ZABCDZ	subfolderÚfullzitems/id,nextPageToken)r   Z
maxResultsZ	pageTokenÚprefixrl   ÚfieldsrU   r@   rA   z{"items": []})Zmax_resultsZ
page_tokenr}   rl   r~   rD   rE   rm   r;   r<   r=   rF   )rn   rg   ri   r   r   ÚstrrK   r   rL   ro   r   r   rN   rH   rI   rJ   r   rq   rr   )r   rg   ri   r   r   r   ZMAX_RESULTSZ
PAGE_TOKENÚPREFIXZ
PROJECTIONZFIELDSrs   rQ   Úiteratorrt   ru   rP   rv   r   r   r   Útest_list_buckets_all_argumentsC  sT    ú	þûü
z*TestClient.test_list_buckets_all_argumentsN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r#   r'   r,   r-   r0   r7   r8   rR   r\   r^   r_   rd   re   rw   rz   r‚   r   r   r   r   r      s&    r   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTest__BucketIteratorc                 C   s   ddl m} |S )Nr   )Ú_BucketIterator)r   r‡   )r   r‡   r   r   r   r   w  s    z$Test__BucketIterator._getTargetClassc                 O   s   |   ¡ |i |¤ŽS r	   r
   r   r   r   r   r   {  s    zTest__BucketIterator._makeOnec                 C   sV   t ƒ }t|ƒ}|  |¡}|  |jd¡ |  |jd¡ |  |jd ¡ |  |j|u ¡ d S )Nz/br   )	r&   Ú_Clientr   r   ÚpathZpage_numberZnext_page_tokenr   r   ©r   r   r   r   r   r   r   Ú	test_ctor~  s    
zTest__BucketIterator.test_ctorc                 C   s2   t ƒ }t|ƒ}|  |¡}|  t| i ¡ƒg ¡ d S r	   )r&   rˆ   r   r   r   Úget_items_from_responserŠ   r   r   r   Ú"test_get_items_from_response_empty‡  s    
z7Test__BucketIterator.test_get_items_from_response_emptyc           	      C   s~   ddl m} d}dd|igi}tƒ }t|ƒ}|  |¡}t| |¡ƒ}|  t|ƒd¡ |d }|  	t
||ƒ¡ |  |j|¡ d S )Nr   r1   rT   Úitemsr6   ry   )r4   r2   r&   rˆ   r   r   rŒ   r   rp   r   r   r6   )	r   r2   r[   Úresponser   r   r   rt   r5   r   r   r   Ú&test_get_items_from_response_non_empty  s    
z;Test__BucketIterator.test_get_items_from_response_non_emptyN)rƒ   r„   r…   r   r   r‹   r   r   r   r   r   r   r†   u  s
   	r†   c                   @   s$   e Zd ZdZedd„ ƒZdd„ ZdS )r   Nc                   C   s   dS )NTr   r   r   r   r   Úcreate_scoped_requiredŸ  s    z#_Credentials.create_scoped_requiredc                 C   s
   || _ | S r	   )Ú_scopes)r   Úscoper   r   r   Úcreate_scoped£  s    z_Credentials.create_scoped)rƒ   r„   r…   r’   Ústaticmethodr‘   r”   r   r   r   r   r   ›  s   
r   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )rK   Nc                 C   s    ddl m} ||ƒ| _|| _d S )Nr   )ÚResponse)Zhttplib2r–   Ú	_responseÚ_content)r   ÚheadersÚcontentr–   r   r   r   Ú__init__¬  s    
z_Http.__init__c                 K   s   || _ | j| jfS r	   )rN   r—   r˜   )r   r   r   r   r   Úrequest±  s    z_Http.request)rƒ   r„   r…   rN   r›   rœ   r   r   r   r   rK   ¨  s   rK   c                   @   s   e Zd Zdd„ ZdS )rˆ   c                 C   s
   || _ d S r	   )r   )r   r   r   r   r   r›   ¸  s    z_Client.__init__N)rƒ   r„   r…   r›   r   r   r   r   rˆ   ¶  s   rˆ   )Z	unittest2ZTestCaser   r†   r&   r   rK   rˆ   r   r   r   r   Ú<module>   s     e&