@@ -110,8 +110,7 @@ fn create_test_config() -> Config {
110110 config
111111}
112112
113- async fn create_ledger_backend ( ) -> LedgerBackend {
114- let vault_id = unique_vault_id ( ) ;
113+ async fn create_ledger_backend_with_vault ( vault_id : i64 ) -> LedgerBackend {
115114 let client_config = ClientConfig :: builder ( )
116115 . servers ( ServerSource :: from_static ( [ ledger_endpoint ( ) ] ) )
117116 . client_id ( format ! ( "engine-test-{}" , vault_id) )
@@ -126,13 +125,17 @@ async fn create_ledger_backend() -> LedgerBackend {
126125 LedgerBackend :: new ( config) . await . expect ( "backend creation should succeed" )
127126}
128127
129- async fn create_ledger_test_state ( ) -> AppState {
130- let backend = create_ledger_backend ( ) . await ;
128+ /// Creates test state and returns (state, vault_id) so tests use the same vault
129+ /// the backend was configured with.
130+ async fn create_ledger_test_state ( ) -> ( AppState , i64 ) {
131+ let vault_id = unique_vault_id ( ) ;
132+ let backend = create_ledger_backend_with_vault ( vault_id) . await ;
131133 let store: Arc < dyn InferaStore > = Arc :: new ( EngineStorage :: builder ( ) . backend ( backend) . build ( ) ) ;
132134 let schema = create_test_schema ( ) ;
133135 let config = create_test_config ( ) ;
134136
135- AppState :: builder ( ) . store ( store) . schema ( schema) . config ( Arc :: new ( config) ) . build ( )
137+ let state = AppState :: builder ( ) . store ( store) . schema ( schema) . config ( Arc :: new ( config) ) . build ( ) ;
138+ ( state, vault_id)
136139}
137140
138141fn create_test_auth ( vault : i64 , organization : i64 ) -> AuthContext {
@@ -199,9 +202,7 @@ async fn test_ledger_engine_write_and_read_relationships() {
199202 return ;
200203 }
201204
202- let state = create_ledger_test_state ( ) . await ;
203- let vault = unique_vault_id ( ) ;
204- let _organization = unique_vault_id ( ) ;
205+ let ( state, vault) = create_ledger_test_state ( ) . await ;
205206
206207 // Write relationships
207208 let relationships = vec ! [
@@ -237,8 +238,7 @@ async fn test_ledger_engine_delete_relationships() {
237238 return ;
238239 }
239240
240- let state = create_ledger_test_state ( ) . await ;
241- let vault = unique_vault_id ( ) ;
241+ let ( state, vault) = create_ledger_test_state ( ) . await ;
242242
243243 // Write
244244 let relationships =
@@ -267,29 +267,37 @@ async fn test_ledger_engine_vault_isolation() {
267267 return ;
268268 }
269269
270- let state = create_ledger_test_state ( ) . await ;
270+ // Vault isolation requires separate backends since LedgerBackend is scoped to one vault
271271 let vault_a = unique_vault_id ( ) ;
272272 let vault_b = unique_vault_id ( ) ;
273273
274+ let backend_a = create_ledger_backend_with_vault ( vault_a) . await ;
275+ let backend_b = create_ledger_backend_with_vault ( vault_b) . await ;
276+
277+ let store_a: Arc < dyn InferaStore > =
278+ Arc :: new ( EngineStorage :: builder ( ) . backend ( backend_a) . build ( ) ) ;
279+ let store_b: Arc < dyn InferaStore > =
280+ Arc :: new ( EngineStorage :: builder ( ) . backend ( backend_b) . build ( ) ) ;
281+
274282 // Write to vault A
275283 let rel_a = vec ! [ create_test_relationship( vault_a, "document:shared" , "viewer" , "user:alice" ) ] ;
276- state . store . write ( vault_a, rel_a) . await . unwrap ( ) ;
284+ store_a . write ( vault_a, rel_a) . await . unwrap ( ) ;
277285
278286 // Write to vault B
279287 let rel_b = vec ! [ create_test_relationship( vault_b, "document:shared" , "viewer" , "user:bob" ) ] ;
280- state . store . write ( vault_b, rel_b) . await . unwrap ( ) ;
288+ store_b . write ( vault_b, rel_b) . await . unwrap ( ) ;
281289
282- // Verify isolation
290+ // Verify isolation - each store only sees its own data
283291 let key = inferadb_engine_types:: RelationshipKey {
284292 resource : "document:shared" . to_string ( ) ,
285293 relation : "viewer" . to_string ( ) ,
286294 subject : None ,
287295 } ;
288296
289297 let results_a =
290- state . store . read ( vault_a, & key, inferadb_engine_types:: Revision :: zero ( ) ) . await . unwrap ( ) ;
298+ store_a . read ( vault_a, & key, inferadb_engine_types:: Revision :: zero ( ) ) . await . unwrap ( ) ;
291299 let results_b =
292- state . store . read ( vault_b, & key, inferadb_engine_types:: Revision :: zero ( ) ) . await . unwrap ( ) ;
300+ store_b . read ( vault_b, & key, inferadb_engine_types:: Revision :: zero ( ) ) . await . unwrap ( ) ;
293301
294302 assert_eq ! ( results_a. len( ) , 1 ) ;
295303 assert_eq ! ( results_a[ 0 ] . subject, "user:alice" ) ;
@@ -308,8 +316,7 @@ async fn test_ledger_engine_api_write_endpoint() {
308316 return ;
309317 }
310318
311- let state = create_ledger_test_state ( ) . await ;
312- let vault = unique_vault_id ( ) ;
319+ let ( state, vault) = create_ledger_test_state ( ) . await ;
313320 let organization = unique_vault_id ( ) ;
314321
315322 let router = inferadb_engine_api:: create_test_router ( state)
@@ -349,8 +356,7 @@ async fn test_ledger_engine_api_check_endpoint() {
349356 return ;
350357 }
351358
352- let state = create_ledger_test_state ( ) . await ;
353- let vault = unique_vault_id ( ) ;
359+ let ( state, vault) = create_ledger_test_state ( ) . await ;
354360 let organization = unique_vault_id ( ) ;
355361
356362 // Pre-populate
@@ -397,8 +403,7 @@ async fn test_ledger_engine_change_log() {
397403 return ;
398404 }
399405
400- let state = create_ledger_test_state ( ) . await ;
401- let vault = unique_vault_id ( ) ;
406+ let ( state, vault) = create_ledger_test_state ( ) . await ;
402407
403408 // Write some relationships
404409 for i in 0 ..5 {
@@ -432,7 +437,7 @@ async fn test_ledger_engine_organization_crud() {
432437 return ;
433438 }
434439
435- let state = create_ledger_test_state ( ) . await ;
440+ let ( state, _vault ) = create_ledger_test_state ( ) . await ;
436441
437442 // Create organization
438443 let org = inferadb_engine_types:: Organization {
@@ -468,7 +473,7 @@ async fn test_ledger_engine_vault_crud() {
468473 return ;
469474 }
470475
471- let state = create_ledger_test_state ( ) . await ;
476+ let ( state, _vault ) = create_ledger_test_state ( ) . await ;
472477
473478 // Create organization first
474479 let org = inferadb_engine_types:: Organization {
@@ -519,8 +524,7 @@ async fn test_ledger_engine_concurrent_writes() {
519524 return ;
520525 }
521526
522- let state = create_ledger_test_state ( ) . await ;
523- let vault = unique_vault_id ( ) ;
527+ let ( state, vault) = create_ledger_test_state ( ) . await ;
524528
525529 // Spawn concurrent writers
526530 let mut handles = Vec :: new ( ) ;
0 commit comments