diff --git a/masq/src/command_factory.rs b/masq/src/command_factory.rs index f443ef4df..c2e847ce4 100644 --- a/masq/src/command_factory.rs +++ b/masq/src/command_factory.rs @@ -11,6 +11,7 @@ use crate::commands::descriptor_command::DescriptorCommand; use crate::commands::exit_location_command::SetExitLocationCommand; use crate::commands::financials_command::FinancialsCommand; use crate::commands::generate_wallets_command::GenerateWalletsCommand; +use crate::commands::neighborhood_graph_command::GetNeighborhoodGraphCommand; use crate::commands::recover_wallets_command::RecoverWalletsCommand; use crate::commands::scan_command::ScanCommand; use crate::commands::set_configuration_command::SetConfigurationCommand; @@ -65,6 +66,10 @@ impl CommandFactory for CommandFactoryReal { Ok(command) => Box::new(command), Err(msg) => return Err(CommandSyntax(msg)), }, + "neighborhood-graph" => match GetNeighborhoodGraphCommand::new(pieces) { + Ok(command) => Box::new(command), + Err(msg) => return Err(CommandSyntax(msg)), + }, "recover-wallets" => match RecoverWalletsCommand::new(pieces) { Ok(command) => Box::new(command), Err(msg) => return Err(CommandSyntax(msg)), @@ -292,6 +297,21 @@ mod tests { ); } + #[test] + fn factory_produces_neighborhood_graph() { + let subject = CommandFactoryReal::new(); + + let command = subject.make(&["neighborhood-graph".to_string()]).unwrap(); + + assert_eq!( + command + .as_any() + .downcast_ref::() + .unwrap(), + &GetNeighborhoodGraphCommand {} + ); + } + #[test] fn complains_about_set_configuration_command_with_no_parameters() { let subject = CommandFactoryReal::new(); diff --git a/masq/src/commands/mod.rs b/masq/src/commands/mod.rs index 143dff8e1..1e0257305 100644 --- a/masq/src/commands/mod.rs +++ b/masq/src/commands/mod.rs @@ -17,3 +17,5 @@ pub mod setup_command; pub mod shutdown_command; pub mod start_command; pub mod wallet_addresses_command; + +pub mod neighborhood_graph_command; diff --git a/masq/src/commands/neighborhood_graph_command.rs b/masq/src/commands/neighborhood_graph_command.rs new file mode 100644 index 000000000..5ae2eba62 --- /dev/null +++ b/masq/src/commands/neighborhood_graph_command.rs @@ -0,0 +1,93 @@ +use clap::{App, SubCommand}; +use masq_lib::{as_any_ref_in_trait_impl, short_writeln}; + +use crate::command_context::CommandContext; +use crate::commands::commands_common::CommandError::Payload; +use crate::commands::commands_common::{ + transaction, Command, CommandError, STANDARD_COMMAND_TIMEOUT_MILLIS, +}; +use masq_lib::messages::{UiGetNeighborhoodGraphRequest, UiGetNeighborhoodGraphResponse}; + +const NEIGHBORHOOD_GRAPH_HELP: &str = "Use this command plainly, without any flags or arguments. The result will be delivered in digraph format, documentation at https://graphviz.org/documentation/"; + +pub fn get_neighborhood_graph_subcommand() -> App<'static, 'static> { + SubCommand::with_name("neighborhood-graph").about(NEIGHBORHOOD_GRAPH_HELP) +} + +#[derive(Debug, PartialEq, Eq)] +pub struct GetNeighborhoodGraphCommand {} + +impl GetNeighborhoodGraphCommand { + pub fn new(pieces: &[String]) -> Result { + match get_neighborhood_graph_subcommand().get_matches_from_safe(pieces) { + Ok(_) => Ok(GetNeighborhoodGraphCommand {}), + Err(e) => Err(format!("GetNeighborhoodGraphCommand {}", e)), + } + } +} + +impl Command for GetNeighborhoodGraphCommand { + fn execute(&self, context: &mut dyn CommandContext) -> Result<(), CommandError> { + let input = UiGetNeighborhoodGraphRequest {}; + let output: Result = + transaction(input, context, STANDARD_COMMAND_TIMEOUT_MILLIS); + match output { + Ok(neighborhood_graph) => { + short_writeln!( + context.stdout(), + "Graph of the Node's neighborhood database: {}", + neighborhood_graph.graph.as_str() + ); + Ok(()) + } + Err(Payload(code, message)) => { + short_writeln!(context.stderr(), "code: {}\nmessage: {}", code, message); + Err(Payload(code, message)) + } + Err(err) => { + short_writeln!(context.stderr(), "Error: {}", err); + Err(err) + } + } + } + + as_any_ref_in_trait_impl!(); +} + +#[cfg(test)] +pub mod tests { + use super::*; + use crate::test_utils::mocks::CommandContextMock; + use masq_lib::messages::ToMessageBody; + use std::sync::{Arc, Mutex}; + + #[test] + fn can_deserialize_ui_get_neighborhood_graph() { + let transact_params_arc = Arc::new(Mutex::new(vec![])); + let mut context = CommandContextMock::new() + .transact_params(&transact_params_arc) + .transact_result(Ok(UiGetNeighborhoodGraphResponse { + graph: "digraph db { \"AQIDBA\" [label=\"AR v0 AU\\nAQIDBA\\n1.2.3.4:1234\"]; \"HZ5vwwJPhfUZVy85E76GZUUam9SMgyaw+QaZvAMuizo\" [label=\"AR v0 ZZ\\nHZ5vwwJP\\n9.9.9.9:9999\"] [style=filled]; \"AgMEBQ\" [label=\"AR v0 FR\\nAgMEBQ\\n2.3.4.5:2345\"]; \"AwQFBg\" [label=\"AR v0 CN\\nAwQFBg\\n3.4.5.6:3456\"]; \"BAUGBw\" [label=\"AR v0 US\\nBAUGBw\\n4.5.6.7:4567\"]; \"AQIDBA\" -> \"HZ5vwwJPhfUZVy85E76GZUUam9SMgyaw+QaZvAMuizo\"; \"AQIDBA\" -> \"AgMEBQ\"; \"HZ5vwwJPhfUZVy85E76GZUUam9SMgyaw+QaZvAMuizo\" -> \"AQIDBA\"; \"AgMEBQ\" -> \"AwQFBg\"; \"AgMEBQ\" -> \"AQIDBA\"; \"AwQFBg\" -> \"BAUGBw\"; \"AwQFBg\" -> \"AgMEBQ\"; \"BAUGBw\" -> \"AwQFBg\"; }".to_string() + }.tmb(0))); + let stderr_arc = context.stderr_arc(); + let stdout_arc = context.stdout_arc(); + let subject = + GetNeighborhoodGraphCommand::new(&["neighborhood-graph".to_string()]).unwrap(); + + let result = subject.execute(&mut context); + + assert_eq!(result, Ok(())); + let expected_request = UiGetNeighborhoodGraphRequest {}; + let transact_params = transact_params_arc.lock().unwrap(); + let expected_message_body = expected_request.tmb(0); + assert_eq!( + transact_params.as_slice(), + &[(expected_message_body, STANDARD_COMMAND_TIMEOUT_MILLIS)] + ); + let stdout = stdout_arc.lock().unwrap(); + let graph_str = "Graph of the Node's neighborhood database: digraph db { \"AQIDBA\" [label=\"AR v0 AU\\nAQIDBA\\n1.2.3.4:1234\"]; \"HZ5vwwJPhfUZVy85E76GZUUam9SMgyaw+QaZvAMuizo\" [label=\"AR v0 ZZ\\nHZ5vwwJP\\n9.9.9.9:9999\"] [style=filled]; \"AgMEBQ\" [label=\"AR v0 FR\\nAgMEBQ\\n2.3.4.5:2345\"]; \"AwQFBg\" [label=\"AR v0 CN\\nAwQFBg\\n3.4.5.6:3456\"]; \"BAUGBw\" [label=\"AR v0 US\\nBAUGBw\\n4.5.6.7:4567\"]; \"AQIDBA\" -> \"HZ5vwwJPhfUZVy85E76GZUUam9SMgyaw+QaZvAMuizo\"; \"AQIDBA\" -> \"AgMEBQ\"; \"HZ5vwwJPhfUZVy85E76GZUUam9SMgyaw+QaZvAMuizo\" -> \"AQIDBA\"; \"AgMEBQ\" -> \"AwQFBg\"; \"AgMEBQ\" -> \"AQIDBA\"; \"AwQFBg\" -> \"BAUGBw\"; \"AwQFBg\" -> \"AgMEBQ\"; \"BAUGBw\" -> \"AwQFBg\"; }\n"; + assert_eq!(&stdout.get_string(), graph_str); + let stderr = stderr_arc.lock().unwrap(); + assert_eq!(&stderr.get_string(), ""); + } +} diff --git a/masq/src/schema.rs b/masq/src/schema.rs index 287fd9468..17b6386c9 100644 --- a/masq/src/schema.rs +++ b/masq/src/schema.rs @@ -11,6 +11,7 @@ use crate::commands::descriptor_command::descriptor_subcommand; use crate::commands::exit_location_command::exit_location_subcommand; use crate::commands::financials_command::args_validation::financials_subcommand; use crate::commands::generate_wallets_command::generate_wallets_subcommand; +use crate::commands::neighborhood_graph_command::get_neighborhood_graph_subcommand; use crate::commands::recover_wallets_command::recover_wallets_subcommand; use crate::commands::scan_command::scan_subcommand; use crate::commands::set_configuration_command::set_configuration_subcommand; @@ -71,6 +72,7 @@ pub fn app() -> App<'static, 'static> { .subcommand(exit_location_subcommand()) .subcommand(financials_subcommand()) .subcommand(generate_wallets_subcommand()) + .subcommand(get_neighborhood_graph_subcommand()) .subcommand(recover_wallets_subcommand()) .subcommand(scan_subcommand()) .subcommand(set_configuration_subcommand()) diff --git a/masq_lib/src/messages.rs b/masq_lib/src/messages.rs index 9641c5086..74114b959 100644 --- a/masq_lib/src/messages.rs +++ b/masq_lib/src/messages.rs @@ -911,6 +911,18 @@ pub struct UiSetExitLocationResponse { } conversation_message!(UiSetExitLocationResponse, "exitLocation"); +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] +pub struct UiGetNeighborhoodGraphRequest {} + +conversation_message!(UiGetNeighborhoodGraphRequest, "neighborhoodGraph"); + +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] +pub struct UiGetNeighborhoodGraphResponse { + pub graph: String, +} + +conversation_message!(UiGetNeighborhoodGraphResponse, "neighborhoodGraph"); + #[cfg(test)] mod tests { use super::*; diff --git a/multinode_integration_tests/tests/bookkeeping_test.rs b/multinode_integration_tests/tests/bookkeeping_test.rs index 6c7552eae..97b39f5c9 100644 --- a/multinode_integration_tests/tests/bookkeeping_test.rs +++ b/multinode_integration_tests/tests/bookkeeping_test.rs @@ -29,13 +29,13 @@ fn provided_and_consumed_services_are_recorded_in_databases() { let mut client = originating_node.make_client(8080, STANDARD_CLIENT_TIMEOUT_MILLIS); client.set_timeout(Duration::from_secs(10)); - let request = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n".as_bytes(); + let request = "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n".as_bytes(); client.send_chunk(request); let response = String::from_utf8(client.wait_for_chunk()).unwrap(); assert!( response.contains("

