Skip to content

Commit 8bcda02

Browse files
committed
Fix: fake nodes were not pushing signatures received through socket to their db
1 parent 921ce36 commit 8bcda02

File tree

1 file changed

+44
-0
lines changed
  • mithril-test-lab/signature-network-node/src/server

1 file changed

+44
-0
lines changed

mithril-test-lab/signature-network-node/src/server/router.rs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ fn register_signatures(
4141
.and(with_dependency(dependencies, |d| {
4242
d.incoming_messages_sender
4343
}))
44+
.and(with_dependency(dependencies, |d| {
45+
d.available_signatures_registrations
46+
}))
4447
.and(warp::any().map(move || logger.clone()))
4548
.and_then(handlers::register_signatures)
4649
}
@@ -84,10 +87,15 @@ mod handlers {
8487
pub async fn register_signatures(
8588
signature: RegisterSignatureMessage,
8689
incoming_messages_sender: mpsc::Sender<Message>,
90+
available_signatures_registrations: Arc<Mutex<Vec<RegisterSignatureMessage>>>,
8791
logger: slog::Logger,
8892
) -> Result<impl warp::Reply, Infallible> {
8993
debug!(logger, "/register-signatures/{:?}", signature);
9094

95+
let mut available_signatures_registrations =
96+
available_signatures_registrations.lock().await;
97+
available_signatures_registrations.push(signature.clone());
98+
9199
match incoming_messages_sender
92100
.send(Message::MithrilRegisterSignature(signature))
93101
.await
@@ -207,4 +215,40 @@ mod tests {
207215
rx.try_recv(),
208216
);
209217
}
218+
219+
#[tokio::test]
220+
async fn register_signatures_push_them_to_db() {
221+
let dir = TempDir::create(
222+
"signature-network-node-router",
223+
"register_signatures_push_them_to_db",
224+
);
225+
let socket_path = dir.join("test.sock");
226+
let available_sigs = Arc::new(Mutex::new(vec![]));
227+
let (tx, _rx) = mpsc::channel(1);
228+
let dependencies = RouterDependencies {
229+
available_signatures_registrations: available_sigs.clone(),
230+
incoming_messages_sender: tx,
231+
};
232+
let _server = test_http_server_with_unix_socket(
233+
register_signatures(&dependencies, &discard_logs()),
234+
&socket_path,
235+
);
236+
237+
let client = HttpUnixSocketClient::new(&socket_path);
238+
239+
// No signatures should have been received yet
240+
{
241+
let sigs = available_sigs.lock().await;
242+
assert_eq!(Vec::<RegisterSignatureMessage>::new(), *sigs);
243+
}
244+
245+
client
246+
.write("register-signatures", &RegisterSignatureMessage::dummy())
247+
.unwrap();
248+
249+
{
250+
let sigs = available_sigs.lock().await;
251+
assert_eq!(vec![RegisterSignatureMessage::dummy()], *sigs);
252+
}
253+
}
210254
}

0 commit comments

Comments
 (0)