fix(kms): harden key list contract

This commit is contained in:
overtrue
2026-08-02 18:36:07 +08:00
parent f440a14e53
commit 77b712dcb6
6 changed files with 182 additions and 13 deletions
+20
View File
@@ -3101,6 +3101,26 @@ mod tests {
);
}
#[tokio::test]
async fn list_keys_fails_closed_on_a_corrupt_record() {
let (client, _temp_dir) = create_test_client().await;
client.create_key("corrupt", "AES_256", None).await.expect("create key");
let key_path = client.master_key_path("corrupt").expect("valid key id");
fs::write(&key_path, b"{\"key_id\":\"corrupt\"")
.await
.expect("write corrupt record");
let error = client
.list_keys(&ListKeysRequest::default(), None)
.await
.expect_err("a corrupt record must not disappear from a listing");
assert!(
matches!(error, KmsError::MaterialCorrupt { key_id, .. } if key_id == "corrupt"),
"got {error:?}"
);
}
#[tokio::test]
async fn missing_salt_with_pre_marker_key_records_still_initializes() {
let (dev_client, temp_dir) = create_dev_mode_client().await;