-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_local_storage.py
More file actions
70 lines (56 loc) · 2.59 KB
/
Copy pathtest_local_storage.py
File metadata and controls
70 lines (56 loc) · 2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import os
import filecmp
import shutil
from browserstate.storage.local_storage import LocalStorage
from browserstate.browser_state import BrowserState, BrowserStateOptions
import pytest
@pytest.mark.asyncio
async def test_local_storage_upload_download(local_storage_base, dummy_session_dir):
user_id = "test_user"
session_id = "session1"
storage = LocalStorage(local_storage_base)
await storage.upload(user_id, session_id, dummy_session_dir)
downloaded_path = await storage.download(user_id, session_id)
original_file = os.path.join(dummy_session_dir, "test.txt")
downloaded_file = os.path.join(downloaded_path, "test.txt")
assert os.path.exists(downloaded_file)
assert filecmp.cmp(original_file, downloaded_file, shallow=False)
original_subfile = os.path.join(dummy_session_dir, "subfolder", "sub.txt")
downloaded_subfile = os.path.join(downloaded_path, "subfolder", "sub.txt")
assert os.path.exists(downloaded_subfile)
assert filecmp.cmp(original_subfile, downloaded_subfile, shallow=False)
sessions = await storage.list_sessions(user_id)
assert session_id in sessions
await storage.delete_session(user_id, session_id)
sessions_after = await storage.list_sessions(user_id)
assert session_id not in sessions_after
shutil.rmtree(downloaded_path, ignore_errors=True)
@pytest.mark.asyncio
async def test_local_storage_new_session_creation(local_storage_base):
user_id = "new_user"
session_id = "new_session"
storage = LocalStorage(local_storage_base)
downloaded_path = await storage.download(user_id, session_id)
assert os.path.exists(downloaded_path)
assert os.path.isdir(downloaded_path)
assert os.listdir(downloaded_path) == []
@pytest.mark.asyncio
async def test_browser_state_integration(tmp_path):
user_id = "integration_user"
session_id = "integration_session"
base_storage = str(tmp_path)
storage = LocalStorage(base_storage)
options = BrowserStateOptions(user_id=user_id, local_storage_path=base_storage)
browser_state = BrowserState(options)
session_path = os.path.join(base_storage, user_id, session_id)
os.makedirs(session_path, exist_ok=True)
file_path = os.path.join(session_path, "state.txt")
with open(file_path, "w") as f:
f.write("Initial state")
active_session = await browser_state.mount(session_id)
mounted_file = os.path.join(active_session, "state.txt")
assert os.path.exists(mounted_file)
with open(mounted_file, "r") as f:
assert f.read() == "Initial state"
await browser_state.unmount()
assert not os.path.exists(mounted_file)