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S )Test__BlobIteratorc                 C   s   ddl m} |S )Nr   _BlobIterator)gcloud.storage.bucketr   )selfr    r   [/var/www/html/python-backend/venv/lib/python3.9/site-packages/gcloud/storage/test_bucket.py_getTargetClass   s    z"Test__BlobIterator._getTargetClassc                 O   s   |   |i |S N)r	   )r   argskwr   r   r   _makeOne   s    zTest__BlobIterator._makeOnec                 C   s   t  }t|}t }| j||d}| |j|u  | |j|u  | |jd|j  | |j	d | |j
d  | |jt  d S )Nclientz%s/or   )_Connection_Client_Bucketr   
assertTruebucketr   assertEqualpathZpage_numberZnext_page_tokenprefixesset)r   
connectionr   r   iteratorr   r   r   	test_ctor   s    zTest__BlobIterator.test_ctorc                 C   sP   t  }t|}t }| j||d}t|i }| |g  | |jt  d S )Nr   )	r   r   r   r   listget_items_from_responser   r   r   )r   r   r   r   r   blobsr   r   r   "test_get_items_from_response_empty'   s    z5Test__BlobIterator.test_get_items_from_response_emptyc           
      C   s   ddl m} d}d|igdgd}t }t|}t }| j||d}t||}| t	|d |d }	| 
t|	| | |	j| | |jtdg d S )	Nr   Blob	blob-namenamefooitemsr   r      gcloud.storage.blobr!   r   r   r   r   r   r   r   lenr   
isinstancer#   r   r   )
r   r!   	BLOB_NAMEresponser   r   r   r   r   blobr   r   r   &test_get_items_from_response_non_empty0   s    z9Test__BlobIterator.test_get_items_from_response_non_emptyc                 C   s   ddl m} d}d|igdgd}g ddgd}t }t|}t }| j||d}t||}	| t	|	d	 |	d }
| 
t|
| | |
j| | |jtdg t||}	| t	|	d | |jtddg d S )
Nr   r    
blob-name1r#   r$   r%   barr   r'   r(   )r   r!   r,   Z	response1Z	response2r   r   r   r   r   r.   r   r   r   0test_get_items_from_response_cumulative_prefixes?   s&    zCTest__BlobIterator.test_get_items_from_response_cumulative_prefixesN)	__name__
__module____qualname__r	   r   r   r   r/   r2   r   r   r   r   r      s   	r   c                   @   s8  e Zd Zdd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d0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Z d>d? Z!d@dA Z"dBdC Z#dDdE Z$dFdG Z%dHdI Z&dJdK Z'dLdM Z(dNdO Z)dPdQ Z*dRdS Z+dTdU Z,dVdW Z-dXdY Z.dZd[ Z/d\d] Z0d^d_ Z1d`da Z2dbdc Z3ddde Z4dfdg Z5dhdi Z6djdk Z7dldm Z8dndo Z9dpdq Z:drds Z;dtdu Z<dvdw Z=dxdy Z>dzd{ Z?d|d} Z@d~d ZAdd ZBdddZCdd ZDdd ZEdd ZFdd ZGdS )Test_BucketNc                 C   s<   ddl m} |d u r"t }t|}|||d}|p4i |_|S )Nr   )Bucketr#   )r   r7   r   r   _properties)r   r   r#   
propertiesr7   r   r   r   r   r   r   Z   s    
zTest_Bucket._makeOnec                 C   sz   d}ddi}| j ||d}| |j| | |j| | |jj | |jj|u  | |j	j | |j	j|u  d S )Nr#   keyvaluer#   r:   )
r   r   r#   r9   assertFalse_aclloadedr   r   _default_object_acl)r   NAMEr:   r   r   r   r   r   c   s    zTest_Bucket.test_ctorc                 C   s   ddl m} d}d}d}| j|d}|j||d}| t|| | |j|u  | |j|ju  | |j	| | |j
| d S )Nr   r    BUCKET_NAMEr,   i   r8   )
chunk_size)r)   r!   r   r.   r   r+   r   r   r   r#   rD   )r   r!   rC   r,   Z
CHUNK_SIZEr   r.   r   r   r   	test_blobn   s    zTest_Bucket.test_blobc                    sz   ddl m  G  fdddt}d}| j|d}t|}| |j|d d|jd	d
id d}d|fg}| |j	| d S )Nr   NotFoundc                       s    e Zd Zg Ze fddZdS )z5Test_Bucket.test_exists_miss.<locals>._FakeConnectionc                    s   | j ||f  |d S r
   )_called_withappendclsr   kwargsrF   r   r   api_request   s    zATest_Bucket.test_exists_miss.<locals>._FakeConnection.api_requestNr3   r4   r5   rH   classmethodrM   r   rF   r   r   _FakeConnection   s   rP   bucket-namer8   r   GETfieldsr#   methodr   query_params_target_objectr   )
