@@ -26,6 +26,7 @@ mod handlers {
26
26
use crate :: {
27
27
dependency:: MultiSignerWrapper , message_adapters:: FromRegisterSingleSignatureAdapter ,
28
28
} ;
29
+ use mithril_common:: entities:: SingleSignatures ;
29
30
use mithril_common:: messages:: RegisterSignatureMessage ;
30
31
use slog_scope:: { debug, warn} ;
31
32
use std:: convert:: Infallible ;
@@ -37,10 +38,23 @@ mod handlers {
37
38
multi_signer : MultiSignerWrapper ,
38
39
) -> Result < impl warp:: Reply , Infallible > {
39
40
debug ! ( "⇄ HTTP SERVER: register_signatures/{:?}" , message) ;
40
- let signature = FromRegisterSingleSignatureAdapter :: adapt ( message) ;
41
41
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 {
44
58
Err ( ProtocolError :: ExistingSingleSignature ( party_id) ) => {
45
59
debug ! ( "register_signatures::already_exist" ; "party_id" => ?party_id) ;
46
60
Ok ( reply:: empty ( StatusCode :: CONFLICT ) )
@@ -58,6 +72,7 @@ mod handlers {
58
72
mod tests {
59
73
60
74
use crate :: http_server:: SERVER_BASE_PATH ;
75
+ use mithril_common:: entities:: ProtocolMessage ;
61
76
use mithril_common:: messages:: RegisterSignatureMessage ;
62
77
use mithril_common:: test_utils:: apispec:: APISpec ;
63
78
use tokio:: sync:: RwLock ;
@@ -85,11 +100,11 @@ mod tests {
85
100
async fn test_register_signatures_post_ok ( ) {
86
101
let mut mock_multi_signer = MockMultiSigner :: new ( ) ;
87
102
mock_multi_signer
88
- . expect_update_current_message ( )
89
- . return_once ( |_| Ok ( ( ) ) ) ;
103
+ . expect_get_current_message ( )
104
+ . return_once ( || Some ( ProtocolMessage :: new ( ) ) ) ;
90
105
mock_multi_signer
91
106
. expect_register_single_signature ( )
92
- . return_once ( |_| Ok ( ( ) ) ) ;
107
+ . return_once ( |_, _ | Ok ( ( ) ) ) ;
93
108
let ( mut dependency_manager, _) = initialize_dependencies ( ) . await ;
94
109
dependency_manager. multi_signer = Arc :: new ( RwLock :: new ( mock_multi_signer) ) ;
95
110
@@ -118,9 +133,12 @@ mod tests {
118
133
#[ tokio:: test]
119
134
async fn test_register_signatures_post_ko_400 ( ) {
120
135
let mut mock_multi_signer = MockMultiSigner :: new ( ) ;
136
+ mock_multi_signer
137
+ . expect_get_current_message ( )
138
+ . return_once ( || Some ( ProtocolMessage :: new ( ) ) ) ;
121
139
mock_multi_signer
122
140
. expect_register_single_signature ( )
123
- . return_once ( |_| Ok ( ( ) ) ) ;
141
+ . return_once ( |_, _ | Ok ( ( ) ) ) ;
124
142
let ( mut dependency_manager, _) = initialize_dependencies ( ) . await ;
125
143
dependency_manager. multi_signer = Arc :: new ( RwLock :: new ( mock_multi_signer) ) ;
126
144
@@ -153,11 +171,11 @@ mod tests {
153
171
let party_id = message. party_id . clone ( ) ;
154
172
let mut mock_multi_signer = MockMultiSigner :: new ( ) ;
155
173
mock_multi_signer
156
- . expect_update_current_message ( )
157
- . return_once ( |_| Ok ( ( ) ) ) ;
174
+ . expect_get_current_message ( )
175
+ . return_once ( || Some ( ProtocolMessage :: new ( ) ) ) ;
158
176
mock_multi_signer
159
177
. expect_register_single_signature ( )
160
- . return_once ( move |_| Err ( ProtocolError :: ExistingSingleSignature ( party_id) ) ) ;
178
+ . return_once ( move |_, _ | Err ( ProtocolError :: ExistingSingleSignature ( party_id) ) ) ;
161
179
let ( mut dependency_manager, _) = initialize_dependencies ( ) . await ;
162
180
dependency_manager. multi_signer = Arc :: new ( RwLock :: new ( mock_multi_signer) ) ;
163
181
@@ -185,11 +203,11 @@ mod tests {
185
203
async fn test_register_signatures_post_ko_500 ( ) {
186
204
let mut mock_multi_signer = MockMultiSigner :: new ( ) ;
187
205
mock_multi_signer
188
- . expect_update_current_message ( )
189
- . return_once ( |_| Ok ( ( ) ) ) ;
206
+ . expect_get_current_message ( )
207
+ . return_once ( || Some ( ProtocolMessage :: new ( ) ) ) ;
190
208
mock_multi_signer
191
209
. 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 ( ) ) ) ) ;
193
211
let ( mut dependency_manager, _) = initialize_dependencies ( ) . await ;
194
212
dependency_manager. multi_signer = Arc :: new ( RwLock :: new ( mock_multi_signer) ) ;
195
213
0 commit comments