v0.2.6-pre.012
This commit is contained in:
41
crates/ksp-app-wallet-desk/unit_tests/wallet_export.rs
Normal file
41
crates/ksp-app-wallet-desk/unit_tests/wallet_export.rs
Normal file
@@ -0,0 +1,41 @@
|
||||
// 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");
|
||||
}
|
||||
Reference in New Issue
Block a user