diff --git a/crates/settings/src/deployer.rs b/crates/settings/src/deployer.rs index d5b5b7d21..17b052c00 100644 --- a/crates/settings/src/deployer.rs +++ b/crates/settings/src/deployer.rs @@ -56,7 +56,8 @@ impl Deployer { if let Some(deployer_yaml) = deployers_hash.get(&StrictYaml::String(deployer_key.to_string())) { - return require_string(deployer_yaml, Some("network"), None); + return require_string(deployer_yaml, Some("network"), None) + .or_else(|_| Ok(deployer_key.to_string())); } } } @@ -301,4 +302,35 @@ deployers: YamlError::KeyShadowing("DuplicateDeployer".to_string()) ); } + + #[test] + fn test_parse_deployer_from_yaml_network_key() { + let yaml = r#" +networks: + mainnet: + rpc: https://rpc.com + chain-id: 1 +deployers: + mainnet: + address: 0x1234567890123456789012345678901234567890 + network: mainnet +"#; + + let documents = vec![get_document(yaml)]; + let network_key = Deployer::parse_network_key(documents, "mainnet").unwrap(); + assert_eq!(network_key, "mainnet"); + + let yaml = r#" +networks: + mainnet: + rpc: https://rpc.com + chain-id: 1 +deployers: + mainnet: + address: 0x1234567890123456789012345678901234567890 +"#; + let documents = vec![get_document(yaml)]; + let network_key = Deployer::parse_network_key(documents, "mainnet").unwrap(); + assert_eq!(network_key, "mainnet"); + } } diff --git a/crates/settings/src/orderbook.rs b/crates/settings/src/orderbook.rs index 4e4fe18fd..ad58aa265 100644 --- a/crates/settings/src/orderbook.rs +++ b/crates/settings/src/orderbook.rs @@ -46,7 +46,8 @@ impl Orderbook { if let Some(orderbook_yaml) = orderbooks_hash.get(&StrictYaml::String(orderbook_key.to_string())) { - return require_string(orderbook_yaml, Some("network"), None); + return require_string(orderbook_yaml, Some("network"), None) + .or_else(|_| Ok(orderbook_key.to_string())); } } } @@ -452,4 +453,35 @@ orderbooks: YamlError::KeyShadowing("DuplicateOrderbook".to_string()) ); } + + #[test] + fn test_parse_orderbook_from_yaml_network_key() { + let yaml = r#" +networks: + mainnet: + rpc: https://rpc.com + chain-id: 1 +orderbooks: + mainnet: + address: 0x1234567890123456789012345678901234567890 + network: mainnet +"#; + + let documents = vec![get_document(yaml)]; + let network_key = Orderbook::parse_network_key(documents, "mainnet").unwrap(); + assert_eq!(network_key, "mainnet"); + + let yaml = r#" +networks: + mainnet: + rpc: https://rpc.com + chain-id: 1 +orderbooks: + mainnet: + address: 0x1234567890123456789012345678901234567890 +"#; + let documents = vec![get_document(yaml)]; + let network_key = Orderbook::parse_network_key(documents, "mainnet").unwrap(); + assert_eq!(network_key, "mainnet"); + } }