o
    ¹iƒu  ã                   @   sÈ   d Z 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m	Z	 ddl
mZ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 dd„ ZG dd„ deƒZG dd„ deƒZG dd„ deƒZdS )zTests for the notebook manager.é    N)Úcontextmanager)Úcombinations)Ú	HTTPError)ÚTestCaseÚskipIf)ÚNamedTemporaryFile)Úv4)ÚTemporaryDirectory)Ú
TraitErroré   )ÚFileContentsManagerc                 C   s>   |   |¡}zt |¡ W dS  ty   td|›ƒ Y dS w )z
    Make a directory.
    zDirectory already exists: N)Ú_get_os_pathÚosÚmakedirsÚOSErrorÚprint)Úcontents_managerÚapi_pathÚos_path© r   úh/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/notebook/services/contents/tests/test_manager.pyÚ	_make_dir   s   
ÿr   c                   @   sä   e Zd Zed&dd„ƒZdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zeejdkdƒdd„ ƒZdd„ ZeeedƒoBe ¡ dkdƒeej d¡dƒdd„ ƒƒZeej d¡dƒd d!„ ƒZeej d¡dƒd"d#„ ƒZd$d%„ ZdS )'ÚTestFileContentsManagerNc              
   c   ó`    |pd|› d}zd V  W n t y( } z|  |j|¡ W Y d }~d S d }~ww |  |¡ d S ©NzShould have raised HTTPError(ú)©r   ÚassertEqualÚstatus_codeÚfail©ÚselfÚstatusÚmsgÚer   r   r   ÚassertRaisesHTTPError"   ó   €
€ÿz-TestFileContentsManager.assertRaisesHTTPErrorc                 C   s8   |  |¡}|  |¡}t||tj |¡ƒ t ||¡ dS )zJMake a symlink to src from dst

        src and dst are api_paths
        N)r   r   r   ÚpathÚisfileÚsymlink)r!   r   ÚsrcÚdstÚsrc_os_pathÚdst_os_pathr   r   r   r)   ,   s   

zTestFileContentsManager.symlinkc                 C   sD   t ƒ }t|d}|  |j|¡ W d   ƒ d S 1 sw   Y  d S ©N©Úroot_dir)r	   r   r   r0   )r!   ÚtdÚfmr   r   r   Útest_root_dir6   s   
"þz%TestFileContentsManager.test_root_dirc                 C   sP   t ƒ }tj |dddd¡}| jtt|d W d   ƒ d S 1 s!w   Y  d S )NÚnotebookÚdirÚisÚmissingr/   )r	   r   r'   ÚjoinÚassertRaisesr
   r   )r!   r1   Úrootr   r   r   Útest_missing_root_dir;   s   "þz-TestFileContentsManager.test_missing_root_dirc                 C   s>   t ƒ }| jtt|jd W d   ƒ d S 1 sw   Y  d S r.   )r   r9   r
   r   Úname)r!   Útfr   r   r   Útest_invalid_root_dir@   s   "ÿz-TestFileContentsManager.test_invalid_root_dirc                 C   sÐ   t ƒ [}|}t|d}| d¡}d d¡}tjj|jg|¢R Ž }|  ||¡ t|d}| d¡}tj |jd¡}|  ||¡ t|d}| d¡}tj |jd¡}|  ||¡ W d   ƒ d S 1 saw   Y  d S )Nr/   z/path/to/notebook/test.ipynbú/ú
test.ipynbz////test.ipynb)	r	   r   r   Úsplitr   r'   r8   r0   r   )r!   r1   r:   r2   r'   Úrel_path_listÚfs_pathr   r   r   Útest_get_os_pathD   s    






"ðz(TestFileContentsManager.test_get_os_pathc           	   	   C   s¼   d}d}t ƒ ,}|}t tj ||¡¡ t|d}|j}| dd¡}| dd|› d¡}W d   ƒ n1 s6w   Y  |  ||¡ |  	|tj ||j
|¡¡ |  	|tj |||j
|¡¡ d S )Nu	   sub âˆ‚irztest-cp.ipynbr/   Úcpr@   r?   z/test.ipynb)r	   r   Úmkdirr'   r8   r   ÚcheckpointsÚcheckpoint_pathÚassertNotEqualr   Úcheckpoint_dir)	r!   ÚsubdÚcp_namer1   r:   r2   ÚcpmÚcp_dirÚ	cp_subdirr   r   r   Útest_checkpoint_subdirY   s"   
ÿÿø z.TestFileContentsManager.test_checkpoint_subdirc                 C   s²   t ƒ L}t|d}d}t||ƒ |j|dd}|  |d|› dd› ¡ | |¡}dd	„ |d
 D ƒ}|  d|v ¡ |  |d |¡ |  d|v ¡ W d   ƒ d S 1 sRw   Y  d S )Nr/   ztest bad symlinkú.txt©r'   ÚextÚtargetr?   zbad symlinkc                 S   ó   i | ]}|d  |“qS ©r<   r   ©Ú.0Úcontentr   r   r   Ú
<dictcomp>w   ó    
ÿz<TestFileContentsManager.test_bad_symlink.<locals>.<dictcomp>rY   úuntitled.txt)r	   r   r   Únew_untitledr)   ÚgetÚ
assertTruer   )r!   r1   Úcmr'   Ú
file_modelÚmodelÚcontentsr   r   r   Útest_bad_symlinkk   s   


ÿ"ïz(TestFileContentsManager.test_bad_symlinkÚwin32zwill not run on windowsc                 C   s¶   t ƒ N}t|d}d}t||ƒ | |¡}t dtj |d¡¡ |j|dd}| 	|¡}dd„ |d D ƒ}|  
d	|¡ |  |d	 |¡ |  d|¡ W d   ƒ d S 1 sTw   Y  d S )
Nr/   ztest recursive symlinkÚ	recursiverQ   rR   c                 S   rU   rV   r   rW   r   r   r   rZ   ‹   r[   zBTestFileContentsManager.test_recursive_symlink.<locals>.<dictcomp>rY   r\   )r	   r   r   r   r   r)   r'   r8   r]   r^   ÚassertInr   ÚassertNotIn)r!   r1   r`   r'   r   ra   rb   rc   r   r   r   Útest_recursive_symlink   s   



