Skip to content

Commit fa1bdff

Browse files
test(mst2): cover FK and capability truncate barriers separately (#68)
The exact f3e native run passed 2346 tests and failed one expectation: PostgreSQL FK preflight rejects plain prepare-page TRUNCATE before the install-capability trigger. Preserve plain FK rejection, add CASCADE to reach the unchanged capability guard, and prove all prepare mappings and seals survive. Existing identity assertions and actual installation/finalize remain. No production code changes.
1 parent 659a8ea commit fa1bdff

1 file changed

Lines changed: 22 additions & 1 deletion

File tree

‎src/jupiter/storage/native_metadata_install_capability_tests.rs‎

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,19 @@ async fn install_capability_freezes_every_identity_member_anchor_and_truncate_pa
241241
.await
242242
.unwrap()
243243
.unwrap();
244+
let member_count_before =
245+
scalar(&first, "SELECT count(*) FROM mst2_metadata_prepare_page").await;
246+
let seal_count_before = scalar(&first, "SELECT count(*) FROM mst2_metadata_install_seal").await;
247+
let restrict_error = first
248+
.execute_unprepared("TRUNCATE mst2_metadata_prepare_page")
249+
.await
250+
.expect_err("plain truncate must preserve foreign-key protection");
251+
assert!(
252+
restrict_error
253+
.to_string()
254+
.contains("cannot truncate a table referenced in a foreign key constraint"),
255+
"{restrict_error}"
256+
);
244257
assert_eq!(
245258
first.execute_raw(statement(
246259
"UPDATE mst2_metadata_prepare SET verification_revision=verification_revision WHERE prepare_id=$1",
@@ -311,11 +324,19 @@ async fn install_capability_freezes_every_identity_member_anchor_and_truncate_pa
311324
"UPDATE mst2_metadata_install_seal SET members_digest=decode(repeat('ff',32),'hex')".into(),
312325
"DELETE FROM mst2_metadata_install_seal".into(),
313326
"TRUNCATE mst2_metadata_install_seal".into(),
314-
"TRUNCATE mst2_metadata_prepare_page".into(),
327+
"TRUNCATE mst2_metadata_prepare_page CASCADE".into(),
315328
"TRUNCATE mst2_metadata_prepare CASCADE".into(),
316329
] {
317330
assert_guard(&first, &sql).await;
318331
}
332+
assert_eq!(
333+
scalar(&first, "SELECT count(*) FROM mst2_metadata_prepare_page").await,
334+
member_count_before
335+
);
336+
assert_eq!(
337+
scalar(&first, "SELECT count(*) FROM mst2_metadata_install_seal").await,
338+
seal_count_before
339+
);
319340
assert_eq!(
320341
mst2_metadata_prepare::Entity::find_by_id(intent.prepare_id().to_owned())
321342
.one(&first)

0 commit comments

Comments
 (0)