@@ -41,6 +41,9 @@ fn register_signatures(
41
41
. and ( with_dependency ( dependencies, |d| {
42
42
d. incoming_messages_sender
43
43
} ) )
44
+ . and ( with_dependency ( dependencies, |d| {
45
+ d. available_signatures_registrations
46
+ } ) )
44
47
. and ( warp:: any ( ) . map ( move || logger. clone ( ) ) )
45
48
. and_then ( handlers:: register_signatures)
46
49
}
@@ -84,10 +87,15 @@ mod handlers {
84
87
pub async fn register_signatures (
85
88
signature : RegisterSignatureMessage ,
86
89
incoming_messages_sender : mpsc:: Sender < Message > ,
90
+ available_signatures_registrations : Arc < Mutex < Vec < RegisterSignatureMessage > > > ,
87
91
logger : slog:: Logger ,
88
92
) -> Result < impl warp:: Reply , Infallible > {
89
93
debug ! ( logger, "/register-signatures/{:?}" , signature) ;
90
94
95
+ let mut available_signatures_registrations =
96
+ available_signatures_registrations. lock ( ) . await ;
97
+ available_signatures_registrations. push ( signature. clone ( ) ) ;
98
+
91
99
match incoming_messages_sender
92
100
. send ( Message :: MithrilRegisterSignature ( signature) )
93
101
. await
@@ -207,4 +215,40 @@ mod tests {
207
215
rx. try_recv( ) ,
208
216
) ;
209
217
}
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
+ }
210
254
}
0 commit comments