ÿ"ðz.TestFileContentsManager.test_recursive_symlinkc           	      C   s°   t ƒ K}t|d}d}d}|› d|› }t||ƒ |j|d d}|  ||d |¡ |j|dd	}| |¡}|  t|d
 dd„ d||g¡ W d   ƒ d S 1 sQw   Y  d S )Nr/   ztest good symlinkzgood symlinkr?   z	/zfoo.txt©r'   r'   F©rY   rY   c                 S   s   | d S )Nr<   r   )Úxr   r   r   Ú<lambda>¢   s    z;TestFileContentsManager.test_good_symlink.<locals>.<lambda>)Úkey)r	   r   r   Únewr)   r^   r   Úsorted)	r!   r1   r`   Úparentr<   r'   ra   Úsymlink_modelÚ	dir_modelr   r   r   Útest_good_symlink“   s   


þ"óz)TestFileContentsManager.test_good_symlinkÚgetuidr   zCan't test permissions as rootÚwinz!Can't test permissions on Windowsc                 C   sä   t ƒ e}t|d}|jdd}| |d ¡}t |d¡ z| |d¡}| d¡ W d   ƒ n1 s3w   Y  W n tyR } z|  	|j
d¡ W Y d }~nd }~ww |  d	¡ W d   ƒ d S W d   ƒ d S 1 skw   Y  d S )
Nr/   Úfile©Útyper'   é   Úwz
don't carei“  z!Should have raised HTTPError(403))r	   r   r]   r   r   ÚchmodÚopenÚwriter   r   r   r   )r!   r1   r`   rb   r   Úfr$   r   r   r   Útest_403§   s$   
ÿ€€ÿô
"öz TestFileContentsManager.test_403z"Can't test hidden files on Windowsc                 C   sd  t ƒ =}t|d}d}tj |d¡}t||ƒ |  t¡}| |¡ W d   ƒ n1 s,w   Y  |  	|j
jd¡ W d   ƒ n1 sCw   Y  t ƒ =}t|d}d}tj |d¡}t||ƒ |  t¡}| |¡ W d   ƒ n1 stw   Y  |  	|j
jd¡ W d   ƒ n1 s‹w   Y  |  t¡c}t ƒ P}t|d}d}tj |d¡}t||ƒ |j|d}| |d ¡}z	|j||d}W n tyÜ }	 z|  	|	jd¡ W Y d }	~	n
d }	~	ww |  d	¡ W d   ƒ n1 sìw   Y  W d   ƒ n1 sûw   Y  |  t¡e}t ƒ Q}t|d}d}tj |d¡}t||ƒ |j|d}| |d ¡}z	|j||d}W n tyM }	 z|  	|	jd¡ W Y d }	~	n
d }	~	ww |  d	¡ W d   ƒ n	1 s^w   Y  W d   ƒ n	1 snw   Y  t ƒ C}t|d}d}tj |d¡}t||ƒ |}
d
}|  t¡}| |
|¡ W d   ƒ n	1 s¥w   Y  |  	|j
jd¡ W d   ƒ n	1 s½w   Y  t ƒ C}t|d}d}tj |d¡}t||ƒ |}d}
|  t¡}| |
|¡ W d   ƒ n	1 sôw   Y  |  	|j
jd¡ W d   ƒ n	1 sw   Y  t ƒ C}t|d}d}tj |d¡}t||ƒ |}
d
}|  t¡}| |
|¡ W d   ƒ n	1 sCw   Y  |  	|j
jd¡ W d   ƒ n	1 s[w   Y  t ƒ D}t|d}d}tj |d¡}t||ƒ |}d}
|  t¡}| |
|¡ W d   ƒ n	1 s’w   Y  |  	|j
jd¡ W d   ƒ d S 1 s«w   Y  d S )Nr/   ú.hiddenúvisible.txté  Úvisibleú.hidden.txtrj   r'   z!Should have raised HTTPError(400)znew.txtzold.txt)r	   r   r   r'   r8   r   r9   r   Údelete_filer   Ú	exceptionr   ro   r   Úsaver   Úrename_file)r!   r1   r`   Ú
hidden_dirÚfile_in_hidden_pathÚexcinforb   r   Úresultr$   Úold_pathÚnew_pathr   r   r   Útest_400¸   sÔ   

ÿø

ÿø

€ÿ
€ó€ÿ

€ÿ
€ó€ÿ

ÿö

ÿö

ÿö

ÿ$öz TestFileContentsManager.test_400c           
      C   sÒ  |   t¡b}tƒ O}t|d}d}tj |d¡}t||ƒ |j|d}| 	|d ¡}z| 
|d¡}W n tyK }	 z|  |	jd¡ W Y d }	~	n
d }	~	ww |  d¡ W d   ƒ n1 s[w   Y  W d   ƒ n1 sjw   Y  |   t¡k}tƒ O}t|d}d	}tj |d
¡}t||ƒ |j|d}| 	|d ¡}z| 
|d¡}W n tyº }	 z|  |	jd¡ W Y d }	~	n
d }	~	ww |  d¡ W d   ƒ n1 sÊw   Y  W d   ƒ d S W d   ƒ d S 1 sâw   Y  d S )Nr/   r   r‚   rj   r'   r{   é”  z!Should have raised HTTPError(404)r„   r…   )r9   r   r	   r   r   r'   r8   r   ro   r   r^   r   r   r   )
r!   rŒ   r1   r`   rŠ   r‹   rb   r   r   r$   r   r   r   Útest_404(  sN   

€ÿ
€ó€ÿ

€ÿ
€óÿ"ÿz TestFileContentsManager.test_404c              	   C   sÜ  t ƒ á}t|d}ttj |jdd¡dƒ}| d¡ W d   ƒ n1 s%w   Y  ttj |jdd¡dƒ}| d¡ W d   ƒ n1 sFw   Y  |  d¡ | 	d¡ W d   ƒ n1 s`w   Y  |  d¡ | 	d¡ W d   ƒ n1 szw   Y  |  d¡ | 
d¡ W d   ƒ n1 s”w   Y  |  d¡ | dd	¡ W d   ƒ n1 s¯w   Y  |  d¡ |jd
dddœdd W d   ƒ n1 sÏw   Y  W d   ƒ d S W d   ƒ d S 1 sçw   Y  d S )Nr/   z..Úfoor{   Úbarr‘   zfoo/../../../barz../fooz../barrw   Ú Útext)ry   rY   Úformat)rb   r'   )r	   r   r}   r   r'   r8   r0   r~   r%   r^   ÚdeleteÚrenamerˆ   )r!   r1   r`   r   r   r   r   Útest_escape_rootK  s@   
ÿÿÿÿÿÿýüÿð"ðz(TestFileContentsManager.test_escape_root©N)Ú__name__Ú
__module__Ú__qualname__r   r%   r)   r3   r;   r>   rD   rP   rd   r   ÚsysÚplatformri   rt   Úhasattrr   ru   Ú
startswithr€   r   r’   rš   r   r   r   r   r       s*    	


o
"r   c                   @   s²   e Zd Zed*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S )+ÚTestContentsManagerNc              
   c   r   r   r   r    r   r   r   r%   e  r&   z)TestContentsManager.assertRaisesHTTPErrorc                 C   s@   | j }|  |¡ |jd |dg¡d |jd |dg¡d d S )Nr?   únb.ipynbrj   úfile.txt)r   Úmake_dirro   r8   )r!   r   r`   r   r   r   Úmake_populated_diro  s   
