// file: crates/ksp-app-wallet-desk/unit_tests/wallet_import.rs // version: 2 #[test] fn import_request_does_not_require_debug_or_clone_password_contracts() { fn consume(_request: crate::WalletImportRequestDto) {} consume(crate::WalletImportRequestDto { alias: std::option::Option::None, filename: "imported.kspwallet".to_owned(), initial_note: std::option::Option::None, owner_password: "owner-canary".to_owned(), view_password: std::option::Option::Some("view-canary".to_owned()), }); } #[test] fn staged_base58_source_keeps_only_safe_projection_and_bounded_zeroizing_bytes() { let source = "99eUso3aSbE9tqGSTXzo3TLfKb9RkMTURrHKQ1K7Zh3StnzFNUx8FKCPPPPpR479qsw5zv2WNBKmgiz7WqgAJfM"; let path = std::env::temp_dir().join(format!("ksp-wallet-import-{}-seed7.txt", std::process::id())); let written = std::fs::write(path.as_path(), source.as_bytes()); assert!(written.is_ok()); let runtime = tokio::runtime::Builder::new_current_thread().enable_all().build(); assert!(runtime.is_ok()); let runtime = match runtime { std::result::Result::Ok(value) => value, std::result::Result::Err(_) => return, }; let staged = runtime.block_on(crate::stage_wallet_import_source(path.clone(), crate::WalletTransferFormatDto::SolanaKeypairBase58)); let removed = std::fs::remove_file(path.as_path()); assert!(removed.is_ok()); assert!(staged.is_ok()); let staged = match staged { std::result::Result::Ok(value) => value, std::result::Result::Err(_) => return, }; let projection = staged.safe_projection(); assert_eq!(projection.pubkey, "GmaDrppBC7P5ARKV8g3djiwP89vz1jLK23V2GBjuAEGB"); assert_eq!(projection.format, crate::WalletTransferFormatDto::SolanaKeypairBase58); assert!(projection.source_name.ends_with("seed7.txt")); assert_eq!(staged.source_bytes(), source.as_bytes()); }