gcloud.exceptionsrG   objectr   r   r>   existsr   r   rH   r   rP   rC   r   r   Zexpected_called_kwargsexpected_cwr   rF   r   test_exists_miss}   s    	
zTest_Bucket.test_exists_missc                 C   sj   G dd dt }d}| j|d}t|}| |j|d d|jddid d	}d
|fg}| |j| d S )Nc                   @   s   e Zd Zg Zedd ZdS )z4Test_Bucket.test_exists_hit.<locals>._FakeConnectionc                 _   s   | j ||f t S r
   )rH   rI   rY   rJ   r   r   r   rM      s    z@Test_Bucket.test_exists_hit.<locals>._FakeConnection.api_requestNrN   r   r   r   r   rP      s   rP   rQ   r8   r   rR   rS   r#   rT   r   )rY   r   r   r   rZ   r   r   rH   r[   r   r   r   test_exists_hit   s    

zTest_Bucket.test_exists_hitc                 C   s   d}d|i}t |}d}t||d}| j||d}|  |j\}| |d d | |d d	 | |d
 d|i | |d | d S )NrQ   r#   PROJECTprojectr   r#   rU   POSTr   /brV   ra   data)r   r   r   create
_requestedr   )r   rC   DATAr   r_   r   r   r   r   r   r   test_create_hit   s    zTest_Bucket.test_create_hitc                 C   s   d}d}ddgdgdgdg}dd	id
didg}d}d}||d|i||ddid}t |}t||d}	| j|	|d}
||
_||
_||
_||
_d|
_|
  |j	\}| 
