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()