@@ -4,7 +4,7 @@ use go_defer::defer;
44use rusty_vault:: {
55 core:: { Core , SealConfig } ,
66 logical:: { Operation , Request } ,
7- storage,
7+ storage, RustyVault ,
88} ;
99use serde_json:: { json, Map , Value } ;
1010
@@ -295,6 +295,85 @@ async fn test_sys_raw_api_feature(core: &Core, token: &str) {
295295 test_read_api ( core, token, "sys/raw/test" , true , None ) . await ;
296296}
297297
298+ #[ maybe_async:: maybe_async]
299+ async fn test_rvualt_mount ( rvault : & RustyVault , token : & str ) {
300+ let ret = rvault. mount ( Some ( token) , "kv9/test" , "kv" ) . await ;
301+ assert ! ( ret. is_ok( ) ) ;
302+
303+ let ret = rvault
304+ . write (
305+ Some ( token) ,
306+ "kv9/test/foo" ,
307+ Some (
308+ json ! ( {
309+ "foo" : "bar" ,
310+ } )
311+ . as_object ( )
312+ . unwrap ( )
313+ . clone ( ) ,
314+ ) ,
315+ )
316+ . await ;
317+ assert ! ( ret. is_ok( ) ) ;
318+
319+ let ret = rvault. read ( Some ( token) , "kv9/test/foo" ) . await ;
320+ assert ! ( ret. is_ok( ) ) ;
321+ let ret = ret. unwrap ( ) ;
322+ assert ! ( ret. is_some( ) ) ;
323+ let data = ret. unwrap ( ) . data ;
324+ assert ! ( data. is_some( ) ) ;
325+ assert_eq ! ( data. as_ref( ) . unwrap( ) [ "foo" ] . as_str( ) . unwrap( ) , "bar" ) ;
326+
327+ let ret = rvault
328+ . write (
329+ Some ( token) ,
330+ "kv9/test/bar/foo" ,
331+ Some (
332+ json ! ( {
333+ "bar" : "foo" ,
334+ } )
335+ . as_object ( )
336+ . unwrap ( )
337+ . clone ( ) ,
338+ ) ,
339+ )
340+ . await ;
341+ assert ! ( ret. is_ok( ) ) ;
342+
343+ let ret = rvault. read ( Some ( token) , "kv9/test/bar/foo" ) . await ;
344+ assert ! ( ret. is_ok( ) ) ;
345+ let ret = ret. unwrap ( ) ;
346+ assert ! ( ret. is_some( ) ) ;
347+ let data = ret. unwrap ( ) . data ;
348+ assert ! ( data. is_some( ) ) ;
349+ assert_eq ! ( data. as_ref( ) . unwrap( ) [ "bar" ] . as_str( ) . unwrap( ) , "foo" ) ;
350+
351+ let ret = rvault. list ( Some ( token) , "kv9/test/" ) . await ;
352+ assert ! ( ret. is_ok( ) ) ;
353+ let ret = ret. unwrap ( ) ;
354+ assert ! ( ret. is_some( ) ) ;
355+ let data = ret. unwrap ( ) . data ;
356+ assert ! ( data. is_some( ) ) ;
357+ assert_eq ! ( data. as_ref( ) . unwrap( ) [ "keys" ] . as_array( ) . unwrap( ) . len( ) , 2 ) ;
358+
359+ let ret = rvault. delete ( Some ( token) , "kv9/test/foo" , None ) . await ;
360+ assert ! ( ret. is_ok( ) ) ;
361+
362+ let ret = rvault. list ( Some ( token) , "kv9/test/" ) . await ;
363+ assert ! ( ret. is_ok( ) ) ;
364+ let ret = ret. unwrap ( ) ;
365+ assert ! ( ret. is_some( ) ) ;
366+ let data = ret. unwrap ( ) . data ;
367+ assert ! ( data. is_some( ) ) ;
368+ assert_eq ! ( data. as_ref( ) . unwrap( ) [ "keys" ] . as_array( ) . unwrap( ) . len( ) , 1 ) ;
369+
370+ let ret = rvault. unmount ( Some ( token) , "kv9/test" ) . await ;
371+ assert ! ( ret. is_ok( ) ) ;
372+
373+ let ret = rvault. list ( Some ( token) , "kv9/test/" ) . await ;
374+ assert ! ( ret. is_err( ) ) ;
375+ }
376+
298377#[ maybe_async:: maybe_async]
299378async fn test_sys_logical_backend ( core : & Core , token : & str ) {
300379 test_sys_mount_feature ( core, token) . await ;
@@ -333,7 +412,7 @@ async fn test_default_logical() {
333412 let mut unsealed = false ;
334413 for i in 0 ..seal_config. secret_threshold {
335414 let key = & init_result. secret_shares [ i as usize ] ;
336- let unseal = rvault. unseal ( key) ;
415+ let unseal = rvault. unseal ( & [ key] ) ;
337416 assert ! ( unseal. is_ok( ) ) ;
338417 unsealed = unseal. unwrap ( ) ;
339418 }
@@ -347,5 +426,6 @@ async fn test_default_logical() {
347426 test_default_secret ( & core, & root_token) . await ;
348427 test_kv_logical_backend ( & core, & root_token) . await ;
349428 test_sys_logical_backend ( & core, & root_token) . await ;
429+ test_rvualt_mount ( & rvault, & root_token) . await ;
350430 }
351431}
0 commit comments