|d d | 
|d d | 
|d d|i | 
|d | d S )NrQ   r_   <   *zhttps://example.com/frontendzX-Custom-Header)maxAgeSecondsmethodsoriginresponseHeadertypeDeleteageim  action	conditioneuNEARLINEruleenabledT)r#   cors	lifecyclelocationstorageClass
versioningr`   rb   rU   rc   r   rd   rV   ra   re   )r   r   r   rz   lifecycle_rulesr|   storage_classversioning_enabledrf   rg   r   )r   rC   r_   ZCORSZLIFECYCLE_RULESZLOCATIONSTORAGE_CLASSrh   r   r   r   r   r   r   r   test_create_w_extra_properties   sB    z*Test_Bucket.test_create_w_extra_propertiesc                 C   s>   ddl m} |  }|j}| t|| | ||ju  d S )Nr   )	BucketACL)gcloud.storage.aclr   r   aclr   r+   r?   )r   r   r   r   r   r   r   test_acl_property   s
    zTest_Bucket.test_acl_propertyc                 C   s>   ddl m} |  }|j}| t|| | ||ju  d S )Nr   )DefaultObjectACL)r   r   r   default_object_aclr   r+   rA   )r   r   r   r   r   r   r    test_default_object_acl_property   s
    z,Test_Bucket.test_default_object_acl_propertyc                 C   s   |   }| tt|d d S )Nr   )r   assertRaises
ValueErrorgetattrr   r   r   r   r   test_path_no_name   s    zTest_Bucket.test_path_no_namec                 C   s&   d}| j |d}| |jd|  d S )Nr#   r8   /b/%s)r   r   r   r   rB   r   r   r   r   test_path_w_name   s    zTest_Bucket.test_path_w_namec                 C   sr   d}d}t  }t|}| j|d}|j||d}| |d u  |j\}| |d d | |d d||f  d S )	Nr#   nonesuchr8   r   rU   rR   r   
/b/%s/o/%s)r   r   r   get_blobr   rg   r   )r   rB   NONESUCHr   r   r   resultr   r   r   r   test_get_blob_miss   s    zTest_Bucket.test_get_blob_missc                 C   s   d}d}t d|i}t|}| j|d}|j||d}| |j|u  | |j| |j\}| |d d | |d d||f  d S )	Nr#   r"   r8   r   rU   rR   r   r   )	r   r   r   r   r   r   r   r#   rg   )r   rB   r,   r   r   r   r.   r   r   r   r   test_get_blob_hit  s    zTest_Bucket.test_get_blob_hitc                 C   s   d}t dg i}t|}| j||d}| }t|}| |g  |j\}| |d d | |d d|  | |d d	d
i d S Nr#   r&   rb   rU   rR   r   /b/%s/orV   
projectionZnoAclr   r   r   Z
list_blobsr   r   rg   r   rB   r   r   r   r   r   r   r   r   r   test_list_blobs_defaults  s    z$Test_Bucket.test_list_blobs_defaultsc              
   C   s   d}d}d}d}d}d}d}d}d||||||d	}	t d
g i}
t|
}| j|d}|j||||||||d}t|}| |g  |
j\}| |d d | |d d|  | |d |	 d S )Nr#   
   ZABCDZ	subfolder/Tfullz#items/contentLanguage,nextPageToken)
maxResultsZ	pageTokenprefix	delimiterversionsr   rS   r&   r8   )max_resultsZ
page_tokenr   r   r   r   rS   r   rU   rR   r   r   rV   r   )r   rB   ZMAX_RESULTSZ
PAGE_TOKENPREFIXZ	DELIMITERVERSIONSZ
PROJECTIONZFIELDSZEXPECTEDr   r   r   r   r   r   r   r   r   test_list_blobs_w_all_arguments%  sF    	
z+Test_Bucket.test_list_blobs_w_all_argumentsc                 C   s   d}t dg i}t|}| j||d}| }t|}| |g  |j\}| |d d | |d d|  | |d d	d
i d S r   r   r   r   r   r   test_list_blobsK  s    zTest_Bucket.test_list_blobsc                 C   s\   ddl m} d}t }t|}| j||d}| ||j d|jd dg}| |j	| d S )Nr   rF   r#   rb   DELETErU   r   rW   )
rX   rG   r   r   r   r   deleter   r   _deleted_buckets)r   rG   rB   r   r   r   r\   r   r   r   test_delete_missX  s    zTest_Bucket.test_delete_missc                 C   sl   d}dg i}t |}d|_t|}| j||d}|jdd}| |d u  d|jd dg}| |j| d S )Nr#   r&   Trb   forcer   r   	r   _delete_bucketr   r   r   r   r   r   r   )r   rB   GET_BLOBS_RESPr   r   r   r   r\   r   r   r   test_delete_hitf  s    zTest_Bucket.test_delete_hitc                 C   s   d}d}d}dd|id|igi}i  }}t |||}d|_t|}| j||d}	|	jdd}
| |
d u  d|	jd d	g}| |j| d S )
Nr#   r0   
blob-name2r&   Trb   r   r   r   r   )r   rB   
BLOB_NAME1
BLOB_NAME2r   ZDELETE_BLOB1_RESPZDELETE_BLOB2_RESPr   r   r   r   r\   r   r   r   test_delete_force_delete_blobsv  s,    z*Test_Bucket.test_delete_force_delete_blobsc           	      C   sv   d}d}dd|igi}t |}d|_t|}| j||d}|jdd}| |d u  d|jd dg}| |j| d S )	Nr#   r0   r&   Trb   r   r   r   r   )	r   rB   r,   r   r   r   r   r   r\   r   r   r   test_delete_force_miss_blobs  s    z(Test_Bucket.test_delete_force_miss_blobsc                 C   sn   d}d}d}dd|id|igi}t |}d|_t|}| j||d}d|_| jt|jdd | |j	g  d S )	Nr#   r0   r   r&   Trb   r'   r   )
r   r   r   r   _MAX_OBJECTS_FOR_ITERATIONr   r   r   r   r   )r   rB   r   r   r   r   r   r   r   r   r   test_delete_too_many  s    z Test_Bucket.test_delete_too_manyc                 C   st   ddl m} d}d}t }t|}| j||d}| ||j| |j\}| |d d | |d d	||f  d S )
Nr   rF   r#   r   rb   rU   r   r   r   )	rX   rG   r   r   r   r   delete_blobrg   r   )r   rG   rB   r   r   r   r   r   r   r   r   test_delete_blob_miss  s    z!Test_Bucket.test_delete_blob_missc                 C   sr   d}d}t i }t|}| j||d}||}| |d u  |j\}| |d d | |d d||f  d S )Nr#   r"   rb   rU   r   r   r   )r   r   r   r   r   rg   r   )r   rB   r,   r   r   r   r   r   r   r   r   test_delete_blob_hit  s    
z Test_Bucket.test_delete_blob_hitc                 C   s<   d}t  }t|}| j||d}|g  | |jg  d S )Nr#   rb   )r   r   r   delete_blobsr   rg   )r   rB   r   r   r   r   r   r   test_delete_blobs_empty  s    
z#Test_Bucket.test_delete_blobs_emptyc                 C   s|   d}d}t i }t|}| j||d}||g |j}| t|d | |d d d | |d d d	||f  d S )
Nr#   r"   rb   r'   r   rU   r   r   r   )r   r   r   r   rg   r   r*   )r   rB   r,   r   r   r   r   r   r   r   test_delete_blobs_hit  s    z!Test_Bucket.test_delete_blobs_hitc           	      C   s   ddl m} d}d}d}ti }t|}| j||d}| ||j||g |j}| t	|d | |d d d	 | |d d
 d||f  | |d d d	 | |d d
 d||f  d S )Nr   rF   r#   r"   r   rb      rU   r   r   r   r'   )
rX   rG   r   r   r   r   r   rg   r   r*   )	r   rG   rB   r,   r   r   r   r   r   r   r   r   "test_delete_blobs_miss_no_on_error  s    z.Test_Bucket.test_delete_blobs_miss_no_on_errorc           	      C   s   d}d}d}t i }t|}| j||d}g }|||g|j | ||g |j}| t|d | |d d d | |d d	 d
||f  | |d d d | |d d	 d
||f  d S )Nr#   r"   r   rb   r   r   rU   r   r   r   r'   )r   r   r   r   rI   r   rg   r*   )	r   rB   r,   r   r   r   r   errorsr   r   r   r   !test_delete_blobs_miss_w_on_error  s    z-Test_Bucket.test_delete_blobs_miss_w_on_errorc                    s   dd}d G  fdddt }ti }t|}| j|d}| j||d}| }|||}| |j|u  | |j  |j	\}	d | f }
| |	d d	 | |	d
 |
 d S )Nsourcedestr"   c                       s   e Zd Z Zd f ZdS )z2Test_Bucket.test_copy_blobs_wo_name.<locals>._Blobr   Nr3   r4   r5   r#   r   r   r,   ZSOURCEr   r   _Blob  s   r   rb   /b/%s/o/%s/copyTo/b/%s/o/%srU   rc   r   
rY   r   r   r   Z	copy_blobr   r   r   r#   rg   )r   DESTr   r   r   r   r   r.   new_blobr   	COPY_PATHr   r   r   test_copy_blobs_wo_name  s$    z#Test_Bucket.test_copy_blobs_wo_namec                    s   dd}d d}G  fdddt }ti }t|}| j|d}| j||d}| }||||}	| |	j|u  | |	j| |j	\}
d ||f }| |
d	 d
 | |
d | d S )Nr   r   r"   new_namec                       s   e Zd Z Zd f ZdS )z1Test_Bucket.test_copy_blobs_w_name.<locals>._Blobr   Nr   r   r   r   r   r     s   r   rb   r   rU   rc   r   r   )r   r   ZNEW_NAMEr   r   r   r   r   r.   r   r   r   r   r   r   test_copy_blobs_w_name  s&    z"Test_Bucket.test_copy_blobs_w_namec                 C   s   d}d}d}d|i}t |}t|}| j||d}G dd dt}|||}	|j|	||d}
| |
j|u  | |
j| | |	j	|g d S )	NrC   r"   znew-blob-namer#   rb   c                   @   s   e Zd Zdd ZdddZdS )z+Test_Bucket.test_rename_blob.<locals>._Blobc                 S   s   || _ d||f | _g | _d S )Nr   )r#   r   _deleted)r   r#   Zbucket_namer   r   r   __init__=  s    z4Test_Bucket.test_rename_blob.<locals>._Blob.__init__Nc                 S   s   | j | d S r
   )r   rI   r   r   r   r   r   r   B  s    z2Test_Bucket.test_rename_blob.<locals>._Blob.delete)N)r3   r4   r5   r   r   r   r   r   r   r   ;  s   r   r   )
r   r   r   rY   Zrename_blobr   r   r   r#   r   )r   rC   r,   ZNEW_BLOB_NAMErh   r   r   r   r   r.   Zrenamed_blobr   r   r   test_rename_blob1  s    

zTest_Bucket.test_rename_blobc                 C   s*   d}d|i}| j |d}| |j| d S )NETAGetagr:   )r   r   r   )r   r   r:   r   r   r   r   	test_etagK  s    zTest_Bucket.test_etagc                 C   s*   d}d|i}| j |d}| |j| d S )NIDidr   )r   r   r   )r   r   r:   r   r   r   r   test_idQ  s    zTest_Bucket.test_idc                 C   s,   d}ddi}| j ||d}| |jd d S )Nr#   r|   ASr=   )r   r   r|   r   rB   beforer   r   r   r   test_location_getterW  s    z Test_Bucket.test_location_getterc                 C   sF   d}| j |d}| |jd  d|_| |jd | d|jv  d S )Nr#   r8   r   r|   )r   r   r|   r   _changesr   r   r   r   test_location_setter]  s    z Test_Bucket.test_location_setterc                 C   sX   d}ddiddid}|g}dd|ii}| j ||d	}| |j| | |j|u  d S )
Nr#   rp   rq   rr   *   rs   r{   rx   r=   )r   r   r   r>   )r   rB   LC_RULErulesr:   r   r   r   r   test_lifecycle_rules_gettere  s    z'Test_Bucket.test_lifecycle_rules_getterc                 C   s^   d}ddiddid}|g}| j |d}| |jg  ||_| |j| | d|jv  d S )	Nr#   rp   rq   rr   r   rs   r8   r{   )r   r   r   r   r   )r   rB   r   r   r   r   r   r   test_lifecycle_rules_settero  s    z'Test_Bucket.test_lifecycle_rules_setterc                 C   s   d}dddgdgdgd}d|i gi}| j ||d	}|j}| t|d
 | |d | | |d i  | |d |u  d S )Nr#     OPTIONSrR   	127.0.0.1Content-Typerl   rU   rn   ro   rz   r=   r   r   r'   )r   rz   r   r*   r>   )r   rB   
CORS_ENTRYr:   r   entriesr   r   r   test_cors_gettery  s    zTest_Bucket.test_cors_getterc                 C   s`   d}dddgdgdgd}| j |d}| |jg  |g|_| |j|g | d	|jv  d S )
Nr#   r   r   rR   r   r   r   r8   rz   )r   r   rz   r   r   )r   rB   r   r   r   r   r   test_cors_setter  s    zTest_Bucket.test_cors_setterc                 C   sT   d}d}d}d||di}| j ||d}| }| |d | | |d | d S )	Nr#   logspfxlogging	logBucketlogObjectPrefixr=   r   r   )r   get_loggingr   )r   rB   
LOG_BUCKETZ
LOG_PREFIXr   r   infor   r   r   test_get_logging_w_prefix  s    z%Test_Bucket.test_get_logging_w_prefixc                 C   sf   d}d}dd i}| j ||d}| | d u  || | }| |d | | |d d d S )Nr#   r   r   r=   r   r    r   r   r   Zenable_loggingr   )r   rB   r   r   r   r   r   r   r   test_enable_logging_defaults  s    
z(Test_Bucket.test_enable_logging_defaultsc                 C   sl   d}d}d}dd i}| j ||d}| | d u  ||| | }| |d | | |d | d S )Nr#   r   r   r   r=   r   r   r   )r   rB   r   ZLOG_PFXr   r   r   r   r   r   test_enable_logging  s    zTest_Bucket.test_enable_loggingc                 C   sP   d}ddddi}| j ||d}| | d u |  | | d u  d S )Nr#   r   r   r   r   r=   )r   r   r   Zdisable_loggingr   r   r   r   test_disable_logging  s    z Test_Bucket.test_disable_loggingc                 C   s*   d}d|i}| j |d}| |j| d S Nr   metagenerationr   r   r   r  r   ZMETAGENERATIONr:   r   r   r   r   test_metageneration  s    zTest_Bucket.test_metagenerationc                 C   s   |   }| |jd  d S r
   r  r   r   r   r   test_metageneration_unset  s    z%Test_Bucket.test_metageneration_unsetc                 C   s.   d}dt |i}| j|d}| |j| d S r  )strr   r   r  r  r   r   r   test_metageneration_string_val  s    z*Test_Bucket.test_metageneration_string_valc                 C   sH   ddd}d|i}| j |d}|j}| |d d | |d d d S )Nzproject-owner-12345Z23456)entityentityIdownerr   r  r  )r   r  r   )r   ZOWNERr:   r   r  r   r   r   
