Explorar el Código

added test case for wallet unlock

lunar-mining hace 5 años
padre
commit
8038adc4f5
Se han modificado 1 ficheros con 94 adiciones y 81 borrados
  1. 94 81
      src/wallet/walletdb.rs

+ 94 - 81
src/wallet/walletdb.rs

@@ -56,7 +56,7 @@ impl WalletDB {
             let contents = include_str!("../../res/schema.sql");
             let conn = Connection::open(&self.path)?;
             debug!(target: "walletdb", "OPENED CONNECTION AT PATH {:?}", self.path);
-            conn.execute("PRAGMA key=(?1)", params![self.password])?;
+            //conn.execute("PRAGMA key=(?1)", params![self.password])?;
             conn.execute_batch(&contents)?
         } else {
             println!("Password is empty. You must set a password to use the wallet.");
@@ -139,6 +139,7 @@ impl WalletDB {
 
     pub fn put_keypair(&self, key_public: Vec<u8>, key_private: Vec<u8>) -> Result<()> {
         let conn = Connection::open(&self.path)?;
+        println!("{}", self.password);
         conn.execute("PRAGMA key=(?1)", params![self.password])?;
         conn.execute(
             "INSERT INTO keys(key_public, key_private) VALUES (?1, ?2)",
@@ -221,89 +222,101 @@ mod tests {
     use super::*;
 
     #[test]
-    pub fn test_keypair() -> Result<()> {
+    pub fn test_unlock() -> Result<()> {
+        let password = "roseiscool2021";
         let path = join_config_path(&PathBuf::from("wallet.db"))?;
-        let conn = Connection::open(path)?;
-        let secret: jubjub::Fr = jubjub::Fr::random(&mut OsRng);
-        let public = zcash_primitives::constants::SPENDING_KEY_GENERATOR * secret;
-        let key_public = serial::serialize(&public);
-        let key_private = serial::serialize(&secret);
-        let mut stmt = conn.prepare("PRAGMA key = 'testkey'")?;
-        let _rows = stmt.query([])?;
-        conn.execute(
-            "INSERT INTO keys(key_public, key_private) VALUES (?1, ?2)",
-            params![key_public, key_private],
-        )?;
+        let contents = include_str!("../../res/schema.sql");
+        let conn = Connection::open(&path)?;
+        debug!(target: "walletdb", "OPENED CONNECTION AT PATH {:?}", path);
+        conn.execute("PRAGMA key=(?1)", params![password])?;
+        conn.execute_batch(&contents)?;
         Ok(())
     }
 
-    #[test]
-    pub fn test_get_id() -> Result<()> {
-        let path = join_config_path(&PathBuf::from("wallet.db"))?;
-        let conn = Connection::open(path)?;
-        let secret: jubjub::Fr = jubjub::Fr::random(&mut OsRng);
-        let key_private = serial::serialize(&secret);
-        let public = zcash_primitives::constants::SPENDING_KEY_GENERATOR * secret;
-        let key_public = serial::serialize(&public);
-        let mut stmt = conn.prepare("PRAGMA key = 'testkey'")?;
-        let _rows = stmt.query([])?;
-        conn.execute(
-            "INSERT INTO keys(key_public, key_private) VALUES (?1, ?2)",
-            params![key_public, key_private],
-        )?;
-        let mut get_id =
-            conn.prepare("SELECT key_id FROM keys WHERE key_private = :key_private")?;
-        let rows =
-            get_id.query_map::<u8, _, _>(&[(":key_private", &key_private)], |row| row.get(0))?;
-        let mut key_id = Vec::new();
-        for id in rows {
-            key_id.push(id?)
-        }
-        println!("FOUND ID: {:?}", key_id.pop().unwrap());
-        Ok(())
-    }
+    //#[test]
+    //pub fn test_keypair() -> Result<()> {
+    //    let path = join_config_path(&PathBuf::from("wallet.db"))?;
+    //    let conn = Connection::open(path)?;
+    //    let secret: jubjub::Fr = jubjub::Fr::random(&mut OsRng);
+    //    let public = zcash_primitives::constants::SPENDING_KEY_GENERATOR * secret;
+    //    let key_public = serial::serialize(&public);
+    //    let key_private = serial::serialize(&secret);
+    //    let mut stmt = conn.prepare("PRAGMA key = 'testkey'")?;
+    //    let _rows = stmt.query([])?;
+    //    conn.execute(
+    //        "INSERT INTO keys(key_public, key_private) VALUES (?1, ?2)",
+    //        params![key_public, key_private],
+    //    )?;
+    //    Ok(())
+    //}
 
-    #[test]
-    pub fn test_own_coins() -> Result<()> {
-        let key_private = Vec::new();
-        let coin = Vec::new();
-        let serial = Vec::new();
-        let coin_blind = Vec::new();
-        let valcom_blind = Vec::new();
-        let value = Vec::new();
-        let asset_id = Vec::new();
-        let witness = Vec::new();
-        let path = join_config_path(&PathBuf::from("wallet.db"))?;
-        let conn = Connection::open(path)?;
-        let contents = include_str!("../../res/schema.sql");
-        match conn.execute_batch(&contents) {
-            Ok(v) => println!("Database initalized successfully {:?}", v),
-            Err(err) => println!("Error: {}", err),
-        };
-        //let mut unlock = conn.prepare("PRAGMA key = 'testkey'")?;
-        //let _rows = unlock.query([])?;
-        let mut get_id =
-            conn.prepare("SELECT key_id FROM keys WHERE key_private = :key_private")?;
-        let rows =
-            get_id.query_map::<u8, _, _>(&[(":key_private", &key_private)], |row| row.get(0))?;
-        let mut key_id = Vec::new();
-        for id in rows {
-            key_id.push(id?)
-        }
-        conn.execute(
-            "INSERT INTO coins(coin, serial, value, asset_id, coin_blind, valcom_blind, witness, key_id)
-            VALUES (:coin, :serial, :value, :asset_id, :coin_blind, :valcom_blind, :witness, :key_id)",
-            named_params! {
-            ":coin": coin,
-            ":serial": serial,
-            ":value": value,
-            ":asset_id": asset_id,
-            ":coin_blind": coin_blind,
-            ":valcom_blind": valcom_blind,
-            ":witness": witness,
-            ":key_id": key_id.pop().expect("key_id not found!"),
-            },
-        )?;
-        Ok(())
-    }
+    //#[test]
+    //pub fn test_get_id() -> Result<()> {
+    //    let path = join_config_path(&PathBuf::from("wallet.db"))?;
+    //    let conn = Connection::open(path)?;
+    //    let secret: jubjub::Fr = jubjub::Fr::random(&mut OsRng);
+    //    let key_private = serial::serialize(&secret);
+    //    let public = zcash_primitives::constants::SPENDING_KEY_GENERATOR * secret;
+    //    let key_public = serial::serialize(&public);
+    //    let mut stmt = conn.prepare("PRAGMA key = 'testkey'")?;
+    //    let _rows = stmt.query([])?;
+    //    conn.execute(
+    //        "INSERT INTO keys(key_public, key_private) VALUES (?1, ?2)",
+    //        params![key_public, key_private],
+    //    )?;
+    //    let mut get_id =
+    //        conn.prepare("SELECT key_id FROM keys WHERE key_private = :key_private")?;
+    //    let rows =
+    //        get_id.query_map::<u8, _, _>(&[(":key_private", &key_private)], |row| row.get(0))?;
+    //    let mut key_id = Vec::new();
+    //    for id in rows {
+    //        key_id.push(id?)
+    //    }
+    //    println!("FOUND ID: {:?}", key_id.pop().unwrap());
+    //    Ok(())
+    //}
+
+    //#[test]
+    //pub fn test_own_coins() -> Result<()> {
+    //    let key_private = Vec::new();
+    //    let coin = Vec::new();
+    //    let serial = Vec::new();
+    //    let coin_blind = Vec::new();
+    //    let valcom_blind = Vec::new();
+    //    let value = Vec::new();
+    //    let asset_id = Vec::new();
+    //    let witness = Vec::new();
+    //    let path = join_config_path(&PathBuf::from("wallet.db"))?;
+    //    let conn = Connection::open(path)?;
+    //    let contents = include_str!("../../res/schema.sql");
+    //    match conn.execute_batch(&contents) {
+    //        Ok(v) => println!("Database initalized successfully {:?}", v),
+    //        Err(err) => println!("Error: {}", err),
+    //    };
+    //    //let mut unlock = conn.prepare("PRAGMA key = 'testkey'")?;
+    //    //let _rows = unlock.query([])?;
+    //    let mut get_id =
+    //        conn.prepare("SELECT key_id FROM keys WHERE key_private = :key_private")?;
+    //    let rows =
+    //        get_id.query_map::<u8, _, _>(&[(":key_private", &key_private)], |row| row.get(0))?;
+    //    let mut key_id = Vec::new();
+    //    for id in rows {
+    //        key_id.push(id?)
+    //    }
+    //    conn.execute(
+    //        "INSERT INTO coins(coin, serial, value, asset_id, coin_blind, valcom_blind, witness, key_id)
+    //        VALUES (:coin, :serial, :value, :asset_id, :coin_blind, :valcom_blind, :witness, :key_id)",
+    //        named_params! {
+    //        ":coin": coin,
+    //        ":serial": serial,
+    //        ":value": value,
+    //        ":asset_id": asset_id,
+    //        ":coin_blind": coin_blind,
+    //        ":valcom_blind": valcom_blind,
+    //        ":witness": witness,
+    //        ":key_id": key_id.pop().expect("key_id not found!"),
+    //        },
+    //    )?;
+    //    Ok(())
+    //}
 }