o
    ¹iÉR  ã                   @   s¢   d dl Z d dlZd dlZd dlmZ d dlmZ d dlZd dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZmZ d dlZG dd	„ d	ejƒZed
krOe ¡  dS dS )é    N)ÚBytesIO)Úrange)ÚThreadPoolExecutorÚas_completed)Ú
GoogleAuth)ÚGoogleDrive)ÚApiRequestErrorÚGoogleDriveFilec                   @   s^  e Zd ZdZedƒZe ¡  d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/d0„ Zd1d2„ Zd3d4„ Z d5d6„ Z!d7d8„ Z"d9d:„ Z#d;d<„ Z$d=d>„ Z%G d?d@„ d@ƒZ&	AdNdBdC„Z'e( )dD¡dEdF„ ƒZ*e( )dD¡dGdH„ ƒZ+dIdJ„ Z,dKdL„ Z-dMS )OÚGoogleDriveFileTestzÏTests basic file operations of files.GoogleDriveFile.
  Upload and download of contents and metadata, and thread-safety checks.
  Equivalent to Files.insert, Files.update, Files.patch in Google Drive API.
  zsettings/test1.yamlza.pngzb.pngc                 C   óp   t | jƒ}| ¡ }d}||d< | ¡  |  |jd |¡ | d|d i¡}|  |d |¡ |  ||d g¡ d S )NÚfirsttestfileÚtitleÚid©r   ÚgaÚ
CreateFileÚUploadÚassertEqualÚmetadataÚDeleteUploadedFiles©ÚselfÚdriveÚfile1ÚfilenameÚfile2© r   úQ/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/pydrive/test/test_file.pyÚtest_01_Files_Insert   ó   
z(GoogleDriveFileTest.test_01_Files_Insertc                 C   r   )Nu   ì²«ë²ˆì§¸ íŒŒì¼r   r   r   r   r   r   r   Útest_02_Files_Insert_Unicode*   r   z0GoogleDriveFileTest.test_02_Files_Insert_Unicodec                 C   s¸   t | jƒ}| ¡ }d}d}||d< | |¡ | ¡  |  | ¡ |¡ | ¡  |  |jd |¡ |  | ¡ |¡ | d|d i¡}|  | ¡ |¡ |  |jd |¡ |  	||d g¡ d S )NÚsecondtestfileúhello world!r   r   )
r   r   r   ÚSetContentStringr   r   ÚGetContentStringÚFetchContentr   r   ©r   r   r   r   Úcontentr   r   r   r   Ú#test_03_Files_Insert_Content_String7   s   

z7GoogleDriveFileTest.test_03_Files_Insert_Content_Stringc                 C   s¸   t | jƒ}| ¡ }d}d}||d< | |¡ | ¡  |  | ¡ |¡ |  |jd |¡ | ¡  |  | ¡ |¡ | d|d i¡}|  | ¡ |¡ |  |jd |¡ |  	||d g¡ d S )Nu   ë‘ë²ˆì§¸ íŒŒì¼u   ì•ˆë…• ì„¸ìƒì•„!r   r   )
r   r   r   r#   r   r   r$   r   r%   r   r&   r   r   r   Ú+test_04_Files_Insert_Content_Unicode_StringL   s   