test_owner  s    
zTest_Bucket.test_ownerc                 C   s*   d}d|i}| j |d}| |j| d S Ni90  ZprojectNumberr   r   r   project_numberr   ZPROJECT_NUMBERr:   r   r   r   r   test_project_number  s    zTest_Bucket.test_project_numberc                 C   s   |   }| |jd  d S r
   r  r   r   r   r   test_project_number_unset  s    z%Test_Bucket.test_project_number_unsetc                 C   s.   d}dt |i}| j|d}| |j| d S r  )r	  r   r   r  r  r   r   r   test_project_number_string_val  s    z*Test_Bucket.test_project_number_string_valc                 C   s*   d}d|i}| j |d}| |j| d S )Nhttp://example.com/self/ZselfLinkr   )r   r   Z	self_link)r   Z	SELF_LINKr:   r   r   r   r   test_self_link  s    zTest_Bucket.test_self_linkc                 C   s*   d}d|i}| j |d}| |j| d S )Nr  r}   r   )r   r   r   )r   r   r:   r   r   r   r   test_storage_class_getter  s    z%Test_Bucket.test_storage_class_getterc                 C   sT   d}| j |d}| t d|_W d    n1 s60    Y  | d|jv  d S )Nr#   r8   ZBOGUSr}   )r   r   r   r   r>   r   r   r   r   r   !test_storage_class_setter_invalid  s
    $z-Test_Bucket.test_storage_class_setter_invalidc                 C   s8   d}| j |d}d|_| |jd | d|jv  d S )Nr#   r8   STANDARDr}   r   r   r   r   r   r   r   r   r   "test_storage_class_setter_STANDARD  s
    z.Test_Bucket.test_storage_class_setter_STANDARDc                 C   s8   d}| j |d}d|_| |jd | d|jv  d S )Nr#   r8   rw   r}   r  r   r   r   r   "test_storage_class_setter_NEARLINE	  s
    z.Test_Bucket.test_storage_class_setter_NEARLINEc                 C   s8   d}| j |d}d|_| |jd | d|jv  d S )Nr#   r8   ZDURABLE_REDUCED_AVAILABILITYr}   r  r   r   r   r   6test_storage_class_setter_DURABLE_REDUCED_AVAILABILITY  s
    zBTest_Bucket.test_storage_class_setter_DURABLE_REDUCED_AVAILABILITYc              	   C   sh   dd l }ddlm} ddlm} |j dddddd	|d
}||}d|i}| j|d}| |j| d S )Nr   )_RFC3339_MICROS)UTCi           "   %   )tzinfoZtimeCreatedr   )datetimeZgcloud._helpersr  r   strftimer   r   time_created)r   r'  r  r   	TIMESTAMPZTIME_CREATEDr:   r   r   r   r   test_time_created  s    
zTest_Bucket.test_time_createdc                 C   s   |   }| |jd  d S r
   )r   r   r)  r   r   r   r   test_time_created_unset!  s    z#Test_Bucket.test_time_created_unsetc                 C   s"   d}| j |d}| |jd d S )Nr#   r8   Fr   r   r   r   r   r   r   &test_versioning_enabled_getter_missing%  s    z2Test_Bucket.test_versioning_enabled_getter_missingc                 C   s0   d}dddii}| j ||d}| |jd d S )Nr#   r~   ry   Tr=   r-  r   r   r   r   test_versioning_enabled_getter*  s    z*Test_Bucket.test_versioning_enabled_getterc                 C   s2   d}| j |d}| |j d|_| |j d S )Nr#   r8   T)r   r>   r   r   r   r   r   r   test_versioning_enabled_setter0  s
    z*Test_Bucket.test_versioning_enabled_setterc                 C   s8   d}dd d di}| j |d}|  | |j| d S Nr#   websiteZmainPageSuffixZnotFoundPager8   r   Zconfigure_websiter   r9   r   rB   ZUNSETr   r   r   r   test_configure_website_defaults7  s    z+Test_Bucket.test_configure_website_defaultsc                 C   s<   d}ddddi}| j |d}|dd | |j| d S )Nr#   r2  htmlz404.htmlr3  r8   r4  )r   rB   ZWEBSITE_VALr   r   r   r   test_configure_website?  s    z"Test_Bucket.test_configure_websitec                 C   s8   d}dd d di}| j |d}|  | |j| d S r1  )r   Zdisable_websiter   r9   r5  r   r   r   test_disable_websiteG  s    z Test_Bucket.test_disable_websitec           	      C   s   ddl m} d}d|jdg}|g d}t|}t|}| j||d}d|j_d|j_|	  | 
