Skip to content

Commit 44bbbeb

Browse files
authored
Merge pull request #825 from input-output-hk/jpraynaud/824-cleanup-multi-signer
Cleanup multi-signer
2 parents f5055ed + 603ec16 commit 44bbbeb

File tree

10 files changed

+143
-202
lines changed

10 files changed

+143
-202
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mithril-aggregator/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mithril-aggregator"
3-
version = "0.2.36"
3+
version = "0.2.37"
44
description = "A Mithril Aggregator server"
55
authors = { workspace = true }
66
edition = { workspace = true }

mithril-aggregator/src/http_server/routes/signatures_routes.rs

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ mod handlers {
2626
use crate::{
2727
dependency::MultiSignerWrapper, message_adapters::FromRegisterSingleSignatureAdapter,
2828
};
29+
use mithril_common::entities::SingleSignatures;
2930
use mithril_common::messages::RegisterSignatureMessage;
3031
use slog_scope::{debug, warn};
3132
use std::convert::Infallible;
@@ -37,10 +38,23 @@ mod handlers {
3738
multi_signer: MultiSignerWrapper,
3839
) -> Result<impl warp::Reply, Infallible> {
3940
debug!("⇄ HTTP SERVER: register_signatures/{:?}", message);
40-
let signature = FromRegisterSingleSignatureAdapter::adapt(message);
4141

42-
let mut multi_signer = multi_signer.write().await;
43-
match multi_signer.register_single_signature(&signature).await {
42+
async fn register_single_signature(
43+
multi_signer: MultiSignerWrapper,
44+
signature: SingleSignatures,
45+
) -> Result<(), ProtocolError> {
46+
let multi_signer = multi_signer.write().await;
47+
let message = multi_signer
48+
.get_current_message()
49+
.await
50+
.ok_or_else(ProtocolError::UnavailableMessage)?;
51+
multi_signer
52+
.register_single_signature(&message, &signature)
53+
.await
54+
}
55+
56+
let signature = FromRegisterSingleSignatureAdapter::adapt(message);
57+
match register_single_signature(multi_signer, signature).await {
4458
Err(ProtocolError::ExistingSingleSignature(party_id)) => {
4559
debug!("register_signatures::already_exist"; "party_id" => ?party_id);
4660
Ok(reply::empty(StatusCode::CONFLICT))
@@ -58,6 +72,7 @@ mod handlers {
5872
mod tests {
5973

6074
use crate::http_server::SERVER_BASE_PATH;
75+
use mithril_common::entities::ProtocolMessage;
6176
use mithril_common::messages::RegisterSignatureMessage;
6277
use mithril_common::test_utils::apispec::APISpec;
6378
use tokio::sync::RwLock;
@@ -85,11 +100,11 @@ mod tests {
85100
async fn test_register_signatures_post_ok() {
86101
let mut mock_multi_signer = MockMultiSigner::new();
87102
mock_multi_signer
88-
.expect_update_current_message()
89-
.return_once(|_| Ok(()));
103+
.expect_get_current_message()
104+
.return_once(|| Some(ProtocolMessage::new()));
90105
mock_multi_signer
91106
.expect_register_single_signature()
92-
.return_once(|_| Ok(()));
107+
.return_once(|_, _| Ok(()));
93108
let (mut dependency_manager, _) = initialize_dependencies().await;
94109
dependency_manager.multi_signer = Arc::new(RwLock::new(mock_multi_signer));
95110

@@ -118,9 +133,12 @@ mod tests {
118133
#[tokio::test]
119134
async fn test_register_signatures_post_ko_400() {
120135
let mut mock_multi_signer = MockMultiSigner::new();
136+
mock_multi_signer
137+
.expect_get_current_message()
138+
.return_once(|| Some(ProtocolMessage::new()));
121139
mock_multi_signer
122140
.expect_register_single_signature()
123-
.return_once(|_| Ok(()));
141+
.return_once(|_, _| Ok(()));
124142
let (mut dependency_manager, _) = initialize_dependencies().await;
125143
dependency_manager.multi_signer = Arc::new(RwLock::new(mock_multi_signer));
126144

@@ -153,11 +171,11 @@ mod tests {
153171
let party_id = message.party_id.clone();
154172
let mut mock_multi_signer = MockMultiSigner::new();
155173
mock_multi_signer
156-
.expect_update_current_message()
157-
.return_once(|_| Ok(()));
174+
.expect_get_current_message()
175+
.return_once(|| Some(ProtocolMessage::new()));
158176
mock_multi_signer
159177
.expect_register_single_signature()
160-
.return_once(move |_| Err(ProtocolError::ExistingSingleSignature(party_id)));
178+
.return_once(move |_, _| Err(ProtocolError::ExistingSingleSignature(party_id)));
161179
let (mut dependency_manager, _) = initialize_dependencies().await;
162180
dependency_manager.multi_signer = Arc::new(RwLock::new(mock_multi_signer));
163181

@@ -185,11 +203,11 @@ mod tests {
185203
async fn test_register_signatures_post_ko_500() {
186204
let mut mock_multi_signer = MockMultiSigner::new();
187205
mock_multi_signer
188-
.expect_update_current_message()
189-
.return_once(|_| Ok(()));
206+
.expect_get_current_message()
207+
.return_once(|| Some(ProtocolMessage::new()));
190208
mock_multi_signer
191209
.expect_register_single_signature()
192-
.return_once(|_| Err(ProtocolError::Core("an error occurred".to_string())));
210+
.return_once(|_, _| Err(ProtocolError::Core("an error occurred".to_string())));
193211
let (mut dependency_manager, _) = initialize_dependencies().await;
194212
dependency_manager.multi_signer = Arc::new(RwLock::new(mock_multi_signer));
195213

0 commit comments

Comments
 (0)