63 lines
2.2 KiB
Python
63 lines
2.2 KiB
Python
import sqlite3
|
|
import tempfile
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
import browser_session
|
|
import retailer_sessions
|
|
|
|
|
|
class BrowserSessionTests(unittest.TestCase):
|
|
def test_read_firefox_ls_entries_reads_storage_from_copied_sqlite(self):
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
profile_dir = Path(tmpdir) / "abcd.default-release"
|
|
ls_dir = profile_dir / "storage" / "default" / "https+++www.costco.com" / "ls"
|
|
ls_dir.mkdir(parents=True)
|
|
db_path = ls_dir / "data.sqlite"
|
|
|
|
with sqlite3.connect(db_path) as connection:
|
|
connection.execute("CREATE TABLE data (key TEXT, value TEXT)")
|
|
connection.execute(
|
|
"INSERT INTO data (key, value) VALUES (?, ?)",
|
|
("session", '{"costco":{"clientIdentifier":"481b1aec-aa3b-454b-b81b-48187e28f205"}}'),
|
|
)
|
|
|
|
entries = browser_session.read_firefox_storage_entries(
|
|
profile_dir,
|
|
origin_filters=["costco.com"],
|
|
)
|
|
|
|
self.assertEqual(1, len(entries))
|
|
self.assertEqual("https://www.costco.com", entries[0].origin)
|
|
self.assertEqual("session", entries[0].key)
|
|
|
|
def test_extract_costco_headers_from_storage_json(self):
|
|
entries = [
|
|
browser_session.StorageEntry(
|
|
origin="https://www.costco.com",
|
|
key="authState",
|
|
value=(
|
|
'{"authorization":"Bearer header.payload.signature",'
|
|
'"wcsClientId":"4900eb1f-0c10-4bd9-99c3-c59e6c1ecebf",'
|
|
'"clientIdentifier":"481b1aec-aa3b-454b-b81b-48187e28f205"}'
|
|
),
|
|
source="memory",
|
|
)
|
|
]
|
|
|
|
headers = retailer_sessions.extract_costco_headers(entries)
|
|
|
|
self.assertEqual("Bearer header.payload.signature", headers["costco-x-authorization"])
|
|
self.assertEqual(
|
|
"4900eb1f-0c10-4bd9-99c3-c59e6c1ecebf",
|
|
headers["costco-x-wcs-clientId"],
|
|
)
|
|
self.assertEqual(
|
|
"481b1aec-aa3b-454b-b81b-48187e28f205",
|
|
headers["client-identifier"],
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|