@@ -16,41 +16,39 @@ fn register_signer(
16
16
warp:: path!( "register-signer" )
17
17
. and ( warp:: post ( ) )
18
18
. and ( warp:: body:: json ( ) )
19
- . and ( middlewares:: with_multi_signer ( dependency_manager) )
19
+ . and ( middlewares:: with_signer_registerer ( dependency_manager) )
20
20
. and_then ( handlers:: register_signer)
21
21
}
22
22
23
23
mod handlers {
24
- use crate :: dependency:: MultiSignerWrapper ;
25
- use crate :: http_server:: routes:: reply;
26
- use crate :: ProtocolError ;
24
+ use crate :: { http_server:: routes:: reply, SignerRegisterer , SignerRegistrationError } ;
27
25
use mithril_common:: entities;
28
26
use slog_scope:: { debug, warn} ;
29
27
use std:: convert:: Infallible ;
28
+ use std:: sync:: Arc ;
30
29
use warp:: http:: StatusCode ;
31
30
32
31
/// Register Signer
33
32
pub async fn register_signer (
34
33
signer : entities:: Signer ,
35
- multi_signer : MultiSignerWrapper ,
34
+ signer_registerer : Arc < dyn SignerRegisterer > ,
36
35
) -> Result < impl warp:: Reply , Infallible > {
37
36
debug ! ( "⇄ HTTP SERVER: register_signer/{:?}" , signer) ;
38
37
39
- let mut multi_signer = multi_signer. write ( ) . await ;
40
- match multi_signer. register_signer ( & signer) . await {
38
+ match signer_registerer. register_signer ( & signer) . await {
41
39
Ok ( ( ) ) => Ok ( reply:: empty ( StatusCode :: CREATED ) ) ,
42
- Err ( ProtocolError :: ExistingSigner ( ) ) => {
40
+ Err ( SignerRegistrationError :: ExistingSigner ( ) ) => {
43
41
debug ! ( "register_signer::already_registered" ) ;
44
42
Ok ( reply:: empty ( StatusCode :: CREATED ) )
45
43
}
46
- Err ( ProtocolError :: Codec ( err) ) => {
44
+ Err ( SignerRegistrationError :: Codec ( err) ) => {
47
45
warn ! ( "register_signer::failed_signer_decoding" ; "error" => ?err) ;
48
46
Ok ( reply:: bad_request (
49
47
"failed_signer_decoding" . to_string ( ) ,
50
48
err,
51
49
) )
52
50
}
53
- Err ( ProtocolError :: FailedSignerRegistration ( err) ) => {
51
+ Err ( SignerRegistrationError :: FailedSignerRegistration ( err) ) => {
54
52
warn ! ( "register_signer::failed_signer_registration" ; "error" => ?err) ;
55
53
Ok ( reply:: bad_request (
56
54
"failed_signer_registration" . to_string ( ) ,
@@ -72,14 +70,13 @@ mod tests {
72
70
use mithril_common:: apispec:: APISpec ;
73
71
use mithril_common:: crypto_helper:: ProtocolRegistrationError ;
74
72
use mithril_common:: fake_data;
75
- use tokio:: sync:: RwLock ;
76
73
use warp:: http:: Method ;
77
74
use warp:: test:: request;
78
75
79
76
use super :: * ;
80
77
use crate :: http_server:: SERVER_BASE_PATH ;
81
- use crate :: multi_signer :: MockMultiSigner ;
82
- use crate :: { initialize_dependencies, ProtocolError } ;
78
+ use crate :: signer_registerer :: MockSignerRegisterer ;
79
+ use crate :: { initialize_dependencies, SignerRegistrationError } ;
83
80
84
81
fn setup_router (
85
82
dependency_manager : Arc < DependencyManager > ,
@@ -96,12 +93,12 @@ mod tests {
96
93
97
94
#[ tokio:: test]
98
95
async fn test_register_signer_post_ok ( ) {
99
- let mut mock_multi_signer = MockMultiSigner :: new ( ) ;
100
- mock_multi_signer
96
+ let mut mock_signer_registerer = MockSignerRegisterer :: new ( ) ;
97
+ mock_signer_registerer
101
98
. expect_register_signer ( )
102
99
. return_once ( |_| Ok ( ( ) ) ) ;
103
100
let ( mut dependency_manager, _) = initialize_dependencies ( ) . await ;
104
- dependency_manager. multi_signer = Arc :: new ( RwLock :: new ( mock_multi_signer ) ) ;
101
+ dependency_manager. signer_registerer = Arc :: new ( mock_signer_registerer ) ;
105
102
106
103
let signer = & fake_data:: signers ( 1 ) [ 0 ] ;
107
104
@@ -126,12 +123,12 @@ mod tests {
126
123
127
124
#[ tokio:: test]
128
125
async fn test_register_signer_post_ok_existing ( ) {
129
- let mut mock_multi_signer = MockMultiSigner :: new ( ) ;
130
- mock_multi_signer
126
+ let mut mock_signer_registerer = MockSignerRegisterer :: new ( ) ;
127
+ mock_signer_registerer
131
128
. expect_register_signer ( )
132
- . return_once ( |_| Err ( ProtocolError :: ExistingSigner ( ) ) ) ;
129
+ . return_once ( |_| Err ( SignerRegistrationError :: ExistingSigner ( ) ) ) ;
133
130
let ( mut dependency_manager, _) = initialize_dependencies ( ) . await ;
134
- dependency_manager. multi_signer = Arc :: new ( RwLock :: new ( mock_multi_signer ) ) ;
131
+ dependency_manager. signer_registerer = Arc :: new ( mock_signer_registerer ) ;
135
132
136
133
let signer = & fake_data:: signers ( 1 ) [ 0 ] ;
137
134
@@ -156,14 +153,16 @@ mod tests {
156
153
157
154
#[ tokio:: test]
158
155
async fn test_register_signer_post_ko_400 ( ) {
159
- let mut mock_multi_signer = MockMultiSigner :: new ( ) ;
160
- mock_multi_signer. expect_register_signer ( ) . return_once ( |_| {
161
- Err ( ProtocolError :: FailedSignerRegistration (
162
- ProtocolRegistrationError :: OpCertInvalid ,
163
- ) )
164
- } ) ;
156
+ let mut mock_signer_registerer = MockSignerRegisterer :: new ( ) ;
157
+ mock_signer_registerer
158
+ . expect_register_signer ( )
159
+ . return_once ( |_| {
160
+ Err ( SignerRegistrationError :: FailedSignerRegistration (
161
+ ProtocolRegistrationError :: OpCertInvalid ,
162
+ ) )
163
+ } ) ;
165
164
let ( mut dependency_manager, _) = initialize_dependencies ( ) . await ;
166
- dependency_manager. multi_signer = Arc :: new ( RwLock :: new ( mock_multi_signer ) ) ;
165
+ dependency_manager. signer_registerer = Arc :: new ( mock_signer_registerer ) ;
167
166
168
167
let signer = fake_data:: signers ( 1 ) [ 0 ] . clone ( ) ;
169
168
@@ -188,12 +187,16 @@ mod tests {
188
187
189
188
#[ tokio:: test]
190
189
async fn test_register_signer_post_ko_500 ( ) {
191
- let mut mock_multi_signer = MockMultiSigner :: new ( ) ;
192
- mock_multi_signer
190
+ let mut mock_signer_registerer = MockSignerRegisterer :: new ( ) ;
191
+ mock_signer_registerer
193
192
. expect_register_signer ( )
194
- . return_once ( |_| Err ( ProtocolError :: Core ( "an error occurred" . to_string ( ) ) ) ) ;
193
+ . return_once ( |_| {
194
+ Err ( SignerRegistrationError :: ChainObserver (
195
+ "an error occurred" . to_string ( ) ,
196
+ ) )
197
+ } ) ;
195
198
let ( mut dependency_manager, _) = initialize_dependencies ( ) . await ;
196
- dependency_manager. multi_signer = Arc :: new ( RwLock :: new ( mock_multi_signer ) ) ;
199
+ dependency_manager. signer_registerer = Arc :: new ( mock_signer_registerer ) ;
197
200
198
201
let signer = & fake_data:: signers ( 1 ) [ 0 ] ;
199
202
0 commit comments