42 lines
1.7 KiB
Rust
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");
|
|
}
|