]> Untitled Git - bdk-cli/commitdiff
Add key subcommand tests
authorSteve Myers <steve@notmandatory.org>
Wed, 3 Feb 2021 22:12:57 +0000 (14:12 -0800)
committerSteve Myers <steve@notmandatory.org>
Wed, 3 Feb 2021 22:12:57 +0000 (14:12 -0800)
src/lib.rs

index 4edc80c5a6acca191593a84fdc805696fcd5847f..8e8403155028ac2982b032411d548364e87627d0 100644 (file)
@@ -820,10 +820,11 @@ mod test {
     use super::{CliOpts, WalletOpts};
     use crate::OfflineWalletSubCommand::{CreateTx, GetNewAddress};
     use crate::OnlineWalletSubCommand::{Broadcast, Sync};
-    use crate::{CliSubCommand, WalletSubCommand};
+    use crate::{CliSubCommand, WalletSubCommand, KeySubCommand, handle_key_subcommand};
     use bdk::bitcoin::{Address, Network, OutPoint};
     use std::str::FromStr;
     use structopt::StructOpt;
+    use bdk::miniscript::bitcoin::network::constants::Network::Testnet;
 
     #[test]
     fn test_wallet_get_new_address() {
@@ -1081,4 +1082,45 @@ mod test {
         let cli_opts = CliOpts::from_iter_safe(&cli_args);
         assert!(cli_opts.is_err());
     }
+    
+    #[test]
+    fn test_key_generate() {
+        let network = Testnet;
+        let key_generate_cmd = KeySubCommand::Generate {
+            word_count: 12,
+            password: Some("test123".to_string())
+        };
+        
+        let result = handle_key_subcommand(network, key_generate_cmd).unwrap();
+        let result_obj = result.as_object().unwrap();
+        
+        let mnemonic = result_obj.get("mnemonic").unwrap().as_str().unwrap();
+        let mnemonic:Vec<&str> = mnemonic.split(' ').collect();
+        let xprv = result_obj.get("xprv").unwrap().as_str().unwrap();
+        let xpub = result_obj.get("xpub").unwrap().as_str().unwrap();
+        
+        assert_eq!(mnemonic.len(), 12);
+        assert_eq!(&xprv[0..4], "tprv");
+        assert_eq!(&xpub[0..4], "tpub");
+    }
+
+    #[test]
+    fn test_key_restore() {
+        let network = Testnet;
+        let key_generate_cmd = KeySubCommand::Restore {
+            mnemonic: "payment battle unit sword token broccoli era violin purse trip blood hire".to_string(),
+            password: Some("test123".to_string())
+        };
+
+        let result = handle_key_subcommand(network, key_generate_cmd).unwrap();
+        let result_obj = result.as_object().unwrap();
+
+        let fingerprint = result_obj.get("fingerprint").unwrap().as_str().unwrap();
+        let xprv = result_obj.get("xprv").unwrap().as_str().unwrap();
+        let xpub = result_obj.get("xpub").unwrap().as_str().unwrap();
+
+        assert_eq!(&fingerprint, &"828af366");
+        assert_eq!(&xprv, &"tprv8ZgxMBicQKsPd18TeiFknZKqaZFwpdX9tvvKh8eeHSSPBQi5g9xPHztBg411o78G8XkrhQb6Q1cVvBJ1a9xuFHpmWgvQsvkJkNxBjfGoqhK");
+        assert_eq!(&xpub, &"tpubD6NzVbkrYhZ4WUAFYMvMBxyx9amsyxi4UEX6yegwhiEn1txrJYmyUVW3rABPz2emcVT5H8PqBoMmWHmJG8fWi9a4iiGLDquUDtyYDKe9cqk");
+    }
 }