1
1
use {
2
- crate :: { admin_rpc_service, cli :: DefaultArgs } ,
2
+ crate :: { admin_rpc_service, commands :: FromClapArgMatches } ,
3
3
clap:: { App , Arg , ArgMatches , SubCommand } ,
4
4
std:: path:: Path ,
5
5
} ;
6
6
7
- pub fn command ( _default_args : & DefaultArgs ) -> App < ' _ , ' _ > {
8
- SubCommand :: with_name ( "staked-nodes-overrides" )
7
+ const COMMAND : & str = "staked-nodes-overrides" ;
8
+
9
+ #[ derive( Debug , PartialEq ) ]
10
+ pub struct StakedNodesOverridesArgs {
11
+ pub path : String ,
12
+ }
13
+
14
+ impl FromClapArgMatches for StakedNodesOverridesArgs {
15
+ fn from_clap_arg_match ( matches : & ArgMatches ) -> Result < Self , String > {
16
+ Ok ( StakedNodesOverridesArgs {
17
+ path : matches
18
+ . value_of ( "path" )
19
+ . expect ( "path is required" )
20
+ . to_string ( ) ,
21
+ } )
22
+ }
23
+ }
24
+
25
+ pub fn command < ' a > ( ) -> App < ' a , ' a > {
26
+ SubCommand :: with_name ( COMMAND )
9
27
. about ( "Overrides stakes of specific node identities." )
10
28
. arg (
11
29
Arg :: with_name ( "path" )
@@ -22,15 +40,44 @@ pub fn command(_default_args: &DefaultArgs) -> App<'_, '_> {
22
40
}
23
41
24
42
pub fn execute ( matches : & ArgMatches , ledger_path : & Path ) -> Result < ( ) , String > {
25
- let path = matches . value_of ( "path" ) . expect ( "path is required" ) ;
43
+ let staked_nodes_overrides_args = StakedNodesOverridesArgs :: from_clap_arg_match ( matches ) ? ;
26
44
27
45
let admin_client = admin_rpc_service:: connect ( ledger_path) ;
28
46
admin_rpc_service:: runtime ( )
29
47
. block_on ( async move {
30
48
admin_client
31
49
. await ?
32
- . set_staked_nodes_overrides ( path . to_string ( ) )
50
+ . set_staked_nodes_overrides ( staked_nodes_overrides_args . path )
33
51
. await
34
52
} )
35
53
. map_err ( |err| format ! ( "set staked nodes override request failed: {err}" ) )
36
54
}
55
+
56
+ #[ cfg( test) ]
57
+ mod tests {
58
+ use {
59
+ super :: * ,
60
+ crate :: commands:: tests:: {
61
+ verify_args_struct_by_command, verify_args_struct_by_command_is_error,
62
+ } ,
63
+ } ;
64
+
65
+ #[ test]
66
+ fn verify_args_struct_by_command_staked_nodes_overrides_default ( ) {
67
+ verify_args_struct_by_command_is_error :: < StakedNodesOverridesArgs > (
68
+ command ( ) ,
69
+ vec ! [ COMMAND ] ,
70
+ ) ;
71
+ }
72
+
73
+ #[ test]
74
+ fn verify_args_struct_by_command_staked_nodes_overrides_path ( ) {
75
+ verify_args_struct_by_command (
76
+ command ( ) ,
77
+ vec ! [ COMMAND , "test.json" ] ,
78
+ StakedNodesOverridesArgs {
79
+ path : "test.json" . to_string ( ) ,
80
+ } ,
81
+ ) ;
82
+ }
83
+ }
0 commit comments