Files
khadhroony-solana-project/crates/ksp-app-wallet-desk/unit_tests/wallet_export.rs
2026-08-21 16:22:16 +02:00

42 lines
1.7 KiB
Rust

// file: crates/ksp-app-wallet-desk/unit_tests/wallet_export.rs
// version: 1
#[test]
fn export_request_is_deserializable_without_secret_or_path_fields() {
fn assert_deserializable<T>(_marker: std::marker::PhantomData<T>)
where
T: serde::de::DeserializeOwned,
{
return;
}
assert_deserializable(std::marker::PhantomData::<crate::WalletExportRequestDto>);
let source = include_str!("../src/wallet_export.rs");
let request = source.split("pub(crate) struct WalletExportRequestDto").nth(1);
assert!(request.is_some());
let fields = request
.unwrap_or_default()
.split("}\n")
.next()
.unwrap_or_default()
.lines()
.filter(|line| return line.trim_start().starts_with("pub(crate) "))
.collect::<std::vec::Vec<_>>()
.join("\n");
assert!(fields.contains("format"));
assert!(!fields.contains("path"));
assert!(!fields.contains("password"));
assert!(!fields.contains("secret"));
}
#[test]
fn export_result_keeps_only_safe_basename_format_and_wallet_id() {
let filename = crate::wallet_export_default_filename("alpha.kspwallet", crate::WalletTransferFormatDto::SolanaCliJson);
assert_eq!(filename, "alpha-solana-keypair.json");
let base58_filename = crate::wallet_export_default_filename("alpha.kspwallet", crate::WalletTransferFormatDto::SolanaKeypairBase58);
assert_eq!(base58_filename, "alpha-solana-keypair.txt");
let path = std::path::Path::new("/tmp/private/alpha-solana-keypair.json");
let name = crate::wallet_export_destination_name(path);
assert!(name.is_ok());
assert_eq!(name.unwrap_or_default(), "alpha-solana-keypair.json");
}