Skip to content

Commit c34bb87

Browse files
committed
test(api): add cases for directory backup and restore
1 parent 3c4e36a commit c34bb87

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed

tsdfileapi/test_file_api.py

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2240,6 +2240,96 @@ def test_app_backend(self) -> None:
22402240
)
22412241
self.assertEqual(resp.status_code, 200)
22422242

2243+
# backup and restoring directories
2244+
2245+
directory = "dir1"
2246+
files = ["some.data", "other.data", "my.db"]
2247+
2248+
# upload files
2249+
for file in files:
2250+
resp = requests.put(
2251+
f"{self.apps}/ega/files/{directory}/{file}",
2252+
data=lazy_file_reader(self.so_sweet),
2253+
headers=headers,
2254+
)
2255+
self.assertEqual(resp.status_code, 201)
2256+
2257+
# verify files are uploaded
2258+
resp = requests.get(
2259+
f"{self.apps}/ega/files/{directory}",
2260+
headers=headers,
2261+
)
2262+
self.assertEqual(resp.status_code, 200)
2263+
for file in json.loads(resp.text).get("files"):
2264+
self.assertTrue(file.get("filename") in files)
2265+
2266+
resp = requests.delete(
2267+
f"{self.apps}/ega/files/{directory}",
2268+
headers=headers,
2269+
)
2270+
self.assertEqual(resp.status_code, 200)
2271+
2272+
# verify deletion
2273+
for file in files:
2274+
resp = requests.get(
2275+
f"{self.apps}/ega/files/{directory}/{file}",
2276+
headers=headers,
2277+
)
2278+
self.assertEqual(resp.status_code, 404)
2279+
2280+
# check the backup
2281+
resp = requests.get(
2282+
f"{self.apps}/ega/backup/files/{directory}",
2283+
headers=headers,
2284+
)
2285+
self.assertEqual(resp.status_code, 200)
2286+
for file in json.loads(resp.text).get("files"):
2287+
self.assertTrue(file.get("filename") in files)
2288+
2289+
# restore the directory
2290+
resp = requests.post(
2291+
f"{self.apps}/ega/backup/files/{directory}?restore",
2292+
headers=headers,
2293+
)
2294+
self.assertEqual(resp.status_code, 200)
2295+
# FIXME: the API returns [] in restores for directory restorations, needs to be addressed and tested
2296+
# self.assertEqual(len(json.loads(resp.text).get("restores")), len(files))
2297+
2298+
# check the restored files
2299+
resp = requests.get(
2300+
f"{self.apps}/ega/files/{directory}",
2301+
headers=headers,
2302+
)
2303+
self.assertEqual(resp.status_code, 200)
2304+
for file in json.loads(resp.text).get("files"):
2305+
self.assertTrue(file.get("filename") in files)
2306+
2307+
# remove the directory completely
2308+
resp = requests.delete(
2309+
f"{self.apps}/ega/files/{directory}",
2310+
headers=headers,
2311+
)
2312+
self.assertEqual(resp.status_code, 200)
2313+
resp = requests.delete(
2314+
f"{self.apps}/ega/backup/files/{directory}",
2315+
headers=headers,
2316+
)
2317+
self.assertEqual(resp.status_code, 200)
2318+
2319+
# verify deletion
2320+
for file in files:
2321+
resp = requests.get(
2322+
f"{self.apps}/ega/files/{directory}/{file}",
2323+
headers=headers,
2324+
)
2325+
self.assertEqual(resp.status_code, 404)
2326+
for file in files:
2327+
resp = requests.get(
2328+
f"{self.apps}/ega/backup/files/{directory}/{file}",
2329+
headers=headers,
2330+
)
2331+
self.assertEqual(resp.status_code, 404)
2332+
22432333
def test_app_backend_encryption(self) -> None:
22442334
"""Test app backend with encrypted retrieval of data."""
22452335

0 commit comments

Comments
 (0)