z&TestContentsManager.make_populated_dirc                 C   sÂ   | j  |¡}|  |d |¡ |  |d d¡ |d D ]D}|d dkr#q|d dkrA|  |d d¡ d |dg¡}|  |d |¡ q|d d	kr^|  |d d
¡ d |d
g¡}|  |d |¡ qd S )Nr'   ry   Ú	directoryrY   rw   r<   r¥   r?   r4   r¤   )r   r^   r   r8   )r!   r   rs   ÚentryÚcomplete_pathr   r   r   Úcheck_populated_dir_filesw  s    €öz-TestContentsManager.check_populated_dir_filesc                 C   s$   t ƒ | _| jj| _t| jd| _d S r.   )r	   Ú	_temp_dirr<   r1   r   r   ©r!   r   r   r   ÚsetUp‰  s
   
ÿzTestContentsManager.setUpc                 C   s   | j  ¡  d S r›   )r¬   Úcleanupr­   r   r   r   ÚtearDown  s   zTestContentsManager.tearDownc                 C   s   t | j|ƒ dS )zomake a subdirectory at api_path

        override in subclasses if contents are not on the filesystem.
        N)r   r   )r!   r   r   r   r   r¦   “  s   zTestContentsManager.make_dirc                 C   s0   t  dddi¡}t jd|gd}|j |¡ d S )NÚdisplay_datazapplication/javascriptzalert('hi');zprint('hi'))Úoutputs)ÚnbformatÚ
