@@ -15,58 +15,68 @@ import {
1515} from "./idb-persistence.test-helpers.js" ;
1616import { LogService } from "./logger.js" ;
1717
18+ const DATABASE_PREFIX = "openclaw-matrix-persistence-test" ;
19+ const OTHER_DATABASE_PREFIX = "openclaw-matrix-persistence-other-test" ;
20+ const cryptoDatabaseName = `${ DATABASE_PREFIX } ::matrix-sdk-crypto` ;
21+ const otherCryptoDatabaseName = `${ OTHER_DATABASE_PREFIX } ::matrix-sdk-crypto` ;
22+
23+ async function clearTestIndexedDbState ( ) : Promise < void > {
24+ await clearAllIndexedDbState ( { databasePrefix : DATABASE_PREFIX } ) ;
25+ await clearAllIndexedDbState ( { databasePrefix : OTHER_DATABASE_PREFIX } ) ;
26+ }
27+
1828describe ( "Matrix IndexedDB persistence" , ( ) => {
1929 let tmpDir : string ;
2030 let warnSpy : ReturnType < typeof vi . spyOn > ;
2131
2232 beforeEach ( async ( ) => {
2333 tmpDir = fs . mkdtempSync ( path . join ( os . tmpdir ( ) , "matrix-idb-persist-" ) ) ;
2434 warnSpy = vi . spyOn ( LogService , "warn" ) . mockImplementation ( ( ) => { } ) ;
25- await clearAllIndexedDbState ( ) ;
35+ await clearTestIndexedDbState ( ) ;
2636 } ) ;
2737
2838 afterEach ( async ( ) => {
2939 warnSpy . mockRestore ( ) ;
30- await clearAllIndexedDbState ( ) ;
40+ await clearTestIndexedDbState ( ) ;
3141 resetFileLockStateForTest ( ) ;
3242 fs . rmSync ( tmpDir , { recursive : true , force : true } ) ;
3343 } ) ;
3444
3545 it ( "persists and restores database contents for the selected prefix" , async ( ) => {
3646 const snapshotPath = path . join ( tmpDir , "crypto-idb-snapshot.json" ) ;
3747 await seedDatabase ( {
38- name : "openclaw-matrix-test::matrix-sdk-crypto" ,
48+ name : cryptoDatabaseName ,
3949 storeName : "sessions" ,
4050 records : [ { key : "room-1" , value : { session : "abc123" } } ] ,
4151 } ) ;
4252 await seedDatabase ( {
43- name : "other-prefix::matrix-sdk-crypto" ,
53+ name : otherCryptoDatabaseName ,
4454 storeName : "sessions" ,
4555 records : [ { key : "room-2" , value : { session : "should-not-restore" } } ] ,
4656 } ) ;
4757
4858 await persistIdbToDisk ( {
4959 snapshotPath,
50- databasePrefix : "openclaw-matrix-test" ,
60+ databasePrefix : DATABASE_PREFIX ,
5161 } ) ;
5262 expect ( fs . existsSync ( snapshotPath ) ) . toBe ( true ) ;
5363
5464 const mode = fs . statSync ( snapshotPath ) . mode & 0o777 ;
5565 expect ( mode ) . toBe ( 0o600 ) ;
5666
57- await clearAllIndexedDbState ( ) ;
67+ await clearTestIndexedDbState ( ) ;
5868
5969 const restored = await restoreIdbFromDisk ( snapshotPath ) ;
6070 expect ( restored ) . toBe ( true ) ;
6171
6272 const restoredRecords = await readDatabaseRecords ( {
63- name : "openclaw-matrix-test::matrix-sdk-crypto" ,
73+ name : cryptoDatabaseName ,
6474 storeName : "sessions" ,
6575 } ) ;
6676 expect ( restoredRecords ) . toEqual ( [ { key : "room-1" , value : { session : "abc123" } } ] ) ;
6777
6878 const dbs = await indexedDB . databases ( ) ;
69- expect ( dbs . some ( ( entry ) => entry . name === "other-prefix::matrix-sdk-crypto" ) ) . toBe ( false ) ;
79+ expect ( dbs . some ( ( entry ) => entry . name === otherCryptoDatabaseName ) ) . toBe ( false ) ;
7080 } ) ;
7181
7282 it ( "returns false and logs a warning for malformed snapshots" , async ( ) => {
@@ -103,14 +113,14 @@ describe("Matrix IndexedDB persistence", () => {
103113 it ( "serializes concurrent persist operations via file lock" , async ( ) => {
104114 const snapshotPath = path . join ( tmpDir , "concurrent-persist.json" ) ;
105115 await seedDatabase ( {
106- name : "openclaw-matrix-test::matrix-sdk-crypto" ,
116+ name : cryptoDatabaseName ,
107117 storeName : "sessions" ,
108118 records : [ { key : "room-1" , value : { session : "abc123" } } ] ,
109119 } ) ;
110120
111121 await Promise . all ( [
112- persistIdbToDisk ( { snapshotPath, databasePrefix : "openclaw-matrix-test" } ) ,
113- persistIdbToDisk ( { snapshotPath, databasePrefix : "openclaw-matrix-test" } ) ,
122+ persistIdbToDisk ( { snapshotPath, databasePrefix : DATABASE_PREFIX } ) ,
123+ persistIdbToDisk ( { snapshotPath, databasePrefix : DATABASE_PREFIX } ) ,
114124 ] ) ;
115125
116126 expect ( fs . existsSync ( snapshotPath ) ) . toBe ( true ) ;
@@ -123,12 +133,12 @@ describe("Matrix IndexedDB persistence", () => {
123133 it ( "releases lock after persist completes" , async ( ) => {
124134 const snapshotPath = path . join ( tmpDir , "lock-release.json" ) ;
125135 await seedDatabase ( {
126- name : "openclaw-matrix-test::matrix-sdk-crypto" ,
136+ name : cryptoDatabaseName ,
127137 storeName : "sessions" ,
128138 records : [ { key : "room-1" , value : { session : "abc123" } } ] ,
129139 } ) ;
130140
131- await persistIdbToDisk ( { snapshotPath, databasePrefix : "openclaw-matrix-test" } ) ;
141+ await persistIdbToDisk ( { snapshotPath, databasePrefix : DATABASE_PREFIX } ) ;
132142
133143 const lockPath = `${ snapshotPath } .lock` ;
134144 expect ( fs . existsSync ( lockPath ) ) . toBe ( false ) ;
@@ -138,13 +148,13 @@ describe("Matrix IndexedDB persistence", () => {
138148 it ( "releases lock after restore completes" , async ( ) => {
139149 const snapshotPath = path . join ( tmpDir , "lock-release-restore.json" ) ;
140150 await seedDatabase ( {
141- name : "openclaw-matrix-test::matrix-sdk-crypto" ,
151+ name : cryptoDatabaseName ,
142152 storeName : "sessions" ,
143153 records : [ { key : "room-1" , value : { session : "abc123" } } ] ,
144154 } ) ;
145155
146- await persistIdbToDisk ( { snapshotPath, databasePrefix : "openclaw-matrix-test" } ) ;
147- await clearAllIndexedDbState ( ) ;
156+ await persistIdbToDisk ( { snapshotPath, databasePrefix : DATABASE_PREFIX } ) ;
157+ await clearTestIndexedDbState ( ) ;
148158 await drainFileLockStateForTest ( ) ;
149159
150160 await restoreIdbFromDisk ( snapshotPath ) ;
0 commit comments