From 75dcc18957ea1379399317fb740325e5cd7ceb76 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Tue, 17 May 2022 17:19:00 +0700 Subject: [PATCH 01/19] Make AgentSecrets accept TRANSACTIONSIGNERS_DEFAULT_* envars if present --- configuration/src/secrets.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/configuration/src/secrets.rs b/configuration/src/secrets.rs index 7c515b43..7bd8423c 100644 --- a/configuration/src/secrets.rs +++ b/configuration/src/secrets.rs @@ -38,7 +38,10 @@ impl AgentSecrets { let network_upper = network.to_uppercase(); let chain_conf = ChainConf::from_env(&format!("RPCS_{}", network_upper))?; let transaction_signer = - SignerConf::from_env(&format!("TRANSACTIONSIGNERS_{}", network_upper))?; + match SignerConf::from_env(&format!("TRANSACTIONSIGNERS_{}", network_upper)) { + Some(conf) => conf, + None => SignerConf::from_env("TRANSACTIONSIGNERS_DEFAULT_")?, + }; secrets.rpcs.insert(network.to_owned(), chain_conf); secrets From 31a3018bfb9b58fd06671db2277d59c1d8f3519f Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Tue, 17 May 2022 18:44:39 +0700 Subject: [PATCH 02/19] Add additional test utils --- Cargo.lock | 2 ++ configuration/Cargo.toml | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 59648304..ae78b28b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2576,11 +2576,13 @@ dependencies = [ "ethers", "eyre", "js-sys", + "nomad-test", "nomad-types", "once_cell", "serde 1.0.136", "serde_json", "serde_yaml", + "serial_test", "wasm-bindgen", "wee_alloc", ] diff --git a/configuration/Cargo.toml b/configuration/Cargo.toml index 0f34e5e9..c84abbcf 100644 --- a/configuration/Cargo.toml +++ b/configuration/Cargo.toml @@ -35,4 +35,6 @@ js-sys = "0.3.56" wasm-bindgen = { version = "0.2.79", features = ["serde-serialize"] } [dev-dependencies] -dotenv = "0.15.0" \ No newline at end of file +dotenv = "0.15.0" +serial_test = "0.6.0" +nomad-test = { path = "../nomad-test" } \ No newline at end of file From e20058c3876dc733c54115c3167a3835026e5850 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Tue, 17 May 2022 18:58:38 +0700 Subject: [PATCH 03/19] Add sync version of run_test_with_env --- nomad-test/src/test_utils.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/nomad-test/src/test_utils.rs b/nomad-test/src/test_utils.rs index 9225d512..0d017377 100644 --- a/nomad-test/src/test_utils.rs +++ b/nomad-test/src/test_utils.rs @@ -55,6 +55,19 @@ where assert!(result.is_ok()) } +pub fn run_test_with_env_sync(path: impl AsRef, test: T) +where + T: FnOnce() -> () + panic::UnwindSafe, +{ + let result = panic::catch_unwind(panic::AssertUnwindSafe(|| { + dotenv::from_filename(path).unwrap(); + test() + })); + + clear_env_vars(); + assert!(result.is_ok()) +} + pub fn clear_env_vars() { let env_vars = env::vars(); for (key, _) in env_vars.into_iter() { From 69492e6894df4070dfeff2e5119e337505e9fe38 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Tue, 17 May 2022 19:01:34 +0700 Subject: [PATCH 04/19] Fix bad prefix --- configuration/src/secrets.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration/src/secrets.rs b/configuration/src/secrets.rs index 7bd8423c..f18df920 100644 --- a/configuration/src/secrets.rs +++ b/configuration/src/secrets.rs @@ -40,7 +40,7 @@ impl AgentSecrets { let transaction_signer = match SignerConf::from_env(&format!("TRANSACTIONSIGNERS_{}", network_upper)) { Some(conf) => conf, - None => SignerConf::from_env("TRANSACTIONSIGNERS_DEFAULT_")?, + None => SignerConf::from_env("TRANSACTIONSIGNERS_DEFAULT")?, }; secrets.rpcs.insert(network.to_owned(), chain_conf); From 488be75c8d93e599cbe9f800e8ff6324697be9f3 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Tue, 17 May 2022 19:04:04 +0700 Subject: [PATCH 05/19] Refactor test to correctly isolate envars --- configuration/src/secrets.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/configuration/src/secrets.rs b/configuration/src/secrets.rs index f18df920..78af6356 100644 --- a/configuration/src/secrets.rs +++ b/configuration/src/secrets.rs @@ -113,18 +113,20 @@ impl AgentSecrets { #[cfg(test)] mod test { use super::*; - const SECRETS_JSON_PATH: &str = "../fixtures/test_secrets.json"; - const SECRETS_ENV_PATH: &str = "../fixtures/env.test"; + use nomad_test::test_utils; #[test] + #[serial_test::serial] fn it_builds_from_env() { - let networks = &crate::get_builtin("test").unwrap().networks; - dotenv::from_filename(SECRETS_ENV_PATH).unwrap(); - AgentSecrets::from_env(networks).expect("Failed to load secrets from env"); + test_utils::run_test_with_env_sync("../fixtures/env.test", move || { + let networks = &crate::get_builtin("test").unwrap().networks; + AgentSecrets::from_env(networks).expect("Failed to load secrets from env"); + }); } #[test] fn it_builds_from_file() { - AgentSecrets::from_file(SECRETS_JSON_PATH).expect("Failed to load secrets from file"); + AgentSecrets::from_file("../fixtures/test_secrets.json") + .expect("Failed to load secrets from file"); } } From 4c8f62bd0d89bcf0528351783028ef6eaccd9dda Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Tue, 17 May 2022 21:16:52 +0700 Subject: [PATCH 06/19] Add tests for default tx signer config --- configuration/src/secrets.rs | 57 ++++++++++++++++++++++++++++++++ fixtures/env.test-signer-default | 20 +++++++++++ fixtures/env.test-signer-mixed | 25 ++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 fixtures/env.test-signer-default create mode 100644 fixtures/env.test-signer-mixed diff --git a/configuration/src/secrets.rs b/configuration/src/secrets.rs index 78af6356..58f726af 100644 --- a/configuration/src/secrets.rs +++ b/configuration/src/secrets.rs @@ -114,6 +114,63 @@ impl AgentSecrets { mod test { use super::*; use nomad_test::test_utils; + use nomad_types::HexString; + + #[test] + #[serial_test::serial] + fn it_builds_from_env_signer_mixed() { + test_utils::run_test_with_env_sync("../fixtures/env.test-signer-mixed", move || { + let networks = &crate::get_builtin("test").unwrap().networks; + let secrets = + AgentSecrets::from_env(networks).expect("Failed to load secrets from env"); + + let default_config = SignerConf::Aws { + id: "default_id".into(), + region: "default_region".into(), + }; + let moonbeam_config = SignerConf::Aws { + id: "moonbeam_id".into(), + region: "moonbeam_region".into(), + }; + let ethereum_key = SignerConf::HexKey( + HexString::from_string( + "0x1111111111111111111111111111111111111111111111111111111111111111", + ) + .unwrap(), + ); + + assert_eq!( + *secrets.transaction_signers.get("moonbeam").unwrap(), + moonbeam_config + ); + assert_eq!( + *secrets.transaction_signers.get("ethereum").unwrap(), + ethereum_key + ); + assert_eq!( + *secrets.transaction_signers.get("evmos").unwrap(), + default_config + ); + }); + } + + #[test] + #[serial_test::serial] + fn it_builds_from_env_signer_default() { + test_utils::run_test_with_env_sync("../fixtures/env.test-signer-default", move || { + let networks = &crate::get_builtin("test").unwrap().networks; + let secrets = + AgentSecrets::from_env(networks).expect("Failed to load secrets from env"); + + let default_config = SignerConf::Aws { + id: "default_id".into(), + region: "default_region".into(), + }; + for (_, config) in &secrets.transaction_signers { + assert_eq!(*config, default_config); + } + }); + } #[test] #[serial_test::serial] diff --git a/fixtures/env.test-signer-default b/fixtures/env.test-signer-default new file mode 100644 index 00000000..f86e16c2 --- /dev/null +++ b/fixtures/env.test-signer-default @@ -0,0 +1,20 @@ +# Matches configuration/configs/test.json + +RUN_ENV=test +AGENT_HOME_NAME=ethereum +AGENT_REPLICAS_ALL=true + +RPCS_ETHEREUM_RPCSTYLE=ethereum +RPCS_ETHEREUM_CONNECTION_URL=https://main-light.eth.linkpool.io/ + +RPCS_MOONBEAM_RPCSTYLE=ethereum +RPCS_MOONBEAM_CONNECTION_URL=https://rpc.api.moonbeam.network + +RPCS_EVMOS_RPCSTYLE=ethereum +RPCS_EVMOS_CONNECTION_URL=https://eth.bd.evmos.org:8545 + +TRANSACTIONSIGNERS_DEFAULT_REGION=default_region +TRANSACTIONSIGNERS_DEFAULT_ID=default_id + +ATTESTATION_SIGNER_ID=dummy_id +ATTESTATION_SIGNER_REGION=dummy_region \ No newline at end of file diff --git a/fixtures/env.test-signer-mixed b/fixtures/env.test-signer-mixed new file mode 100644 index 00000000..b0364360 --- /dev/null +++ b/fixtures/env.test-signer-mixed @@ -0,0 +1,25 @@ +# Matches configuration/configs/test.json + +RUN_ENV=test +AGENT_HOME_NAME=ethereum +AGENT_REPLICAS_ALL=true + +RPCS_ETHEREUM_RPCSTYLE=ethereum +RPCS_ETHEREUM_CONNECTION_URL=https://main-light.eth.linkpool.io/ + +RPCS_MOONBEAM_RPCSTYLE=ethereum +RPCS_MOONBEAM_CONNECTION_URL=https://rpc.api.moonbeam.network + +RPCS_EVMOS_RPCSTYLE=ethereum +RPCS_EVMOS_CONNECTION_URL=https://eth.bd.evmos.org:8545 + +TRANSACTIONSIGNERS_ETHEREUM_KEY=0x1111111111111111111111111111111111111111111111111111111111111111 + +TRANSACTIONSIGNERS_MOONBEAM_ID=moonbeam_id +TRANSACTIONSIGNERS_MOONBEAM_REGION=moonbeam_region + +TRANSACTIONSIGNERS_DEFAULT_REGION=default_region +TRANSACTIONSIGNERS_DEFAULT_ID=default_id + +ATTESTATION_SIGNER_ID=dummy_id +ATTESTATION_SIGNER_REGION=dummy_region \ No newline at end of file From c437483c8f592f801b3c9d5dfd5dd481f05ea651 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Tue, 17 May 2022 21:18:55 +0700 Subject: [PATCH 07/19] Fix linting error --- nomad-test/src/test_utils.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nomad-test/src/test_utils.rs b/nomad-test/src/test_utils.rs index 0d017377..f4d575d3 100644 --- a/nomad-test/src/test_utils.rs +++ b/nomad-test/src/test_utils.rs @@ -57,7 +57,7 @@ where pub fn run_test_with_env_sync(path: impl AsRef, test: T) where - T: FnOnce() -> () + panic::UnwindSafe, + T: FnOnce() + panic::UnwindSafe, { let result = panic::catch_unwind(panic::AssertUnwindSafe(|| { dotenv::from_filename(path).unwrap(); From 9d6897c2ee1459c83e574beda719dc43c6aa1323 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Tue, 17 May 2022 21:39:26 +0700 Subject: [PATCH 08/19] Add newline to end of file --- configuration/Cargo.toml | 2 +- fixtures/env.test-signer-default | 2 +- fixtures/env.test-signer-mixed | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/configuration/Cargo.toml b/configuration/Cargo.toml index c84abbcf..ba5ee2f3 100644 --- a/configuration/Cargo.toml +++ b/configuration/Cargo.toml @@ -37,4 +37,4 @@ wasm-bindgen = { version = "0.2.79", features = ["serde-serialize"] } [dev-dependencies] dotenv = "0.15.0" serial_test = "0.6.0" -nomad-test = { path = "../nomad-test" } \ No newline at end of file +nomad-test = { path = "../nomad-test" } diff --git a/fixtures/env.test-signer-default b/fixtures/env.test-signer-default index f86e16c2..d2c39f09 100644 --- a/fixtures/env.test-signer-default +++ b/fixtures/env.test-signer-default @@ -17,4 +17,4 @@ TRANSACTIONSIGNERS_DEFAULT_REGION=default_region TRANSACTIONSIGNERS_DEFAULT_ID=default_id ATTESTATION_SIGNER_ID=dummy_id -ATTESTATION_SIGNER_REGION=dummy_region \ No newline at end of file +ATTESTATION_SIGNER_REGION=dummy_region diff --git a/fixtures/env.test-signer-mixed b/fixtures/env.test-signer-mixed index b0364360..859f74f2 100644 --- a/fixtures/env.test-signer-mixed +++ b/fixtures/env.test-signer-mixed @@ -22,4 +22,4 @@ TRANSACTIONSIGNERS_DEFAULT_REGION=default_region TRANSACTIONSIGNERS_DEFAULT_ID=default_id ATTESTATION_SIGNER_ID=dummy_id -ATTESTATION_SIGNER_REGION=dummy_region \ No newline at end of file +ATTESTATION_SIGNER_REGION=dummy_region From 203a5c75685a87f674af23e4443fc3332d0348cb Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Tue, 17 May 2022 22:59:32 +0700 Subject: [PATCH 09/19] Make AgentSecrets accept RPCS_DEFAULT_* envars if present --- configuration/src/secrets.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/configuration/src/secrets.rs b/configuration/src/secrets.rs index 58f726af..6642982d 100644 --- a/configuration/src/secrets.rs +++ b/configuration/src/secrets.rs @@ -36,7 +36,12 @@ impl AgentSecrets { for network in networks.iter() { let network_upper = network.to_uppercase(); - let chain_conf = ChainConf::from_env(&format!("RPCS_{}", network_upper))?; + + let chain_conf = match ChainConf::from_env(&format!("RPCS_{}", network_upper)) { + Some(conf) => conf, + None => ChainConf::from_env("RPCS_DEFAULT")?, + }; + let transaction_signer = match SignerConf::from_env(&format!("TRANSACTIONSIGNERS_{}", network_upper)) { Some(conf) => conf, From d9de4c04d9ac48a576df353dd6a6be05d4544ca5 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Wed, 18 May 2022 02:42:38 +0700 Subject: [PATCH 10/19] Update FromEnv to accept an optional default prefix --- configuration/src/agent/signer.rs | 6 +++++- configuration/src/chains/mod.rs | 11 ++++++++--- configuration/src/secrets.rs | 17 +++++++---------- configuration/src/traits/env.rs | 2 +- 4 files changed, 21 insertions(+), 15 deletions(-) diff --git a/configuration/src/agent/signer.rs b/configuration/src/agent/signer.rs index 36aa1728..83ae3d5b 100644 --- a/configuration/src/agent/signer.rs +++ b/configuration/src/agent/signer.rs @@ -28,7 +28,7 @@ impl Default for SignerConf { } impl FromEnv for SignerConf { - fn from_env(prefix: &str) -> Option { + fn from_env(prefix: &str, default_prefix: Option<&str>) -> Option { // ordering this first preferentially uses AWS if both are specified if let Ok(id) = std::env::var(&format!("{}_ID", prefix)) { if let Ok(region) = std::env::var(&format!("{}_REGION", prefix)) { @@ -40,6 +40,10 @@ impl FromEnv for SignerConf { return Some(SignerConf::HexKey(HexString::from_str(&signer_key).ok()?)); } + if let Some(prefix) = default_prefix { + return SignerConf::from_env(prefix, None); + } + None } } diff --git a/configuration/src/chains/mod.rs b/configuration/src/chains/mod.rs index e6175b81..5801bcaa 100644 --- a/configuration/src/chains/mod.rs +++ b/configuration/src/chains/mod.rs @@ -23,12 +23,17 @@ impl Default for ChainConf { } impl FromEnv for ChainConf { - fn from_env(prefix: &str) -> Option { - let rpc_style = std::env::var(&format!("{}_RPCSTYLE", prefix)).ok()?; + fn from_env(prefix: &str, default_prefix: Option<&str>) -> Option { + let mut rpc_style = std::env::var(&format!("{}_RPCSTYLE", prefix)).ok(); + + if let (None, Some(prefix)) = (&rpc_style, default_prefix) { + rpc_style = std::env::var(&format!("{}_RPCSTYLE", prefix)).ok(); + } + let rpc_url = std::env::var(&format!("{}_CONNECTION_URL", prefix)).ok()?; let json = json!({ - "rpcStyle": rpc_style, + "rpcStyle": rpc_style?, "connection": rpc_url, }); diff --git a/configuration/src/secrets.rs b/configuration/src/secrets.rs index 6642982d..fff413d8 100644 --- a/configuration/src/secrets.rs +++ b/configuration/src/secrets.rs @@ -37,16 +37,13 @@ impl AgentSecrets { for network in networks.iter() { let network_upper = network.to_uppercase(); - let chain_conf = match ChainConf::from_env(&format!("RPCS_{}", network_upper)) { - Some(conf) => conf, - None => ChainConf::from_env("RPCS_DEFAULT")?, - }; + let chain_conf = + ChainConf::from_env(&format!("RPCS_{}", network_upper), Some("RPCS_DEFAULT"))?; - let transaction_signer = - match SignerConf::from_env(&format!("TRANSACTIONSIGNERS_{}", network_upper)) { - Some(conf) => conf, - None => SignerConf::from_env("TRANSACTIONSIGNERS_DEFAULT")?, - }; + let transaction_signer = SignerConf::from_env( + &format!("TRANSACTIONSIGNERS_{}", network_upper), + Some("TRANSACTIONSIGNERS_DEFAULT"), + )?; secrets.rpcs.insert(network.to_owned(), chain_conf); secrets @@ -54,7 +51,7 @@ impl AgentSecrets { .insert(network.to_owned(), transaction_signer); } - let attestation_signer = SignerConf::from_env("ATTESTATION_SIGNER"); + let attestation_signer = SignerConf::from_env("ATTESTATION_SIGNER", None); secrets.attestation_signer = attestation_signer; Some(secrets) diff --git a/configuration/src/traits/env.rs b/configuration/src/traits/env.rs index 5c29f7a3..c092da21 100644 --- a/configuration/src/traits/env.rs +++ b/configuration/src/traits/env.rs @@ -9,7 +9,7 @@ pub trait EnvOverridable { pub trait FromEnv { /// Optionally load self from env vars. Return None if any necessary env var /// is missing. - fn from_env(prefix: &str) -> Option + fn from_env(prefix: &str, default_prefix: Option<&str>) -> Option where Self: Sized; } From 7b7aae0bbe1f774a9327c21d14c85320311ce403 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Wed, 18 May 2022 02:44:20 +0700 Subject: [PATCH 11/19] Update test envs with rpc defaults --- fixtures/env.test-signer-default | 7 ++----- fixtures/env.test-signer-mixed | 8 +++----- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/fixtures/env.test-signer-default b/fixtures/env.test-signer-default index d2c39f09..b7fbe1d9 100644 --- a/fixtures/env.test-signer-default +++ b/fixtures/env.test-signer-default @@ -4,13 +4,10 @@ RUN_ENV=test AGENT_HOME_NAME=ethereum AGENT_REPLICAS_ALL=true -RPCS_ETHEREUM_RPCSTYLE=ethereum -RPCS_ETHEREUM_CONNECTION_URL=https://main-light.eth.linkpool.io/ +RPCS_DEFAULT_RPCSTYLE=ethereum -RPCS_MOONBEAM_RPCSTYLE=ethereum +RPCS_ETHEREUM_CONNECTION_URL=https://main-light.eth.linkpool.io/ RPCS_MOONBEAM_CONNECTION_URL=https://rpc.api.moonbeam.network - -RPCS_EVMOS_RPCSTYLE=ethereum RPCS_EVMOS_CONNECTION_URL=https://eth.bd.evmos.org:8545 TRANSACTIONSIGNERS_DEFAULT_REGION=default_region diff --git a/fixtures/env.test-signer-mixed b/fixtures/env.test-signer-mixed index 859f74f2..0141c1a4 100644 --- a/fixtures/env.test-signer-mixed +++ b/fixtures/env.test-signer-mixed @@ -4,13 +4,11 @@ RUN_ENV=test AGENT_HOME_NAME=ethereum AGENT_REPLICAS_ALL=true -RPCS_ETHEREUM_RPCSTYLE=ethereum -RPCS_ETHEREUM_CONNECTION_URL=https://main-light.eth.linkpool.io/ +RPCS_DEFAULT_RPCSTYLE=ethereum +RPCS_EVMOS_RPCSTYLE=ethereum -RPCS_MOONBEAM_RPCSTYLE=ethereum +RPCS_ETHEREUM_CONNECTION_URL=https://main-light.eth.linkpool.io/ RPCS_MOONBEAM_CONNECTION_URL=https://rpc.api.moonbeam.network - -RPCS_EVMOS_RPCSTYLE=ethereum RPCS_EVMOS_CONNECTION_URL=https://eth.bd.evmos.org:8545 TRANSACTIONSIGNERS_ETHEREUM_KEY=0x1111111111111111111111111111111111111111111111111111111111111111 From 9d7c6442ca16c608878fbc4e6b4a1b53755713e7 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Wed, 18 May 2022 03:03:14 +0700 Subject: [PATCH 12/19] Add rpc checks to existing tests --- configuration/src/secrets.rs | 54 ++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/configuration/src/secrets.rs b/configuration/src/secrets.rs index fff413d8..7551a3c1 100644 --- a/configuration/src/secrets.rs +++ b/configuration/src/secrets.rs @@ -115,50 +115,59 @@ impl AgentSecrets { #[cfg(test)] mod test { use super::*; + use crate::ethereum::Connection; use nomad_test::test_utils; - use nomad_types::HexString; #[test] #[serial_test::serial] - fn it_builds_from_env_signer_mixed() { + fn it_builds_from_env_mixed() { test_utils::run_test_with_env_sync("../fixtures/env.test-signer-mixed", move || { let networks = &crate::get_builtin("test").unwrap().networks; let secrets = AgentSecrets::from_env(networks).expect("Failed to load secrets from env"); - let default_config = SignerConf::Aws { - id: "default_id".into(), - region: "default_region".into(), - }; - let moonbeam_config = SignerConf::Aws { - id: "moonbeam_id".into(), - region: "moonbeam_region".into(), - }; - let ethereum_key = SignerConf::HexKey( - HexString::from_string( - "0x1111111111111111111111111111111111111111111111111111111111111111", - ) - .unwrap(), - ); - assert_eq!( *secrets.transaction_signers.get("moonbeam").unwrap(), - moonbeam_config + SignerConf::Aws { + id: "moonbeam_id".into(), + region: "moonbeam_region".into(), + } ); assert_eq!( *secrets.transaction_signers.get("ethereum").unwrap(), - ethereum_key + SignerConf::HexKey( + "0x1111111111111111111111111111111111111111111111111111111111111111" + .parse() + .unwrap() + ) ); assert_eq!( *secrets.transaction_signers.get("evmos").unwrap(), - default_config + SignerConf::Aws { + id: "default_id".into(), + region: "default_region".into(), + } + ); + assert_eq!( + *secrets.rpcs.get("moonbeam").unwrap(), + ChainConf::Ethereum(Connection::Http("https://rpc.api.moonbeam.network".into())) + ); + assert_eq!( + *secrets.rpcs.get("ethereum").unwrap(), + ChainConf::Ethereum(Connection::Http( + "https://main-light.eth.linkpool.io/".into() + )) + ); + assert_eq!( + *secrets.rpcs.get("evmos").unwrap(), + ChainConf::Ethereum(Connection::Http("https://eth.bd.evmos.org:8545".into())) ); }); } #[test] #[serial_test::serial] - fn it_builds_from_env_signer_default() { + fn it_builds_from_env_default() { test_utils::run_test_with_env_sync("../fixtures/env.test-signer-default", move || { let networks = &crate::get_builtin("test").unwrap().networks; let secrets = @@ -171,6 +180,9 @@ mod test { for (_, config) in &secrets.transaction_signers { assert_eq!(*config, default_config); } + for (_, config) in &secrets.rpcs { + assert!(matches!(*config, ChainConf::Ethereum { .. })); + } }); } From b262c003ab92ecd863c4ee13a41aaece8f0113ff Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Wed, 18 May 2022 17:53:20 +0700 Subject: [PATCH 13/19] Bump ethers commit --- Cargo.lock | 308 ++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 243 insertions(+), 65 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ae78b28b..6d10d32e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -766,6 +766,12 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" +[[package]] +name = "const-oid" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "722e23542a15cea1f65d4a1419c4cfd7a26706c70871a13a04238ca3f40f1661" + [[package]] name = "convert_case" version = "0.5.0" @@ -914,7 +920,16 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c" dependencies = [ - "const-oid", + "const-oid 0.7.1", +] + +[[package]] +name = "der" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13dd2ae565c0a381dde7fade45fce95984c568bdcb4700a4fdbe3175e0380b2f" +dependencies = [ + "const-oid 0.9.0", ] [[package]] @@ -1003,7 +1018,7 @@ version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0d69ae62e0ce582d56380743515fefaf1a8c70cec685d9677636d7e30ae9dc9" dependencies = [ - "der", + "der 0.5.1", "elliptic-curve", "rfc6979", "signature", @@ -1023,7 +1038,7 @@ checksum = "25b477563c2bfed38a3b7a60964c49e058b2510ad3f12ba3483fd8f62c2306d6" dependencies = [ "base16ct", "crypto-bigint", - "der", + "der 0.5.1", "ff", "generic-array 0.14.5", "group", @@ -1119,8 +1134,8 @@ dependencies = [ [[package]] name = "ethers" -version = "0.6.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" +version = "0.6.2" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" dependencies = [ "ethers-addressbook", "ethers-contract", @@ -1135,7 +1150,7 @@ dependencies = [ [[package]] name = "ethers-addressbook" version = "0.1.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" dependencies = [ "ethers-core", "once_cell", @@ -1145,8 +1160,8 @@ dependencies = [ [[package]] name = "ethers-contract" -version = "0.6.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" +version = "0.6.2" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" dependencies = [ "ethers-contract-abigen", "ethers-contract-derive", @@ -1163,8 +1178,8 @@ dependencies = [ [[package]] name = "ethers-contract-abigen" -version = "0.6.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" +version = "0.6.3" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" dependencies = [ "Inflector", "cfg-if 1.0.0", @@ -1185,8 +1200,8 @@ dependencies = [ [[package]] name = "ethers-contract-derive" -version = "0.6.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" +version = "0.6.3" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" dependencies = [ "ethers-contract-abigen", "ethers-core", @@ -1199,12 +1214,13 @@ dependencies = [ [[package]] name = "ethers-core" -version = "0.6.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" +version = "0.6.3" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" dependencies = [ "arrayvec 0.7.2", "bytes", "cargo_metadata", + "chrono", "convert_case", "elliptic-curve", "ethabi", @@ -1218,29 +1234,33 @@ dependencies = [ "rlp-derive", "serde 1.0.136", "serde_json", + "strum", "syn", "thiserror", "tiny-keccak", + "unicode-xid", ] [[package]] name = "ethers-etherscan" -version = "0.2.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" +version = "0.2.2" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" dependencies = [ "ethers-core", "ethers-solc", "reqwest", + "semver", "serde 1.0.136", "serde-aux", "serde_json", "thiserror", + "tracing", ] [[package]] name = "ethers-middleware" -version = "0.6.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" +version = "0.6.2" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" dependencies = [ "async-trait", "ethers-contract", @@ -1248,6 +1268,7 @@ dependencies = [ "ethers-etherscan", "ethers-providers", "ethers-signers", + "futures-locks", "futures-util", "instant", "reqwest", @@ -1262,8 +1283,8 @@ dependencies = [ [[package]] name = "ethers-providers" -version = "0.6.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" +version = "0.6.2" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" dependencies = [ "async-trait", "auto_impl", @@ -1273,6 +1294,7 @@ dependencies = [ "futures-core", "futures-timer", "futures-util", + "hashers", "hex", "http", "once_cell", @@ -1296,8 +1318,8 @@ dependencies = [ [[package]] name = "ethers-signers" -version = "0.6.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" +version = "0.6.2" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" dependencies = [ "async-trait", "coins-bip32", @@ -1307,10 +1329,10 @@ dependencies = [ "ethers-core", "hex", "rand", - "rusoto_core", - "rusoto_kms", + "rusoto_core 0.48.0", + "rusoto_kms 0.48.0", "sha2 0.9.9", - "spki", + "spki 0.6.0", "thiserror", "tracing", ] @@ -1318,8 +1340,9 @@ dependencies = [ [[package]] name = "ethers-solc" version = "0.3.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" dependencies = [ + "cfg-if 1.0.0", "colored", "dunce", "ethers-core", @@ -1330,6 +1353,7 @@ dependencies = [ "md-5 0.10.1", "num_cpus", "once_cell", + "path-slash", "rayon", "regex", "semver", @@ -1338,6 +1362,7 @@ dependencies = [ "solang-parser", "thiserror", "tiny-keccak", + "tokio", "tracing", "walkdir", ] @@ -1495,6 +1520,17 @@ version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" +[[package]] +name = "futures-locks" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eb42d4fb72227be5778429f9ef5240a38a358925a49f05b5cf702ce7c7e558a" +dependencies = [ + "futures-channel", + "futures-task", + "tokio", +] + [[package]] name = "futures-macro" version = "0.3.21" @@ -1542,6 +1578,15 @@ dependencies = [ "slab", ] +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + [[package]] name = "generic-array" version = "0.12.4" @@ -1625,6 +1670,15 @@ dependencies = [ "ahash", ] +[[package]] +name = "hashers" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" +dependencies = [ + "fxhash", +] + [[package]] name = "headers" version = "0.3.7" @@ -1982,8 +2036,8 @@ dependencies = [ "ethers-signers", "hex", "once_cell", - "rusoto_core", - "rusoto_kms", + "rusoto_core 0.47.0", + "rusoto_kms 0.47.0", "serde_json", "tokio", ] @@ -2436,8 +2490,8 @@ dependencies = [ "prometheus", "rand", "rocksdb", - "rusoto_core", - "rusoto_kms", + "rusoto_core 0.47.0", + "rusoto_kms 0.47.0", "serde 1.0.136", "serde_json", "thiserror", @@ -2462,8 +2516,8 @@ dependencies = [ "nomad-core", "nomad-ethereum", "once_cell", - "rusoto_core", - "rusoto_kms", + "rusoto_core 0.47.0", + "rusoto_kms 0.47.0", "serde_json", "structopt", "tokio", @@ -2488,8 +2542,8 @@ dependencies = [ "once_cell", "prometheus", "rocksdb", - "rusoto_core", - "rusoto_kms", + "rusoto_core 0.47.0", + "rusoto_kms 0.47.0", "serde 1.0.136", "serde_json", "sha3 0.9.1", @@ -2905,6 +2959,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "path-slash" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cacbb3c4ff353b534a67fb8d7524d00229da4cb1dc8c79f4db96e375ab5b619" + [[package]] name = "pbkdf2" version = "0.8.0" @@ -3050,8 +3110,8 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0" dependencies = [ - "der", - "spki", + "der 0.5.1", + "spki 0.5.4", "zeroize", ] @@ -3157,11 +3217,11 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro2" -version = "1.0.37" +version = "1.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1" +checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] @@ -3183,7 +3243,7 @@ dependencies = [ "nomad-xyz-configuration", "prometheus", "rocksdb", - "rusoto_core", + "rusoto_core 0.47.0", "rusoto_s3", "serde 1.0.136", "serde_json", @@ -3300,9 +3360,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.5.2" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd249e82c21598a9a426a4e00dd7adc1d640b22445ec8545feef801d1a74c221" +checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" dependencies = [ "autocfg", "crossbeam-deque", @@ -3526,8 +3586,33 @@ dependencies = [ "hyper-tls", "lazy_static", "log", - "rusoto_credential", - "rusoto_signature", + "rusoto_credential 0.47.0", + "rusoto_signature 0.47.0", + "rustc_version", + "serde 1.0.136", + "serde_json", + "tokio", + "xml-rs", +] + +[[package]] +name = "rusoto_core" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db30db44ea73551326269adcf7a2169428a054f14faf9e1768f2163494f2fa2" +dependencies = [ + "async-trait", + "base64 0.13.0", + "bytes", + "crc32fast", + "futures", + "http", + "hyper", + "hyper-tls", + "lazy_static", + "log", + "rusoto_credential 0.48.0", + "rusoto_signature 0.48.0", "rustc_version", "serde 1.0.136", "serde_json", @@ -3553,6 +3638,24 @@ dependencies = [ "zeroize", ] +[[package]] +name = "rusoto_credential" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee0a6c13db5aad6047b6a44ef023dbbc21a056b6dab5be3b79ce4283d5c02d05" +dependencies = [ + "async-trait", + "chrono", + "dirs-next", + "futures", + "hyper", + "serde 1.0.136", + "serde_json", + "shlex", + "tokio", + "zeroize", +] + [[package]] name = "rusoto_kms" version = "0.47.0" @@ -3562,7 +3665,21 @@ dependencies = [ "async-trait", "bytes", "futures", - "rusoto_core", + "rusoto_core 0.47.0", + "serde 1.0.136", + "serde_json", +] + +[[package]] +name = "rusoto_kms" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e1fc19cfcfd9f6b2f96e36d5b0dddda9004d2cbfc2d17543e3b9f10cc38fce8" +dependencies = [ + "async-trait", + "bytes", + "futures", + "rusoto_core 0.48.0", "serde 1.0.136", "serde_json", ] @@ -3576,7 +3693,7 @@ dependencies = [ "async-trait", "bytes", "futures", - "rusoto_core", + "rusoto_core 0.47.0", "xml-rs", ] @@ -3599,7 +3716,33 @@ dependencies = [ "md-5 0.9.1", "percent-encoding", "pin-project-lite", - "rusoto_credential", + "rusoto_credential 0.47.0", + "rustc_version", + "serde 1.0.136", + "sha2 0.9.9", + "tokio", +] + +[[package]] +name = "rusoto_signature" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ae95491c8b4847931e291b151127eccd6ff8ca13f33603eb3d0035ecb05272" +dependencies = [ + "base64 0.13.0", + "bytes", + "chrono", + "digest 0.9.0", + "futures", + "hex", + "hmac 0.11.0", + "http", + "hyper", + "log", + "md-5 0.9.1", + "percent-encoding", + "pin-project-lite", + "rusoto_credential 0.48.0", "rustc_version", "serde 1.0.136", "sha2 0.9.9", @@ -3747,7 +3890,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08da66b8b0965a5555b6bd6639e68ccba85e1e2506f5fbb089e93f8a04e1a2d1" dependencies = [ - "der", + "der 0.5.1", "generic-array 0.14.5", "pkcs8", "subtle", @@ -3779,9 +3922,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.7" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4" +checksum = "8cb243bdfdb5936c8dc3c45762a19d12ab4550cdc753bc247637d4ec35a040fd" dependencies = [ "serde 1.0.136", ] @@ -4061,15 +4204,13 @@ dependencies = [ [[package]] name = "solang-parser" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6b2ad9c159bd02219a59368133301e6195fdaa2b5d55c628ccdcd611d49235f" +checksum = "395b6e1ec5af117bd08f963c7cd80f8efd4eed51c5a332aed42b13e3f9bc860b" dependencies = [ + "itertools", "lalrpop", "lalrpop-util", - "num-bigint", - "num-rational", - "num-traits 0.2.14", "phf", "unicode-xid", ] @@ -4087,7 +4228,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27" dependencies = [ "base64ct", - "der", + "der 0.5.1", +] + +[[package]] +name = "spki" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" +dependencies = [ + "der 0.6.0", ] [[package]] @@ -4145,6 +4295,28 @@ dependencies = [ "syn", ] +[[package]] +name = "strum" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e96acfc1b70604b8b2f1ffa4c57e59176c7dbb05d556c71ecd2f5498a1dee7f8" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6878079b17446e4d3eba6192bb0a2950d5b14f0ed8424b852310e5a94345d0ef" +dependencies = [ + "heck 0.4.0", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + [[package]] name = "subtle" version = "2.4.1" @@ -4153,13 +4325,13 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.91" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b683b2b825c8eef438b77c36a06dc262294da3d5a5813fac20da149241dcd44d" +checksum = "fbaf6116ab8924f39d52792136fb74fd60a80194cf1b1c6ffa6453eef1c3f942" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] @@ -4225,18 +4397,18 @@ checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" [[package]] name = "thiserror" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" +checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" +checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" dependencies = [ "proc-macro2", "quote", @@ -4628,6 +4800,12 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" +[[package]] +name = "unicode-ident" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee" + [[package]] name = "unicode-normalization" version = "0.1.19" @@ -4651,9 +4829,9 @@ checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" [[package]] name = "unicode-xid" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" [[package]] name = "untrusted" From ae9cb60f7f737dbb3978505ffe744eaf8ab30f04 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Wed, 18 May 2022 18:06:11 +0700 Subject: [PATCH 14/19] Revert "Bump ethers commit" This reverts commit b262c003ab92ecd863c4ee13a41aaece8f0113ff. --- Cargo.lock | 308 +++++++++++------------------------------------------ 1 file changed, 65 insertions(+), 243 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6d10d32e..ae78b28b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -766,12 +766,6 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" -[[package]] -name = "const-oid" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "722e23542a15cea1f65d4a1419c4cfd7a26706c70871a13a04238ca3f40f1661" - [[package]] name = "convert_case" version = "0.5.0" @@ -920,16 +914,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c" dependencies = [ - "const-oid 0.7.1", -] - -[[package]] -name = "der" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dd2ae565c0a381dde7fade45fce95984c568bdcb4700a4fdbe3175e0380b2f" -dependencies = [ - "const-oid 0.9.0", + "const-oid", ] [[package]] @@ -1018,7 +1003,7 @@ version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0d69ae62e0ce582d56380743515fefaf1a8c70cec685d9677636d7e30ae9dc9" dependencies = [ - "der 0.5.1", + "der", "elliptic-curve", "rfc6979", "signature", @@ -1038,7 +1023,7 @@ checksum = "25b477563c2bfed38a3b7a60964c49e058b2510ad3f12ba3483fd8f62c2306d6" dependencies = [ "base16ct", "crypto-bigint", - "der 0.5.1", + "der", "ff", "generic-array 0.14.5", "group", @@ -1134,8 +1119,8 @@ dependencies = [ [[package]] name = "ethers" -version = "0.6.2" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" +version = "0.6.0" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" dependencies = [ "ethers-addressbook", "ethers-contract", @@ -1150,7 +1135,7 @@ dependencies = [ [[package]] name = "ethers-addressbook" version = "0.1.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" dependencies = [ "ethers-core", "once_cell", @@ -1160,8 +1145,8 @@ dependencies = [ [[package]] name = "ethers-contract" -version = "0.6.2" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" +version = "0.6.0" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" dependencies = [ "ethers-contract-abigen", "ethers-contract-derive", @@ -1178,8 +1163,8 @@ dependencies = [ [[package]] name = "ethers-contract-abigen" -version = "0.6.3" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" +version = "0.6.0" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" dependencies = [ "Inflector", "cfg-if 1.0.0", @@ -1200,8 +1185,8 @@ dependencies = [ [[package]] name = "ethers-contract-derive" -version = "0.6.3" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" +version = "0.6.0" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" dependencies = [ "ethers-contract-abigen", "ethers-core", @@ -1214,13 +1199,12 @@ dependencies = [ [[package]] name = "ethers-core" -version = "0.6.3" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" +version = "0.6.0" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" dependencies = [ "arrayvec 0.7.2", "bytes", "cargo_metadata", - "chrono", "convert_case", "elliptic-curve", "ethabi", @@ -1234,33 +1218,29 @@ dependencies = [ "rlp-derive", "serde 1.0.136", "serde_json", - "strum", "syn", "thiserror", "tiny-keccak", - "unicode-xid", ] [[package]] name = "ethers-etherscan" -version = "0.2.2" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" +version = "0.2.0" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" dependencies = [ "ethers-core", "ethers-solc", "reqwest", - "semver", "serde 1.0.136", "serde-aux", "serde_json", "thiserror", - "tracing", ] [[package]] name = "ethers-middleware" -version = "0.6.2" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" +version = "0.6.0" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" dependencies = [ "async-trait", "ethers-contract", @@ -1268,7 +1248,6 @@ dependencies = [ "ethers-etherscan", "ethers-providers", "ethers-signers", - "futures-locks", "futures-util", "instant", "reqwest", @@ -1283,8 +1262,8 @@ dependencies = [ [[package]] name = "ethers-providers" -version = "0.6.2" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" +version = "0.6.0" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" dependencies = [ "async-trait", "auto_impl", @@ -1294,7 +1273,6 @@ dependencies = [ "futures-core", "futures-timer", "futures-util", - "hashers", "hex", "http", "once_cell", @@ -1318,8 +1296,8 @@ dependencies = [ [[package]] name = "ethers-signers" -version = "0.6.2" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" +version = "0.6.0" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" dependencies = [ "async-trait", "coins-bip32", @@ -1329,10 +1307,10 @@ dependencies = [ "ethers-core", "hex", "rand", - "rusoto_core 0.48.0", - "rusoto_kms 0.48.0", + "rusoto_core", + "rusoto_kms", "sha2 0.9.9", - "spki 0.6.0", + "spki", "thiserror", "tracing", ] @@ -1340,9 +1318,8 @@ dependencies = [ [[package]] name = "ethers-solc" version = "0.3.0" -source = "git+https://github.com/gakonst/ethers-rs?branch=master#f5ea2bd6e3b9035875b219c5b859befb4918df4e" +source = "git+https://github.com/gakonst/ethers-rs?branch=master#5f1f967ec14dc89799135c4aad67fd6647f2c84e" dependencies = [ - "cfg-if 1.0.0", "colored", "dunce", "ethers-core", @@ -1353,7 +1330,6 @@ dependencies = [ "md-5 0.10.1", "num_cpus", "once_cell", - "path-slash", "rayon", "regex", "semver", @@ -1362,7 +1338,6 @@ dependencies = [ "solang-parser", "thiserror", "tiny-keccak", - "tokio", "tracing", "walkdir", ] @@ -1520,17 +1495,6 @@ version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" -[[package]] -name = "futures-locks" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb42d4fb72227be5778429f9ef5240a38a358925a49f05b5cf702ce7c7e558a" -dependencies = [ - "futures-channel", - "futures-task", - "tokio", -] - [[package]] name = "futures-macro" version = "0.3.21" @@ -1578,15 +1542,6 @@ dependencies = [ "slab", ] -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - [[package]] name = "generic-array" version = "0.12.4" @@ -1670,15 +1625,6 @@ dependencies = [ "ahash", ] -[[package]] -name = "hashers" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" -dependencies = [ - "fxhash", -] - [[package]] name = "headers" version = "0.3.7" @@ -2036,8 +1982,8 @@ dependencies = [ "ethers-signers", "hex", "once_cell", - "rusoto_core 0.47.0", - "rusoto_kms 0.47.0", + "rusoto_core", + "rusoto_kms", "serde_json", "tokio", ] @@ -2490,8 +2436,8 @@ dependencies = [ "prometheus", "rand", "rocksdb", - "rusoto_core 0.47.0", - "rusoto_kms 0.47.0", + "rusoto_core", + "rusoto_kms", "serde 1.0.136", "serde_json", "thiserror", @@ -2516,8 +2462,8 @@ dependencies = [ "nomad-core", "nomad-ethereum", "once_cell", - "rusoto_core 0.47.0", - "rusoto_kms 0.47.0", + "rusoto_core", + "rusoto_kms", "serde_json", "structopt", "tokio", @@ -2542,8 +2488,8 @@ dependencies = [ "once_cell", "prometheus", "rocksdb", - "rusoto_core 0.47.0", - "rusoto_kms 0.47.0", + "rusoto_core", + "rusoto_kms", "serde 1.0.136", "serde_json", "sha3 0.9.1", @@ -2959,12 +2905,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "path-slash" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cacbb3c4ff353b534a67fb8d7524d00229da4cb1dc8c79f4db96e375ab5b619" - [[package]] name = "pbkdf2" version = "0.8.0" @@ -3110,8 +3050,8 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0" dependencies = [ - "der 0.5.1", - "spki 0.5.4", + "der", + "spki", "zeroize", ] @@ -3217,11 +3157,11 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro2" -version = "1.0.39" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f" +checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1" dependencies = [ - "unicode-ident", + "unicode-xid", ] [[package]] @@ -3243,7 +3183,7 @@ dependencies = [ "nomad-xyz-configuration", "prometheus", "rocksdb", - "rusoto_core 0.47.0", + "rusoto_core", "rusoto_s3", "serde 1.0.136", "serde_json", @@ -3360,9 +3300,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.5.3" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" +checksum = "fd249e82c21598a9a426a4e00dd7adc1d640b22445ec8545feef801d1a74c221" dependencies = [ "autocfg", "crossbeam-deque", @@ -3586,33 +3526,8 @@ dependencies = [ "hyper-tls", "lazy_static", "log", - "rusoto_credential 0.47.0", - "rusoto_signature 0.47.0", - "rustc_version", - "serde 1.0.136", - "serde_json", - "tokio", - "xml-rs", -] - -[[package]] -name = "rusoto_core" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1db30db44ea73551326269adcf7a2169428a054f14faf9e1768f2163494f2fa2" -dependencies = [ - "async-trait", - "base64 0.13.0", - "bytes", - "crc32fast", - "futures", - "http", - "hyper", - "hyper-tls", - "lazy_static", - "log", - "rusoto_credential 0.48.0", - "rusoto_signature 0.48.0", + "rusoto_credential", + "rusoto_signature", "rustc_version", "serde 1.0.136", "serde_json", @@ -3638,24 +3553,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "rusoto_credential" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee0a6c13db5aad6047b6a44ef023dbbc21a056b6dab5be3b79ce4283d5c02d05" -dependencies = [ - "async-trait", - "chrono", - "dirs-next", - "futures", - "hyper", - "serde 1.0.136", - "serde_json", - "shlex", - "tokio", - "zeroize", -] - [[package]] name = "rusoto_kms" version = "0.47.0" @@ -3665,21 +3562,7 @@ dependencies = [ "async-trait", "bytes", "futures", - "rusoto_core 0.47.0", - "serde 1.0.136", - "serde_json", -] - -[[package]] -name = "rusoto_kms" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e1fc19cfcfd9f6b2f96e36d5b0dddda9004d2cbfc2d17543e3b9f10cc38fce8" -dependencies = [ - "async-trait", - "bytes", - "futures", - "rusoto_core 0.48.0", + "rusoto_core", "serde 1.0.136", "serde_json", ] @@ -3693,7 +3576,7 @@ dependencies = [ "async-trait", "bytes", "futures", - "rusoto_core 0.47.0", + "rusoto_core", "xml-rs", ] @@ -3716,33 +3599,7 @@ dependencies = [ "md-5 0.9.1", "percent-encoding", "pin-project-lite", - "rusoto_credential 0.47.0", - "rustc_version", - "serde 1.0.136", - "sha2 0.9.9", - "tokio", -] - -[[package]] -name = "rusoto_signature" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5ae95491c8b4847931e291b151127eccd6ff8ca13f33603eb3d0035ecb05272" -dependencies = [ - "base64 0.13.0", - "bytes", - "chrono", - "digest 0.9.0", - "futures", - "hex", - "hmac 0.11.0", - "http", - "hyper", - "log", - "md-5 0.9.1", - "percent-encoding", - "pin-project-lite", - "rusoto_credential 0.48.0", + "rusoto_credential", "rustc_version", "serde 1.0.136", "sha2 0.9.9", @@ -3890,7 +3747,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08da66b8b0965a5555b6bd6639e68ccba85e1e2506f5fbb089e93f8a04e1a2d1" dependencies = [ - "der 0.5.1", + "der", "generic-array 0.14.5", "pkcs8", "subtle", @@ -3922,9 +3779,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.9" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cb243bdfdb5936c8dc3c45762a19d12ab4550cdc753bc247637d4ec35a040fd" +checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4" dependencies = [ "serde 1.0.136", ] @@ -4204,13 +4061,15 @@ dependencies = [ [[package]] name = "solang-parser" -version = "0.1.13" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395b6e1ec5af117bd08f963c7cd80f8efd4eed51c5a332aed42b13e3f9bc860b" +checksum = "e6b2ad9c159bd02219a59368133301e6195fdaa2b5d55c628ccdcd611d49235f" dependencies = [ - "itertools", "lalrpop", "lalrpop-util", + "num-bigint", + "num-rational", + "num-traits 0.2.14", "phf", "unicode-xid", ] @@ -4228,16 +4087,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27" dependencies = [ "base64ct", - "der 0.5.1", -] - -[[package]] -name = "spki" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" -dependencies = [ - "der 0.6.0", + "der", ] [[package]] @@ -4295,28 +4145,6 @@ dependencies = [ "syn", ] -[[package]] -name = "strum" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96acfc1b70604b8b2f1ffa4c57e59176c7dbb05d556c71ecd2f5498a1dee7f8" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6878079b17446e4d3eba6192bb0a2950d5b14f0ed8424b852310e5a94345d0ef" -dependencies = [ - "heck 0.4.0", - "proc-macro2", - "quote", - "rustversion", - "syn", -] - [[package]] name = "subtle" version = "2.4.1" @@ -4325,13 +4153,13 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.95" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbaf6116ab8924f39d52792136fb74fd60a80194cf1b1c6ffa6453eef1c3f942" +checksum = "b683b2b825c8eef438b77c36a06dc262294da3d5a5813fac20da149241dcd44d" dependencies = [ "proc-macro2", "quote", - "unicode-ident", + "unicode-xid", ] [[package]] @@ -4397,18 +4225,18 @@ checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" [[package]] name = "thiserror" -version = "1.0.31" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.31" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" dependencies = [ "proc-macro2", "quote", @@ -4800,12 +4628,6 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" -[[package]] -name = "unicode-ident" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee" - [[package]] name = "unicode-normalization" version = "0.1.19" @@ -4829,9 +4651,9 @@ checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" [[package]] name = "unicode-xid" -version = "0.2.3" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "untrusted" From c24918f56f31749544db9f5b6f62437c16e87847 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Thu, 19 May 2022 13:40:37 +0700 Subject: [PATCH 15/19] Exclude nomad-test from wasm builds --- configuration/Cargo.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/configuration/Cargo.toml b/configuration/Cargo.toml index ba5ee2f3..07ed5032 100644 --- a/configuration/Cargo.toml +++ b/configuration/Cargo.toml @@ -37,4 +37,6 @@ wasm-bindgen = { version = "0.2.79", features = ["serde-serialize"] } [dev-dependencies] dotenv = "0.15.0" serial_test = "0.6.0" + +[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies] nomad-test = { path = "../nomad-test" } From cfb24922f97ea6227e32e5b1e8fde77aa46f68dc Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Thu, 19 May 2022 13:41:05 +0700 Subject: [PATCH 16/19] Use dependency resolver v2 --- Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.toml b/Cargo.toml index 9c705f91..54350ccb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,7 @@ cargo-features = ["edition2021"] [workspace] +resolver = "2" members = [ "accumulator", From ed655d74f593afa8311a87371edd6382327c1662 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Thu, 19 May 2022 16:32:14 +0700 Subject: [PATCH 17/19] Add tests for correct defaults handling for kathy --- agents/kathy/src/settings.rs | 118 ++++++++++++++++++++++++++++++++++- 1 file changed, 117 insertions(+), 1 deletion(-) diff --git a/agents/kathy/src/settings.rs b/agents/kathy/src/settings.rs index 3892f6d3..f4e7f23d 100644 --- a/agents/kathy/src/settings.rs +++ b/agents/kathy/src/settings.rs @@ -10,7 +10,123 @@ mod test { use super::*; use nomad_base::{get_remotes_from_env, NomadAgent}; use nomad_test::test_utils; - use nomad_xyz_configuration::AgentSecrets; + use nomad_xyz_configuration::{ + agent::SignerConf, ethereum::Connection, AgentSecrets, ChainConf, + }; + + #[tokio::test] + #[serial_test::serial] + async fn it_builds_settings_from_env_mixed() { + test_utils::run_test_with_env("../../fixtures/env.test-signer-mixed", || async move { + let run_env = dotenv::var("RUN_ENV").unwrap(); + let agent_home = dotenv::var("AGENT_HOME_NAME").unwrap(); + + let settings = KathySettings::new().unwrap(); + + let config = nomad_xyz_configuration::get_builtin(&run_env).unwrap(); + + let remotes = get_remotes_from_env!(agent_home, config); + let mut networks = remotes.clone(); + networks.insert(agent_home.clone()); + + let secrets = AgentSecrets::from_env(&networks).unwrap(); + + settings + .base + .validate_against_config_and_secrets( + crate::Kathy::AGENT_NAME, + &agent_home, + &remotes, + config, + &secrets, + ) + .unwrap(); + + assert_eq!( + *settings.base.signers.get("moonbeam").unwrap(), + SignerConf::Aws { + id: "moonbeam_id".into(), + region: "moonbeam_region".into(), + } + ); + assert_eq!( + *settings.base.signers.get("ethereum").unwrap(), + SignerConf::HexKey( + "0x1111111111111111111111111111111111111111111111111111111111111111" + .parse() + .unwrap() + ) + ); + assert_eq!( + *settings.base.signers.get("evmos").unwrap(), + SignerConf::Aws { + id: "default_id".into(), + region: "default_region".into(), + } + ); + assert_eq!( + settings.base.home.chain, + ChainConf::Ethereum(Connection::Http( + "https://main-light.eth.linkpool.io/".into() + )) + ); + assert_eq!( + settings.base.replicas.get("moonbeam").unwrap().chain, + ChainConf::Ethereum(Connection::Http("https://rpc.api.moonbeam.network".into())) + ); + assert_eq!( + settings.base.replicas.get("evmos").unwrap().chain, + ChainConf::Ethereum(Connection::Http("https://eth.bd.evmos.org:8545".into())) + ); + }) + .await + } + + #[tokio::test] + #[serial_test::serial] + async fn it_builds_settings_from_env_default() { + test_utils::run_test_with_env("../../fixtures/env.test-signer-default", || async move { + let run_env = dotenv::var("RUN_ENV").unwrap(); + let agent_home = dotenv::var("AGENT_HOME_NAME").unwrap(); + + let settings = KathySettings::new().unwrap(); + + let config = nomad_xyz_configuration::get_builtin(&run_env).unwrap(); + + let remotes = get_remotes_from_env!(agent_home, config); + let mut networks = remotes.clone(); + networks.insert(agent_home.clone()); + + let secrets = AgentSecrets::from_env(&networks).unwrap(); + + settings + .base + .validate_against_config_and_secrets( + crate::Kathy::AGENT_NAME, + &agent_home, + &remotes, + config, + &secrets, + ) + .unwrap(); + + let default_config = SignerConf::Aws { + id: "default_id".into(), + region: "default_region".into(), + }; + for (_, config) in &settings.base.signers { + assert_eq!(*config, default_config); + } + assert!(matches!( + settings.base.home.chain, + ChainConf::Ethereum { .. } + )); + for (_, config) in &settings.base.replicas { + assert!(matches!(config.chain, ChainConf::Ethereum { .. })); + } + }) + .await + } #[tokio::test] #[serial_test::serial] From ef1fd52e49cddfc52a9ceea28ad2623e37929517 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Thu, 19 May 2022 17:50:27 +0700 Subject: [PATCH 18/19] Update CHANGELOG --- configuration/CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/configuration/CHANGELOG.md b/configuration/CHANGELOG.md index 41cad5e9..f606040d 100644 --- a/configuration/CHANGELOG.md +++ b/configuration/CHANGELOG.md @@ -2,6 +2,11 @@ ### Unreleased +- add handling for default keys `TRANSACTIONSIGNERS_DEFAULT_{KEY,ID,REGION}` and `RPCS_DEFAULT_RPCSTYLE` +- add tests for new default config keys + +### v0.1.0-rc.22 + - fix broken output tests ### v0.1.0-rc.21 From b45b6ed07d81a06793daa7a42242fcb609db84c2 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Thu, 19 May 2022 23:22:35 +0700 Subject: [PATCH 19/19] Expand doc for from_env --- configuration/src/traits/env.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/configuration/src/traits/env.rs b/configuration/src/traits/env.rs index c092da21..d165effd 100644 --- a/configuration/src/traits/env.rs +++ b/configuration/src/traits/env.rs @@ -7,8 +7,10 @@ pub trait EnvOverridable { /// Implemented by structs that are built from environment variables (signers, /// connections, etc) pub trait FromEnv { - /// Optionally load self from env vars. Return None if any necessary env var - /// is missing. + /// Optionally load self from env vars. + /// Accepts a `default_prefix` which will be looked for if `prefix` isn't found. + /// If both are present, `prefix` has precedence over `default_prefix`. + /// Return None if *any* necessary env var is missing. fn from_env(prefix: &str, default_prefix: Option<&str>) -> Option where Self: Sized;