new_outputÚnew_code_cellÚcellsÚappend)r!   ÚnbÚoutputÚcellr   r   r   Úadd_code_cellš  s   z!TestContentsManager.add_code_cellc                 C   sl   | j }|jdd}|d }|d }| |¡}|d }tdt ¡  ƒ|d d< |  |¡ | ||¡ |||fS )	Nr4   rx   r<   r'   rY   g    €„.AÚmetadataÚcounter)r   r]   r^   ÚintÚtimer»   rˆ   )r!   r`   rb   r<   r'   Ú
full_modelr¸   r   r   r   Únew_notebookŸ  s   


z TestContentsManager.new_notebookc                 C   sž  | j }|jdd}t|tƒsJ ‚|  d|¡ |  d|¡ |  d|¡ |  |d d¡ |  |d d¡ |  |d d¡ |jdd}t|tƒsGJ ‚|  d|¡ |  d|¡ |  d|¡ |  |d d¡ |  |d d¡ |  |d d¡ |d }|j|d	}t|tƒs‚J ‚|  d|¡ |  d|¡ |  d|¡ |  |d d
¡ |  |d d¡ |  |d |› d¡ |j|dd}|  |d d¡ |j|dd}|  |d d¡ d S )Nr4   rx   r<   r'   ry   úUntitled.ipynbr¨   zUntitled Folderrj   rw   Úuntitledz	/untitledz.foo.barrR   zuntitled.foo.barzuntitled1.foo.bar)r   r]   Ú
isinstanceÚdictrg   r   )r!   r`   rb   Úsub_dirr   r   r   Útest_new_untitled­  s<   z%TestContentsManager.test_new_untitledc           	      C   sˆ   | j }|  ¡ \}}}| |¡}|  |d ¡ | ||¡ | |¡}|  |d |d ¡ d}| ||¡ | |¡}|  |d |d ¡ d S )NrY   Úlast_modifiedzrenamed.ipynb)r   rÁ   r^   r»   rˆ   ÚassertGreaterEqualr™   )	r!   r`   r¸   r<   r'   rb   Úsavedr   Úrenamedr   r   r   Útest_modified_dateÓ  s   