t|j| | 
t|jg  |j}| 
t|d	 | 
|d d
 d | 
|d d d|  | 
|d d d|d i | 
|d d ddi d S )Nr   
_ACLEntityr#   allUsersr  Zroler   defaultObjectAclrb   Tr'   rU   PATCHr   r   re   r   rV   r   r   r   r;  READER_ROLEr   r   r   r   r@   r   make_publicr   r   rg   r*   )	r   r;  rB   
permissiveafterr   r   r   r   r   r   r   test_make_public_defaultsO  s$    
z%Test_Bucket.test_make_public_defaultsTc                 C   s  ddl m} d}d|jdg}|g d}||d}|rFd}t||}nd}t|||}t|}	| j|	|d	}
d
|
j_||
j_|
j	d
d | 
t|
j| | 
t|
j| |j}| 
t|| | 
|d d d | 
|d d d|  | 
|d d d|i | 
|d d ddi |sP| 
|d d d | 
|d d d|  | 
|d d d | 
|d d d|  | 
|d d d|i | 
|d d ddi d S )Nr   r:  r#   r<  r=  r>  r      rb   T)futurerU   r@  r   r   re   r   rV   r   r   r'   rR   z/b/%s/defaultObjectAclr?  rA  )r   default_object_acl_loadedr;  rB   rD  Zafter1Zafter2num_requestsr   r   r   r   r   r   r   _make_public_w_future_helperc  s<    

