// 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(_marker: std::marker::PhantomData) where T: serde::de::DeserializeOwned, { return; } assert_deserializable(std::marker::PhantomData::); 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::>() .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"); }