þz&TestContentsManager.test_modified_datec              
   C   s>  | j }|jdd}|d }|d }| |¡}t|tƒsJ ‚|  d|¡ |  d|¡ |  |d |¡ |  |d |¡ |j|ddd}|  |d |¡ |  |d d¡ |  |d	 d
¡ |  |d t¡ |j|dddd}|  |d	 d¡ d}|  d¡ |j|dd}| || ¡}t|tƒsŽJ ‚|  d|¡ |  d|¡ |  d|¡ |  |d d¡ |  |d | 	d¡› d|› ¡ |j|ddd }	| |	¡}
|  
dd
ddddddœ|
¡ |  d|
¡ |  d|
¡ |  d¡ | d¡}|  |d d¡ |  |d t¡ |  t|d ƒd¡ |  |d d¡ |  |d d¡ |j|| dd }|jddd }|jddd }|  |d d¡ |  |d d!¡ |d D ]?}|d |d krR|  ||¡ q?|d |d krc|  ||¡ q?|d |d krt|  ||¡ q?|  d"|ƒ › ¡ q?|  t¡ |jddd W d   ƒ d S 1 s˜w   Y  d S )#Nr4   rx   r<   r'   Trw   )rY   ry   ry   r—   r–   rY   Úbase64)rY   ry   r—   ú/foo/r“   ú.ipynbrR   rÂ   r?   rQ   r•   z
text/plainr\   zfoo/untitled.txt)rY   r—   Úmimetyper<   r'   ry   ÚwritableÚcreatedrÈ   úfoo/barr¨   é   Frk   r”   zUnexpected directory entry: )r   r]   r^   rÄ   rÅ   rg   r   ÚassertNotIsInstancer¦   ÚstripÚassertDictContainsSubsetÚassertIsInstanceÚlistÚlenr   r9   r   )r!   r`   rb   r<   r'   Úmodel2Ú
nb_as_fileÚnb_as_bin_filerÆ   Úfile_model_pathra   ÚdirmodelÚmodel2_no_contentÚfile_model_no_contentÚsub_sub_dir_no_contentr©   r   r   r   Útest_getî  s‚   

 
ù	ö

$ÿzTestContentsManager.test_getc                 C   s&  | j }|jdd}|d }|d }d|d< | ||¡}t|tƒs"J ‚|  d|¡ |  d|¡ |  |d d¡ |  t|j	|¡ d}|  
d¡ |j|dd}|d }| d	d
¡d }|d  }|d< | ||¡}t|tƒsmJ ‚|  d|¡ |  d|¡ |  |d d¡ |  |d |¡ |  t|j	|¡ d S )Nr4   rx   r<   r'   r@   rÎ   r“   ©r'   ry   r?   é   r   z/test_in_sub.ipynbztest_in_sub.ipynb)r   r]   ÚupdaterÄ   rÅ   rg   r   r9   r   r^   r¦   Úrsplit)r!   r`   rb   r<   r'   rÆ   Údr   r   r   r   Útest_updateG  s0   
zTestContentsManager.test_updatec                 C   s
  | j }|jdd}|d }|d }| |¡}| ||¡}t|tƒs#J ‚|  d|¡ |  d|¡ |  |d |¡ |  |d |¡ d}|  d¡ |j|dd}|d }|d }| |¡}| ||¡}t|tƒsgJ ‚|  d|¡ |  d|¡ |  |d d¡ |  |d d	¡ d S )
Nr4   rx   r<   r'   rÎ   r“   rä   rÂ   zfoo/Untitled.ipynb)	r   r]   r^   rˆ   rÄ   rÅ   rg   r   r¦   )r!   r`   rb   r<   r'   rÀ   rÆ   r   r   r   Ú	test_savem  s.   