z(Test_Bucket._make_public_w_future_helperc                 C   s   | j dd d S )NTrJ  rL  r   r   r   r   test_make_public_w_future  s    z%Test_Bucket.test_make_public_w_futurec                 C   s   | j dd d S )NFrM  rN  rO  r   r   r   (test_make_public_w_future_reload_default  s    z4Test_Bucket.test_make_public_w_future_reload_defaultc                    s  ddl m} ddlm} g G fdddt G  fddd|}d}d	}d
|jdg}|g d}t|dd|igi}t|}	| j|	|d}
d|
j	_
d|
j_
||
_|
jdd | t|
j	| | t|
jg  | |
|dd fg |j}| t|d | |d d d | |d d d|  | |d d d|i | |d d ddi | |d d d | |d d d|  |
jd }| |d d |dd d S )Nr   r:  r   c                       sB   e Zd ZdZdd Zedd Zdd Zdd	 Zd fdd	Z	d
S )z5Test_Bucket.test_make_public_recursive.<locals>._BlobFc                 S   s   || _ || _d S r
   )_bucket_name)r   r   r#   r   r   r   r     s    z>Test_Bucket.test_make_public_recursive.<locals>._Blob.__init__c                 S   s   | S r
   r   rO  r   r   r   r     s    z9Test_Bucket.test_make_public_recursive.<locals>._Blob.aclc                 S   s   | S r
   r   rO  r   r   r   all  s    z9Test_Bucket.test_make_public_recursive.<locals>._Blob.allc                 S   s
   d| _ d S )NT)_grantedrO  r   r   r   
