From 5494172d7babc16c2ec332b89a97857f5ebb4256 Mon Sep 17 00:00:00 2001 From: DJO <790521+Alenar@users.noreply.github.com> Date: Tue, 27 Aug 2024 16:28:04 +0200 Subject: [PATCH] Fix: fake nodes were not pushing signatures received through socket to their db --- .../src/server/router.rs | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/mithril-test-lab/signature-network-node/src/server/router.rs b/mithril-test-lab/signature-network-node/src/server/router.rs index ef7682b3a33..717c3010c9b 100644 --- a/mithril-test-lab/signature-network-node/src/server/router.rs +++ b/mithril-test-lab/signature-network-node/src/server/router.rs @@ -41,6 +41,9 @@ fn register_signatures( .and(with_dependency(dependencies, |d| { d.incoming_messages_sender })) + .and(with_dependency(dependencies, |d| { + d.available_signatures_registrations + })) .and(warp::any().map(move || logger.clone())) .and_then(handlers::register_signatures) } @@ -84,10 +87,15 @@ mod handlers { pub async fn register_signatures( signature: RegisterSignatureMessage, incoming_messages_sender: mpsc::Sender, + available_signatures_registrations: Arc>>, logger: slog::Logger, ) -> Result { debug!(logger, "/register-signatures/{:?}", signature); + let mut available_signatures_registrations = + available_signatures_registrations.lock().await; + available_signatures_registrations.push(signature.clone()); + match incoming_messages_sender .send(Message::MithrilRegisterSignature(signature)) .await @@ -207,4 +215,40 @@ mod tests { rx.try_recv(), ); } + + #[tokio::test] + async fn register_signatures_push_them_to_db() { + let dir = TempDir::create( + "signature-network-node-router", + "register_signatures_push_them_to_db", + ); + let socket_path = dir.join("test.sock"); + let available_sigs = Arc::new(Mutex::new(vec![])); + let (tx, _rx) = mpsc::channel(1); + let dependencies = RouterDependencies { + available_signatures_registrations: available_sigs.clone(), + incoming_messages_sender: tx, + }; + let _server = test_http_server_with_unix_socket( + register_signatures(&dependencies, &discard_logs()), + &socket_path, + ); + + let client = HttpUnixSocketClient::new(&socket_path); + + // No signatures should have been received yet + { + let sigs = available_sigs.lock().await; + assert_eq!(Vec::::new(), *sigs); + } + + client + .write("register-signatures", &RegisterSignatureMessage::dummy()) + .unwrap(); + + { + let sigs = available_sigs.lock().await; + assert_eq!(vec![RegisterSignatureMessage::dummy()], *sigs); + } + } }