z?GoogleDriveFileTest.test_04_Files_Insert_Content_Unicode_Stringc                 C   sì   |   | jd ¡ |   | jd ¡ t| jƒ}| ¡ }d}||d< | | j¡ | ¡  |  |jd |¡ | 	¡  | 
| jd ¡ |  t | j| jd ¡d¡ | d|d i¡}| 
| jd ¡ |  t | j| jd ¡d¡ |  ||d g¡ d S )NÚ1Ú2Úfilecontentr   Tr   )ÚDeleteOldFileÚ
first_filer   r   r   ÚSetContentFiler   r   r   r%   ÚGetContentFileÚfilecmpÚcmpr   r   r   r   r   Ú!test_05_Files_Insert_Content_File`   s    
z5GoogleDriveFileTest.test_05_Files_Insert_Content_Filec                 C   s    t | jƒ}| ¡ }d}d}||d< | ¡  |  |jd |¡ ||d< | ¡  |  |jd |¡ | d|d i¡}| ¡  |  |jd |¡ |  ||d g¡ d S )NÚprepatchtestfileÚpatchtestfiler   r   )r   r   r   r   r   r   ÚFetchMetadatar   )r   r   r   r   Únewfilenamer   r   r   r   Útest_06_Files_Patchu   s   
z'GoogleDriveFileTest.test_06_Files_Patchc                 C   s¢   t | jƒ}| ¡ }d}d}d}||d< | |¡ | ¡  |  |jd |¡ ||d< | ¡  |  |jd |¡ |  | ¡ |¡ |  | ¡ |¡ |  ||d g¡ d S )Nr4   r5   r"   r   r   )	r   r   r   r#   r   r   r   r$   r   )r   r   r   r   r7   r'   r   r   r   Ú$test_07_Files_Patch_Skipping_Contentˆ   s   

z8GoogleDriveFileTest.test_07_Files_Patch_Skipping_Contentc                 C   sØ   t | jƒ}| ¡ }d}d}d}d}||d< | |¡ | ¡  |  |jd |¡ |  | ¡ |¡ | ¡  |  | ¡ |¡ ||d< | |¡ | ¡  |  |jd |¡ |  | ¡ |¡ |  | ¡ |¡ |  	||d g¡ d S )NÚpreupdatetestfileÚupdatetestfiler"   zhello new world!r   r   )
r   r   r   r#   r   r   r   r$   r%   r   )r   r   r   r   r7   r'   Ú
newcontentr   r   r   Útest_08_Files_Update_Stringœ   s(   


z/GoogleDriveFileTest.test_08_Files_Update_Stringc                 C   s  |   | jd ¡ |   | jd ¡ t| jƒ}| ¡ }d}d}||d< | | j¡ | ¡  |  |j	d |¡ | 
¡  | | jd ¡ |  t | j| jd ¡d¡ ||d< | | j¡ | ¡  |  |j	d |¡ | | jd ¡ |  t | j| jd ¡d¡ |  ||d g¡ d S )Nr*   r:   r;   r   Tr   )r-   r.   Úsecond_filer   r   r   r/   r   r   r   r%   r0   r1   r2   r   )r   r   r   r   r7   r   r   r   Útest_09_Files_Update_File¶   s(   
z-GoogleDriveFileTest.test_09_Files_Update_Filec                 C   sª   t | jƒ}| ¡ }| ¡  |  |jd d ¡ | d|d i¡}| ¡  |  |jd d ¡ | ¡  |  |jd d ¡ | ¡  |  |jd d ¡ |  	||d g¡ d S ©NÚlabelsÚtrashedr   )
r   r   r   r   ÚassertFalser   r6   ÚTrashÚ
assertTruer   ©r   r   r   r   r   r   r   Útest_Files_Trash_FileÓ   s   
z)GoogleDriveFileTest.test_Files_Trash_Filec                 C   sz   t | jƒ}| ¡ }| ¡  |  |jd d ¡ | d|d i¡}| ¡  | ¡  |  |jd d ¡ |  	||d g¡ d S r@   )
r   r   r   r   rC   r   rD   r6   rE   r   rF   r   r   r   Útest_Files_Trash_File_Just_IDæ   s   
z1GoogleDriveFileTest.test_Files_Trash_File_Just_IDc                 C   s²   t | jƒ}| ¡ }| ¡  | ¡  |  |jd d ¡ | d|d i¡}| ¡  |  |jd d ¡ | ¡  |  	|jd d ¡ | ¡  |  	|jd d ¡ |  
||d g¡ d S r@   )r   r   r   r   rD   rE   r   r6   ÚUnTrashrC   r   rF   r   r   r   Útest_Files_UnTrash_Fileö   s   
z+GoogleDriveFileTest.test_Files_UnTrash_Filec                 C   s‚   t | jƒ}| ¡ }| ¡  | ¡  |  |jd d ¡ | d|d i¡}| ¡  | ¡  |  	|jd d ¡ |  
||d g¡ d S r@   )r   r   r   r   rD   rE   r   rI   r6   rC   r   rF   r   r   r   Útest_Files_UnTrash_File_Just_ID  s   
z3GoogleDriveFileTest.test_Files_UnTrash_File_Just_IDc              
   C   st   t | jƒ}| ¡ }| ¡  | d|d i¡}| ¡  z| ¡  |  d¡ W d S  ty9 } zW Y d }~d S d }~ww ©Nr   zFile not deleted correctly.©r   r   r   r   ÚDeleter6   Úfailr   ©r   r   r   r   Úer   r   r   Útest_Files_Delete_File  ó   
€ÿz*GoogleDriveFileTest.test_Files_Delete_Filec              
   C   st   t | jƒ}| ¡ }| ¡  | d|d i¡}| ¡  z| ¡  |  d¡ W d S  ty9 } zW Y d }~d S d }~ww rL   rM   rP   r   r   r   Útest_Files_Delete_File_Just_ID)  rS   z2GoogleDriveFileTest.test_Files_Delete_File_Just_IDc                 C   sL   t | jƒ}| ¡ }| ¡  |  d|v ¡ | d¡ |  d|v ¡ | ¡  d S ©NÚpermissions)r   r   r   r   rC   r6   rE   rN   )r   r   r   r   r   r   Útest_Files_FetchMetadata_Fields:  s   

z3GoogleDriveFileTest.test_Files_FetchMetadata_Fieldsc                 C   s   t | jƒ}| ¡ }| ¡  | ¡ }|  t|ƒd¡ |  t|d ƒd¡ | ddddœ¡}|  |¡ |  t|d ƒd¡ |  |d d d d¡ | ¡ }|  t|d ƒd¡ |  |d d d d¡ |  |d d d¡ | d|d i¡}| ¡ }|  t|ƒd¡ |  |d d d¡ | 	¡  d S )	Né   rV   ÚanyoneÚreader©ÚtypeÚvalueÚroleé   r\   r   )
r   r   r   r   ÚGetPermissionsr   ÚlenÚInsertPermissionrE   rN   )r   r   r   rV   Ú
permissionr   r   r   r   Útest_Files_Insert_PermissionE  s,   
þ
z0GoogleDriveFileTest.test_Files_Insert_Permissionc                 C   sX   t | jƒ}| ¡ }| ¡  |  d|v ¡ | ¡ }|  |d u¡ |  d|v ¡ | ¡  d S rU   )r   r   r   r   rC   r`   rE   rN   )r   r   r   rV   r   r   r   Útest_Files_Get_Permissionsd  s   
z.GoogleDriveFileTest.test_Files_Get_Permissionsc                 C   s´   t | jƒ}| ¡ }| ¡  | ddddœ¡ | ¡ }|  t|ƒd¡ |  t|d ƒd¡ | |d d ¡ |  t|d ƒd¡ | d|d i¡}| ¡ }|  t|ƒd¡ | 	¡  d S )NrY   rZ   r[   r_   rV   rX   r   )
r   r   r   r   rb   r`   r   ra   ÚDeletePermissionrN   )r   r   r   rV   r   r   r   r   Útest_Files_Delete_Permissionq  s    
þz0GoogleDriveFileTest.test_Files_Delete_Permissionc              
   C   sd   t | jƒ}| ¡ }| ¡  z| d¡ |  d¡ W n ty+ } zW Y d }~nd }~ww | ¡  d S )Nz
invalid idz2Deleting invalid permission not raising exception.)r   r   r   r   rf   rO   r   rN   )r   r   r   rQ   r   r   r   Ú$test_Files_Delete_Permission_Invalid†  s   

€ÿz8GoogleDriveFileTest.test_Files_Delete_Permission_Invalidc                 C   s‚   t | jƒ}| ¡ }d}| |¡ | ddi¡ |jdd}|  ||d¡ d}|j|dd t|ƒ 	¡ }|  ||d¡ t
 |¡ d S )Nz*Generic, non-exhaustive ASCII test string.ÚconvertTú
text/plain©ÚmimetypezStrings do not matchú_tmp_downloaded_file_name.txt)r   r   r   r#   r   r$   r   r0   ÚopenÚreadÚosÚremove)r   r   r   Útest_stringÚdownloaded_stringÚdownloaded_file_namer   r   r   Ú%test_GFile_Conversion_Lossless_String“  s   

z9GoogleDriveFileTest.test_GFile_Conversion_Lossless_Stringc                 C   sR   t | jƒ}| ¡ }d}d}d}t|dd}| |¡ | ¡  t |¡}||||fS )Nz_tmp_source_file.txtrm   z+Generic, non-exhaustive
 ASCII test string.zw+)Úmode)r   r   r   rn   ÚwriteÚcloseÚ	test_utilÚStripNewlines)r   r   r   Ú	file_namert   Úoriginal_file_contentÚsource_filer   r   r   Úsetup_gfile_conversion_test­  s   


z/GoogleDriveFileTest.setup_gfile_conversion_testc                 C   sF   t j |¡o
t  |¡ t j |¡ot  |¡ | ¡  d S  | ¡  d S ©N)rp   ÚpathÚexistsrq   rN   )r   r   r{   rt   r   r   r   Úcleanup_gfile_conversion_test¼  s   €ÿz1GoogleDriveFileTest.cleanup_gfile_conversion_testc                 C   s¢   |   ¡ \}}}}z@| |¡ | ddi¡ |jddd}t |¡}|  ||¡ |j|dd t|ƒ 	¡ }t |¡}|  ||¡ W |  
|||¡ d S |  
|||¡ w )Nri   Trj   ©rl   Ú
remove_bom)r„   )r~   r/   r   r$   ry   rz   r   r0   rn   ro   r‚   )r   r   r{   r|   rt   Údownloaded_content_no_bomÚdownloaded_contentr   r   r   Ú test_GFile_Conversion_Remove_BOMÃ  s"   
ÿ
ÿÿ
"z4GoogleDriveFileTest.test_GFile_Conversion_Remove_BOMc                 C   s¢   |   ¡ \}}}}z@| |¡ | ddi¡ |jdd}|jddd}|jdd}|  ||¡ |  ||¡ |  t|ƒt|ƒk¡ W |  |||¡ dS |  |||¡ w )zYTests whether you can switch between the BOM appended and removed
    version on the fly.ri   Trj   rk   rƒ   N)	r~   r/   r   r$   r   ÚassertNotEqualrE   ra   r‚   )r   r   r{   r|   rt   Úcontent_bomÚcontent_no_bomÚcontent_bom_2r   r   r   Ú$test_Gfile_Conversion_Add_Remove_BOMÛ  s   
ÿ
ÿ"z8GoogleDriveFileTest.test_Gfile_Conversion_Add_Remove_BOMc                 C   s\   t dƒ}t| ¡ ƒ}d d¡}t ||¡ t| ¡ ƒ}|  ||¡ |  | ¡ d d¡¡ d S )NÚabcõ   ï»¿Úutf8õ   ï»¿abc©r   ra   ÚgetvalueÚencoder	   Ú_InsertPrefixÚassertGreaterr   )r   Úfile_objÚoriginal_lengthÚchar_to_insertÚmodified_lengthr   r   r   Útest_InsertPrefixð  s   
z%GoogleDriveFileTest.test_InsertPrefixc                 C   sh   d}t |ƒ}t| ¡ ƒ}d d¡}t ||¡ t| ¡ ƒ}|  ||¡ d| }|  | ¡ | d¡¡ d S )NÁ`	  abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcrŽ   r   r‘   )r   Útest_contentr–   r—   r˜   r™   Úexpected_contentr   r   r   Útest_InsertPrefixLargeü  s   
z*GoogleDriveFileTest.test_InsertPrefixLargec                 C   s\   t d d¡ƒ}t| ¡ ƒ}d d¡}t ||¡ t| ¡ ƒ}|  ||¡ |  | ¡ d¡ d S )Nr   r   rŽ   r   ©r   r“   ra   r’   r	   Ú_RemovePrefixÚ
assertLessr   )r   r–   r—   Úchar_to_remover™   r   r   r   Útest_RemovePrefix
  s   
