@@ -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 {
5872mod 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