grant_read  s    z@Test_Bucket.test_make_public_recursive.<locals>._Blob.grant_readNc                    s     | j| j| j|f d S r
   )rI   rR  rS  rU  r   _savedr   r   save  s    z:Test_Bucket.test_make_public_recursive.<locals>._Blob.save)N)
r3   r4   r5   rU  r   propertyr   rT  rV  rY  r   rW  r   r   r     s   
r   c                       s   e Zd Z fddZdS )z9Test_Bucket.test_make_public_recursive.<locals>._Iteratorc                 3   s(   | dg D ]} | j|d V  qd S )Nr&   r#   )getr   )r   r-   itemr   r   r   r     s    zQTest_Bucket.test_make_public_recursive.<locals>._Iterator.get_items_from_responseN)r3   r4   r5   r   r   r]  r   r   	_Iterator  s   r^  r#   r"   r<  r=  r>  r&   rb   T	recursiver   rU   r@  r   r   re   r   rV   r   r   r'   rR   r   )r   r   )r   r;  r   r   rY   rB  r   r   r   r   r@   r   Z_iterator_classrC  r   r   rg   r*   r   )r   r;  r   r^  rB   r,   rD  rE  r   r   r   r   r   r   )r   rX  r   test_make_public_recursive  s>    

z&Test_Bucket.test_make_public_recursivec                 C   s   ddl m} d|jdg}|g d}d}d}d}d	d|id|igi}t||}t|}	| j|	|d
}
d|
j_d|
j_d|
_	| j
t|
jdd d S )Nr   r:  r<  r=  r>  r#   r0   r   r&   rb   Tr'   r_  )r   r;  rB  r   r   r   r   r@   r   r   r   r   rC  )r   r;  Z
PERMISSIVEZAFTERrB   r   r   r   r   r   r   r   r   r   #test_make_public_recursive_too_many  s$    

