1+ import json
2+ import pytest
3+ from pathlib import Path
4+ import shutil
5+
6+ ENDPOINT = '/reana_jupyterlab/files'
7+
8+ @pytest .fixture
9+ def filespace ():
10+ """
11+ test_workspace/
12+ folder1/
13+ file1.txt
14+ folder2/
15+ file2.csv
16+ file3.yaml
17+ folder3/
18+ file4.java
19+ file5.py
20+ file6.yaml
21+ """
22+
23+ base_path = Path ("./pytest_workspace" ).resolve ()
24+
25+ if base_path .exists ():
26+ shutil .rmtree (base_path )
27+
28+ folder3 = base_path / "folder1" / "folder2" / "folder3"
29+ folder3 .mkdir (parents = True )
30+
31+ # files
32+ (base_path / "file4.java" ).touch ()
33+ (base_path / "file5.py" ).touch ()
34+ (base_path / "file6.yaml" ).touch ()
35+ (base_path / "folder1" / "file1.txt" ).touch ()
36+ (base_path / "folder1" / "folder2" / "file2.csv" ).touch ()
37+ (base_path / "folder1" / "folder2" / "file3.yaml" ).touch ()
38+
39+ yield base_path
40+
41+ shutil .rmtree (base_path )
42+
43+ @pytest .mark .parametrize ('path, expected' , [
44+ ('pytest_workspace' , set ([('folder1' , 'directory' , 'pytest_workspace/folder1' ), ('file6.yaml' , 'file' , 'pytest_workspace/file6.yaml' )])),
45+ ('pytest_workspace/folder1' , set ([('folder2' , 'directory' , 'pytest_workspace/folder1/folder2' )])),
46+ ('pytest_workspace/folder1/folder2' , set ([('file3.yaml' , 'file' , 'pytest_workspace/folder1/folder2/file3.yaml' ), ('folder3' , 'directory' , 'pytest_workspace/folder1/folder2/folder3' )])),
47+ ('pytest_workspace/folder1/folder2/folder3' , set ()),
48+ ('pytest_workspace/folder4' , set ()),
49+ ('pytest_workspace/file4.java' , set ()),
50+ ('pytest_workspace/folder1/../file6.yaml' , set ())
51+ ])
52+ async def test_get_files (jp_fetch , path , expected , filespace ):
53+ try :
54+ response = await jp_fetch (ENDPOINT , params = {'path' : path })
55+ assert response .code == 200
56+
57+ data = json .loads (response .body )
58+
59+ assert 'entries' in data
60+ entries = data ['entries' ]
61+
62+ assert isinstance (entries , list )
63+
64+ received = set ((entry ['name' ], entry ['type' ], entry ['path' ]) for entry in entries )
65+ assert received == expected
66+
67+
68+ except Exception as e :
69+ print (e )
70+ assert e .code == 404
0 commit comments