From f09041826e3d67d22b54c895f66d14cfe99226fd Mon Sep 17 00:00:00 2001 From: Tony C Date: Thu, 16 Sep 2021 12:09:22 +0300 Subject: [PATCH 1/5] Add extensions to ChainSpec [skip ci] --- Cargo.lock | 4 ++ crates/humanode-peer/Cargo.toml | 6 ++ crates/humanode-peer/src/chain_spec.rs | 77 +++++++++++++++++++++++++- crates/humanode-peer/src/cli/config.rs | 23 +++++++- crates/humanode-peer/src/cli/params.rs | 17 ++---- 5 files changed, 108 insertions(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cb4bcdb20..5e096880d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2327,6 +2327,8 @@ dependencies = [ "reqwest", "robonode-client", "sc-basic-authorship", + "sc-chain-spec", + "sc-chain-spec-derive", "sc-cli", "sc-client-api", "sc-consensus", @@ -2338,6 +2340,8 @@ dependencies = [ "sc-telemetry 4.0.0-dev", "sc-tracing 4.0.0-dev", "sc-transaction-pool", + "serde", + "serde_json", "sp-application-crypto", "sp-consensus", "sp-consensus-aura", diff --git a/crates/humanode-peer/Cargo.toml b/crates/humanode-peer/Cargo.toml index 69a03f62c..1cc749430 100644 --- a/crates/humanode-peer/Cargo.toml +++ b/crates/humanode-peer/Cargo.toml @@ -27,6 +27,8 @@ hex-literal = "0.3" qr2term = "0.2" reqwest = "0.11" sc-basic-authorship = { git = "https://github.com/humanode-network/substrate", branch = "master" } +sc-chain-spec = { git = "https://github.com/humanode-network/substrate", branch = "master" } +sc-chain-spec-derive = { git = "https://github.com/humanode-network/substrate", branch = "master" } sc-cli = { git = "https://github.com/humanode-network/substrate", branch = "master" } sc-client-api = { git = "https://github.com/humanode-network/substrate", branch = "master" } sc-consensus = { git = "https://github.com/humanode-network/substrate", branch = "master" } @@ -38,6 +40,7 @@ sc-service = { git = "https://github.com/humanode-network/substrate", branch = " sc-telemetry = { git = "https://github.com/humanode-network/substrate", branch = "master" } sc-tracing = { git = "https://github.com/humanode-network/substrate", branch = "master" } sc-transaction-pool = { git = "https://github.com/humanode-network/substrate", branch = "master" } +serde = { version = "1", features = ["derive"] } sp-application-crypto = { git = "https://github.com/humanode-network/substrate", branch = "master" } sp-consensus = { git = "https://github.com/humanode-network/substrate", branch = "master" } sp-consensus-aura = { git = "https://github.com/humanode-network/substrate", branch = "master" } @@ -51,3 +54,6 @@ thiserror = "1" tokio = { version = "1", features = ["full"] } tracing = "0.1" url = "2" + +[dev-dependencies] +serde_json = "1" diff --git a/crates/humanode-peer/src/chain_spec.rs b/crates/humanode-peer/src/chain_spec.rs index 9b16406b9..bad4146bc 100644 --- a/crates/humanode-peer/src/chain_spec.rs +++ b/crates/humanode-peer/src/chain_spec.rs @@ -6,7 +6,9 @@ use humanode_runtime::{ RobonodePublicKeyWrapper, Signature, SudoConfig, SystemConfig, WASM_BINARY, }; use pallet_bioauth::StoredAuthTicket; +use sc_chain_spec_derive::ChainSpecExtension; use sc_service::ChainType; +use serde::{Deserialize, Serialize}; use sp_consensus_aura::sr25519::AuthorityId as AuraId; use sp_finality_grandpa::AuthorityId as GrandpaId; use sp_runtime::{ @@ -15,7 +17,26 @@ use sp_runtime::{ }; /// The concrete chain spec type we're using for the humanode network. -pub type ChainSpec = sc_service::GenericChainSpec; +pub type ChainSpec = sc_service::GenericChainSpec; + +/// Extensions for ChainSpec. +#[derive(Serialize, Deserialize, Clone, ChainSpecExtension, Default, PartialEq, Debug)] +#[serde(rename_all = "camelCase")] +pub struct Extensions { + /// TODO + #[serde(flatten)] + pub bioauth_flow_params: BioauthFlowParamsExtension, +} + +/// TODO +#[derive(Serialize, Deserialize, Clone, Default, PartialEq, Debug)] +#[serde(rename_all = "camelCase")] +pub struct BioauthFlowParamsExtension { + /// The URL of robonode to authenticate with. + pub robonode_url: Option, + /// TODO + pub webapp_url: Option, +} /// Generate a crypto pair from seed. pub fn get_from_seed(seed: &str) -> ::Public { @@ -97,7 +118,7 @@ pub fn local_testnet_config() -> Result { // Properties None, // Extensions - None, + Extensions::default(), )) } @@ -146,7 +167,7 @@ pub fn development_config() -> Result { // Properties None, // Extensions - None, + Extensions::default(), )) } @@ -193,3 +214,53 @@ fn testnet_genesis( }, } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn deserialize_bioauth_flow_params_extensions() { + // from_json_bytes(); + let expected = Extensions { + bioauth_flow_params: BioauthFlowParamsExtension { + robonode_url: Some("http://127.0.0.1:3033".into()), + webapp_url: Some("https://webapp-test-1.dev.humanode.io".into()), + }, + }; + let value = serde_json::json!({ + "name": "Local Testnet", + "id": "local_testnet", + "chainType": "Local", + "bootNodes": [ + "/ip4/127.0.0.1/tcp/30333/p2p/12D3KooWCXvRaPbhT6BugLAApEvV3e3dZxKeR8kPtgTJdU6eGzqB" + ], + "telemetryEndpoints": null, + "protocolId": null, + "properties": null, + "robonodeUrl": "http://127.0.0.1:3033", + "webappUrl": "https://webapp-test-1.dev.humanode.io", + "consensusEngine": null, + "codeSubstitutes": {}}); + + let sample: Extensions = serde_json::from_value(value).unwrap(); + + assert_eq!(sample, expected) + } + + #[test] + fn deserialize_chain_spec() { + let chain_spec_file_content = b"{\"name\":\"Local Testnet\",\"id\":\"local_testnet\",\"chainType\":\"Local\",\"bootNodes\":[\"/ip4/127.0.0.1/tcp/30333/p2p/12D3KooWCXvRaPbhT6BugLAApEvV3e3dZxKeR8kPtgTJdU6eGzqB\"],\"telemetryEndpoints\":null,\"protocolId\":null,\"properties\":null,\"robonodeUrl\":\"http://127.0.0.1:3033\",\"webappUrl\":\"https://webapp-test-1.dev.humanode.io\",\"consensusEngine\":null,\"codeSubstitutes\":{},\"genesis\":{\"runtime\":{\"system\":{\"changesTrieConfig\":null,\"code\":\"0x04\"},\"aura\":{\"authorities\":[\"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY\",\"5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty\"]},\"balances\":{\"balances\":[[\"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY\",1152921504606846976],[\"5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty\",1152921504606846976]]},\"sudo\":{\"key\":\"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY\"},\"bioauth\":{\"storedAuthTickets\":[{\"public_key\":\"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY\",\"nonce\":[49]}],\"robonodePublicKey\":[93,222,3,147,68,25,37,45,19,51,110,90,88,129,245,177,239,158,164,112,132,83,142,178,41,248,99,73,231,243,148,171]}}}}"; + let bytes = &chain_spec_file_content[..]; + let sample: ChainSpec = ChainSpec::from_json_bytes(bytes).unwrap(); + + let expected = Extensions { + bioauth_flow_params: BioauthFlowParamsExtension { + robonode_url: Some("http://127.0.0.1:3033".into()), + webapp_url: Some("https://webapp-test-1.dev.humanode.io".into()), + }, + }; + + assert_eq!(sample.extensions().to_owned(), expected) + } +} diff --git a/crates/humanode-peer/src/cli/config.rs b/crates/humanode-peer/src/cli/config.rs index ff3629c0b..89b9bf061 100644 --- a/crates/humanode-peer/src/cli/config.rs +++ b/crates/humanode-peer/src/cli/config.rs @@ -1,6 +1,11 @@ //! Machinery to populate the configuration from the CLI arguments. -use crate::configuration::{self, Configuration}; +use sc_chain_spec::get_extension; + +use crate::{ + chain_spec::BioauthFlowParamsExtension, + configuration::{self, Configuration}, +}; use super::params; @@ -18,6 +23,11 @@ pub trait CliConfigurationExt: SubstrateCliConfigurationProvider { task_executor, )?; + let bioauth_flow_params_extension = + get_extension::(substrate.chain_spec.extensions()) + .cloned() + .unwrap_or_default(); + let bioauth_flow = self.bioauth_params().map(|params| { let rpc_url = params.rpc_url.clone().or_else(|| { substrate @@ -27,8 +37,15 @@ pub trait CliConfigurationExt: SubstrateCliConfigurationProvider { }); configuration::BioauthFlow { - robonode_url: params.robonode_url.clone(), - webapp_url: Some(params.webapp_url.clone()), + robonode_url: params + .robonode_url + .clone() + .or(bioauth_flow_params_extension.robonode_url) + .unwrap_or_else(|| "http://127.0.0.1:3033".into()), + webapp_url: params + .webapp_url + .clone() + .or(bioauth_flow_params_extension.webapp_url), rpc_url, } }); diff --git a/crates/humanode-peer/src/cli/params.rs b/crates/humanode-peer/src/cli/params.rs index 6694116e4..346f737d5 100644 --- a/crates/humanode-peer/src/cli/params.rs +++ b/crates/humanode-peer/src/cli/params.rs @@ -7,12 +7,8 @@ use structopt::StructOpt; pub struct BioauthFlowParams { /// The URL to use for the web app. /// Used to print the QR Code to the console, so it doesn't matter much. - #[structopt( - long, - value_name = "WEBAPP_URL", - default_value = "https://webapp-test-1.dev.humanode.io" - )] - pub webapp_url: String, + #[structopt(long, value_name = "WEBAPP_URL")] + pub webapp_url: Option, /// The URL to pass to the web app to connect to the node RPC. /// If not passed, a URL with `localhost` and the HTTP RPC port will be used. @@ -20,11 +16,6 @@ pub struct BioauthFlowParams { pub rpc_url: Option, /// The URL of robonode to authenticate with. - /// It should be a part of the genesis, but it isn't yet (TODO). - #[structopt( - long, - value_name = "ROBONODE_URL", - default_value = "http://127.0.0.1:3033" - )] - pub robonode_url: String, + #[structopt(long, value_name = "ROBONODE_URL")] + pub robonode_url: Option, } From b52d0a629429b3baa3a7f0f890a2e42fc4c18557 Mon Sep 17 00:00:00 2001 From: Tony C Date: Thu, 16 Sep 2021 19:06:47 +0300 Subject: [PATCH 2/5] Fix problem with extension deserialization --- crates/humanode-peer/src/chain_spec.rs | 47 +++++++------------------- crates/humanode-peer/src/cli/config.rs | 4 +-- 2 files changed, 15 insertions(+), 36 deletions(-) diff --git a/crates/humanode-peer/src/chain_spec.rs b/crates/humanode-peer/src/chain_spec.rs index bad4146bc..cf6c91ed6 100644 --- a/crates/humanode-peer/src/chain_spec.rs +++ b/crates/humanode-peer/src/chain_spec.rs @@ -6,7 +6,7 @@ use humanode_runtime::{ RobonodePublicKeyWrapper, Signature, SudoConfig, SystemConfig, WASM_BINARY, }; use pallet_bioauth::StoredAuthTicket; -use sc_chain_spec_derive::ChainSpecExtension; +use sc_chain_spec_derive::{ChainSpecExtension, ChainSpecGroup}; use sc_service::ChainType; use serde::{Deserialize, Serialize}; use sp_consensus_aura::sr25519::AuthorityId as AuraId; @@ -20,21 +20,15 @@ use sp_runtime::{ pub type ChainSpec = sc_service::GenericChainSpec; /// Extensions for ChainSpec. -#[derive(Serialize, Deserialize, Clone, ChainSpecExtension, Default, PartialEq, Debug)] +#[derive( + Debug, Clone, PartialEq, Serialize, Deserialize, ChainSpecGroup, ChainSpecExtension, Default, +)] +#[serde(deny_unknown_fields)] #[serde(rename_all = "camelCase")] pub struct Extensions { - /// TODO - #[serde(flatten)] - pub bioauth_flow_params: BioauthFlowParamsExtension, -} - -/// TODO -#[derive(Serialize, Deserialize, Clone, Default, PartialEq, Debug)] -#[serde(rename_all = "camelCase")] -pub struct BioauthFlowParamsExtension { /// The URL of robonode to authenticate with. pub robonode_url: Option, - /// TODO + /// The Web App URL, necessary for printing the Web App QR Code. pub webapp_url: Option, } @@ -221,27 +215,14 @@ mod tests { #[test] fn deserialize_bioauth_flow_params_extensions() { - // from_json_bytes(); let expected = Extensions { - bioauth_flow_params: BioauthFlowParamsExtension { - robonode_url: Some("http://127.0.0.1:3033".into()), - webapp_url: Some("https://webapp-test-1.dev.humanode.io".into()), - }, + robonode_url: Some("http://127.0.0.1:3033".into()), + webapp_url: Some("https://webapp-test-1.dev.humanode.io".into()), }; let value = serde_json::json!({ - "name": "Local Testnet", - "id": "local_testnet", - "chainType": "Local", - "bootNodes": [ - "/ip4/127.0.0.1/tcp/30333/p2p/12D3KooWCXvRaPbhT6BugLAApEvV3e3dZxKeR8kPtgTJdU6eGzqB" - ], - "telemetryEndpoints": null, - "protocolId": null, - "properties": null, "robonodeUrl": "http://127.0.0.1:3033", - "webappUrl": "https://webapp-test-1.dev.humanode.io", - "consensusEngine": null, - "codeSubstitutes": {}}); + "webappUrl": "https://webapp-test-1.dev.humanode.io" + }); let sample: Extensions = serde_json::from_value(value).unwrap(); @@ -250,15 +231,13 @@ mod tests { #[test] fn deserialize_chain_spec() { - let chain_spec_file_content = b"{\"name\":\"Local Testnet\",\"id\":\"local_testnet\",\"chainType\":\"Local\",\"bootNodes\":[\"/ip4/127.0.0.1/tcp/30333/p2p/12D3KooWCXvRaPbhT6BugLAApEvV3e3dZxKeR8kPtgTJdU6eGzqB\"],\"telemetryEndpoints\":null,\"protocolId\":null,\"properties\":null,\"robonodeUrl\":\"http://127.0.0.1:3033\",\"webappUrl\":\"https://webapp-test-1.dev.humanode.io\",\"consensusEngine\":null,\"codeSubstitutes\":{},\"genesis\":{\"runtime\":{\"system\":{\"changesTrieConfig\":null,\"code\":\"0x04\"},\"aura\":{\"authorities\":[\"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY\",\"5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty\"]},\"balances\":{\"balances\":[[\"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY\",1152921504606846976],[\"5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty\",1152921504606846976]]},\"sudo\":{\"key\":\"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY\"},\"bioauth\":{\"storedAuthTickets\":[{\"public_key\":\"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY\",\"nonce\":[49]}],\"robonodePublicKey\":[93,222,3,147,68,25,37,45,19,51,110,90,88,129,245,177,239,158,164,112,132,83,142,178,41,248,99,73,231,243,148,171]}}}}"; + let chain_spec_file_content = b"{\"name\":\"Local Testnet\",\"id\":\"local_testnet\",\"chainType\":\"Local\",\"bootNodes\":[\"/ip4/127.0.0.1/tcp/30333/p2p/12D3KooWCXvRaPbhT6BugLAApEvV3e3dZxKeR8kPtgTJdU6eGzqB\"],\"telemetryEndpoints\":null,\"protocolId\":null,\"properties\":null,\"robonodeUrl\":\"http://127.0.0.1:3033\",\"webappUrl\":\"https://webapp-test-1.dev.humanode.io\",\"consensusEngine\":null,\"codeSubstitutes\":{},\"genesis\":{\"runtime\":{\"system\":{\"changesTrieConfig\":null,\"code\":\"0x52bc\"},\"aura\":{\"authorities\":[\"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY\",\"5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty\"]},\"balances\":{\"balances\":[[\"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY\",1152921504606846976],[\"5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty\",1152921504606846976]]},\"sudo\":{\"key\":\"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY\"},\"bioauth\":{\"storedAuthTickets\":[{\"public_key\":\"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY\",\"nonce\":[49]}],\"robonodePublicKey\":[93,222,3,147,68,25,37,45,19,51,110,90,88,129,245,177,239,158,164,112,132,83,142,178,41,248,99,73,231,243,148,171]}}}}"; let bytes = &chain_spec_file_content[..]; let sample: ChainSpec = ChainSpec::from_json_bytes(bytes).unwrap(); let expected = Extensions { - bioauth_flow_params: BioauthFlowParamsExtension { - robonode_url: Some("http://127.0.0.1:3033".into()), - webapp_url: Some("https://webapp-test-1.dev.humanode.io".into()), - }, + robonode_url: Some("http://127.0.0.1:3033".into()), + webapp_url: Some("https://webapp-test-1.dev.humanode.io".into()), }; assert_eq!(sample.extensions().to_owned(), expected) diff --git a/crates/humanode-peer/src/cli/config.rs b/crates/humanode-peer/src/cli/config.rs index 89b9bf061..9bcd60448 100644 --- a/crates/humanode-peer/src/cli/config.rs +++ b/crates/humanode-peer/src/cli/config.rs @@ -3,7 +3,7 @@ use sc_chain_spec::get_extension; use crate::{ - chain_spec::BioauthFlowParamsExtension, + chain_spec::Extensions, configuration::{self, Configuration}, }; @@ -24,7 +24,7 @@ pub trait CliConfigurationExt: SubstrateCliConfigurationProvider { )?; let bioauth_flow_params_extension = - get_extension::(substrate.chain_spec.extensions()) + get_extension::(substrate.chain_spec.extensions()) .cloned() .unwrap_or_default(); From 1df39d005bb3aaf067d82536d5b5acf7a0402f8d Mon Sep 17 00:00:00 2001 From: Tony C Date: Fri, 17 Sep 2021 11:52:39 +0300 Subject: [PATCH 3/5] Rename extensions in config.rs --- crates/humanode-peer/src/cli/config.rs | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/crates/humanode-peer/src/cli/config.rs b/crates/humanode-peer/src/cli/config.rs index 9bcd60448..e932391a3 100644 --- a/crates/humanode-peer/src/cli/config.rs +++ b/crates/humanode-peer/src/cli/config.rs @@ -23,10 +23,9 @@ pub trait CliConfigurationExt: SubstrateCliConfigurationProvider { task_executor, )?; - let bioauth_flow_params_extension = - get_extension::(substrate.chain_spec.extensions()) - .cloned() - .unwrap_or_default(); + let extensions = get_extension::(substrate.chain_spec.extensions()) + .cloned() + .unwrap_or_default(); let bioauth_flow = self.bioauth_params().map(|params| { let rpc_url = params.rpc_url.clone().or_else(|| { @@ -40,12 +39,9 @@ pub trait CliConfigurationExt: SubstrateCliConfigurationProvider { robonode_url: params .robonode_url .clone() - .or(bioauth_flow_params_extension.robonode_url) + .or(extensions.robonode_url) .unwrap_or_else(|| "http://127.0.0.1:3033".into()), - webapp_url: params - .webapp_url - .clone() - .or(bioauth_flow_params_extension.webapp_url), + webapp_url: params.webapp_url.clone().or(extensions.webapp_url), rpc_url, } }); From 7687be87f5dc8532119353b3524e4f4b4c926310 Mon Sep 17 00:00:00 2001 From: Tony C Date: Fri, 17 Sep 2021 12:19:22 +0300 Subject: [PATCH 4/5] Use raw string literals with indoc --- Cargo.lock | 16 +++++++ crates/humanode-peer/Cargo.toml | 1 + crates/humanode-peer/src/chain_spec.rs | 58 +++++++++++++++++++++++++- 3 files changed, 73 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5e096880d..c9224e7b7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2321,6 +2321,7 @@ dependencies = [ "hex-literal", "humanode-rpc", "humanode-runtime", + "indoc", "pallet-bioauth", "parity-scale-codec", "qr2term", @@ -2636,6 +2637,15 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "indoc" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a75aeaaef0ce18b58056d306c27b07436fbb34b8816c53094b76dd81803136" +dependencies = [ + "unindent", +] + [[package]] name = "infer" version = "0.2.3" @@ -8599,6 +8609,12 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +[[package]] +name = "unindent" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f14ee04d9415b52b3aeab06258a3f07093182b88ba0f9b8d203f211a7a7d41c7" + [[package]] name = "universal-hash" version = "0.4.1" diff --git a/crates/humanode-peer/Cargo.toml b/crates/humanode-peer/Cargo.toml index 1cc749430..3463629e0 100644 --- a/crates/humanode-peer/Cargo.toml +++ b/crates/humanode-peer/Cargo.toml @@ -56,4 +56,5 @@ tracing = "0.1" url = "2" [dev-dependencies] +indoc = "1.0" serde_json = "1" diff --git a/crates/humanode-peer/src/chain_spec.rs b/crates/humanode-peer/src/chain_spec.rs index cf6c91ed6..e6fb58ba2 100644 --- a/crates/humanode-peer/src/chain_spec.rs +++ b/crates/humanode-peer/src/chain_spec.rs @@ -211,6 +211,8 @@ fn testnet_genesis( #[cfg(test)] mod tests { + use indoc::indoc; + use super::*; #[test] @@ -231,8 +233,60 @@ mod tests { #[test] fn deserialize_chain_spec() { - let chain_spec_file_content = b"{\"name\":\"Local Testnet\",\"id\":\"local_testnet\",\"chainType\":\"Local\",\"bootNodes\":[\"/ip4/127.0.0.1/tcp/30333/p2p/12D3KooWCXvRaPbhT6BugLAApEvV3e3dZxKeR8kPtgTJdU6eGzqB\"],\"telemetryEndpoints\":null,\"protocolId\":null,\"properties\":null,\"robonodeUrl\":\"http://127.0.0.1:3033\",\"webappUrl\":\"https://webapp-test-1.dev.humanode.io\",\"consensusEngine\":null,\"codeSubstitutes\":{},\"genesis\":{\"runtime\":{\"system\":{\"changesTrieConfig\":null,\"code\":\"0x52bc\"},\"aura\":{\"authorities\":[\"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY\",\"5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty\"]},\"balances\":{\"balances\":[[\"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY\",1152921504606846976],[\"5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty\",1152921504606846976]]},\"sudo\":{\"key\":\"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY\"},\"bioauth\":{\"storedAuthTickets\":[{\"public_key\":\"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY\",\"nonce\":[49]}],\"robonodePublicKey\":[93,222,3,147,68,25,37,45,19,51,110,90,88,129,245,177,239,158,164,112,132,83,142,178,41,248,99,73,231,243,148,171]}}}}"; - let bytes = &chain_spec_file_content[..]; + let chain_spec_file_content = indoc! {r#" + { + "name": "Local Testnet", + "id": "local_testnet", + "chainType": "Local", + "bootNodes": [ + "/ip4/127.0.0.1/tcp/30333/p2p/12D3KooWC2vRaPbhT6BugL9ApEvV3e3dZxKeR8kPtgTJdF6eGzqB" + ], + "telemetryEndpoints": null, + "protocolId": null, + "properties": null, + "robonodeUrl": "http://127.0.0.1:3033", + "webappUrl": "https://webapp-test-1.dev.humanode.io", + "consensusEngine": null, + "codeSubstitutes": {}, + "genesis": { + "runtime": { + "system": { "changesTrieConfig": null, "code": "0x567c" }, + "aura": { + "authorities": [ + "aaAaaAaAaaaaAAAaa1aAAaAAAAaaAAAAaaaAaaCaaaAAaaAa", + "eeeEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEeeeeeeeeee" + ] + }, + "balances": { + "balances": [ + [ + "aaAaaAaAaaaaAAAaa1aAAaAAAAaaAAAAaaaAaaCaaaAAaaAa", + 100 + ], + [ + "eeeEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEeeeeeeeeee", + 100 + ] + ] + }, + "sudo": { "key": "aaAaaAaAaaaaAAAaa1aAAaAAAAaaAAAAaaaAaaCaaaAAaaAa" }, + "bioauth": { + "storedAuthTickets": [ + { + "public_key": "aaAaaAaAaaaaAAAaa1aAAaAAAAaaAAAAaaaAaaCaaaAAaaAa", + "nonce": [12] + } + ], + "robonodePublicKey": [ + 17, 17, 24, 17, 17, 24, 17, 24, 24, 17, 17, 17, 17, 24, 17, 17, + 24, 17, 24, 17, 17, 17, 17, 24, 17, 17, 17, 17, 17, 17, 17, 24 + ] + } + } + } + } + "#}; + let bytes = chain_spec_file_content.as_bytes(); let sample: ChainSpec = ChainSpec::from_json_bytes(bytes).unwrap(); let expected = Extensions { From bbcdf0805ec60a56d8f8b4c1d91f83f109b32e10 Mon Sep 17 00:00:00 2001 From: Tony C Date: Fri, 17 Sep 2021 13:54:49 +0300 Subject: [PATCH 5/5] Change test --- crates/humanode-peer/src/chain_spec.rs | 52 ++++++++------------------ 1 file changed, 15 insertions(+), 37 deletions(-) diff --git a/crates/humanode-peer/src/chain_spec.rs b/crates/humanode-peer/src/chain_spec.rs index e6fb58ba2..84135a2bc 100644 --- a/crates/humanode-peer/src/chain_spec.rs +++ b/crates/humanode-peer/src/chain_spec.rs @@ -218,12 +218,12 @@ mod tests { #[test] fn deserialize_bioauth_flow_params_extensions() { let expected = Extensions { - robonode_url: Some("http://127.0.0.1:3033".into()), - webapp_url: Some("https://webapp-test-1.dev.humanode.io".into()), + robonode_url: Some("dummy_robonode_url".into()), + webapp_url: Some("dummy_webapp_url".into()), }; let value = serde_json::json!({ - "robonodeUrl": "http://127.0.0.1:3033", - "webappUrl": "https://webapp-test-1.dev.humanode.io" + "robonodeUrl": "dummy_robonode_url", + "webappUrl": "dummy_webapp_url" }); let sample: Extensions = serde_json::from_value(value).unwrap(); @@ -238,49 +238,27 @@ mod tests { "name": "Local Testnet", "id": "local_testnet", "chainType": "Local", - "bootNodes": [ - "/ip4/127.0.0.1/tcp/30333/p2p/12D3KooWC2vRaPbhT6BugL9ApEvV3e3dZxKeR8kPtgTJdF6eGzqB" - ], + "bootNodes": [], "telemetryEndpoints": null, "protocolId": null, "properties": null, - "robonodeUrl": "http://127.0.0.1:3033", - "webappUrl": "https://webapp-test-1.dev.humanode.io", + "robonodeUrl": "dummy_robonode_url", + "webappUrl": "dummy_webapp_url", "consensusEngine": null, "codeSubstitutes": {}, "genesis": { "runtime": { - "system": { "changesTrieConfig": null, "code": "0x567c" }, + "system": { "changesTrieConfig": null, "code": "0x0" }, "aura": { - "authorities": [ - "aaAaaAaAaaaaAAAaa1aAAaAAAAaaAAAAaaaAaaCaaaAAaaAa", - "eeeEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEeeeeeeeeee" - ] + "authorities": [] }, "balances": { - "balances": [ - [ - "aaAaaAaAaaaaAAAaa1aAAaAAAAaaAAAAaaaAaaCaaaAAaaAa", - 100 - ], - [ - "eeeEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEeeeeeeeeee", - 100 - ] - ] + "balances": [] }, - "sudo": { "key": "aaAaaAaAaaaaAAAaa1aAAaAAAAaaAAAAaaaAaaCaaaAAaaAa" }, + "sudo": { "key": "0" }, "bioauth": { - "storedAuthTickets": [ - { - "public_key": "aaAaaAaAaaaaAAAaa1aAAaAAAAaaAAAAaaaAaaCaaaAAaaAa", - "nonce": [12] - } - ], - "robonodePublicKey": [ - 17, 17, 24, 17, 17, 24, 17, 24, 24, 17, 17, 17, 17, 24, 17, 17, - 24, 17, 24, 17, 17, 17, 17, 24, 17, 17, 17, 17, 17, 17, 17, 24 - ] + "storedAuthTickets": [], + "robonodePublicKey": [] } } } @@ -290,8 +268,8 @@ mod tests { let sample: ChainSpec = ChainSpec::from_json_bytes(bytes).unwrap(); let expected = Extensions { - robonode_url: Some("http://127.0.0.1:3033".into()), - webapp_url: Some("https://webapp-test-1.dev.humanode.io".into()), + robonode_url: Some("dummy_robonode_url".into()), + webapp_url: Some("dummy_webapp_url".into()), }; assert_eq!(sample.extensions().to_owned(), expected)