From ddf7d352c4d7d17ad069e7130f595cba1186ffde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Zemanovi=C4=8D?= Date: Tue, 20 Jun 2023 12:59:01 +0200 Subject: [PATCH] test/e2e: add a test with an account derived from secp256k1 key --- apps/src/lib/config/genesis.rs | 11 ++++++++--- apps/src/lib/wallet/defaults.rs | 24 ++++++++++++++++++++++-- genesis/e2e-tests-single-node.toml | 9 +++++++++ tests/src/e2e/ledger_tests.rs | 22 +++++++++++++++++++++- tests/src/e2e/setup.rs | 1 + 5 files changed, 61 insertions(+), 6 deletions(-) diff --git a/apps/src/lib/config/genesis.rs b/apps/src/lib/config/genesis.rs index 23cc402eae..25f5b2f4c4 100644 --- a/apps/src/lib/config/genesis.rs +++ b/apps/src/lib/config/genesis.rs @@ -995,9 +995,14 @@ pub fn genesis(num_validators: u64) -> Genesis { public_key: None, storage: HashMap::default(), }; - let implicit_accounts = vec![ImplicitAccount { - public_key: wallet::defaults::daewon_keypair().ref_to(), - }]; + let implicit_accounts = vec![ + ImplicitAccount { + public_key: wallet::defaults::daewon_keypair().ref_to(), + }, + ImplicitAccount { + public_key: wallet::defaults::ester_keypair().ref_to(), + }, + ]; let default_user_tokens = token::Amount::whole(1_000_000); let default_key_tokens = token::Amount::whole(1_000); let mut balances: HashMap = HashMap::from_iter([ diff --git a/apps/src/lib/wallet/defaults.rs b/apps/src/lib/wallet/defaults.rs index c9d37c9e86..aba935012b 100644 --- a/apps/src/lib/wallet/defaults.rs +++ b/apps/src/lib/wallet/defaults.rs @@ -3,8 +3,9 @@ #[cfg(any(test, feature = "dev"))] pub use dev::{ addresses, albert_address, albert_keypair, bertha_address, bertha_keypair, - christel_address, christel_keypair, daewon_address, daewon_keypair, keys, - validator_address, validator_keypair, validator_keys, + christel_address, christel_keypair, daewon_address, daewon_keypair, + ester_address, ester_keypair, keys, validator_address, validator_keypair, + validator_keys, }; use namada::ledger::wallet::alias::Alias; use namada::ledger::{eth_bridge, governance, pos}; @@ -107,6 +108,7 @@ mod dev { ("bertha".into(), bertha_keypair()), ("christel".into(), christel_keypair()), ("daewon".into(), daewon_keypair()), + ("ester".into(), ester_keypair()), ("validator".into(), validator_keypair()), ] } @@ -137,6 +139,7 @@ mod dev { ("bertha".into(), bertha_address()), ("christel".into(), christel_address()), ("daewon".into(), daewon_address()), + ("ester".into(), ester_address()), ]; let token_addresses = tokens() .into_iter() @@ -166,6 +169,11 @@ mod dev { (&daewon_keypair().ref_to()).into() } + /// An implicit user address for testing & development + pub fn ester_address() -> Address { + (&ester_keypair().ref_to()).into() + } + /// An established validator address for testing & development pub fn validator_address() -> Address { Address::decode("atest1v4ehgw36ggcnsdee8qerswph8y6ry3p5xgunvve3xaqngd3kxc6nqwz9gseyydzzg5unys3ht2n48q").expect("The token address decoding shouldn't fail") @@ -219,6 +227,18 @@ mod dev { ed_sk.try_to_sk().unwrap() } + pub fn ester_keypair() -> common::SecretKey { + // generated from + // [`namada::types::key::secp256k1::gen_keypair`] + let bytes = [ + 54, 144, 147, 226, 3, 93, 132, 247, 42, 126, 90, 23, 200, 155, 122, + 147, 139, 93, 8, 204, 135, 178, 40, 152, 5, 227, 175, 204, 102, + 239, 154, 66, + ]; + let sk = secp256k1::SecretKey::try_from_slice(&bytes).unwrap(); + sk.try_to_sk().unwrap() + } + pub fn validator_keypair() -> common::SecretKey { // generated from // [`namada::types::key::ed25519::gen_keypair`] diff --git a/genesis/e2e-tests-single-node.toml b/genesis/e2e-tests-single-node.toml index f9860e6529..bd06c035a7 100644 --- a/genesis/e2e-tests-single-node.toml +++ b/genesis/e2e-tests-single-node.toml @@ -36,6 +36,7 @@ Bertha = 1000000 Christel = 1000000 "Christel.public_key" = 100 Daewon = 1000000 +Ester = 1000000 faucet = 9223372036 "faucet.public_key" = 100 "validator-0.public_key" = 100 @@ -48,6 +49,7 @@ Albert = 1000000 Bertha = 1000000 Christel = 1000000 Daewon = 1000000 +Ester = 1000000 faucet = 9223372036854 [token.ETH] @@ -58,6 +60,7 @@ Albert = 1000000 Bertha = 1000000 Christel = 1000000 Daewon = 1000000 +Ester = 1000000 faucet = 9223372036854 [token.DOT] @@ -68,6 +71,7 @@ Albert = 1000000 Bertha = 1000000 Christel = 1000000 Daewon = 1000000 +Ester = 1000000 faucet = 9223372036854 [token.Schnitzel] @@ -78,6 +82,7 @@ Albert = 1000000 Bertha = 1000000 Christel = 1000000 Daewon = 1000000 +Ester = 1000000 faucet = 9223372036854 [token.Apfel] @@ -88,6 +93,7 @@ Albert = 1000000 Bertha = 1000000 Christel = 1000000 Daewon = 1000000 +Ester = 1000000 faucet = 9223372036854 [token.Kartoffel] @@ -99,6 +105,7 @@ Albert = 1000000 Bertha = 1000000 Christel = 1000000 Daewon = 1000000 +Ester = 1000000 faucet = 9223372036854 # Some established accounts present at genesis. @@ -120,6 +127,8 @@ vp = "vp_masp" [implicit.Daewon] +[implicit.Ester] + # Wasm VP definitions # Implicit VP diff --git a/tests/src/e2e/ledger_tests.rs b/tests/src/e2e/ledger_tests.rs index 7c82dc84d3..2a2789d3d8 100644 --- a/tests/src/e2e/ledger_tests.rs +++ b/tests/src/e2e/ledger_tests.rs @@ -405,7 +405,7 @@ fn ledger_txs_and_queries() -> Result<()> { "--node", &validator_one_rpc, ], - // Submit a token transfer tx (from an implicit account) + // Submit a token transfer tx (from an ed25519 implicit account) vec![ "transfer", "--source", @@ -425,6 +425,26 @@ fn ledger_txs_and_queries() -> Result<()> { "--node", &validator_one_rpc, ], + // Submit a token transfer tx (from a secp256k1 implicit account) + vec![ + "transfer", + "--source", + ESTER, + "--target", + ALBERT, + "--token", + NAM, + "--amount", + "10.1", + "--gas-amount", + "0", + "--gas-limit", + "0", + "--gas-token", + NAM, + "--node", + &validator_one_rpc, + ], // 3. Submit a transaction to update an account's validity // predicate vec![ diff --git a/tests/src/e2e/setup.rs b/tests/src/e2e/setup.rs index 47cde7a28e..6e5870af63 100644 --- a/tests/src/e2e/setup.rs +++ b/tests/src/e2e/setup.rs @@ -795,6 +795,7 @@ pub mod constants { pub const CHRISTEL: &str = "Christel"; pub const CHRISTEL_KEY: &str = "Christel-key"; pub const DAEWON: &str = "Daewon"; + pub const ESTER: &str = "Ester"; pub const MATCHMAKER_KEY: &str = "matchmaker-key"; pub const MASP: &str = "atest1v4ehgw36xaryysfsx5unvve4g5my2vjz89p52sjxxgenzd348yuyyv3hg3pnjs35g5unvde4ca36y5";