z/Test_Bucket.test_make_public_recursive_too_many)NNN)T)Hr3   r4   r5   r   r   rE   r]   r^   ri   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r
  r  r  r  r  r  r  r  r  r  r  r+  r,  r.  r/  r0  r6  r8  r9  rF  rL  rP  rQ  ra  rb  r   r   r   r   r6   X   s   
	'&



$:r6   c                   @   s,   e Zd ZdZdd Zedd Zdd ZdS )	r   Fc                 G   s   || _ g | _g | _d S r
   )
_responsesrg   r   )r   	responsesr   r   r   r     s    z_Connection.__init__c                 C   s   |  do| ddkS )Nz/b/r   r   )
startswithcount)r   r   r   r   _is_bucket_path  s    z_Connection._is_bucket_pathc                 K   s   ddl m} | j| |d}|dd}|dkr^| |r^| j| | jrVd S |dz | jd | jdd   }| _W n   |dY n0 |S d S )	Nr   rF   rU   r   r   r   Zmissr'   )	rX   rG   rg   rI   r[  rg  r   r   rc  )r   r   rG   rU   r   r-   r   r   r   rM     s    
 z_Connection.api_requestN)r3   r4   r5   r   r   staticmethodrg  rM   r   r   r   r   r     s
   
r   c                   @   s   e Zd ZdZdZdddZdS )r   z/b/namer#   Nc                 C   s
   || _ d S r
   r   r   r   r   r   r     s    z_Bucket.__init__)N)r3   r4   r5   r   r#   r   r   r   r   r   r     s   r   c                   @   s   e Zd ZdddZdS )r   Nc                 C   s   || _ || _d S r
   )r   ra   )r   r   ra   r   r   r   r     s    z_Client.__init__)N)r3   r4   r5   r   r   r   r   r   r     s   r   )Z	unittest2ZTestCaser   r6   rY   r   r   r   r   r   r   r   <module>   s   F       "