z%GoogleDriveFileTest.test_RemovePrefixc                 C   sh   d}t | d¡ƒ}t| ¡ ƒ}d d¡}t ||¡ t| ¡ ƒ}|  ||¡ |  | ¡ |dd … ¡ d S )Nuc	  ï»¿abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcr   rŽ   rX   rŸ   )r   rœ   r–   r—   r¢   r™   r   r   r   Útest_RemovePrefixLarge  s   
z*GoogleDriveFileTest.test_RemovePrefixLargec                   @   s   e Zd Zddd„Zdd„ ZdS )z GoogleDriveFileTest.UploadWorkerFc                 C   s(   || _ i | _|rd|j ¡ i| _d S d S )NÚhttp)Úgdrive_fileÚparamÚauthÚGet_Http_Object)r   r¦   Úgenerate_httpr   r   r   Ú__init__&  s
   ÿz)GoogleDriveFileTest.UploadWorker.__init__c                 C   s   | j j| jd d S )N©r§   )r¦   r   r§   ©r   r   r   r   Úrun,  s   z$GoogleDriveFileTest.UploadWorker.runN©F)Ú__name__Ú
__module__Ú__qualname__r«   r®   r   r   r   r   ÚUploadWorker%  s    
r³   Fc                 C   s0  t | jƒ}t|d}g }t ¡ }t|ƒD ] }|d dkr| jn| j}	| ¡ }
||
d< |
 	|	¡ | 
