o
    ¹i¿  ã                   @   sl   d Z ddlZejjZddlZddlmZ ddlm	Z	m
Z
mZmZ ddlmZ ddlmZ G dd	„ d	eƒZdS )
zTest the /files/ handler.é    N)Úwrite)Únew_notebookÚnew_markdown_cellÚnew_code_cellÚ
new_output)Úurl_path_joiné   )ÚNotebookTestBasec                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú	FilesTestc           
   	   C   sh  ddg}ddg}|| }| j }|D ]Q}t|| dtj¡ƒ}tj |¡s(t |¡ tt|dƒdƒ}| 	d¡ W d   ƒ n1 s@w   Y  tt|dƒdƒ}| 	d¡ W d   ƒ n1 s]w   Y  q|D ]2}t|| dtj¡ƒ}|  
d	td
|dƒ¡}| ¡  |  |jd¡ |  
d	td
|dƒ¡}|  |jd¡ qe|D ]"}t|| dtj¡ƒ}dD ]}	|  
d	td
||	ƒ¡}|  |jd¡ q¨qšd| jj_zk|D ]6}t|| dtj¡ƒ}|  
d	td
|dƒ¡}| ¡  |  |jd¡ |  
d	td
|dƒ¡}| ¡  |  |jd¡ qÅ|D ]'}t|| dtj¡ƒ}dD ]}	|  
d	td
||	ƒ¡}| ¡  |  |j|	¡ qqþW d| jj_d S d| jj_w )Nu   Ã¥ bu
   Ã¥ b/Ã§. du   .Ã¥ bu
   Ã¥ b/.Ã§ dú/ÚfooÚwú.fooÚGETÚfilesi”  )r   r   TF)Únotebook_dirÚpjoinÚreplaceÚosÚsepÚpathÚexistsÚmkdirÚopenr   Úrequestr   Úraise_for_statusÚassertEqualÚtextÚstatus_codeÚnotebookÚcontents_managerÚallow_hidden)
ÚselfÚ
not_hiddenÚhiddenÚdirsÚnbdirÚdr   ÚfÚrr   © r*   úT/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/notebook/tests/test_files.pyÚtest_hidden_files   sf   þþ
ÿÿ€þ
ýþzFilesTest.test_hidden_filesc                 C   sÀ  | j }ttdƒtdtdddgdgd}tt|dƒd	d
d}t||dd W d  ƒ n1 s1w   Y  tt|dƒdƒ}| dt 	d¡ ¡ | 
¡  W d  ƒ n1 sWw   Y  tt|dƒd	ƒ}| d¡ | 
¡  W d  ƒ n1 sxw   Y  |  dd¡}|  |jd¡ |  d|j¡ t |j¡ |  dd¡}|  |jd¡ |  |jd d¡ |  |jdd… d¡ |  t|jƒd¡ |  dd¡}|  |jd¡ |  |jd d¡ |  |jd¡ dS )z@make sure ContentsManager returns right files (ipynb, bin, txt).u   Created by test Â³z
print(2*6)ÚstreamÚ12)r   )Úoutputs)Úcellsztestnb.ipynbr   zutf-8)Úencodingé   )ÚversionNztest.binÚwbó   ÿé   útest.txtÚfoobarr   zfiles/testnb.ipynbéÈ   zfiles/test.binzcontent-typezapplication/octet-streamr   é   úfiles/test.txtztext/plain; charset=UTF-8)r   r   r   r   r   r   r   r   r   ÚurandomÚcloser   r   r   ÚassertInr   ÚjsonÚloadsÚheadersÚcontentÚlen)r"   r&   Únbr(   r)   r*   r*   r+   Útest_contents_managerJ   sF   
ÿþÿ	ÿþ
þ

þzFilesTest.test_contents_managerc                 C   s    | j }d}tt|dƒdƒ}| |¡ W d   ƒ n1 sw   Y  |  dd¡}|j dd¡}|  d|¡ |  dd	¡}|j dd¡}|  d|¡ |  d
|¡ d S )NÚhellor7   r   r   r;   zContent-DispositionÚ Ú
attachmentzfiles/test.txt?download=1zfilename*=utf-8''test.txt)	r   r   r   r   r   rA   ÚgetÚassertNotInr>   )r"   r&   r   r(   r)   Údispositionr*   r*   r+   Útest_downloadt   s   ÿzFilesTest.test_downloadc                 C   sb   | j }d}tt|dƒdƒ}| |¡ W d   ƒ n1 sw   Y  |  dd¡}|  |jd¡ d S )Nz<div>Test test</div>z	test.htmlr   r   zview/test.htmlr9   )r   r   r   r   r   r   r   )r"   r&   Úhtmlr(   r)   r*   r*   r+   Útest_view_html„   s   ÿzFilesTest.test_view_htmlc              	   C   sè  | j }t t|dƒ¡ t t|ddƒ¡ dD ]Û}tt||ddƒdƒ}| |d ¡ W d  ƒ n1 s4w   Y  tt||ddƒdƒ}| |d	 ¡ W d  ƒ n1 sUw   Y  tt||dƒdƒ}| |d
 ¡ W d  ƒ n1 suw   Y  tt||dƒdƒ}| |d ¡ W d  ƒ n1 s•w   Y  td|ddƒ}|  d|¡}|  	|j
d¡ |  	|j|d ¡ td|ddƒ}|  d|¡}|  	|j
d¡ |  	|j|d	 ¡ td|ddƒ}|  d|¡}|  	|j
d¡ |  	|j|d ¡ qdS )z7pre-2.0 'files/' prefixed links are properly redirectedr   Úsub)rG   rO   zf1.txtr   z	/files/f1Nzf2.txtz	/files/f2z/f2zf3.txtz/f3Ú	notebooksr   r9   )r   r   r   r   Úmakedirsr   r   r   r   r   r   r   )r"   r&   Úprefixr(   Úurlr)   r*   r*   r+   Útest_old_files_redirectŽ   s:   ÿÿÿÿéz!FilesTest.test_old_files_redirectN)Ú__name__Ú
__module__Ú__qualname__r,   rE   rL   rN   rT   r*   r*   r*   r+   r
      s    7*
r
   )Ú__doc__r   r   Újoinr   r?   Únbformatr   Únbformat.v4r   r   r   r   Únotebook.utilsr   Úlaunchnotebookr	   r
   r*   r*   r*   r+   Ú<module>   s    