Skip to content

Commit 77127e3

Browse files
committed
ci: improvements
1 parent cc78318 commit 77127e3

File tree

1 file changed

+30
-26
lines changed

1 file changed

+30
-26
lines changed

crates/api/tests/ledger_integration.rs

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -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

138141
fn 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

Comments
 (0)