zTestContentsManager.test_savec                 C   sB   | j }|  ¡ \}}}| |¡ |  t|j|¡ |  t|j|¡ d S r›   )r   rÁ   r˜   r9   r   r^   ©r!   r`   r¸   r<   r'   r   r   r   Útest_delete  s
   
zTestContentsManager.test_deletec              	   C   sÖ  | j }|  ¡ \}}}| |d¡ |  t|j|¡ t| d¡tƒs"J ‚tj	dkrGt|t
ƒrG|  d¡ | dd¡ W d   ƒ n1 sBw   Y  g d¢}|d d… }|dd … }|D ]}|  |¡ |  |¡ qYt|dƒD ]\}	}
|  d¡ | |	|
¡ W d   ƒ n1 s…w   Y  qk|  d¡ |jd	d
d W d   ƒ n1 s¢w   Y  | dd	¡ |D ]}|  |¡ q¯|D ](}|  d¡ | |¡ W d   ƒ n1 sÐw   Y  | dd	d¡}|  |¡ q¹|jd	d
d d S )NÚchanged_pathre   rƒ   zprevent: in name)r“   r”   rÓ   zfoo/bar/foozfoo/bar/foo/barr   i™  r‘   zfoo/bar_diffrÏ   )rS   rÓ   rå   )r   rÁ   r™   r9   r   r^   rÄ   rÅ   rŸ   r    r   r%   r§   r«   r   r]   Úreplace)r!   r`   r¸   r<   r'   Úall_dirsÚunchanged_dirsÚchanged_dirsÚ_dirr*   ÚdestÚ	unchangedÚchanged_dirnameÚnew_dirnamer   r   r   Útest_renamež  sB   ÿ
ÿ€ÿÿzTestContentsManager.test_renamec                 C   sN   | j }|  t¡}| d¡ W d   ƒ n1 sw   Y  |  |jjd¡ d S )Nr•   rƒ   )r   r9   r   r˜   r   r‡   r   )r!   r`   Úerrr   r   r   Útest_delete_rootÔ  s
   ÿz$TestContentsManager.test_delete_rootc                 C   s´   | j }d}d}|› d|› }|  |¡ |j|d}| |¡}|  |d |d  dd¡¡ | |d¡}|  |d d	¡ |  |d
 d¡ | |d¡}|  |d |¡ |  |d
 |¡ d S )Nu   Ã¥ bu   nb âˆš.ipynbr?   rj   r<   rÏ   z-Copy1.ipynbu   Ã¥ b/copy 2.ipynbzcopy 2.ipynbr'   )r   r¦   ro   Úcopyr   rî   )r!   r`   rq   r<   r'   Úorigrú   Úcopy2r   r   r   Ú	test_copyÚ  s   

zTestContentsManager.test_copyc                 C   s^   | j }|  ¡ \}}}| |¡d }|j |¡rJ ‚| |¡ | |¡d }|j |¡s-J ‚d S ©NrY   )r   rÁ   r^   ÚnotaryÚcheck_cellsÚtrust_notebook)r!   r`   r¸   r<   r'   Ú	untrustedÚtrustedr   r   r   Útest_trust_notebookï  s   
z'TestContentsManager.test_trust_notebookc                 C   s€   | j }|  ¡ \}}}| ||¡ |jD ]}|jdkr |jjr J ‚q| |¡ | |¡d }|jD ]}|jdkr=|jjs=J ‚q0d S )NÚcoderY   )	r   rÁ   Úmark_trusted_cellsr¶   Ú	cell_typer¼   r  r  r^   )r!   r`   r¸   r<   r'   rº   r   r   r   Útest_mark_trusted_cellsü  s   

€


€þz+TestContentsManager.test_mark_trusted_cellsc                 C   s€   | j }|  ¡ \}}}| ||¡ | ||¡ |j |¡rJ ‚| |¡ | |¡d }| ||¡ | ||¡ |j |¡s>J ‚d S rþ   )r   rÁ   r  Úcheck_and_signrÿ   Úcheck_signaturer  r^   rë   r   r   r   Útest_check_and_sign  s   
z'TestContentsManager.test_check_and_signr›   )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£   d  s,    	&Y&#6r£   c                   @   s   e Zd ZdZdd„ ZdS )ÚTestContentsManagerNoAtomiczQ
    Make same test in no atomic case than in atomic case, using inheritance
    c                 C   s,   t ƒ | _| jj| _t| jd| _d| j_d S )Nr/   F)r	   r¬   r<   r1   r   r   Úuse_atomic_writingr­   r   r   r   r®     s   
ÿz!TestContentsManagerNoAtomic.setUpN)rœ   r   rž   Ú__doc__r®   r   r   r   r   r    s    r  )r  r   rŸ   r¿   Ú
contextlibr   Ú	itertoolsr   Útornado.webr   Úunittestr   r   Útempfiler   r³   r   Úipython_genutils.tempdirr	   Ú	traitletsr
   Úfilemanagerr   r   r   r£   r  r   r   r   r   Ú<module>   s,      F   9