#![ cfg( feature = "secrets" ) ]
use workspace_tools ::workspace;
use std ::env;
use tempfile ::TempDir;
#[ test ]
fn test_centralized_secrets_access()
{
let temp_dir = TempDir ::new().unwrap();
let original_workspace_path = env ::var( "WORKSPACE_PATH" ).ok();
env ::set_var( "WORKSPACE_PATH", temp_dir.path() );
let ws = workspace().expect( "Should resolve workspace" );
println!( "Workspace root: {}", ws.root().display() );
let secrets_dir = ws.secret_dir();
println!( "Secrets directory: {}", secrets_dir.display() );
match ws.load_secret_key( "OPENAI_API_KEY", "-secrets.sh" )
{
Ok( key ) =>
{
println!( "OpenAI API key loaded (length: {})", key.len() );
assert!( !key.is_empty(), "API key should not be empty" );
},
Err( e ) =>
{
println!( "Failed to load OpenAI API key: {e}" );
},
}
match ws.load_secret_key( "GEMINI_API_KEY", "-secrets.sh" )
{
Ok( key ) =>
{
println!( "Gemini API key loaded (length: {})", key.len() );
assert!( !key.is_empty(), "API key should not be empty" );
},
Err( e ) =>
{
println!( "Failed to load Gemini API key: {e}" );
},
}
match ws.load_secret_key( "NONEXISTENT_KEY", "nonexistent.env" )
{
Ok( _ ) => panic!( "Should not load non-existent key" ),
Err( _ ) => println!( "Correctly failed to load non-existent key" ),
}
println!( "Centralized secrets management test completed successfully!" );
match original_workspace_path
{
Some( path ) => env ::set_var( "WORKSPACE_PATH", path ),
None => env ::remove_var( "WORKSPACE_PATH" ),
}
}