a
    m b                     @   s   d dl Z d dlmZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d dlmZ dd	lmZ ejd
dggd
ddggddggdddgggddd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )    N)Path)writes)new_code_cell)new_markdown_cell)new_notebook)
new_output   )expected_http_errorFu   å bu   ç. dTu   .å bu   .ç d)paramsc                 C   s   | j S )N)Zparam)Zrequest r   >lib/python3.9/site-packages/jupyter_server/tests/test_files.pymaybe_hidden   s    r   c                    s@   | dg|R ddiI d H }|j  |d ks<J ||j fd S )NfilesmethodGET)bodydecode)jp_fetch
path_partsrr   r   r   fetch_expect_200   s    r   c                    sd   t tjj,}| dg|R ddiI d H  W d    n1 s@0    Y  t|ds`J ||gd S )Nr   r   r   i  )pytestZraisestornadoZ
httpclientZHTTPClientErrorr	   )r   r   er   r   r   fetch_expect_404   s    :r   c           	         s   |\}}t |g|R  }|jddd ddg}|D ]}|| | q2|rp|D ]}t| g||R  I d H  qNn4t| g|dR  I d H  t| g|dR  I d H  d|j_|D ]}t| g||R  I d H  qd S )NTparentsexist_okfooz.foo)r   mkdir
write_textr   r   Zcontents_managerZallow_hidden)	r   jp_serverappjp_root_dirr   Z	is_hiddenr   pathZfoosr   r   r   r   test_hidden_files!   s    r%   c                    sF  t tdtdtdddgdgd}|djt|d	d
dd |ddt	d  |dd | dddI dH }|j
dksJ d|jdv sJ | dddI dH }|j
dksJ |jd dksJ |jdd dksJ t|jdksJ | dddI dH }|j
dksJ |jd dks.J |j dksBJ dS )z@make sure ContentsManager returns right files (ipynb, bin, txt).u   Created by test ³z
print(2*6)streamZ12)text)Zoutputs)Zcellsztestnb.ipynb   )versionzutf-8)encodingztest.bin      test.txtZfoobarzfiles/testnb.ipynbr   r   N   zfiles/test.binzcontent-typezapplication/octet-streamr      zfiles/test.txtztext/plain; charset=UTF-8)r   r   r   r   joinpathr!   r   write_bytesosurandomcoder   r   headerslen)r   r"   r#   nbr   r   r   r   test_contents_manager7   s0    
r9   c                    s   d}| d| | ddddI d H }|jdd}d|vsBJ | dddd	d
idI d H }|jdd}d|v svJ d|v sJ d S )NZhellor-   r   r   r.   zContent-Disposition Z
attachmentZdownloadT)r   r
   zfilename*=utf-8''test.txt)r1   r!   r6   get)r   r"   r#   r'   r   Zdispositionr   r   r   test_downloadX   s    r<   c                    s   | djddd | ddjddd dD ]`}| |dd|d  | |dd|d	  | |d|d
  | |d|d  q.dS )z7pre-2.0 'files/' prefixed links are properly redirectedr   Tr   sub)r:   r=   zf1.txtz	/files/f1zf2.txtz	/files/f2z/f2zf3.txtz/f3N)r1   r    r!   )r   r"   r#   prefixr   r   r   test_old_files_redirectf   s    r?   )r3   pathlibr   r   r   Znbformatr   Znbformat.v4r   r   r   r   Zutilsr	   Zfixturer   r   r   r%   r9   r<   r?   r   r   r   r   <module>   s&   &
!