Example Domain

"), - "Not from example.com:\n{}", + "Not from www.example.com:\n{}", response ); diff --git a/multinode_integration_tests/tests/communication_failure_test.rs b/multinode_integration_tests/tests/communication_failure_test.rs index 65d31dd4f..f687cf05d 100644 --- a/multinode_integration_tests/tests/communication_failure_test.rs +++ b/multinode_integration_tests/tests/communication_failure_test.rs @@ -103,7 +103,7 @@ fn neighborhood_notified_of_newly_missing_node() { //Establish a client on the originating Node and send some ill-fated traffic. let mut client = originating_node.make_client(8080, STANDARD_CLIENT_TIMEOUT_MILLIS); - client.send_chunk("GET http://example.com HTTP/1.1\r\n\r\n".as_bytes()); + client.send_chunk("GET http://www.example.com HTTP/1.1\r\n\r\n".as_bytes()); // Now direct the witness Node to wait for Gossip about the disappeared Node. let (disappearance_gossip, _) = witness_node @@ -405,7 +405,7 @@ fn dns_resolution_failure_no_longer_blacklists_exit_node_for_all_hosts() { ), ); - client.send_chunk("GET / HTTP/1.1\r\nHost: example.com\r\n\r\n".as_bytes()); + client.send_chunk("GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n".as_bytes()); let cheapest_node = node_list.first().unwrap(); let cheapest_node_expired_cores_package = cheapest_node .wait_for_specific_package( diff --git a/multinode_integration_tests/tests/data_routing_test.rs b/multinode_integration_tests/tests/data_routing_test.rs index cdefcd354..98dd460a1 100644 --- a/multinode_integration_tests/tests/data_routing_test.rs +++ b/multinode_integration_tests/tests/data_routing_test.rs @@ -175,7 +175,7 @@ fn tls_end_to_end_routing_test() { .expect("Could not set read timeout to 1000ms"); let connector = TlsConnector::new().expect("Could not build TlsConnector"); match connector.connect( - "example.com", + "www.example.com", stream.try_clone().expect("Couldn't clone TcpStream"), ) { Ok(s) => { @@ -199,7 +199,7 @@ fn tls_end_to_end_routing_test() { tls_stream.expect("Couldn't handshake") }; - let request = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n".as_bytes(); + let request = "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n".as_bytes(); tls_stream .write(request.clone()) .expect("Could not write request to TLS stream"); diff --git a/node/src/blockchain/blockchain_bridge.rs b/node/src/blockchain/blockchain_bridge.rs index e4275b036..a0e501393 100644 --- a/node/src/blockchain/blockchain_bridge.rs +++ b/node/src/blockchain/blockchain_bridge.rs @@ -662,7 +662,7 @@ mod tests { #[test] fn blockchain_interface_is_constructed_with_a_blockchain_service_url() { init_test_logging(); - let blockchain_service_url = "https://example.com"; + let blockchain_service_url = "https://www.example.com"; let subject = BlockchainBridge::initialize_blockchain_interface( Some(blockchain_service_url.to_string()), TEST_DEFAULT_CHAIN, diff --git a/node/src/neighborhood/mod.rs b/node/src/neighborhood/mod.rs index e76c5f566..bb85ea8ba 100644 --- a/node/src/neighborhood/mod.rs +++ b/node/src/neighborhood/mod.rs @@ -66,7 +66,8 @@ use masq_lib::exit_locations::ExitLocationSet; use masq_lib::logger::Logger; use masq_lib::messages::{ ExitLocation, FromMessageBody, ToMessageBody, UiConnectionStage, UiConnectionStatusRequest, - UiSetExitLocationRequest, UiSetExitLocationResponse, + UiGetNeighborhoodGraphRequest, UiGetNeighborhoodGraphResponse, UiSetExitLocationRequest, + UiSetExitLocationResponse, }; use masq_lib::messages::{UiConnectionStatusResponse, UiShutdownRequest}; use masq_lib::ui_gateway::MessagePath::Conversation; @@ -366,6 +367,8 @@ impl Handler for Neighborhood { self.handle_connection_status_message(client_id, context_id); } else if let Ok((body, _)) = UiShutdownRequest::fmb(msg.body.clone()) { self.handle_shutdown_order(client_id, body); + } else if let Ok((_, context_id)) = UiGetNeighborhoodGraphRequest::fmb(msg.body.clone()) { + self.handle_neighborhood_graph_message(client_id, context_id); } else { handle_ui_crash_request(msg, &self.logger, self.crashable, CRASH_KEY) } @@ -1611,6 +1614,19 @@ impl Neighborhood { undesirability + node_undesirability } + fn handle_neighborhood_graph_message(&self, client_id: u64, context_id: u64) { + let graph = self.neighborhood_database.to_dot_graph(); + let message = NodeToUiMessage { + target: MessageTarget::ClientId(client_id), + body: UiGetNeighborhoodGraphResponse { graph }.tmb(context_id), + }; + self.node_to_ui_recipient_opt + .as_ref() + .expect("UI Gateway is unbound") + .try_send(message) + .expect("UiGateway is dead"); + } + fn handle_exit_location_message( &mut self, message: UiSetExitLocationRequest, @@ -3634,6 +3650,81 @@ mod tests { assert_eq!(juicy_parts(result_1), (1, 1)); } + #[test] + fn handle_neighborhood_graph_message_works() { + let test_name = "handle_neighborhood_graph_message_works"; + let system = System::new(test_name); + let (ui_gateway, _recorder, arc_recorder) = make_recorder(); + let mut subject = make_standard_subject(); + let root_node_ch = subject.neighborhood_database.root().clone(); + let neighbor_one_au = make_node_record_cc(1234, true, "AU"); + let neighbor_two_fr = make_node_record_cc(2345, true, "FR"); + let neighbor_three_cn = make_node_record_cc(3456, true, "CN"); + let neighbor_four_us = make_node_record_cc(4567, true, "US"); + let root_pubkey = format!("{}", root_node_ch.public_key()); + let neighbor_one_pubkey = format!("{}", neighbor_one_au.public_key()); + let neighbor_two_pubkey = format!("{}", neighbor_two_fr.public_key()); + let neighbor_three_pubkey = format!("{}", neighbor_three_cn.public_key()); + let neighbor_four_pubkey = format!("{}", neighbor_four_us.public_key()); + subject + .neighborhood_database + .add_node(neighbor_one_au.clone()) + .unwrap(); + subject + .neighborhood_database + .add_node(neighbor_two_fr.clone()) + .unwrap(); + subject + .neighborhood_database + .add_node(neighbor_three_cn.clone()) + .unwrap(); + subject + .neighborhood_database + .add_node(neighbor_four_us.clone()) + .unwrap(); + subject + .neighborhood_database + .add_arbitrary_full_neighbor(root_node_ch.public_key(), neighbor_one_au.public_key()); + subject.neighborhood_database.add_arbitrary_full_neighbor( + neighbor_one_au.public_key(), + neighbor_two_fr.public_key(), + ); + subject.neighborhood_database.add_arbitrary_full_neighbor( + neighbor_two_fr.public_key(), + neighbor_three_cn.public_key(), + ); + subject.neighborhood_database.add_arbitrary_full_neighbor( + neighbor_three_cn.public_key(), + neighbor_four_us.public_key(), + ); + let request = UiGetNeighborhoodGraphRequest {}; + let message = NodeFromUiMessage { + client_id: 456, + body: request.tmb(465), + }; + let subject_addr = subject.start(); + let peer_actors = peer_actors_builder().ui_gateway(ui_gateway).build(); + subject_addr.try_send(BindMessage { peer_actors }).unwrap(); + + subject_addr.try_send(message).unwrap(); + System::current().stop(); + system.run(); + + let recorder_result = arc_recorder.lock().unwrap(); + let result = recorder_result + .get_record::(0) + .body + .clone() + .payload + .unwrap(); + let result_object: UiGetNeighborhoodGraphResponse = serde_json::from_str(&result).unwrap(); + assert!(result_object.graph.contains(&root_pubkey)); + assert!(result_object.graph.contains(&neighbor_one_pubkey)); + assert!(result_object.graph.contains(&neighbor_two_pubkey)); + assert!(result_object.graph.contains(&neighbor_three_pubkey)); + assert!(result_object.graph.contains(&neighbor_four_pubkey)); + } + #[test] fn min_hops_change_affects_db_countries_and_exit_location_settings() { let mut subject = make_standard_subject(); diff --git a/node/src/proxy_server/mod.rs b/node/src/proxy_server/mod.rs index fc0334834..1d29c2415 100644 --- a/node/src/proxy_server/mod.rs +++ b/node/src/proxy_server/mod.rs @@ -6378,8 +6378,11 @@ mod tests { #[test] fn hostname_works() { - assert_on_hostname("https://example.com/folder/file.html", "example.com"); - assert_on_hostname("example.com/index.php?arg=test", "example.com"); + assert_on_hostname( + "https://www.example.com/folder/file.html", + "www.example.com", + ); + assert_on_hostname("www.example.com/index.php?arg=test", "www.example.com"); assert_on_hostname("sub.example.com/index.php?arg=test", "sub.example.com"); assert_on_hostname("1.1.1.1", "1.1.1.1"); assert_on_hostname("", ""); @@ -6428,11 +6431,11 @@ mod tests { Err("localhost".to_string()) ); assert_eq!( - Hostname::new("example.com").validate_non_loopback_host(), + Hostname::new("www.example.com").validate_non_loopback_host(), Ok(()) ); assert_eq!( - Hostname::new("https://example.com").validate_non_loopback_host(), + Hostname::new("https://www.example.com").validate_non_loopback_host(), Ok(()) ); } diff --git a/node/src/stream_reader.rs b/node/src/stream_reader.rs index 34a7b62bd..cac9211a6 100644 --- a/node/src/stream_reader.rs +++ b/node/src/stream_reader.rs @@ -538,7 +538,8 @@ mod tests { Box::new(TlsDiscriminatorFactory::new()), Box::new(HttpRequestDiscriminatorFactory::new()), ]; - let http_connect_request = Vec::from("CONNECT example.com:443 HTTP/1.1\r\n\r\n".as_bytes()); + let http_connect_request = + Vec::from("CONNECT www.example.com:443 HTTP/1.1\r\n\r\n".as_bytes()); // Magic TLS Sauce stolen from Configuration let tls_request = Vec::from(&[0x16, 0x03, 0x01, 0x00, 0x03, 0x01, 0x02, 0x03][..]); let reader = ReadHalfWrapperMock { @@ -594,7 +595,7 @@ mod tests { let discriminator_factories: Vec> = vec![Box::new(HttpRequestDiscriminatorFactory::new())]; let request1 = Vec::from("GET http://here.com HTTP/1.1\r\n\r\n".as_bytes()); - let request2 = Vec::from("GET http://example.com HTTP/1.1\r\n\r\n".as_bytes()); + let request2 = Vec::from("GET http://www.example.com HTTP/1.1\r\n\r\n".as_bytes()); let reader = ReadHalfWrapperMock { poll_read_results: vec![ (request1.clone(), Ok(Async::Ready(request1.len()))), @@ -651,7 +652,7 @@ mod tests { last_data: false, is_clandestine: false, sequence_number: Some(1), - data: Vec::from("GET http://example.com HTTP/1.1\r\n\r\n".as_bytes()), + data: Vec::from("GET http://www.example.com HTTP/1.1\r\n\r\n".as_bytes()), } ); } diff --git a/node/src/test_utils/mod.rs b/node/src/test_utils/mod.rs index 1bf32b4b5..595bf3699 100644 --- a/node/src/test_utils/mod.rs +++ b/node/src/test_utils/mod.rs @@ -713,7 +713,7 @@ pub mod unshared_test_utils { ClientRequestPayload_0v1 { stream_key: StreamKey::make_meaningful_stream_key("request"), sequenced_packet: SequencedPacket::new(make_garbage_data(bytes), 0, true), - target_hostname: Some("example.com".to_string()), + target_hostname: Some("www.example.com".to_string()), target_port: HTTP_PORT, protocol: ProxyProtocol::HTTP, originator_public_key: cryptde.public_key().clone(), diff --git a/node/tests/http_through_node_test.rs b/node/tests/http_through_node_test.rs index f49cb25b9..9f2d3669f 100644 --- a/node/tests/http_through_node_test.rs +++ b/node/tests/http_through_node_test.rs @@ -24,7 +24,7 @@ fn http_through_node_integration() { stream .set_read_timeout(Some(Duration::from_millis(1000))) .unwrap(); - let request = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n".as_bytes(); + let request = "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n".as_bytes(); stream.write(request.clone()).unwrap(); let buf = read_until_timeout(&mut stream); diff --git a/node/tests/initialization_test.rs b/node/tests/initialization_test.rs index 5b57d5b96..b124195db 100644 --- a/node/tests/initialization_test.rs +++ b/node/tests/initialization_test.rs @@ -76,7 +76,7 @@ fn initialization_sequence_integration() { ("neighborhood-mode", Some("zero-hop")), ("log-level", Some("trace")), ("data-directory", Some(&data_directory.to_str().unwrap())), - ("blockchain-service-url", Some("https://example.com")), + ("blockchain-service-url", Some("https://www.example.com")), ])) .unwrap(); let financials_request = UiFinancialsRequest { diff --git a/node/tests/tls_through_node_test.rs b/node/tests/tls_through_node_test.rs index 1509e38c7..d8975c9b0 100644 --- a/node/tests/tls_through_node_test.rs +++ b/node/tests/tls_through_node_test.rs @@ -33,7 +33,7 @@ fn tls_through_node_integration() { .expect("Could not set read timeout to 1000ms"); let connector = TlsConnector::new().expect("Could not build TlsConnector"); match connector.connect( - "example.com", + "www.example.com", stream.try_clone().expect("Couldn't clone TcpStream"), ) { Ok(s) => { @@ -57,7 +57,7 @@ fn tls_through_node_integration() { tls_stream.expect("Couldn't handshake") }; - let request = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n".as_bytes(); + let request = "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n".as_bytes(); tls_stream .write(request.clone()) .expect("Could not write request to TLS stream"); diff --git a/node/tests/ui_gateway_test.rs b/node/tests/ui_gateway_test.rs index fc6802075..07b603bff 100644 --- a/node/tests/ui_gateway_test.rs +++ b/node/tests/ui_gateway_test.rs @@ -142,7 +142,7 @@ fn daemon_does_not_allow_node_to_keep_his_client_alive_integration() { ("chain", Some("polygon-mainnet")), ("neighborhood-mode", Some("standard")), ("log-level", Some("trace")), - ("blockchain-service-url", Some("https://example.com")), + ("blockchain-service-url", Some("https://www.example.com")), ("data-directory", Some(&data_directory.to_str().unwrap())), ])) .unwrap();