Skip to content

Commit

Permalink
Merge pull request #825 from input-output-hk/jpraynaud/824-cleanup-mu…
Browse files Browse the repository at this point in the history
…lti-signer

Cleanup multi-signer
  • Loading branch information
jpraynaud committed Mar 27, 2023
2 parents f5055ed + 603ec16 commit 44bbbeb
Show file tree
Hide file tree
Showing 10 changed files with 143 additions and 202 deletions.
4 changes: 2 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion mithril-aggregator/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "mithril-aggregator"
version = "0.2.36"
version = "0.2.37"
description = "A Mithril Aggregator server"
authors = { workspace = true }
edition = { workspace = true }
Expand Down
44 changes: 31 additions & 13 deletions mithril-aggregator/src/http_server/routes/signatures_routes.rs
Expand Up @@ -26,6 +26,7 @@ mod handlers {
use crate::{
dependency::MultiSignerWrapper, message_adapters::FromRegisterSingleSignatureAdapter,
};
use mithril_common::entities::SingleSignatures;
use mithril_common::messages::RegisterSignatureMessage;
use slog_scope::{debug, warn};
use std::convert::Infallible;
Expand All @@ -37,10 +38,23 @@ mod handlers {
multi_signer: MultiSignerWrapper,
) -> Result<impl warp::Reply, Infallible> {
debug!("⇄ HTTP SERVER: register_signatures/{:?}", message);
let signature = FromRegisterSingleSignatureAdapter::adapt(message);

let mut multi_signer = multi_signer.write().await;
match multi_signer.register_single_signature(&signature).await {
async fn register_single_signature(
multi_signer: MultiSignerWrapper,
signature: SingleSignatures,
) -> Result<(), ProtocolError> {
let multi_signer = multi_signer.write().await;
let message = multi_signer
.get_current_message()
.await
.ok_or_else(ProtocolError::UnavailableMessage)?;
multi_signer
.register_single_signature(&message, &signature)
.await
}

let signature = FromRegisterSingleSignatureAdapter::adapt(message);
match register_single_signature(multi_signer, signature).await {
Err(ProtocolError::ExistingSingleSignature(party_id)) => {
debug!("register_signatures::already_exist"; "party_id" => ?party_id);
Ok(reply::empty(StatusCode::CONFLICT))
Expand All @@ -58,6 +72,7 @@ mod handlers {
mod tests {

use crate::http_server::SERVER_BASE_PATH;
use mithril_common::entities::ProtocolMessage;
use mithril_common::messages::RegisterSignatureMessage;
use mithril_common::test_utils::apispec::APISpec;
use tokio::sync::RwLock;
Expand Down Expand Up @@ -85,11 +100,11 @@ mod tests {
async fn test_register_signatures_post_ok() {
let mut mock_multi_signer = MockMultiSigner::new();
mock_multi_signer
.expect_update_current_message()
.return_once(|_| Ok(()));
.expect_get_current_message()
.return_once(|| Some(ProtocolMessage::new()));
mock_multi_signer
.expect_register_single_signature()
.return_once(|_| Ok(()));
.return_once(|_, _| Ok(()));
let (mut dependency_manager, _) = initialize_dependencies().await;
dependency_manager.multi_signer = Arc::new(RwLock::new(mock_multi_signer));

Expand Down Expand Up @@ -118,9 +133,12 @@ mod tests {
#[tokio::test]
async fn test_register_signatures_post_ko_400() {
let mut mock_multi_signer = MockMultiSigner::new();
mock_multi_signer
.expect_get_current_message()
.return_once(|| Some(ProtocolMessage::new()));
mock_multi_signer
.expect_register_single_signature()
.return_once(|_| Ok(()));
.return_once(|_, _| Ok(()));
let (mut dependency_manager, _) = initialize_dependencies().await;
dependency_manager.multi_signer = Arc::new(RwLock::new(mock_multi_signer));

Expand Down Expand Up @@ -153,11 +171,11 @@ mod tests {
let party_id = message.party_id.clone();
let mut mock_multi_signer = MockMultiSigner::new();
mock_multi_signer
.expect_update_current_message()
.return_once(|_| Ok(()));
.expect_get_current_message()
.return_once(|| Some(ProtocolMessage::new()));
mock_multi_signer
.expect_register_single_signature()
.return_once(move |_| Err(ProtocolError::ExistingSingleSignature(party_id)));
.return_once(move |_, _| Err(ProtocolError::ExistingSingleSignature(party_id)));
let (mut dependency_manager, _) = initialize_dependencies().await;
dependency_manager.multi_signer = Arc::new(RwLock::new(mock_multi_signer));

Expand Down Expand Up @@ -185,11 +203,11 @@ mod tests {
async fn test_register_signatures_post_ko_500() {
let mut mock_multi_signer = MockMultiSigner::new();
mock_multi_signer
.expect_update_current_message()
.return_once(|_| Ok(()));
.expect_get_current_message()
.return_once(|| Some(ProtocolMessage::new()));
mock_multi_signer
.expect_register_single_signature()
.return_once(|_| Err(ProtocolError::Core("an error occurred".to_string())));
.return_once(|_, _| Err(ProtocolError::Core("an error occurred".to_string())));
let (mut dependency_manager, _) = initialize_dependencies().await;
dependency_manager.multi_signer = Arc::new(RwLock::new(mock_multi_signer));

Expand Down

0 comments on commit 44bbbeb

Please sign in to comment.