wallet: more test files and regression tests (#1274)
* wallet: add test file for 1.0.4 * wallet: add test file for 1.0.5 * wallet: add test for multi account wallet file * rustfmt
This commit is contained in:
@@ -1422,7 +1422,77 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn decrypt_stored_wallet_with_multiple_accounts() {
|
||||
// WIP(JON)
|
||||
fn decrypt_stored_wallet_1_0_4() {
|
||||
const SAVED_WALLET: &str = "src/wallet_storage/test-data/saved-wallet-1.0.4.json";
|
||||
let wallet_file = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join(SAVED_WALLET);
|
||||
|
||||
let wallet = load_existing_wallet_at_file(&wallet_file).unwrap();
|
||||
|
||||
let hd_path: DerivationPath = COSMOS_DERIVATION_PATH.parse().unwrap();
|
||||
let password = UserPassword::new("password11!".to_string());
|
||||
let bad_password = UserPassword::new("bad-password".to_string());
|
||||
let login_id = LoginId::new("default".to_string());
|
||||
|
||||
assert!(!wallet.password_can_decrypt_all(&bad_password));
|
||||
assert!(wallet.password_can_decrypt_all(&password));
|
||||
|
||||
let acc1 = wallet.decrypt_login(&login_id, &password).unwrap();
|
||||
|
||||
assert!(matches!(acc1, StoredLogin::Mnemonic(_)));
|
||||
|
||||
let expected_acc1 = bip39::Mnemonic::from_str("arrow capable abstract industry elevator nominee december piece hotel feed lounge web faint sword veteran bundle hour page actual laptop horror gold test warrior").unwrap();
|
||||
|
||||
assert_eq!(
|
||||
acc1.as_mnemonic_account().unwrap().mnemonic(),
|
||||
&expected_acc1
|
||||
);
|
||||
assert_eq!(acc1.as_mnemonic_account().unwrap().hd_path(), &hd_path,);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn decrypt_stored_wallet_1_0_5_with_multiple_accounts() {
|
||||
const SAVED_WALLET: &str = "src/wallet_storage/test-data/saved-wallet-1.0.5.json";
|
||||
let wallet_file = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join(SAVED_WALLET);
|
||||
|
||||
let wallet = load_existing_wallet_at_file(&wallet_file).unwrap();
|
||||
|
||||
let hd_path: DerivationPath = COSMOS_DERIVATION_PATH.parse().unwrap();
|
||||
let password = UserPassword::new("password11!".to_string());
|
||||
let bad_password = UserPassword::new("bad-password".to_string());
|
||||
let login_id = LoginId::new("default".to_string());
|
||||
|
||||
assert!(!wallet.password_can_decrypt_all(&bad_password));
|
||||
assert!(wallet.password_can_decrypt_all(&password));
|
||||
|
||||
let login = wallet.decrypt_login(&login_id, &password).unwrap();
|
||||
|
||||
assert!(matches!(login, StoredLogin::Multiple(_)));
|
||||
|
||||
let login = login.as_multiple_accounts().unwrap();
|
||||
assert_eq!(login.len(), 4);
|
||||
|
||||
let expected_mn1 = bip39::Mnemonic::from_str("arrow capable abstract industry elevator nominee december piece hotel feed lounge web faint sword veteran bundle hour page actual laptop horror gold test warrior").unwrap();
|
||||
let expected_mn2 = bip39::Mnemonic::from_str("border hurt skull lunar goddess second danger game dismiss exhaust oven thumb dog drama onion false orchard spice tent next predict invite cherry green").unwrap();
|
||||
let expected_mn3 = bip39::Mnemonic::from_str("gentle crowd rule snap girl urge flat jump winner cluster night sand museum stock grunt quick tree acquire traffic major awake tag rack peasant").unwrap();
|
||||
let expected_mn4 = bip39::Mnemonic::from_str("debris blue skin annual inhale text border rigid spatial lesson coconut yard horn crystal control survey version vote hawk neck frame arrive oblige width").unwrap();
|
||||
|
||||
let expected = vec![
|
||||
WalletAccount::new(
|
||||
"default".into(),
|
||||
MnemonicAccount::new(expected_mn1, hd_path.clone()),
|
||||
),
|
||||
WalletAccount::new(
|
||||
"account2".into(),
|
||||
MnemonicAccount::new(expected_mn2, hd_path.clone()),
|
||||
),
|
||||
WalletAccount::new(
|
||||
"foobar".into(),
|
||||
MnemonicAccount::new(expected_mn3, hd_path.clone()),
|
||||
),
|
||||
WalletAccount::new("42".into(), MnemonicAccount::new(expected_mn4, hd_path)),
|
||||
]
|
||||
.into();
|
||||
|
||||
assert_eq!(login, &expected);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"version": 1,
|
||||
"accounts": [
|
||||
{
|
||||
"id": "default",
|
||||
"account": {
|
||||
"ciphertext": "cq5w4W5ex5eFFRcqLG+824XyUAUoYmrRY3NGw/rue6/mLoQKQE/07+BxzRuKjyYFasC1HBPg41KJwp2IY+/7+80rB9aXPpaKVLUcG9U40qgCw66WhgxTrXOnrt5toefpSTBL7f9N/PVwpuumfAgD9CS0ioB7/9Qoea7nYKkextGX15ex26B/ndQddvUkQ4gx+Vq7OLymv4l+nkdZ2nKMja349zd/BjnzPBB68/iIjyYlivVjtQ7FRbvpNRj6Mjg4905wGlO7bTpkw+RGiaGK4pK8fTWz8gAKr8GYoXPD",
|
||||
"salt": "SPVGdbVyoEayD4ZzM4I+Jg==",
|
||||
"iv": "tjpn/tRjD1gty+fQ"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"version": 1,
|
||||
"accounts": [
|
||||
{
|
||||
"id": "default",
|
||||
"account": {
|
||||
"ciphertext": "3MDgoU2i5QMc9r80yPeq2AMk5wpkke0tXum5NsOE5NcFciF+aHLQW0dvXbGszap1y3nN4+YZD3cgGrmtKh/cChqRGJDkniaxdf3XPHh9RkiWXw2KSHHeyGrFY0INJeiky1ZtUFhWhopcHJWSnfCmVC15YFpnM5xOKpITjHAFhGt98MaYR+mS+3zoUFrjYbaZRh2TR2lFWsbR8YU1uaTYqJZ1HX1PBCub6aS3vjQm0Fwa+hAtR/gMymXJc5qtruTO4NbqYtMj3Z9eIgoVB+56SLAXlIF1Uo1pjvV0mx1hWNNiIc10ujF/wl/nnKF6icOcmrfm9XhOtsvUYBsE/wAIJZw3LKXgSX+hJbOl+zLAwJZK1xiL8n/nM1IJZDn+Wu6z0OzRaj9S7T16+brMw1oaqjk56saM8n5z725fizJj+ur6gnPBWnoyHPaCHgHdB2PKQNY0ZlwRM6dVncRaEWQDLAboyMq3FXxK9UbusNcDFpYw6bdnuJlNVf6y9yxwyvkUrt5YtgfkLyoW42z1PVtVWsV9P8eE/A/tnYjXf34xvba3K8Y1/3DTi7uuydNrSR/XhA+pevz68VWCbY+j746Yi8Lz7altePphkjfJAezodobKvMplXzqInopIWNovyemw/+1E7WZbkQIOAXg1WC1+Y/df+dffRGuGRdDerfRLmA5XLej1M/wE3WQ7b9KwlAo6XJ4hnQKwyDCqYP/ButBXW1AOnnZpCq59gGbiccZJsTMZB4OP95yFPgz8//IeDgma2PDixVmDEp0SGHhN7dlSoNa5eoglblqzJu/TcTA6jmQFA3ef0GiA3QzBjmyB4bz0bFybh8XA1brVIVlsjRwXb3/UYaVqsP6Hy1QDUpZofXIJs5lK0hUd0ECdaNFXXgHd25ifPocp09WLFyK92H6i3ABDZ7pu3b4lTUt6kHt6LTVsKkyylmYf2iMHnCcmfy4uxGTXxRjPjMgKL8pd++OZ3q62jLBuoTjgdj6pccwDvD+NYQ2FFeHmBzxyTLqUyKltYiyFlJHWLKOcXyeDHzRhHic+e/wn3VhM3NdrvtqYWA9m72Ye1L1I7VX7KatGurG6CeiFiY5xHxxpLT7dF0fJ7uxRye4JnRyYQuU7iK72qCKjgYjwjCIha4qPi5Q/x6S+uVe7yX5Eb73L3eB+IlkyW9wPHmSOcE4GpbMU96tK8xoxT0T9eQlj050GDnJ/oI2XHfZTs1bIxsjfZqW03g==",
|
||||
"salt": "wXR3RnPmsoA3ncrixIvaUw==",
|
||||
"iv": "/Zjn1OXsLJhA43n/"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -183,4 +183,14 @@ mod tests {
|
||||
let passwords = vec!["password".to_string()];
|
||||
assert!(decrypt_file(file, &passwords).is_ok());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn decrypt_saved_file_1_0_4() {
|
||||
const SAVED_WALLET: &str =
|
||||
"../src-tauri/src/wallet_storage/test-data/saved-wallet-1.0.4.json";
|
||||
let wallet_file = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join(SAVED_WALLET);
|
||||
let file = File::open(wallet_file).unwrap();
|
||||
let passwords = vec!["password11!".to_string()];
|
||||
assert!(decrypt_file(file, &passwords).is_ok());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user