|
¡ q|jdd| id ¡ }|  t|ƒdk¡ g }t|ƒD ]}|  || |¡}| 
| |j¡¡ qPt|ƒD ]	}|  | ¡ ¡ qh| ¡  |jdd| id ¡ }|  t|ƒdk¡ |  |d	d
„ |D ƒ¡ d S )N)Úmax_workersr_   r   r   Úqz title = '%s' and trashed = falser¬   é
   c                 S   s   g | ]}|d  ‘qS )r   r   )Ú.0Úfir   r   r   Ú
<listcomp>U  s    z:GoogleDriveFileTest._parallel_uploader.<locals>.<listcomp>)r   r   r   ry   ÚCreateRandomFileNamer   r.   r>   r   r/   ÚappendÚListFileÚGetListrE   ra   r³   Úsubmitr®   r   ÚassertIsNoneÚ	exceptionÚshutdownr   )r   Únum_of_uploadsÚnum_of_workersÚuse_per_thread_httpr   Úthread_poolÚupload_filesÚremote_nameÚir{   Úup_fileÚfilesÚfuturesÚupload_workerÚfuturer   r   r   Ú_parallel_uploader/  s@   


ÿÿ
ÿÿÿz&GoogleDriveFileTest._parallel_uploaderéP   c                 C   s   |   dd¡ d S )Nr¶   ©rÎ   r­   r   r   r   Ú3test_Parallel_Files_Insert_File_Auto_Generated_HTTPW  s   zGGoogleDriveFileTest.test_Parallel_Files_Insert_File_Auto_Generated_HTTPc                 C   s   |   ddd¡ d S )Nr¶   TrÐ   r­   r   r   r   Ú%test_Parallel_Insert_File_Passed_HTTP[  s   z9GoogleDriveFileTest.test_Parallel_Insert_File_Passed_HTTPc                 C   s&   zt  |¡ W d S  ty   Y d S w r   )rp   rq   ÚOSError)r   r{   r   r   r   r-   b  s
   ÿz!GoogleDriveFileTest.DeleteOldFilec                 C   s$   |D ]}|  d|i¡}| ¡  qd S )Nr   )r   rN   )r   r   ÚidsÚelementÚtmp_filer   r   r   r   h  s   
þz'GoogleDriveFileTest.DeleteUploadedFilesNr¯   ).r°   r±   r²   Ú__doc__r   r   ÚLocalWebserverAuthr.   r>   r   r    r(   r)   r3   r8   r9   r=   r?   rG   rH   rJ   rK   rR   rT   rW   rd   re   rg   rh   ru   r~   r‚   r‡   rŒ   rš   rž   r£   r¤   r³   rÎ   Útimeout_decoratorÚtimeoutrÑ   rÒ   r-   r   r   r   r   r   r
      sX    
ÿ(

r
   Ú__main__)r1   rp   ÚunittestÚior   Ú	six.movesr   rÙ   Úconcurrent.futuresr   r   Úpydrive.authr   Úpydrive.driver   Úpydrive.filesr   r	   ry   ÚTestCaser
   r°   Úmainr   r   r   r   Ú<module>   s&       `ÿ